From 8bdf42e56aeffeddcb6328e7da14e09b813aec27 Mon Sep 17 00:00:00 2001 From: Flora Thiebaut Date: Fri, 8 May 2026 16:16:13 +0200 Subject: [PATCH 1/2] build: upgrade prettier --- client/.prettierignore | 1 + client/package-lock.json | 214 ++++++++----------------------------- client/package.json | 6 +- server/package-lock.json | 173 +++++++++++++++--------------- server/package.json | 4 +- tests/package-lock.json | 224 +++++++++++++++------------------------ tests/package.json | 4 +- 7 files changed, 228 insertions(+), 398 deletions(-) diff --git a/client/.prettierignore b/client/.prettierignore index 4f4d3ac94d..4b839c7983 100644 --- a/client/.prettierignore +++ b/client/.prettierignore @@ -1,3 +1,4 @@ build/ public/config.json .react-router/types +storybook-static/ diff --git a/client/package-lock.json b/client/package-lock.json index edaff92eed..9c1042f82e 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -101,8 +101,8 @@ "jest": "^30.2.0", "jest-websocket-mock": "^2.5.0", "jsdom": "^27.4.0", - "prettier": "^2.8.7", - "pretty-quick": "^3.3.1", + "prettier": "^3.8.3", + "pretty-quick": "^4.2.2", "react-test-renderer": "^19.2.4", "storybook": "^10.2.15", "typescript": "^5.3.2", @@ -4141,22 +4141,6 @@ "node": ">=6" } }, - "node_modules/@react-router/dev/node_modules/prettier": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", - "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, "node_modules/@react-router/express": { "version": "7.13.1", "resolved": "https://registry.npmjs.org/@react-router/express/-/express-7.13.1.tgz", @@ -4607,6 +4591,22 @@ "rtk-query-codegen-openapi": "lib/bin/cli.js" } }, + "node_modules/@rtk-query/codegen-openapi/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/@sentry-internal/browser-utils": { "version": "10.43.0", "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-10.43.0.tgz", @@ -9765,16 +9765,6 @@ "node": ">= 0.8" } }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, "node_modules/entities": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", @@ -17403,16 +17393,16 @@ } }, "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", + "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", "dev": true, "license": "MIT", "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" @@ -17447,148 +17437,49 @@ } }, "node_modules/pretty-quick": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.3.1.tgz", - "integrity": "sha512-3b36UXfYQ+IXXqex6mCca89jC8u0mYLqFAN5eTQKoXO6oCQYcIVYZEB/5AlBHI7JPYygReM2Vv6Vom/Gln7fBg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-4.2.2.tgz", + "integrity": "sha512-uAh96tBW1SsD34VhhDmWuEmqbpfYc/B3j++5MC/6b3Cb8Ow7NJsvKFhg0eoGu2xXX+o9RkahkTK6sUdd8E7g5w==", "dev": true, "license": "MIT", "dependencies": { - "execa": "^4.1.0", - "find-up": "^4.1.0", - "ignore": "^5.3.0", + "@pkgr/core": "^0.2.7", + "ignore": "^7.0.5", "mri": "^1.2.0", - "picocolors": "^1.0.0", - "picomatch": "^3.0.1", - "tslib": "^2.6.2" + "picocolors": "^1.1.1", + "picomatch": "^4.0.2", + "tinyexec": "^0.3.2", + "tslib": "^2.8.1" }, "bin": { - "pretty-quick": "dist/cli.js" - }, - "engines": { - "node": ">=10.13" - }, - "peerDependencies": { - "prettier": "^2.0.0" - } - }, - "node_modules/pretty-quick/node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" + "pretty-quick": "lib/cli.mjs" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/pretty-quick/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pretty-quick/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pretty-quick/node_modules/human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8.12.0" - } - }, - "node_modules/pretty-quick/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" + "url": "https://opencollective.com/pretty-quick" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pretty-quick/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "prettier": "^3.0.0" } }, - "node_modules/pretty-quick/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/pretty-quick/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, "engines": { - "node": ">=8" + "node": ">= 4" } }, - "node_modules/pretty-quick/node_modules/picomatch": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.2.tgz", - "integrity": "sha512-cfDHL6LStTEKlNilboNtobT/kEa30PtAf2Q1OgszfrG/rpVl1xaFWT9ktfkS306GmHgmnad1Sw4wabhlvFtsTw==", + "node_modules/pretty-quick/node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } + "license": "MIT" }, "node_modules/pretty-quick/node_modules/tslib": { "version": "2.8.1", @@ -17698,17 +17589,6 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "license": "MIT" }, - "node_modules/pump": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", - "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", diff --git a/client/package.json b/client/package.json index 4ce1998058..38805c999c 100644 --- a/client/package.json +++ b/client/package.json @@ -146,8 +146,8 @@ "jest": "^30.2.0", "jest-websocket-mock": "^2.5.0", "jsdom": "^27.4.0", - "prettier": "^2.8.7", - "pretty-quick": "^3.3.1", + "prettier": "^3.8.3", + "pretty-quick": "^4.2.2", "react-test-renderer": "^19.2.4", "storybook": "^10.2.15", "typescript": "^5.3.2", @@ -200,4 +200,4 @@ ], "importOrderCaseSensitive": false } -} +} \ No newline at end of file diff --git a/server/package-lock.json b/server/package-lock.json index 4497d30064..9b144afad4 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -36,8 +36,8 @@ "eslint-config-prettier": "^8.8.0", "jest": "^29.7.0", "nodemon": "^2.0.20", - "prettier": "^2.8.8", - "pretty-quick": "^3.3.1", + "prettier": "^3.8.3", + "pretty-quick": "^4.2.2", "ts-jest": "^29.1.1", "typescript": "^4.2.4" } @@ -1549,6 +1549,19 @@ "node": ">=10.13.0" } }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, "node_modules/@sentry-internal/tracing": { "version": "7.119.2", "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.119.2.tgz", @@ -7094,15 +7107,16 @@ } }, "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", + "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", "dev": true, + "license": "MIT", "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" @@ -7161,59 +7175,41 @@ } }, "node_modules/pretty-quick": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.3.1.tgz", - "integrity": "sha512-3b36UXfYQ+IXXqex6mCca89jC8u0mYLqFAN5eTQKoXO6oCQYcIVYZEB/5AlBHI7JPYygReM2Vv6Vom/Gln7fBg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-4.2.2.tgz", + "integrity": "sha512-uAh96tBW1SsD34VhhDmWuEmqbpfYc/B3j++5MC/6b3Cb8Ow7NJsvKFhg0eoGu2xXX+o9RkahkTK6sUdd8E7g5w==", "dev": true, + "license": "MIT", "dependencies": { - "execa": "^4.1.0", - "find-up": "^4.1.0", - "ignore": "^5.3.0", + "@pkgr/core": "^0.2.7", + "ignore": "^7.0.5", "mri": "^1.2.0", - "picocolors": "^1.0.0", - "picomatch": "^3.0.1", - "tslib": "^2.6.2" + "picocolors": "^1.1.1", + "picomatch": "^4.0.2", + "tinyexec": "^0.3.2", + "tslib": "^2.8.1" }, "bin": { - "pretty-quick": "dist/cli.js" + "pretty-quick": "lib/cli.mjs" }, "engines": { - "node": ">=10.13" - }, - "peerDependencies": { - "prettier": "^2.0.0" - } - }, - "node_modules/pretty-quick/node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://opencollective.com/pretty-quick" + }, + "peerDependencies": { + "prettier": "^3.0.0" } }, - "node_modules/pretty-quick/node_modules/human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "node_modules/pretty-quick/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8.12.0" + "node": ">= 4" } }, "node_modules/pretty-quick/node_modules/picocolors": { @@ -7223,12 +7219,13 @@ "dev": true }, "node_modules/pretty-quick/node_modules/picomatch": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.2.tgz", - "integrity": "sha512-cfDHL6LStTEKlNilboNtobT/kEa30PtAf2Q1OgszfrG/rpVl1xaFWT9ktfkS306GmHgmnad1Sw4wabhlvFtsTw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -8159,6 +8156,13 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -9794,6 +9798,12 @@ "resolved": "https://registry.npmjs.org/@panva/asn1.js/-/asn1.js-1.0.0.tgz", "integrity": "sha512-UdkG3mLEqXgnlKsWanWcgb6dOjUzJ+XC5f+aWw30qrtjxeNUSfKX1cd5FBzOaXQumoe9nIqeZUvrRJS03HCCtw==" }, + "@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true + }, "@sentry-internal/tracing": { "version": "7.119.2", "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.119.2.tgz", @@ -13979,9 +13989,9 @@ "dev": true }, "prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", + "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", "dev": true }, "pretty-format": { @@ -14027,41 +14037,24 @@ } }, "pretty-quick": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.3.1.tgz", - "integrity": "sha512-3b36UXfYQ+IXXqex6mCca89jC8u0mYLqFAN5eTQKoXO6oCQYcIVYZEB/5AlBHI7JPYygReM2Vv6Vom/Gln7fBg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-4.2.2.tgz", + "integrity": "sha512-uAh96tBW1SsD34VhhDmWuEmqbpfYc/B3j++5MC/6b3Cb8Ow7NJsvKFhg0eoGu2xXX+o9RkahkTK6sUdd8E7g5w==", "dev": true, "requires": { - "execa": "^4.1.0", - "find-up": "^4.1.0", - "ignore": "^5.3.0", + "@pkgr/core": "^0.2.7", + "ignore": "^7.0.5", "mri": "^1.2.0", - "picocolors": "^1.0.0", - "picomatch": "^3.0.1", - "tslib": "^2.6.2" + "picocolors": "^1.1.1", + "picomatch": "^4.0.2", + "tinyexec": "^0.3.2", + "tslib": "^2.8.1" }, "dependencies": { - "execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - } - }, - "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true }, "picocolors": { @@ -14071,9 +14064,9 @@ "dev": true }, "picomatch": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.2.tgz", - "integrity": "sha512-cfDHL6LStTEKlNilboNtobT/kEa30PtAf2Q1OgszfrG/rpVl1xaFWT9ktfkS306GmHgmnad1Sw4wabhlvFtsTw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true }, "tslib": { @@ -14747,6 +14740,12 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true + }, "tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", diff --git a/server/package.json b/server/package.json index 6eb9933d2c..58559189da 100644 --- a/server/package.json +++ b/server/package.json @@ -53,8 +53,8 @@ "eslint-config-prettier": "^8.8.0", "jest": "^29.7.0", "nodemon": "^2.0.20", - "prettier": "^2.8.8", - "pretty-quick": "^3.3.1", + "prettier": "^3.8.3", + "pretty-quick": "^4.2.2", "ts-jest": "^29.1.1", "typescript": "^4.2.4" } diff --git a/tests/package-lock.json b/tests/package-lock.json index c62fdb7d02..6bd08e81e8 100644 --- a/tests/package-lock.json +++ b/tests/package-lock.json @@ -16,8 +16,8 @@ "eslint-config-prettier": "^8.8.0", "eslint-plugin-cypress": "^2.12.1", "eslint-plugin-no-only-tests": "^3.1.0", - "prettier": "^2.8.8", - "pretty-quick": "^3.3.1", + "prettier": "^3.8.3", + "pretty-quick": "^4.2.2", "start-server-and-test": "^2.0.3", "typescript": "^4.5.2" } @@ -203,6 +203,19 @@ "node": ">= 8" } }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, "node_modules/@sideway/address": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", @@ -2787,15 +2800,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -2902,15 +2906,16 @@ } }, "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", + "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", "dev": true, + "license": "MIT", "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" @@ -2929,88 +2934,51 @@ } }, "node_modules/pretty-quick": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.3.1.tgz", - "integrity": "sha512-3b36UXfYQ+IXXqex6mCca89jC8u0mYLqFAN5eTQKoXO6oCQYcIVYZEB/5AlBHI7JPYygReM2Vv6Vom/Gln7fBg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-4.2.2.tgz", + "integrity": "sha512-uAh96tBW1SsD34VhhDmWuEmqbpfYc/B3j++5MC/6b3Cb8Ow7NJsvKFhg0eoGu2xXX+o9RkahkTK6sUdd8E7g5w==", "dev": true, + "license": "MIT", "dependencies": { - "execa": "^4.1.0", - "find-up": "^4.1.0", - "ignore": "^5.3.0", + "@pkgr/core": "^0.2.7", + "ignore": "^7.0.5", "mri": "^1.2.0", - "picocolors": "^1.0.0", - "picomatch": "^3.0.1", - "tslib": "^2.6.2" + "picocolors": "^1.1.1", + "picomatch": "^4.0.2", + "tinyexec": "^0.3.2", + "tslib": "^2.8.1" }, "bin": { - "pretty-quick": "dist/cli.js" - }, - "engines": { - "node": ">=10.13" - }, - "peerDependencies": { - "prettier": "^2.0.0" - } - }, - "node_modules/pretty-quick/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pretty-quick/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pretty-quick/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" + "pretty-quick": "lib/cli.mjs" }, "engines": { - "node": ">=6" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/pretty-quick" + }, + "peerDependencies": { + "prettier": "^3.0.0" } }, - "node_modules/pretty-quick/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/pretty-quick/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 4" } }, "node_modules/pretty-quick/node_modules/picomatch": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.2.tgz", - "integrity": "sha512-cfDHL6LStTEKlNilboNtobT/kEa30PtAf2Q1OgszfrG/rpVl1xaFWT9ktfkS306GmHgmnad1Sw4wabhlvFtsTw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -3590,6 +3558,13 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, "node_modules/tldts": { "version": "6.1.86", "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", @@ -4024,6 +3999,12 @@ "fastq": "^1.6.0" } }, + "@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true + }, "@sideway/address": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", @@ -5899,12 +5880,6 @@ "aggregate-error": "^3.0.0" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -5984,9 +5959,9 @@ "dev": true }, "prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", + "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", "dev": true }, "pretty-bytes": { @@ -5996,61 +5971,30 @@ "dev": true }, "pretty-quick": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.3.1.tgz", - "integrity": "sha512-3b36UXfYQ+IXXqex6mCca89jC8u0mYLqFAN5eTQKoXO6oCQYcIVYZEB/5AlBHI7JPYygReM2Vv6Vom/Gln7fBg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-4.2.2.tgz", + "integrity": "sha512-uAh96tBW1SsD34VhhDmWuEmqbpfYc/B3j++5MC/6b3Cb8Ow7NJsvKFhg0eoGu2xXX+o9RkahkTK6sUdd8E7g5w==", "dev": true, "requires": { - "execa": "^4.1.0", - "find-up": "^4.1.0", - "ignore": "^5.3.0", + "@pkgr/core": "^0.2.7", + "ignore": "^7.0.5", "mri": "^1.2.0", - "picocolors": "^1.0.0", - "picomatch": "^3.0.1", - "tslib": "^2.6.2" + "picocolors": "^1.1.1", + "picomatch": "^4.0.2", + "tinyexec": "^0.3.2", + "tslib": "^2.8.1" }, "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } + "ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true }, "picomatch": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.2.tgz", - "integrity": "sha512-cfDHL6LStTEKlNilboNtobT/kEa30PtAf2Q1OgszfrG/rpVl1xaFWT9ktfkS306GmHgmnad1Sw4wabhlvFtsTw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true } } @@ -6431,6 +6375,12 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, + "tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true + }, "tldts": { "version": "6.1.86", "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", diff --git a/tests/package.json b/tests/package.json index 755c690890..ff2aef9c36 100644 --- a/tests/package.json +++ b/tests/package.json @@ -28,8 +28,8 @@ "eslint-config-prettier": "^8.8.0", "eslint-plugin-cypress": "^2.12.1", "eslint-plugin-no-only-tests": "^3.1.0", - "prettier": "^2.8.8", - "pretty-quick": "^3.3.1", + "prettier": "^3.8.3", + "pretty-quick": "^4.2.2", "start-server-and-test": "^2.0.3", "typescript": "^4.5.2" } From f8aa05895d1d0e3e05b1af241a601398533bb0b6 Mon Sep 17 00:00:00 2001 From: Flora Thiebaut Date: Mon, 11 May 2026 09:20:55 +0200 Subject: [PATCH 2/2] apply new prettier format --- client/eslint.config.mjs | 4 +- client/package.json | 2 +- client/public/static/public/theme.css | 8 +- client/scripts/update_api_spec.js | 6 +- client/server.js | 20 +-- client/server/app.ts | 2 +- client/server/constants.ts | 2 +- client/server/metrics.ts | 2 +- client/src/authentication/listeners.client.ts | 2 +- client/src/authentication/listeners.test.ts | 10 +- client/src/authentication/useLoginUrl.hook.ts | 4 +- client/src/components/LegacyExternalLinks.tsx | 2 +- client/src/components/Loader.tsx | 6 +- client/src/components/Pagination.tsx | 12 +- client/src/components/TimeCaption.tsx | 4 +- client/src/components/clipboard/Clipboard.tsx | 2 +- .../commandCopy/CommandCopy.module.scss | 7 +- .../components/commandCopy/CommandCopy.tsx | 6 +- .../src/components/container/CollapseBody.tsx | 2 +- .../components/container/ContainerWrap.tsx | 2 +- .../entityWatermark/EntityWatermark.tsx | 2 +- .../errors/RtkOrDataServicesError.tsx | 6 +- .../components/icons/ChevronFlippedIcon.tsx | 2 +- .../src/components/keywords/KeywordBadge.tsx | 2 +- .../components/keywords/KeywordContainer.tsx | 2 +- client/src/components/navbar/NavBarItems.tsx | 2 +- .../src/components/renkuBadge/RenkuBadge.tsx | 12 +- .../components/toast/LazyToastContainer.tsx | 2 +- client/src/components/toast/useRenkuToast.tsx | 18 +-- client/src/entry.server.tsx | 10 +- .../AddCodeRepositoryModal.tsx | 4 +- .../CodeRepositoryDisplay.tsx | 14 +-- .../CodeRepositories/RepositoriesBox.tsx | 2 +- .../repositories.utils.test.ts | 6 +- .../CodeRepositories/repositories.utils.ts | 6 +- .../ProjectConnectDataConnectorsModal.tsx | 49 ++++---- .../ProjectDataConnectorsBox.tsx | 7 +- .../Documentation/Documentation.tsx | 6 +- .../ProjectInformation/ProjectInformation.tsx | 10 +- .../SessionSecrets/AddSessionSecretButton.tsx | 9 +- .../SessionSecrets/ProjectSessionSecrets.tsx | 6 +- .../ProvideSessionSecretModalContent.tsx | 8 +- .../SecretsMountDirectoryComponent.tsx | 4 +- .../SessionSecrets/SessionSecretActions.tsx | 14 +-- .../SessionSecrets/SessionSecretSlotItem.tsx | 4 +- .../SessionViewSessionSecrets.tsx | 4 +- .../SessionSecrets/fields/FilenameField.tsx | 5 +- .../fields/SelectUserSecretField.tsx | 16 +-- .../SessionSecrets/fields/fields.types.ts | 5 +- .../SessionSecrets/sessionSecrets.utils.ts | 2 +- .../Settings/ProjectDelete.tsx | 2 +- .../Settings/ProjectKeywordsFormField.tsx | 4 +- .../Settings/ProjectMemberRoleSelect.tsx | 8 +- .../Settings/ProjectSettings.tsx | 4 +- .../Settings/ProjectSettingsMembers.tsx | 2 +- .../Settings/ProjectUnlinkTemplate.tsx | 2 +- .../ProjectAutostartRedirectBanner.tsx | 2 +- .../ProjectPageHeader/ProjectCopyBanner.tsx | 21 ++-- .../ProjectPageHeader/ProjectCopyModal.tsx | 8 +- .../ProjectPageNav/ProjectPageNav.tsx | 2 +- .../utils/dataConnectorUtils.test.ts | 10 +- .../features/ProjectPageV2/utils/roleUtils.ts | 4 +- .../utils/useProjectPermissions.hook.ts | 2 +- .../admin/AddConnectedServiceButton.tsx | 2 +- .../AddManyUsersToResourcePoolButton.tsx | 16 +-- .../features/admin/AddResourceClassButton.tsx | 8 +- .../features/admin/AddResourcePoolButton.tsx | 44 +++---- .../admin/AddSessionEnvironmentButton.tsx | 2 +- .../admin/AddUserToResourcePoolButton.tsx | 14 +-- client/src/features/admin/AdminPage.tsx | 42 ++++--- .../admin/ConnectedServicesSection.tsx | 4 +- .../admin/IncidentsAndMaintenanceSection.tsx | 10 +- .../SessionEnvironmentAdvancedFields.tsx | 6 +- .../admin/SessionEnvironmentFormContent.tsx | 2 +- .../admin/SessionEnvironmentsSection.tsx | 2 +- .../admin/UpdateConnectedServiceButton.tsx | 2 +- .../admin/UpdateResourceClassButton.tsx | 8 +- .../admin/UpdateResourcePoolQuotaButton.tsx | 2 +- .../admin/UpdateResourcePoolRemoteButton.tsx | 43 +++---- .../UpdateResourcePoolThresholdsButton.tsx | 6 +- .../admin/UpdateSessionEnvironmentButton.tsx | 2 +- .../src/features/admin/adminKeycloak.api.ts | 2 +- .../features/admin/useKeycloakRealm.hook.ts | 2 +- .../cloudStorage/AddOrEditCloudStorage.tsx | 68 +++++----- .../AddStorageBreadcrumbNavbar.tsx | 2 +- .../projectCloudStorage.constants.test.ts | 2 +- .../cloudStorage/projectCloudStorage.types.ts | 15 ++- .../projectCloudStorage.utils.test.ts | 4 +- .../cloudStorage/projectCloudStorage.utils.ts | 54 ++++---- .../ConnectedServicesPage.tsx | 74 +++++------ .../connectedServices/ContactUsCard.tsx | 8 +- .../connectedServices/OAuthCompletePage.tsx | 4 +- .../api/connectedServices.api.ts | 2 +- .../connectedServices/oauthComplete.utils.ts | 6 +- .../useConnectedServiceProviderLists.hook.ts | 13 +- ...useGithubOAuthCompleteFollowUpData.hook.ts | 8 +- .../useOAuthProviderConnect.hook.ts | 8 +- client/src/features/cookie/RoutedContent.tsx | 2 +- .../src/features/dashboardV2/DashboardV2.tsx | 6 +- .../dashboardV2/DashboardV2Sessions.tsx | 20 +-- .../api/data-connectors.enhanced-api.ts | 14 +-- .../components/DataConnectorActions.tsx | 52 ++++---- .../DataConnectorCredentialsModal.tsx | 4 +- .../DataConnectorModalBody.tsx | 40 +++--- .../DataConnectorModalFooter.tsx | 116 +++++++++--------- .../DataConnectorModalResult.tsx | 4 +- .../DataConnectorSaveCredentialsInfo.tsx | 2 +- .../dataConnectorModalButtons.tsx | 40 +++--- .../components/DataConnectorModal/index.tsx | 6 +- .../components/DataConnectorView.tsx | 66 +++++----- .../components/DataConnectorsBox.tsx | 12 +- .../DataConnectorsBoxListDisplay.tsx | 44 +++---- .../components/dataConnector.utils.test.ts | 2 +- .../components/dataConnector.utils.ts | 20 +-- .../useDataConnectorConfiguration.hook.ts | 10 +- .../useDataConnectorProjects.hook.ts | 2 +- .../deposits/DepositActions.tsx | 4 +- .../deposits/DepositCreationModal.tsx | 6 +- .../deposits/DepositEditModal.tsx | 4 +- .../deposits/DepositStatusBadge.tsx | 8 +- .../state/dataConnectors.slice.ts | 22 ++-- .../utils/useDataConnectorPermissions.hook.ts | 2 +- client/src/features/favicon/Favicon.tsx | 6 +- .../groupsV2/fields/AddGroupMemberModal.tsx | 2 +- .../groupsV2/fields/EditGroupMemberModal.tsx | 2 +- .../groupsV2/fields/GroupMemberRoleSelect.tsx | 8 +- .../members/GroupV2MemberListDisplay.tsx | 4 +- client/src/features/groupsV2/new/GroupNew.tsx | 2 +- .../settings/GroupSettingsMembers.tsx | 4 +- .../settings/GroupSettingsMetadata.tsx | 6 +- .../groupsV2/show/GroupV2Information.tsx | 2 +- client/src/features/help/GettingHelp.tsx | 2 +- client/src/features/help/HelpRelease.tsx | 6 +- .../landing/components/Benefits/Benefits.tsx | 4 +- .../components/GetStarted/GetStarted.tsx | 6 +- .../components/HeroLanding/HeroLanding.tsx | 2 +- .../components/Introduction/Introduction.tsx | 6 +- .../components/NavBar/RenkuFooterNavBar.tsx | 6 +- .../components/RenkuUsers/RenkuUsers.tsx | 2 +- .../ResourcesSupport/ResourcesAndSupport.tsx | 2 +- .../TemplateSlider/TemplateSlider.tsx | 10 +- .../components/WhatIsRenku/WhatIsRenku.tsx | 12 +- .../landing/components/anonymousHomeNav.tsx | 2 +- .../legacy/ClientSideCheckForRedirects.tsx | 6 +- .../src/features/legacy/NoLegacySupport.tsx | 4 +- .../NoLegacySupportForProjectsRenkulabIo.tsx | 20 +-- .../src/features/legacy/legacy.utils.test.ts | 14 +-- client/src/features/legacy/legacy.utils.ts | 10 +- .../features/loginHandler/LoggedOutPrompt.tsx | 2 +- .../features/loginHandler/LoginHandler.tsx | 2 +- .../features/loginHandler/cookieStore.d.ts | 8 +- .../features/logsDisplay/BuildLogsModal.tsx | 6 +- client/src/features/logsDisplay/LogsModal.tsx | 8 +- .../features/logsDisplay/SessionLogsModal.tsx | 6 +- .../features/platform/api/platform.utils.ts | 12 +- .../platform/components/StatusBanner.tsx | 16 +-- .../platform/components/StatusSummary.tsx | 46 +++---- .../LazyProjectV2ShowByProjectId.tsx | 2 +- .../projectsV2/api/projectV2.enhanced-api.ts | 14 +-- .../fields/AddProjectMemberModal.tsx | 8 +- .../fields/EditProjectMemberModal.tsx | 13 +- .../fields/ProjectNamespaceFormField.tsx | 27 ++-- .../fields/ProjectOwnerSlugFormField.tsx | 5 +- .../fields/RemoveProjectMemberModal.tsx | 6 +- .../projectsV2/fields/SlugFormField.tsx | 2 +- .../fields/SlugPreviewFormField.tsx | 2 +- .../projectsV2/fields/UserSelector.tsx | 10 +- .../projectsV2/fields/formField.types.ts | 21 ++-- .../projectsV2/list/ProjectV2ListDisplay.tsx | 12 +- .../features/projectsV2/new/ProjectV2New.tsx | 4 +- .../projectsV2/notFound/GroupNotFound.tsx | 2 +- .../projectsV2/notFound/ProjectNotFound.tsx | 2 +- .../projectsV2/notFound/UserNotFound.tsx | 2 +- .../projectsV2/shared/LearnAboutV2Button.tsx | 2 +- .../projectsV2/show/GroupShortHandDisplay.tsx | 10 +- .../show/ProjectShortHandDisplay.tsx | 4 +- .../show/ProjectV2ShowByProjectId.tsx | 2 +- .../projectsV2/show/VisibilityIconV2.tsx | 2 +- .../repositories/api/repositories.api.ts | 2 +- client/src/features/rootV2/NavbarV2.tsx | 6 +- client/src/features/rootV2/RootV2.tsx | 6 +- .../searchV2/components/EntityPill.tsx | 26 ++-- .../searchV2/components/MemberListRow.tsx | 4 +- .../searchV2/components/SearchBar.tsx | 4 +- .../searchV2/components/SearchFilters.tsx | 28 ++--- .../searchV2/components/SearchResultRecap.tsx | 12 +- .../searchV2/components/SearchResults.tsx | 26 ++-- .../components/ShowGlobalDataConnector.tsx | 4 +- .../features/searchV2/contextSearch.utils.ts | 2 +- .../hooks/useReduxFilterParam.hook.ts | 22 ++-- .../hooks/useSearchResultMembers.hook.ts | 4 +- .../searchV2/hooks/useSearchSync.hook.ts | 2 +- .../src/features/searchV2/searchV2.slice.ts | 6 +- .../features/searchV2/searchV2.utils.test.ts | 2 +- .../src/features/searchV2/searchV2.utils.ts | 64 +++++----- .../secretsV2/DataConnectorSecretItem.tsx | 18 +-- .../features/secretsV2/GeneralSecretItem.tsx | 10 +- .../secretsV2/ReplaceSecretValueModal.tsx | 4 +- .../features/secretsV2/SecretItemActions.tsx | 8 +- client/src/features/secretsV2/SecretsV2.tsx | 8 +- .../features/secretsV2/fields/fields.types.ts | 5 +- .../secretsV2/useGetRelatedProjects.hook.ts | 2 +- .../sessionsV2/DataConnectorSecretsModal.tsx | 37 +++--- .../features/sessionsV2/SessionImageModal.tsx | 2 +- .../SessionList/Session.module.scss | 3 +- .../sessionsV2/SessionList/SessionCard.tsx | 6 +- .../SessionList/SessionLauncherCard.tsx | 18 +-- .../SessionList/SessionLauncherDisplay.tsx | 6 +- .../sessionsV2/SessionRepositoriesModal.tsx | 5 +- .../sessionsV2/SessionSecretsModal.tsx | 12 +- .../SessionShowPage/PauseWarningModal.tsx | 4 +- .../SessionShowPage/SessionAlerts.tsx | 8 +- .../SessionShowPage/ShowSessionPage.tsx | 32 ++--- .../StartSessionProgressBar.tsx | 2 +- .../features/sessionsV2/SessionStartPage.tsx | 84 ++++++------- .../SessionView/EnvVariablesModal.tsx | 6 +- .../SessionView/EnvironmentCard.tsx | 24 ++-- .../SessionView/SessionLaunchLinkModal.tsx | 29 +++-- .../sessionsV2/SessionView/SessionView.tsx | 34 ++--- client/src/features/sessionsV2/SessionsV2.tsx | 12 +- .../sessionsV2/StartSessionButton.tsx | 10 +- .../components/BuildLauncherButtons.tsx | 4 +- .../components/BuildStatusComponents.tsx | 24 ++-- .../SessionButton/ActiveSessionButton.tsx | 14 +-- .../components/SessionClassSelector.tsx | 24 ++-- .../SessionForm/AdvancedSettingsFields.tsx | 2 +- .../SessionForm/BuilderAdvancedSettings.tsx | 6 +- .../SessionForm/BuilderEnvironmentFields.tsx | 6 +- .../SessionForm/BuilderFrontendSelector.tsx | 7 +- .../SessionForm/BuilderSelectorCommon.tsx | 8 +- .../SessionForm/BuilderTypeSelector.tsx | 2 +- .../CodeRepositoryAdvancedSettings.tsx | 4 +- .../SessionForm/CodeRepositorySelector.tsx | 23 ++-- .../SessionForm/CustomEnvironmentFields.tsx | 6 +- .../SessionForm/EditLauncherFormContent.tsx | 8 +- .../SessionForm/EnvironmentKindField.tsx | 14 +-- .../SessionForm/InputOverlayLoader.tsx | 2 +- .../SessionForm/LauncherDetailsFields.tsx | 2 +- .../SessionForm/SessionEnvironmentItem.tsx | 2 +- .../components/SessionLauncherButtons.tsx | 17 ++- .../SessionModals/ModifyResourcesLauncher.tsx | 4 +- .../SessionModals/NewSessionLauncherModal.tsx | 10 +- .../SessionModals/SelectResourceClass.tsx | 8 +- .../SessionModals/ShoutdownSessionContent.tsx | 18 +-- .../UpdateSessionLauncherMetadataModal.tsx | 4 +- .../UpdateSessionLauncherModal.tsx | 4 +- .../SessionStatus/SessionImageBadge.tsx | 32 ++--- .../SessionStatus/SessionStatus.tsx | 26 ++-- .../sessionsV2/components/SessionsList.tsx | 2 +- .../src/features/sessionsV2/session.utils.ts | 32 ++--- .../features/sessionsV2/sessionsV2.types.ts | 3 +- .../sessionsV2/startSessionOptionsV2.slice.ts | 14 +-- .../sessionsV2/useSessionLaunchState.hook.ts | 18 +-- .../useSessionResourceClass.hook.ts | 12 +- .../sessionsV2/useSessionSecrets.hook.ts | 2 +- client/src/features/usersV2/api/users.api.ts | 2 +- .../src/features/usersV2/show/UserAvatar.tsx | 18 +-- .../features/usersV2/show/UserPageLayout.tsx | 2 +- .../features/usersV2/show/UserRedirect.tsx | 2 +- client/src/features/versions/versions.api.ts | 2 +- client/src/not-found/NotFound.tsx | 2 +- client/src/root.tsx | 2 +- client/src/routes.ts | 4 +- client/src/routes/catchall.tsx | 4 +- client/src/routes/groups/root.tsx | 26 ++-- client/src/routes/legacy/projects.tsx | 4 +- client/src/routes/projects/root.tsx | 12 +- client/src/routes/users/root.tsx | 32 ++--- client/src/store/store.utils.server.ts | 2 +- .../DesignTokens/BorderShadows.stories.tsx | 14 +-- .../bootstrap/DesignTokens/Colors.stories.tsx | 20 +-- .../bootstrap/DesignTokens/Fonts.stories.tsx | 8 +- .../DesignTokens/Opacity.stories.tsx | 12 +- .../DesignTokens/Spacing.stories.tsx | 8 +- .../storybook/bootstrap/ListGroup.stories.tsx | 2 +- .../SectioncontainerCard.stories.tsx | 24 ++-- client/src/storybook/bootstrap/utils.tsx | 2 +- client/src/storybook/useResolvedColor.ts | 2 +- client/src/styles/fonts/Inter/inter.scss | 54 +++++--- .../styles/renku_bootstrap_customization.scss | 3 +- client/src/utils/Utils.test.jsx | 2 +- client/src/utils/api/api.utils.ts | 4 +- client/src/utils/constants/NewDocs.ts | 32 ++--- client/src/utils/context/appParams.utils.ts | 20 +-- .../customHooks/useDebouncedState.hook.ts | 4 +- .../utils/customHooks/useLocationHash.hook.ts | 6 +- client/src/utils/customHooks/useNow.hook.ts | 2 +- .../utils/feature-flags/featureFlags.slice.ts | 2 +- client/src/utils/helpers/ApiErrors.ts | 2 +- client/src/utils/helpers/DateTimeUtils.ts | 4 +- client/src/utils/helpers/DurationUtils.ts | 12 +- client/src/utils/helpers/HelperFunctions.js | 2 +- client/src/utils/helpers/ServiceWorker.js | 12 +- .../src/utils/helpers/kgPagination.utils.ts | 10 +- client/src/utils/helpers/pagination.utils.ts | 2 +- client/src/utils/helpers/safeNewUrl.utils.ts | 2 +- client/src/utils/helpers/sentry/utils.ts | 2 +- client/src/utils/meta/meta.ts | 2 +- client/src/websocket/messageDispatch.ts | 6 +- client/src/websocket/useWebSocket.ts | 4 +- client/src/websocket/webSocket.slice.ts | 4 +- client/src/websocket/webSocket.ts | 32 ++--- server/src/api-client/index.ts | 6 +- server/src/authentication/authenticator.ts | 6 +- server/src/config.ts | 8 +- server/src/index.ts | 2 +- server/src/routes/apis.ts | 12 +- server/src/utils/apiError.ts | 2 +- server/src/utils/index.ts | 8 +- .../middlewares/errorHandlerMiddleware.ts | 2 +- .../middlewares/requestHandlerMiddleware.ts | 2 +- .../utils/middlewares/uploadFileMiddleware.ts | 2 +- server/src/utils/prometheus/prometheus.ts | 2 +- server/src/utils/sentry/sentry.ts | 10 +- server/src/utils/url.ts | 5 +- server/src/websocket/WsMessages.ts | 2 +- .../websocket/handlers/activationKgStatus.ts | 28 ++--- .../src/websocket/handlers/clientVersion.ts | 2 +- .../src/websocket/handlers/handlers.types.ts | 2 +- server/src/websocket/handlers/sessions.ts | 8 +- server/src/websocket/handlers/sessionsV2.ts | 6 +- server/src/websocket/index.ts | 26 ++-- server/tests/utils/url.test.ts | 26 ++-- server/tests/websocket/index.test.ts | 2 +- tests/cypress/e2e/addDatasetToProject.spec.ts | 4 +- tests/cypress/e2e/adminPage.spec.ts | 2 +- tests/cypress/e2e/connectedServicesV2.spec.ts | 2 +- tests/cypress/e2e/dashboard.spec.ts | 22 ++-- tests/cypress/e2e/dashboardV2.spec.ts | 4 +- tests/cypress/e2e/groupV2.spec.ts | 18 +-- .../groupV2DataConnectorCredentials.spec.ts | 32 ++--- tests/cypress/e2e/home.spec.ts | 2 +- tests/cypress/e2e/projectV2.spec.ts | 36 +++--- .../projectV2DataConnectorCredentials.spec.ts | 20 +-- .../e2e/projectV2GitLabWarning.spec.ts | 12 +- tests/cypress/e2e/projectV2Session.spec.ts | 40 +++--- .../e2e/projectV2SessionSecrets.spec.ts | 2 +- tests/cypress/e2e/projectV2setup.spec.ts | 34 ++--- tests/cypress/support/commands/datasets.ts | 8 +- tests/cypress/support/commands/projects.ts | 4 +- .../cypress/support/commands/react-select.ts | 6 +- .../support/renkulab-fixtures/admin.ts | 2 +- .../support/renkulab-fixtures/cloudStorage.ts | 14 +-- .../renkulab-fixtures/connectedServices.ts | 2 +- .../renkulab-fixtures/dataConnectors.ts | 34 ++--- .../support/renkulab-fixtures/dataServices.ts | 4 +- .../support/renkulab-fixtures/datasets.ts | 24 ++-- .../support/renkulab-fixtures/global.ts | 10 +- .../support/renkulab-fixtures/index.ts | 30 ++--- .../support/renkulab-fixtures/kgSearch.ts | 4 +- .../support/renkulab-fixtures/namespaceV2.ts | 20 +-- .../support/renkulab-fixtures/newProject.ts | 2 +- .../support/renkulab-fixtures/newSession.ts | 16 +-- .../support/renkulab-fixtures/projectV2.ts | 46 +++---- .../support/renkulab-fixtures/projects.ts | 86 ++++++------- .../support/renkulab-fixtures/secrets.ts | 4 +- .../support/renkulab-fixtures/sessions.ts | 16 +-- .../renkulab-fixtures/user-preferences.ts | 4 +- .../cypress/support/renkulab-fixtures/user.ts | 4 +- .../support/renkulab-fixtures/workflows.ts | 4 +- 360 files changed, 2014 insertions(+), 1951 deletions(-) diff --git a/client/eslint.config.mjs b/client/eslint.config.mjs index 358accddab..141267c06f 100644 --- a/client/eslint.config.mjs +++ b/client/eslint.config.mjs @@ -308,7 +308,7 @@ export default defineConfig([ "plugin:react/recommended", "plugin:react/jsx-runtime", "plugin:jest/recommended", - "prettier" + "prettier", ), ], plugins: { @@ -349,7 +349,7 @@ export default defineConfig([ "plugin:react/jsx-runtime", "plugin:react-hooks/recommended", "plugin:jest/recommended", - "prettier" + "prettier", ), ], plugins: { diff --git a/client/package.json b/client/package.json index 38805c999c..8f46f0ac52 100644 --- a/client/package.json +++ b/client/package.json @@ -200,4 +200,4 @@ ], "importOrderCaseSensitive": false } -} \ No newline at end of file +} diff --git a/client/public/static/public/theme.css b/client/public/static/public/theme.css index d460431590..a42b21d4ee 100644 --- a/client/public/static/public/theme.css +++ b/client/public/static/public/theme.css @@ -2,7 +2,9 @@ font-family: "Inter"; font-style: normal; font-weight: 400; - src: local("Inter Regular"), local("Inter-Regular"), + src: + local("Inter Regular"), + local("Inter-Regular"), url("./fonts/Inter/static/Inter-Regular.ttf") format("truetype"); font-display: swap; } @@ -11,7 +13,9 @@ font-family: "Inter"; font-style: normal; font-weight: 600; - src: local("Inter Bold"), local("Inter-Bold"), + src: + local("Inter Bold"), + local("Inter-Bold"), url("./fonts/Inter/static/Inter-Bold.ttf") format("truetype"); font-display: swap; } diff --git a/client/scripts/update_api_spec.js b/client/scripts/update_api_spec.js index 0676c0f19c..aef8c17867 100644 --- a/client/scripts/update_api_spec.js +++ b/client/scripts/update_api_spec.js @@ -155,12 +155,12 @@ async function updateApiFiles({ specFile, destFile }) { const DEST_FILE = destFile; console.log( - `Updating "${DEST_FILE}" with spec file from release ${DATA_SERVICES_RELEASE}...` + `Updating "${DEST_FILE}" with spec file from release ${DATA_SERVICES_RELEASE}...`, ); const fileUrl = new URL( join(DATA_SERVICES_REPO, DATA_SERVICES_RELEASE, API_SPEC_FILE), - GH_BASE_URL + GH_BASE_URL, ); const res = await fetch(fileUrl); if (res.status >= 400) { @@ -179,7 +179,7 @@ async function updateApiFiles({ specFile, destFile }) { await new Promise((resolve, reject) => { const cp = exec(["npx", "prettier", "-w", DEST_FILE].join(" ")); cp.on("error", (error) => - reject(new Error("failed to run prettier", { cause: error })) + reject(new Error("failed to run prettier", { cause: error })), ); cp.on("exit", (code) => { code == 0 ? resolve() : reject(new Error("failed to run prettier")); diff --git a/client/server.js b/client/server.js index 10082d5ac4..21a4629b5a 100644 --- a/client/server.js +++ b/client/server.js @@ -47,7 +47,7 @@ app.use("/storybook", express.static("storybook-static")); // Client assets app.use( "/assets", - express.static("build/client/assets", { immutable: true, maxAge: "1y" }) + express.static("build/client/assets", { immutable: true, maxAge: "1y" }), ); // Configuration and miscellaneous files @@ -56,7 +56,7 @@ await import(BUILD_PATH).then( /** * @import * as ModuleType from './server/app' * @type {ModuleType} */ - mod + mod, ) => { const { CONFIG_JSON, @@ -87,7 +87,7 @@ await import(BUILD_PATH).then( : res.send(SAMPLE_PRIVACY_CONTENT); }); } - } + }, ); // Logging @@ -105,7 +105,7 @@ if (process.env.CI !== "1") { requestID: tokens.req(req, res, "X-Request-Id"), }; return JSON.stringify(log); - }) + }), ); } @@ -126,16 +126,16 @@ if (METRICS_ENABLED) { /** * @import * as ModuleType from './server/app' * @type {ModuleType} */ - mod + mod, ) => { await mod.metrics({ app, metricsApp }); - } + }, ); metricsApp.listen(METRICS_PORT, () => { // eslint-disable-next-line no-console console.log( - `Prometheus exporter is running at http://localhost:${METRICS_PORT}/metrics` + `Prometheus exporter is running at http://localhost:${METRICS_PORT}/metrics`, ); }); } @@ -147,9 +147,9 @@ app.use( /** * @import * as ModuleType from './server/app' * @type {ModuleType} */ - mod - ) => mod.app - ) + mod, + ) => mod.app, + ), ); app.listen(PORT, () => { diff --git a/client/server/app.ts b/client/server/app.ts index 9c4e5ad4d6..882c7dc816 100644 --- a/client/server/app.ts +++ b/client/server/app.ts @@ -8,7 +8,7 @@ export const app = express(); app.use( createRequestHandler({ build: () => import("virtual:react-router/server-build"), - }) + }), ); export * as constants from "./constants"; diff --git a/client/server/constants.ts b/client/server/constants.ts index 796f389963..709872598a 100644 --- a/client/server/constants.ts +++ b/client/server/constants.ts @@ -70,7 +70,7 @@ export const CONFIG_JSON = { STATUSPAGE_ID: process.env.STATUSPAGE_ID, HOMEPAGE: safeJsonToObject(process.env.HOMEPAGE), CORE_API_VERSION_CONFIG: safeJsonToObject( - process.env.CORE_API_VERSION_CONFIG + process.env.CORE_API_VERSION_CONFIG, ), USER_PREFERENCES_MAX_PINNED_PROJECTS: process.env.USER_PREFERENCES_MAX_PINNED_PROJECTS, diff --git a/client/server/metrics.ts b/client/server/metrics.ts index 4e58cbd5bd..421d28138d 100644 --- a/client/server/metrics.ts +++ b/client/server/metrics.ts @@ -44,7 +44,7 @@ export async function metrics({ includeStatusCode: true, metricsApp, promRegistry: register, - }) + }), ); // Collect HTTP requests total (App only) diff --git a/client/src/authentication/listeners.client.ts b/client/src/authentication/listeners.client.ts index 4b32c3649f..0f8409ae8d 100644 --- a/client/src/authentication/listeners.client.ts +++ b/client/src/authentication/listeners.client.ts @@ -77,7 +77,7 @@ export function setupListener(): () => void { setTimeout(() => { sessionStorage.setItem( RENKU_QUERY_PARAMS.logout, - Date.now().toString() + Date.now().toString(), ); window.location.reload(); }, LOGOUT_EVENT_TIMEOUT); diff --git a/client/src/authentication/listeners.test.ts b/client/src/authentication/listeners.test.ts index 084e5cbf3a..61d94ffd45 100644 --- a/client/src/authentication/listeners.test.ts +++ b/client/src/authentication/listeners.test.ts @@ -45,7 +45,7 @@ window.location = { reload: vi.fn(), replace: vi.fn() }; async function dispatchStorageEvent( key: string, - newValue: string + newValue: string, ): Promise { // ? Dispatch Storage Event by creating it in an iframe return new Promise((resolve) => { @@ -77,7 +77,7 @@ describe("Authentication listeners functions", () => { const loginUrl = new URL(url); loginUrl.searchParams.set( RENKU_QUERY_PARAMS.login, - RENKU_QUERY_PARAMS.loginValue + RENKU_QUERY_PARAMS.loginValue, ); const loginLocation: Location = { ...location, @@ -111,7 +111,7 @@ describe("Authentication listeners functions", () => { await dispatchStorageEvent(RENKU_QUERY_PARAMS.login, Date.now().toString()); expect(sessionStorage.length).toBe(1); const sessionStorageDateStr = sessionStorage.getItem( - RENKU_QUERY_PARAMS.login + RENKU_QUERY_PARAMS.login, ); expect(sessionStorageDateStr).toBeTruthy(); const sessionStorageDate = parseInt(sessionStorageDateStr!); @@ -121,7 +121,7 @@ describe("Authentication listeners functions", () => { await dispatchStorageEvent( RENKU_QUERY_PARAMS.logout, - Date.now().toString() + Date.now().toString(), ); expect(sessionStorage.length).toBe(1); // that takes longer due to the timeout @@ -148,7 +148,7 @@ describe("Authentication listeners functions", () => { await dispatchStorageEvent( RENKU_QUERY_PARAMS.logout, - Date.now().toString() + Date.now().toString(), ); expect(localStorage.length).toBe(1); // that takes longer due to the timeout }); diff --git a/client/src/authentication/useLoginUrl.hook.ts b/client/src/authentication/useLoginUrl.hook.ts index 187d771eb2..72b28416d0 100644 --- a/client/src/authentication/useLoginUrl.hook.ts +++ b/client/src/authentication/useLoginUrl.hook.ts @@ -49,14 +49,14 @@ export function useLoginUrl(args?: UseLoginUrlArgs): URL { // TODO: fix react-hooks/refs /* eslint-disable react-hooks/refs */ const redirectUrl = - redirectUrl_ ?? windowLocationRef.current + (redirectUrl_ ?? windowLocationRef.current) ? new URL(windowLocationRef.current) : null; /* eslint-enable react-hooks/refs */ if (redirectUrl && !redirectUrl.search.includes(RENKU_QUERY_PARAMS.login)) { redirectUrl.searchParams.append( RENKU_QUERY_PARAMS.login, - RENKU_QUERY_PARAMS.loginValue + RENKU_QUERY_PARAMS.loginValue, ); } diff --git a/client/src/components/LegacyExternalLinks.tsx b/client/src/components/LegacyExternalLinks.tsx index 8fe86ff35f..4c854334e2 100644 --- a/client/src/components/LegacyExternalLinks.tsx +++ b/client/src/components/LegacyExternalLinks.tsx @@ -56,7 +56,7 @@ function ExternalLinkButton({ color ? `btn-${color}` : "btn-primary", disabled && disabled, size && `btn-${size}`, - className + className, )} > {title} diff --git a/client/src/components/Loader.tsx b/client/src/components/Loader.tsx index 7a9f890ead..a5065f554c 100644 --- a/client/src/components/Loader.tsx +++ b/client/src/components/Loader.tsx @@ -74,7 +74,7 @@ function LoaderSpinner({ className, inline, size }: LoaderSpinnerProps) { const baseSpinner = existingSpinners.find( (spinner) => spinner !== ref.current && - spinner.getAnimations?.().at(0)?.startTime != null + spinner.getAnimations?.().at(0)?.startTime != null, ); if (!baseSpinner) { return; @@ -106,7 +106,7 @@ function LoaderSpinner({ className, inline, size }: LoaderSpinnerProps) { "top-0", "start-0", "opacity-25", - inline && "d-inline-block" + inline && "d-inline-block", )} style={trackStyle} > @@ -117,7 +117,7 @@ function LoaderSpinner({ className, inline, size }: LoaderSpinnerProps) { "top-0", "start-0", "opacity-100", - inline && "d-inline-block" + inline && "d-inline-block", )} ref={ref} style={spinnerStyle} diff --git a/client/src/components/Pagination.tsx b/client/src/components/Pagination.tsx index bb234fcc96..e33f9c556c 100644 --- a/client/src/components/Pagination.tsx +++ b/client/src/components/Pagination.tsx @@ -109,7 +109,7 @@ const PaginationNav = memo(function PaginationNav({ }; return to; }, - [hash, pageQueryParam, pathname, search] + [hash, pageQueryParam, pathname, search], ); if (itemsCountPerPage === 0 || totalItemsCount === 0 || maxPages <= 0) { @@ -138,7 +138,7 @@ const PaginationNav = memo(function PaginationNav({ key="first" > - + , ); } @@ -152,7 +152,7 @@ const PaginationNav = memo(function PaginationNav({ key="prev" > - + , ); } @@ -166,7 +166,7 @@ const PaginationNav = memo(function PaginationNav({ key={`page-${pageNumber}`} > {pageNumber} - + , ); } @@ -180,7 +180,7 @@ const PaginationNav = memo(function PaginationNav({ key="next" > - + , ); } @@ -194,7 +194,7 @@ const PaginationNav = memo(function PaginationNav({ key="last" > - + , ); } diff --git a/client/src/components/TimeCaption.tsx b/client/src/components/TimeCaption.tsx index 0e34045a0b..1706aee39f 100644 --- a/client/src/components/TimeCaption.tsx +++ b/client/src/components/TimeCaption.tsx @@ -71,9 +71,9 @@ export function TimeCaption({ const refresh = Math.min( Math.max( duration.toMillis() / 10, - Duration.fromObject({ seconds: 5 }).toMillis() + Duration.fromObject({ seconds: 5 }).toMillis(), ), - Duration.fromObject({ minutes: 10 }).toMillis() + Duration.fromObject({ minutes: 10 }).toMillis(), ); /* eslint-enable spellcheck/spell-checker */ diff --git a/client/src/components/clipboard/Clipboard.tsx b/client/src/components/clipboard/Clipboard.tsx index 6fdba80279..5d81920537 100644 --- a/client/src/components/clipboard/Clipboard.tsx +++ b/client/src/components/clipboard/Clipboard.tsx @@ -67,7 +67,7 @@ export const Clipboard = ({ onSuccess(); }); }, - [clipboardText, onSuccess] + [clipboardText, onSuccess], ); useEffect(() => { diff --git a/client/src/components/commandCopy/CommandCopy.module.scss b/client/src/components/commandCopy/CommandCopy.module.scss index bbf6cbed29..62d8607490 100644 --- a/client/src/components/commandCopy/CommandCopy.module.scss +++ b/client/src/components/commandCopy/CommandCopy.module.scss @@ -6,8 +6,11 @@ } .clipboardBtn { - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: + color 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; &:hover, &:focus { diff --git a/client/src/components/commandCopy/CommandCopy.tsx b/client/src/components/commandCopy/CommandCopy.tsx index a7079e7391..250d6fba1d 100644 --- a/client/src/components/commandCopy/CommandCopy.tsx +++ b/client/src/components/commandCopy/CommandCopy.tsx @@ -37,13 +37,13 @@ export const CommandCopy = ({ command, noMargin }: CommandCopyProps) => { className={cx( styles.main, "rounded overflow-hidden d-flex align-items-stretch", - !noMargin && "my-2" + !noMargin && "my-2", )} > @@ -61,7 +61,7 @@ export const CommandCopy = ({ command, noMargin }: CommandCopyProps) => { "align-middle", "cursor-pointer", "px-2", - "py-1" + "py-1", )} clipboardText={command} /> diff --git a/client/src/components/container/CollapseBody.tsx b/client/src/components/container/CollapseBody.tsx index 159da7f9da..f22de08cdb 100644 --- a/client/src/components/container/CollapseBody.tsx +++ b/client/src/components/container/CollapseBody.tsx @@ -38,7 +38,7 @@ export default function CollapseBody({ "border-start", !customMarginStart && "ms-1", !customPaddingStart && "ps-2", - className + className, )} > {children} diff --git a/client/src/components/container/ContainerWrap.tsx b/client/src/components/container/ContainerWrap.tsx index a7f05edcc8..6f3bc10502 100644 --- a/client/src/components/container/ContainerWrap.tsx +++ b/client/src/components/container/ContainerWrap.tsx @@ -38,7 +38,7 @@ export default function ContainerWrap({ fullSize ? "w-100" : ["container-xxl", "py-3", "px-2", "px-sm-3", "px-xxl-0"], - className_ + className_, ); return
{children}
; } diff --git a/client/src/components/entityWatermark/EntityWatermark.tsx b/client/src/components/entityWatermark/EntityWatermark.tsx index a7aea19f49..cb93ffa147 100644 --- a/client/src/components/entityWatermark/EntityWatermark.tsx +++ b/client/src/components/entityWatermark/EntityWatermark.tsx @@ -34,7 +34,7 @@ export function EntityWatermark({ type }: EntityWatermarkProps) { "position-absolute", "top-0", "end-0", - styles.EntityWatermark + styles.EntityWatermark, )} > {type === "group" && } diff --git a/client/src/components/errors/RtkOrDataServicesError.tsx b/client/src/components/errors/RtkOrDataServicesError.tsx index 98720bffa1..67324ce417 100644 --- a/client/src/components/errors/RtkOrDataServicesError.tsx +++ b/client/src/components/errors/RtkOrDataServicesError.tsx @@ -32,7 +32,7 @@ interface BackendErrorResponse { function extractRkErrorMessage( error: FetchBaseQueryError | SerializedError, - property = "message" + property = "message", ): string { if ("error" in error && error.error.length) return error.error.toString(); if ("message" in error && error.message?.length) @@ -73,8 +73,8 @@ function RtkErrorAlert({ "status" in error ? error.status.toString() : "code" in error && error.code !== undefined - ? error.code.toString() - : "Unknown"; + ? error.code.toString() + : "Unknown"; // message const errorMessage = extractRkErrorMessage(error, property); diff --git a/client/src/components/icons/ChevronFlippedIcon.tsx b/client/src/components/icons/ChevronFlippedIcon.tsx index 8de076ecf1..776c578420 100644 --- a/client/src/components/icons/ChevronFlippedIcon.tsx +++ b/client/src/components/icons/ChevronFlippedIcon.tsx @@ -34,7 +34,7 @@ export default function ChevronFlippedIcon({ "accordion", styles.chevron, flipped && styles.chevronIsOpen, - className_ + className_, ); return ; } diff --git a/client/src/components/keywords/KeywordBadge.tsx b/client/src/components/keywords/KeywordBadge.tsx index 9ca5d16c07..d3083eb21e 100644 --- a/client/src/components/keywords/KeywordBadge.tsx +++ b/client/src/components/keywords/KeywordBadge.tsx @@ -69,7 +69,7 @@ export default function KeywordBadge({ "text-start", "text-wrap", highlighted && "bg-success-subtle", - className + className, )} data-cy={dataCy} > diff --git a/client/src/components/keywords/KeywordContainer.tsx b/client/src/components/keywords/KeywordContainer.tsx index 50ca1dc51f..1076020e0b 100644 --- a/client/src/components/keywords/KeywordContainer.tsx +++ b/client/src/components/keywords/KeywordContainer.tsx @@ -37,7 +37,7 @@ export default function KeywordContainer({ "flex-wrap", "fs-5", "gap-1", - className + className, )} data-cy={dataCy} > diff --git a/client/src/components/navbar/NavBarItems.tsx b/client/src/components/navbar/NavBarItems.tsx index d0fa65e667..4fff980d8f 100644 --- a/client/src/components/navbar/NavBarItems.tsx +++ b/client/src/components/navbar/NavBarItems.tsx @@ -47,7 +47,7 @@ export function RenkuToolbarItemUser({ params }: RenkuToolbarItemUserProps) { const gatewayURL = params.GATEWAY_URL; const userAccountUrl = `${gatewayURL}/auth/user-profile`; const logoutURL = `${gatewayURL}/auth/logout?redirect_url=${encodeURIComponent( - params.BASE_URL + params.BASE_URL, )}`; const loginUrl = useLoginUrl({ params }); diff --git a/client/src/components/renkuBadge/RenkuBadge.tsx b/client/src/components/renkuBadge/RenkuBadge.tsx index 4b25436d52..d8c7b1bf8f 100644 --- a/client/src/components/renkuBadge/RenkuBadge.tsx +++ b/client/src/components/renkuBadge/RenkuBadge.tsx @@ -37,12 +37,12 @@ export default function RenkuBadge({ color === "success" ? ["border-success", "bg-success-subtle", "text-success-emphasis"] : color === "danger" - ? ["border-danger", "bg-danger-subtle", "text-danger-emphasis"] - : color === "warning" - ? ["border-warning", "bg-warning-subtle", "text-warning-emphasis"] - : color === "info" - ? ["border-info", "bg-info-subtle", "text-info-emphasis"] - : ["border-dark-subtle", "bg-light", "text-dark-emphasis"]; + ? ["border-danger", "bg-danger-subtle", "text-danger-emphasis"] + : color === "warning" + ? ["border-warning", "bg-warning-subtle", "text-warning-emphasis"] + : color === "info" + ? ["border-info", "bg-info-subtle", "text-info-emphasis"] + : ["border-dark-subtle", "bg-light", "text-dark-emphasis"]; const baseClasses = [ "border", diff --git a/client/src/components/toast/LazyToastContainer.tsx b/client/src/components/toast/LazyToastContainer.tsx index 49835de660..fbcfd03848 100644 --- a/client/src/components/toast/LazyToastContainer.tsx +++ b/client/src/components/toast/LazyToastContainer.tsx @@ -4,7 +4,7 @@ import useAppDispatch from "~/utils/customHooks/useAppDispatch.hook"; import { setReady } from "./toast.slice"; const ToastContainer = lazy(() => - import("react-toastify").then((mod) => ({ default: mod.ToastContainer })) + import("react-toastify").then((mod) => ({ default: mod.ToastContainer })), ); type Props = ComponentProps; diff --git a/client/src/components/toast/useRenkuToast.tsx b/client/src/components/toast/useRenkuToast.tsx index 3a2fc8f300..713851e820 100644 --- a/client/src/components/toast/useRenkuToast.tsx +++ b/client/src/components/toast/useRenkuToast.tsx @@ -41,17 +41,17 @@ type UseRenkuToastReturn = { /** Send a success Renku toast. */ renkuToastSuccess: ( props: RenkuTypedToastProps, - options?: ToastOptions + options?: ToastOptions, ) => void; /** Send a danger Renku toast. */ renkuToastDanger: ( props: RenkuTypedToastProps, - options?: ToastOptions + options?: ToastOptions, ) => void; /** Send a warning Renku toast. */ renkuToastWarning: ( props: RenkuTypedToastProps, - options?: ToastOptions + options?: ToastOptions, ) => void; /** Send an info Renku toast. */ renkuToastInfo: (props: RenkuTypedToastProps, options?: ToastOptions) => void; @@ -62,7 +62,7 @@ export default function useRenkuToast(): UseRenkuToastReturn { (props: RenkuToastProps, options?: ToastOptions) => { toast(, { ...RENKU_TOAST_OPTIONS, ...options }); }, - [] + [], ); const renkuToastSuccess = useCallback( (props: RenkuTypedToastProps, options?: ToastOptions) => { @@ -71,7 +71,7 @@ export default function useRenkuToast(): UseRenkuToastReturn { ...options, }); }, - [] + [], ); const renkuToastDanger = useCallback( (props: RenkuTypedToastProps, options?: ToastOptions) => { @@ -80,7 +80,7 @@ export default function useRenkuToast(): UseRenkuToastReturn { ...options, }); }, - [] + [], ); const renkuToastWarning = useCallback( (props: RenkuTypedToastProps, options?: ToastOptions) => { @@ -89,7 +89,7 @@ export default function useRenkuToast(): UseRenkuToastReturn { ...options, }); }, - [] + [], ); const renkuToastInfo = useCallback( (props: RenkuTypedToastProps, options?: ToastOptions) => { @@ -98,7 +98,7 @@ export default function useRenkuToast(): UseRenkuToastReturn { ...options, }); }, - [] + [], ); return { toast, @@ -118,7 +118,7 @@ const RENKU_TOAST_OPTIONS = { "flex-row", "p-0", "align-items-start", - styles.toast + styles.toast, ), position: "top-right", autoClose: 7_500, diff --git a/client/src/entry.server.tsx b/client/src/entry.server.tsx index c89aab6d28..108257a094 100644 --- a/client/src/entry.server.tsx +++ b/client/src/entry.server.tsx @@ -23,7 +23,7 @@ function handleRequest( responseHeaders: Headers, routerContext: EntryContext, // eslint-disable-next-line @typescript-eslint/no-unused-vars - _loadContext: RouterContextProvider + _loadContext: RouterContextProvider, // If you have middleware enabled: // loadContext: RouterContextProvider ): Promise { @@ -33,7 +33,7 @@ function handleRequest( new Response(null, { status: responseStatusCode, headers: responseHeaders, - }) + }), ); } @@ -52,7 +52,7 @@ function handleRequest( // flush down the rejected boundaries let timeoutId: ReturnType | undefined = setTimeout( () => abort(), - streamTimeout + 1000 + streamTimeout + 1000, ); const { pipe, abort } = renderToPipeableStream( @@ -79,7 +79,7 @@ function handleRequest( new Response(stream, { headers: responseHeaders, status: responseStatusCode, - }) + }), ); }, onShellError(error: unknown) { @@ -95,7 +95,7 @@ function handleRequest( console.error(error); } }, - } + }, ); }); } diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/CodeRepositories/AddCodeRepositoryModal.tsx b/client/src/features/ProjectPageV2/ProjectPageContent/CodeRepositories/AddCodeRepositoryModal.tsx index 010e584c3d..4a3664a34a 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/CodeRepositories/AddCodeRepositoryModal.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageContent/CodeRepositories/AddCodeRepositoryModal.tsx @@ -85,7 +85,7 @@ export default function AddCodeRepositoryModal({ projectPatch: { repositories }, }); }, - [project.etag, project.id, project.repositories, setError, updateProject] + [project.etag, project.id, project.repositories, setError, updateProject], ); useEffect(() => { @@ -189,7 +189,7 @@ export function SshRepositoryUrlWarning({ }: SshRepositoryUrlWarningProps) { const isSsh = useMemo( () => detectSSHRepository(repositoryUrl), - [repositoryUrl] + [repositoryUrl], ); if (!isSsh) { diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/CodeRepositories/CodeRepositoryDisplay.tsx b/client/src/features/ProjectPageV2/ProjectPageContent/CodeRepositories/CodeRepositoryDisplay.tsx index ec07bb8e3f..195172f8a7 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/CodeRepositories/CodeRepositoryDisplay.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageContent/CodeRepositories/CodeRepositoryDisplay.tsx @@ -116,7 +116,7 @@ function EditCodeRepositoryModal({ return; } const repositories = project.repositories.map((url) => - url === repositoryUrl ? data.repositoryUrl : url + url === repositoryUrl ? data.repositoryUrl : url, ); const validationResult = validateNoDuplicatesInCodeRepositories(repositories); @@ -137,7 +137,7 @@ function EditCodeRepositoryModal({ repositoryUrl, setError, updateProject, - ] + ], ); useEffect(() => { @@ -419,7 +419,7 @@ export function RepositoryItem({ }, []); const canonicalUrlStr = useMemo( () => `${url.replace(/(?:\.git|\/)$/i, "")}`, - [url] + [url], ); const title = getRepositoryName(url); @@ -427,7 +427,7 @@ export function RepositoryItem({ ? { action: true, className: cx( - !readonly && ["cursor-pointer", "link-primary", "text-body"] + !readonly && ["cursor-pointer", "link-primary", "text-body"], ), onClick: toggleDetails, } @@ -763,11 +763,11 @@ export function RepositoryCallToActionAlert({ }, [userInfo]); const { data: oauthProviders } = useGetOauth2ProvidersQuery( - anonymousUser ? skipToken : undefined + anonymousUser ? skipToken : undefined, ); const oauthProvider = useMemo( () => oauthProviders?.find((p) => p.id === data?.provider?.id) ?? undefined, - [data?.provider?.id, oauthProviders] + [data?.provider?.id, oauthProviders], ); const onRepositoryOAuthConnected = useCallback(() => { @@ -775,7 +775,7 @@ export function RepositoryCallToActionAlert({ dispatch( repositoriesApi.util.invalidateTags([ { type: "Repository", id: repoUrl }, - ]) + ]), ); }); }, [dispatch, project]); diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/CodeRepositories/RepositoriesBox.tsx b/client/src/features/ProjectPageV2/ProjectPageContent/CodeRepositories/RepositoriesBox.tsx index 50f22d101f..4f0e9d1262 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/CodeRepositories/RepositoriesBox.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageContent/CodeRepositories/RepositoriesBox.tsx @@ -49,7 +49,7 @@ export function CodeRepositoriesDisplay({ project }: { project: Project }) { className={cx( "align-items-center", "d-flex", - "justify-content-between" + "justify-content-between", )} >
diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/CodeRepositories/repositories.utils.test.ts b/client/src/features/ProjectPageV2/ProjectPageContent/CodeRepositories/repositories.utils.test.ts index 7b044dc5a5..8f48ba4805 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/CodeRepositories/repositories.utils.test.ts +++ b/client/src/features/ProjectPageV2/ProjectPageContent/CodeRepositories/repositories.utils.test.ts @@ -49,7 +49,7 @@ describe("validateCodeRepository", () => { const result = validateCodeRepository(repositoryURL); expect(result).toContain( - "The repository URL must be a valid HTTP or HTTPS URL." + "The repository URL must be a valid HTTP or HTTPS URL.", ); }); @@ -59,7 +59,7 @@ describe("validateCodeRepository", () => { const result = validateCodeRepository(repositoryURL); expect(result).toContain( - "The repository URL must be a valid HTTP or HTTPS URL." + "The repository URL must be a valid HTTP or HTTPS URL.", ); }); }); @@ -85,7 +85,7 @@ describe("validateNoDuplicatesInCodeRepositories", () => { const result = validateNoDuplicatesInCodeRepositories(repositories); expect(result).toContain( - "This repository is already included in the project." + "This repository is already included in the project.", ); }); }); diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/CodeRepositories/repositories.utils.ts b/client/src/features/ProjectPageV2/ProjectPageContent/CodeRepositories/repositories.utils.ts index ee77bfbf0b..105c7958d7 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/CodeRepositories/repositories.utils.ts +++ b/client/src/features/ProjectPageV2/ProjectPageContent/CodeRepositories/repositories.utils.ts @@ -41,12 +41,12 @@ export function validateCodeRepository(repositoryURL: string): true | string { * Checks that there is no duplicate in the list of repositories in a project. */ export function validateNoDuplicatesInCodeRepositories( - repositories: string[] + repositories: string[], ): true | string { const cleaned = repositories.map((repo) => repo.trim()); const uniqueRepos = cleaned.reduce( (repos, current) => repos.add(current), - new Set() + new Set(), ); if (uniqueRepos.size === repositories.length) { return true; @@ -73,7 +73,7 @@ export function detectSSHRepository(repositoryURL: string): boolean { export function shouldInterrupt( repositoryData: GetRepositoryApiResponse, - hasProjectWritePermission: boolean + hasProjectWritePermission: boolean, ): boolean { if (hasProjectWritePermission) return !!( diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/DataConnectors/ProjectConnectDataConnectorsModal.tsx b/client/src/features/ProjectPageV2/ProjectPageContent/DataConnectors/ProjectConnectDataConnectorsModal.tsx index 7a34ef3296..d727c585cd 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/DataConnectors/ProjectConnectDataConnectorsModal.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageContent/DataConnectors/ProjectConnectDataConnectorsModal.tsx @@ -84,11 +84,10 @@ import { DC_SUCCESS_MESSAGE_TIMEOUT_MS, } from "./projectDataConnectors.constants"; -interface ProjectConnectDataConnectorsModalProps - extends Omit< - Parameters[0], - "dataConnector" | "projectId" - > { +interface ProjectConnectDataConnectorsModalProps extends Omit< + Parameters[0], + "dataConnector" | "projectId" +> { project: Project; switchMode?: () => void; } @@ -156,7 +155,7 @@ export default function ProjectConnectDataConnectorsModal({ function ProjectConnectDataConnectorModalTitle() { const { flatDataConnector, cloudStorageState } = useAppSelector( - (state) => state.dataConnectorFormSlice + (state) => state.dataConnectorFormSlice, ); const title = @@ -218,7 +217,7 @@ export function ProjectConnectDataConnectorModeSwitch({ "align-items-center", "btn-outline-primary", "btn", - "d-flex" + "d-flex", )} > @@ -240,7 +239,7 @@ export function ProjectConnectDataConnectorModeSwitch({ "align-items-center", "btn-outline-primary", "btn", - "d-flex" + "d-flex", )} > @@ -293,7 +292,7 @@ function ProjectSearchDataConnectorBodyAndFooter({ return new Set( projectDataConnectorLinks.data .map((link) => link.data_connector_id) - .filter((id) => id !== selectedItemId) + .filter((id) => id !== selectedItemId), ); }, [projectDataConnectorLinks.data, selectedItemId]); @@ -318,7 +317,7 @@ function ProjectSearchDataConnectorBodyAndFooter({ q: `${DC_SEARCH_TYPE} ${DC_SEARCH_DOI_PREFIX}${normalizedDOI}`, }, } - : skipToken + : skipToken, ); const searchIdentifier = useGetSearchQueryQuery( @@ -328,15 +327,15 @@ function ProjectSearchDataConnectorBodyAndFooter({ q: querySearchInput.includes("/") ? `${DC_SEARCH_TYPE} ${DC_SEARCH_NAMESPACE_PREFIX}${querySearchInput.slice( 0, - querySearchInput.lastIndexOf("/") + querySearchInput.lastIndexOf("/"), )} ${DC_SEARCH_SLUG_PREFIX}${querySearchInput.slice( - querySearchInput.lastIndexOf("/") + 1 + querySearchInput.lastIndexOf("/") + 1, )} ` : `${DC_SEARCH_TYPE} ${DC_SEARCH_SLUG_PREFIX}${querySearchInput}`, }, } - : skipToken + : skipToken, ); const searchMembership = useGetSearchQueryQuery({ params: { @@ -355,17 +354,17 @@ function ProjectSearchDataConnectorBodyAndFooter({ const searchImportedDoiResult = useMemo( () => (searchImportedDoi.data?.items ?? []).find( - (dc) => !projectDataConnectorIds.has(dc.id) + (dc) => !projectDataConnectorIds.has(dc.id), ) as SearchDataConnector | undefined, - [searchImportedDoi.data?.items, projectDataConnectorIds] + [searchImportedDoi.data?.items, projectDataConnectorIds], ); const searchIdentifierResult = useMemo( () => (searchIdentifier.data?.items ?? []).find( - (dc) => !projectDataConnectorIds.has(dc.id) + (dc) => !projectDataConnectorIds.has(dc.id), ) as SearchDataConnector | undefined, - [searchIdentifier.data?.items, projectDataConnectorIds] + [searchIdentifier.data?.items, projectDataConnectorIds], ); const searchIdentifierId = useMemo(() => { return searchIdentifierResult?.id; @@ -375,9 +374,9 @@ function ProjectSearchDataConnectorBodyAndFooter({ () => (searchMembership.data?.items ?? []).filter( (dc) => - dc.id !== searchIdentifierId && !projectDataConnectorIds.has(dc.id) + dc.id !== searchIdentifierId && !projectDataConnectorIds.has(dc.id), ) as SearchDataConnector[], - [projectDataConnectorIds, searchIdentifierId, searchMembership.data?.items] + [projectDataConnectorIds, searchIdentifierId, searchMembership.data?.items], ); const membershipIds = useMemo(() => { const ids = new Set(searchIdentifierId ? [searchIdentifierId] : []); @@ -413,7 +412,7 @@ function ProjectSearchDataConnectorBodyAndFooter({ const onImportAndLinkGlobalDataConnector = useCallback( async (dataConnectorId: string) => { setSelectedItemId( - dataConnectorId === selectedItemId ? null : dataConnectorId + dataConnectorId === selectedItemId ? null : dataConnectorId, ); const doiParsed = doiFromUrl(querySearchInput); @@ -446,12 +445,12 @@ function ProjectSearchDataConnectorBodyAndFooter({ project.id, selectedItemId, querySearchInput, - ] + ], ); const onLinkDataConnector = useCallback( (dataConnectorId: string) => { setSelectedItemId( - dataConnectorId === selectedItemId ? null : dataConnectorId + dataConnectorId === selectedItemId ? null : dataConnectorId, ); postLinkDataConnectorMutation({ dataConnectorId, @@ -460,7 +459,7 @@ function ProjectSearchDataConnectorBodyAndFooter({ }, }); }, - [selectedItemId, project.id, postLinkDataConnectorMutation] + [selectedItemId, project.id, postLinkDataConnectorMutation], ); // Variables to adjust the UI interactions @@ -683,7 +682,7 @@ function ProjectSearchDataConnectorBodyAndFooter({

{anythingMatched || alreadyImportedDataConnector ? ( @@ -760,7 +759,7 @@ function SearchResultListItem({ "text-body", "list-group-item-action", "py-1", - highlight && ["bg-opacity-10", "bg-primary", "border-primary-subtle"] + highlight && ["bg-opacity-10", "bg-primary", "border-primary-subtle"], )} data-cy="link-data-connector-list-item" > diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/DataConnectors/ProjectDataConnectorsBox.tsx b/client/src/features/ProjectPageV2/ProjectPageContent/DataConnectors/ProjectDataConnectorsBox.tsx index fe7fdad903..a3640911a1 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/DataConnectors/ProjectDataConnectorsBox.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageContent/DataConnectors/ProjectDataConnectorsBox.tsx @@ -95,8 +95,7 @@ export default function ProjectDataConnectorsBox({ ); } -interface ProjectDataConnectorBoxContentProps - extends DataConnectorListDisplayProps { +interface ProjectDataConnectorBoxContentProps extends DataConnectorListDisplayProps { data: GetProjectsByProjectIdDataConnectorLinksApiResponse; inaccessibleDataConnectorsCount: number; } @@ -171,7 +170,7 @@ function ProjectDataConnectorBoxHeader({ className={cx( "align-items-center", "d-flex", - "justify-content-between" + "justify-content-between", )} >

@@ -216,7 +215,7 @@ function DataConnectorLoadingBoxContent() { className={cx( "align-items-center", "d-flex", - "justify-content-between" + "justify-content-between", )} >
diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/Documentation/Documentation.tsx b/client/src/features/ProjectPageV2/ProjectPageContent/Documentation/Documentation.tsx index 390ec41c19..f6170ce280 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/Documentation/Documentation.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageContent/Documentation/Documentation.tsx @@ -69,7 +69,7 @@ export default function Documentation({ project }: DocumentationProps) { className={cx( "align-items-center", "d-flex", - "justify-content-between" + "justify-content-between", )} >

@@ -170,7 +170,7 @@ function DocumentationModal({ projectPatch: { documentation: data.documentation }, }); }, - [project.etag, project.id, updateProject] + [project.etag, project.id, updateProject], ); useEffect(() => { @@ -258,7 +258,7 @@ function DocumentationModal({ "d-flex", "align-items-center", "justify-content-between", - "w-100" + "w-100", )} >
diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/ProjectInformation/ProjectInformation.tsx b/client/src/features/ProjectPageV2/ProjectPageContent/ProjectInformation/ProjectInformation.tsx index 0b08e82bfd..265946a1c9 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/ProjectInformation/ProjectInformation.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageContent/ProjectInformation/ProjectInformation.tsx @@ -64,7 +64,7 @@ function ProjectCopyTemplateInformationBox({ project }: { project: Project }) { ? { projectId: project.template_id, } - : skipToken + : skipToken, ); const { data: templateProjectNamespace } = useGetNamespacesByNamespaceSlugQuery( @@ -72,7 +72,7 @@ function ProjectCopyTemplateInformationBox({ project }: { project: Project }) { ? { namespaceSlug: templateProject.namespace, } - : skipToken + : skipToken, ); if (!project.template_id) return null; @@ -133,7 +133,7 @@ export default function ProjectInformation({ }); const namespaceName = useMemo( () => namespace?.name ?? project.namespace, - [namespace?.name, project.namespace] + [namespace?.name, project.namespace], ); const namespaceUrl = useMemo( () => @@ -144,7 +144,7 @@ export default function ProjectInformation({ : generatePath(ABSOLUTE_ROUTES.v2.users.show.root, { username: project.namespace, }), - [namespace?.namespace_kind, project.namespace] + [namespace?.namespace_kind, project.namespace], ); const keywordsSorted = useMemo(() => { if (!project.keywords) return []; @@ -220,7 +220,7 @@ export default function ProjectInformation({ className={cx( "align-items-center", "d-flex", - "justify-content-between" + "justify-content-between", )} >

diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/AddSessionSecretButton.tsx b/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/AddSessionSecretButton.tsx index ad09cb506c..af933d6168 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/AddSessionSecretButton.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/AddSessionSecretButton.tsx @@ -80,7 +80,7 @@ function AddSessionSecretModal({ isOpen, toggle }: AddSessionSecretModalProps) { const onFirstStepSuccess = useCallback( (secretSlot: SessionSecretSlot) => setState({ step: "provide-secret", secretSlot }), - [] + [], ); useEffect(() => { @@ -131,8 +131,7 @@ type AddSessionSecretModalState = | { step: "add-secret-slot" } | { step: "provide-secret"; secretSlot: SessionSecretSlot }; -interface AddSessionSecretModalContentStep1Props - extends AddSessionSecretModalProps { +interface AddSessionSecretModalContentStep1Props extends AddSessionSecretModalProps { onSuccess: (secretSlot: SessionSecretSlot) => void; } @@ -173,11 +172,11 @@ function AddSessionSecretModalContentStep1({ }, }); }, - [postSessionSecretSlot, projectId] + [postSessionSecretSlot, projectId], ); const onSubmit = useMemo( () => handleSubmit(submitHandler), - [handleSubmit, submitHandler] + [handleSubmit, submitHandler], ); useEffect(() => { diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/ProjectSessionSecrets.tsx b/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/ProjectSessionSecrets.tsx index 15d0dd14fd..d39d9f3f5b 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/ProjectSessionSecrets.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/ProjectSessionSecrets.tsx @@ -62,7 +62,7 @@ export default function ProjectSessionSecrets() { isLoading: isLoadingSessionSecrets, error: sessionSecretsError, } = useGetProjectsByProjectIdSessionSecretsQuery( - isUserLoggedIn ? { projectId } : skipToken + isUserLoggedIn ? { projectId } : skipToken, ); const isLoading = isLoadingSessionSecretSlots || isLoadingSessionSecrets; const error = sessionSecretSlotsError ?? sessionSecretsError; @@ -102,7 +102,7 @@ export default function ProjectSessionSecrets() { "align-items-center", "d-flex", "justify-content-between", - "mb-2" + "mb-2", )} >
@@ -166,7 +166,7 @@ function ProjectSessionSecretsContent({ const sessionSecretSlotsWithSecrets = useMemo( () => getSessionSecretSlotsWithSecrets({ sessionSecretSlots, sessionSecrets }), - [sessionSecretSlots, sessionSecrets] + [sessionSecretSlots, sessionSecrets], ); if (!sessionSecretSlots.length) { diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/ProvideSessionSecretModalContent.tsx b/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/ProvideSessionSecretModalContent.tsx index ba71370e25..254b34a8fe 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/ProvideSessionSecretModalContent.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/ProvideSessionSecretModalContent.tsx @@ -152,11 +152,11 @@ function ProvideSessionSecretModalNewValueContent({ sessionSecretPatchList: [{ secret_slot_id: slotId, value: data.value }], }); }, - [patchSessionSecrets, projectId, slotId] + [patchSessionSecrets, projectId, slotId], ); const onSubmit = useMemo( () => handleSubmit(submitHandler), - [handleSubmit, submitHandler] + [handleSubmit, submitHandler], ); useEffect(() => { @@ -274,11 +274,11 @@ function ProvideSessionSecretModalExistingContent({ ], }); }, - [patchSessionSecrets, projectId, slotId] + [patchSessionSecrets, projectId, slotId], ); const onSubmit = useMemo( () => handleSubmit(submitHandler), - [handleSubmit, submitHandler] + [handleSubmit, submitHandler], ); useEffect(() => { diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/SecretsMountDirectoryComponent.tsx b/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/SecretsMountDirectoryComponent.tsx index f83c41a6d8..32e012dab2 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/SecretsMountDirectoryComponent.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/SecretsMountDirectoryComponent.tsx @@ -116,11 +116,11 @@ function UpdateSecretsMountDirectoryModal({ }, }); }, - [patchProject, project.etag, projectId] + [patchProject, project.etag, projectId], ); const onSubmit = useMemo( () => handleSubmit(submitHandler), - [handleSubmit, submitHandler] + [handleSubmit, submitHandler], ); const onReset = useCallback(() => { diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/SessionSecretActions.tsx b/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/SessionSecretActions.tsx index d6b0b9679e..d0fb2dab0f 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/SessionSecretActions.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/SessionSecretActions.tsx @@ -80,25 +80,25 @@ export default function SessionSecretActions({ const [isRemoveOpen, setIsRemoveOpen] = useState(false); const toggleRemove = useCallback( () => setIsRemoveOpen((isOpen) => !isOpen), - [] + [], ); const [isProvideOpen, setIsProvideOpen] = useState(false); const toggleProvide = useCallback( () => setIsProvideOpen((isOpen) => !isOpen), - [] + [], ); const [isClearOpen, setIsClearOpen] = useState(false); const toggleClear = useCallback( () => setIsClearOpen((isOpen) => !isOpen), - [] + [], ); const [isReplaceOpen, setIsReplaceOpen] = useState(false); const toggleReplace = useCallback( () => setIsReplaceOpen((isOpen) => !isOpen), - [] + [], ); if (!user?.isLoggedIn) { @@ -314,11 +314,11 @@ function EditSessionSecretModal({ }, }); }, - [patchSessionSecretSlot, secretSlot, slotId] + [patchSessionSecretSlot, secretSlot, slotId], ); const onSubmit = useMemo( () => handleSubmit(submitHandler), - [handleSubmit, submitHandler] + [handleSubmit, submitHandler], ); useEffect(() => { @@ -573,7 +573,7 @@ function ReplaceSecretValueModalWrapped({ ? { secretId, } - : skipToken + : skipToken, ); if (error || !userSecret) { diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/SessionSecretSlotItem.tsx b/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/SessionSecretSlotItem.tsx index 1efdffc4b0..740c00b4cc 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/SessionSecretSlotItem.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/SessionSecretSlotItem.tsx @@ -55,7 +55,7 @@ export default function SessionSecretSlotItem({ "border", "border-success", "bg-success-subtle", - "text-success-emphasis" + "text-success-emphasis", )} pill > @@ -78,7 +78,7 @@ export default function SessionSecretSlotItem({ "border", "border-dark-subtle", "bg-light", - "text-dark-emphasis" + "text-dark-emphasis", )} pill > diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/SessionViewSessionSecrets.tsx b/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/SessionViewSessionSecrets.tsx index 75eb41f35e..0a43e4c719 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/SessionViewSessionSecrets.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/SessionViewSessionSecrets.tsx @@ -58,7 +58,7 @@ export default function SessionViewSessionSecrets() { isLoading: isLoadingSessionSecrets, error: sessionSecretsError, } = useGetProjectsByProjectIdSessionSecretsQuery( - isUserLoggedIn ? { projectId } : skipToken + isUserLoggedIn ? { projectId } : skipToken, ); const isLoading = isLoadingSessionSecretSlots || isLoadingSessionSecrets; const error = sessionSecretSlotsError ?? sessionSecretsError; @@ -130,7 +130,7 @@ function SessionViewSessionSecretsContent({ const sessionSecretSlotsWithSecrets = useMemo( () => getSessionSecretSlotsWithSecrets({ sessionSecretSlots, sessionSecrets }), - [sessionSecretSlots, sessionSecrets] + [sessionSecretSlots, sessionSecrets], ); if (!sessionSecretSlots.length) { diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/fields/FilenameField.tsx b/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/fields/FilenameField.tsx index 0d9929276d..8e493dd715 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/fields/FilenameField.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/fields/FilenameField.tsx @@ -22,8 +22,9 @@ import { FormText, Input, Label } from "reactstrap"; import type { SessionSecretFormFieldProps } from "./fields.types"; -interface FilenameFieldProps - extends SessionSecretFormFieldProps { +interface FilenameFieldProps< + T extends FieldValues, +> extends SessionSecretFormFieldProps { secretsMountDirectory: string; } diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/fields/SelectUserSecretField.tsx b/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/fields/SelectUserSecretField.tsx index c53bdb8d93..8b150c64c1 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/fields/SelectUserSecretField.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/fields/SelectUserSecretField.tsx @@ -37,8 +37,9 @@ import type { SessionSecretFormFieldProps } from "./fields.types"; import styles from "./SelectUserSecretField.module.scss"; -interface SelectUserSecretFieldProps - extends SessionSecretFormFieldProps { +interface SelectUserSecretFieldProps< + T extends FieldValues, +> extends SessionSecretFormFieldProps { formId?: string; } @@ -107,8 +108,9 @@ export default function SelectUserSecretField({ ); } -interface UserSecretSelectorProps - extends SelectUserSecretFieldProps { +interface UserSecretSelectorProps< + T extends FieldValues, +> extends SelectUserSecretFieldProps { userSecrets: SecretWithId[]; } @@ -158,7 +160,7 @@ const selectClassNames: ClassNamesConfig = { menuIsOpen ? "rounded-top" : "rounded", "border", "cursor-pointer", - isFocused && "border-primary-subtle" + isFocused && "border-primary-subtle", // styles.control ), dropdownIndicator: () => cx("pe-3"), @@ -169,7 +171,7 @@ const selectClassNames: ClassNamesConfig = { "rounded-bottom", "border", "border-top-0", - "border-primary-subtle" + "border-primary-subtle", ), menuList: () => cx("d-grid"), option: ({ isFocused, isSelected }) => @@ -179,7 +181,7 @@ const selectClassNames: ClassNamesConfig = { "cursor-pointer", styles.option, isFocused && styles.optionIsFocused, - !isFocused && isSelected && styles.optionIsSelected + !isFocused && isSelected && styles.optionIsSelected, ), placeholder: () => cx("px-3"), singleValue: () => cx("px-3"), diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/fields/fields.types.ts b/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/fields/fields.types.ts index ef0e380b84..5d89c87d0e 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/fields/fields.types.ts +++ b/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/fields/fields.types.ts @@ -22,7 +22,8 @@ import type { UseControllerProps, } from "react-hook-form"; -export interface SessionSecretFormFieldProps - extends UseControllerProps { +export interface SessionSecretFormFieldProps< + T extends FieldValues, +> extends UseControllerProps { errors: FieldErrors; } diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/sessionSecrets.utils.ts b/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/sessionSecrets.utils.ts index a90d6097e3..18ccb64a0e 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/sessionSecrets.utils.ts +++ b/client/src/features/ProjectPageV2/ProjectPageContent/SessionSecrets/sessionSecrets.utils.ts @@ -33,7 +33,7 @@ export function getSessionSecretSlotsWithSecrets({ }: GetSessionSecretSlotsWithSecretsArgs): SessionSecretSlotWithSecret[] { return sessionSecretSlots.map((secretSlot) => { const secret = sessionSecrets.find( - ({ secret_slot }) => secret_slot.id === secretSlot.id + ({ secret_slot }) => secret_slot.id === secretSlot.id, ); return { secretSlot, diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectDelete.tsx b/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectDelete.tsx index 09b646de5e..6ef8346172 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectDelete.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectDelete.tsx @@ -59,7 +59,7 @@ export default function ProjectPageDelete({ project }: ProjectDeleteProps) { (e: React.ChangeEvent) => { setTypedName(e.target.value.trim()); }, - [setTypedName] + [setTypedName], ); return ( diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectKeywordsFormField.tsx b/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectKeywordsFormField.tsx index 7d955f1bda..649a4591ec 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectKeywordsFormField.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectKeywordsFormField.tsx @@ -91,12 +91,12 @@ export default function ProjectKeywordsFormField({ key={index} highlighted={ !(formState.defaultValues?.keywords ?? []).includes( - keyword + keyword, ) } remove={() => { const newKeywords = field.value.filter( - (k) => k !== keyword + (k) => k !== keyword, ); setValue("keywords", newKeywords, { shouldDirty: true, diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectMemberRoleSelect.tsx b/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectMemberRoleSelect.tsx index c8226f23d8..fb8ebde1af 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectMemberRoleSelect.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectMemberRoleSelect.tsx @@ -79,14 +79,14 @@ export default function ProjectMemberRoleSelect({ const defaultValue = GROUP_MEMBER_ROLE_OPTIONS[0]; const value = useMemo( () => options.find(({ value }) => value === value_) ?? defaultValue, - [defaultValue, value_, options] + [defaultValue, value_, options], ); const onChange = useCallback( (newValue: SingleValue) => { onChange_?.(newValue?.value); }, - [onChange_] + [onChange_], ); // We need to set the default value by hand here @@ -133,7 +133,7 @@ const selectClassNames: ClassNamesConfig = { styles.option, isDisabled && styles.optionIsDisabled, isFocused && !isDisabled && styles.optionIsFocused, - !isFocused && isSelected && !isDisabled && styles.optionIsSelected + !isFocused && isSelected && !isDisabled && styles.optionIsSelected, ), placeholder: () => cx("px-3"), loadingMessage: () => cx("p-3"), @@ -157,7 +157,7 @@ const selectComponents: SelectComponentsConfig< ProjectMemberRoleOption, false, GroupBase - > + >, ) => { const { data } = props; return ( diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectSettings.tsx b/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectSettings.tsx index 4170294701..d73ef198a3 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectSettings.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectSettings.tsx @@ -210,7 +210,7 @@ function ProjectSettingsForm({ project }: ProjectPageSettingsProps) { const currentNamespace = watch("namespace"); const currentName = watch("name"); const isDirtyExceptKeyword = Object.keys(dirtyFields).some( - (f) => f !== "keyword" + (f) => f !== "keyword", ); const navigate = useNavigate(); @@ -235,7 +235,7 @@ function ProjectSettingsForm({ project }: ProjectPageSettingsProps) { projectPatch: editedData as ProjectV2Metadata, }); }, - [project, updateProject] + [project, updateProject], ); const { params } = useContext(AppContext); diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectSettingsMembers.tsx b/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectSettingsMembers.tsx index 1766d51251..14f25dada9 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectSettingsMembers.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectSettingsMembers.tsx @@ -222,7 +222,7 @@ function ProjectPageSettingsMembersList({ const [memberToEdit, setMemberToEdit] = useState(); const numberOfOwners = useMemo( () => members.filter((m) => m.role === "owner").length, - [members] + [members], ); const onEdit = useCallback((member: ProjectMemberResponse) => { diff --git a/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectUnlinkTemplate.tsx b/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectUnlinkTemplate.tsx index 189520694a..5b131d1086 100644 --- a/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectUnlinkTemplate.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageContent/Settings/ProjectUnlinkTemplate.tsx @@ -65,7 +65,7 @@ export default function ProjectUnlinkTemplate({ (e: React.ChangeEvent) => { setTypedName(e.target.value.trim()); }, - [setTypedName] + [setTypedName], ); if (project.template_id == null) return null; diff --git a/client/src/features/ProjectPageV2/ProjectPageHeader/ProjectAutostartRedirectBanner.tsx b/client/src/features/ProjectPageV2/ProjectPageHeader/ProjectAutostartRedirectBanner.tsx index 89beb50f93..7b776f8e5f 100644 --- a/client/src/features/ProjectPageV2/ProjectPageHeader/ProjectAutostartRedirectBanner.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageHeader/ProjectAutostartRedirectBanner.tsx @@ -66,7 +66,7 @@ function ProjectAutostartRedirectInfoBanner({ isOwner }: { isOwner: boolean }) { "align-items-center", "justify-content-between", "flex-wrap", - "w-100" + "w-100", )} >
diff --git a/client/src/features/ProjectPageV2/ProjectPageHeader/ProjectCopyBanner.tsx b/client/src/features/ProjectPageV2/ProjectPageHeader/ProjectCopyBanner.tsx index 42c11cc015..def16d7834 100644 --- a/client/src/features/ProjectPageV2/ProjectPageHeader/ProjectCopyBanner.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageHeader/ProjectCopyBanner.tsx @@ -48,8 +48,10 @@ interface ProjectCopyBannerComponentProps { toggleModalOpen: () => void; } -interface ProjectCopyButtonProps - extends Omit { +interface ProjectCopyButtonProps extends Omit< + ProjectCopyBannerComponentProps, + "currentUser" +> { color: string; } function ProjectCopyButton({ color, toggleModalOpen }: ProjectCopyButtonProps) { @@ -84,7 +86,7 @@ function ProjectViewerMakeCopyBanner({ "align-items-center", "justify-content-between", "flex-wrap", - "w-100" + "w-100", )} >
@@ -119,11 +121,10 @@ function ProjectViewerMakeCopyBanner({ ); } -interface ProjectGoToCopyBannerProps - extends Omit< - ProjectCopyBannerComponentProps, - "currentUser" | "toggleModalOpen" - > { +interface ProjectGoToCopyBannerProps extends Omit< + ProjectCopyBannerComponentProps, + "currentUser" | "toggleModalOpen" +> { writableCopies: ReturnType< typeof useGetProjectsByProjectIdCopiesQuery >["data"]; @@ -151,7 +152,7 @@ function ProjectViewerGoToCopyBanner({ "align-items-center", "justify-content-between", "flex-wrap", - "w-100" + "w-100", )} >
@@ -238,7 +239,7 @@ function ProjectViewerCopyBanner({ "align-items-center", "justify-content-between", "flex-wrap", - "w-100" + "w-100", )} >
diff --git a/client/src/features/ProjectPageV2/ProjectPageHeader/ProjectCopyModal.tsx b/client/src/features/ProjectPageV2/ProjectPageHeader/ProjectCopyModal.tsx index 14e0c1cc40..9949c4545b 100644 --- a/client/src/features/ProjectPageV2/ProjectPageHeader/ProjectCopyModal.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageHeader/ProjectCopyModal.tsx @@ -104,7 +104,7 @@ export default function ProjectCopyModal({ }, }); }, - [copyProject, project.id] + [copyProject, project.id], ); const formId = "project-copy-form"; @@ -196,8 +196,10 @@ export default function ProjectCopyModal({ ); } -interface ProjectCopySuccessAlertProps - extends Pick { +interface ProjectCopySuccessAlertProps extends Pick< + ProjectCopyModalProps, + "toggle" +> { project: Project; hasError: boolean; } diff --git a/client/src/features/ProjectPageV2/ProjectPageNav/ProjectPageNav.tsx b/client/src/features/ProjectPageV2/ProjectPageNav/ProjectPageNav.tsx index e6f0e81ad9..066e565b8b 100644 --- a/client/src/features/ProjectPageV2/ProjectPageNav/ProjectPageNav.tsx +++ b/client/src/features/ProjectPageV2/ProjectPageNav/ProjectPageNav.tsx @@ -36,7 +36,7 @@ export default function ProjectPageNav({ project }: { project: Project }) { { namespace, slug, - } + }, ); return ( diff --git a/client/src/features/ProjectPageV2/utils/dataConnectorUtils.test.ts b/client/src/features/ProjectPageV2/utils/dataConnectorUtils.test.ts index 49ba1acfe0..4b61b8a858 100644 --- a/client/src/features/ProjectPageV2/utils/dataConnectorUtils.test.ts +++ b/client/src/features/ProjectPageV2/utils/dataConnectorUtils.test.ts @@ -23,23 +23,23 @@ import { doiFromUrl } from "./dataConnectorUtils"; describe("Test doiFromUrl", () => { it("handles zenodo", () => { expect(doiFromUrl("https://zenodo.org/records/12345")).toBe( - "10.5281/zenodo.12345" + "10.5281/zenodo.12345", ); }); it("handles dataverse", () => { expect( - doiFromUrl("https://dataverse.org/?persistentId=doi:10.1234/dataverse") + doiFromUrl("https://dataverse.org/?persistentId=doi:10.1234/dataverse"), ).toBe("10.1234/dataverse"); expect( doiFromUrl( - "https://dataverse.org/?persistentId=doi:10.1234/dataverse&version=2.0" - ) + "https://dataverse.org/?persistentId=doi:10.1234/dataverse&version=2.0", + ), ).toBe("10.1234/dataverse"); }); it("returns other input unchanged", () => { expect(doiFromUrl("https://example.com/some/path")).toBe( - "https://example.com/some/path" + "https://example.com/some/path", ); // eslint-disable-next-line spellcheck/spell-checker expect(doiFromUrl("10.1000/xyz123")).toBe("10.1000/xyz123"); diff --git a/client/src/features/ProjectPageV2/utils/roleUtils.ts b/client/src/features/ProjectPageV2/utils/roleUtils.ts index d1ba82e8b1..6c39ab98df 100644 --- a/client/src/features/ProjectPageV2/utils/roleUtils.ts +++ b/client/src/features/ProjectPageV2/utils/roleUtils.ts @@ -63,6 +63,6 @@ export function getMemberNameToDisplay(member: ProjectMemberResponse): string { return member.first_name || member.last_name ? `${member.first_name ?? ""} ${member.last_name ?? ""}` : member.namespace - ? `@${member.namespace}` - : "(unknown)"; + ? `@${member.namespace}` + : "(unknown)"; } diff --git a/client/src/features/ProjectPageV2/utils/useProjectPermissions.hook.ts b/client/src/features/ProjectPageV2/utils/useProjectPermissions.hook.ts index 782649ba6c..c74b374b3a 100644 --- a/client/src/features/ProjectPageV2/utils/useProjectPermissions.hook.ts +++ b/client/src/features/ProjectPageV2/utils/useProjectPermissions.hook.ts @@ -32,7 +32,7 @@ export default function useProjectPermissions({ }: UseProjectPermissionsArgs): Permissions { const { currentData, isLoading, isError, isUninitialized } = projectV2Api.endpoints.getProjectsByProjectIdPermissions.useQueryState( - projectId ? { projectId } : skipToken + projectId ? { projectId } : skipToken, ); const [fetchPermissions] = projectV2Api.endpoints.getProjectsByProjectIdPermissions.useLazyQuery(); diff --git a/client/src/features/admin/AddConnectedServiceButton.tsx b/client/src/features/admin/AddConnectedServiceButton.tsx index 7af32e964d..36b1e52202 100644 --- a/client/src/features/admin/AddConnectedServiceButton.tsx +++ b/client/src/features/admin/AddConnectedServiceButton.tsx @@ -101,7 +101,7 @@ function AddConnectedServiceModal({ }, }); }, - [createProvider] + [createProvider], ); useEffect(() => { diff --git a/client/src/features/admin/AddManyUsersToResourcePoolButton.tsx b/client/src/features/admin/AddManyUsersToResourcePoolButton.tsx index bd4468588f..1f5d21a882 100644 --- a/client/src/features/admin/AddManyUsersToResourcePoolButton.tsx +++ b/client/src/features/admin/AddManyUsersToResourcePoolButton.tsx @@ -143,14 +143,14 @@ function AddManyUsersToResourcePoolModal({ lastName: "", addToResourcePool: false, keycloakId: "", - })) + })), ); setStep("validate-users"); return; } const usersToAdd = data.users.filter( - ({ addToResourcePool }) => addToResourcePool + ({ addToResourcePool }) => addToResourcePool, ); const userIds = usersToAdd.map(({ keycloakId }) => ({ id: keycloakId })); addUsersToResourcePool({ @@ -158,7 +158,7 @@ function AddManyUsersToResourcePoolModal({ poolUsersWithId: userIds, }); }, - [addUsersToResourcePool, resourcePool.id, setError, setValue, step] + [addUsersToResourcePool, resourcePool.id, setError, setValue, step], ); // eslint-disable-next-line react-hooks/incompatible-library @@ -171,7 +171,7 @@ function AddManyUsersToResourcePoolModal({ const watchUsers = watch("users"); const isFetchingUsers = watchUsers.some(({ isFetching }) => isFetching); const usersToAdd = watchUsers.filter( - ({ addToResourcePool }) => addToResourcePool + ({ addToResourcePool }) => addToResourcePool, ).length; useEffect(() => { @@ -230,7 +230,7 @@ function AddManyUsersToResourcePoolModal({ id="addManyUsersToResourcePoolUsers" className={cx( "form-control", - errors.userEmails && "is-invalid" + errors.userEmails && "is-invalid", )} placeholder={USERS_EMAILS_PLACEHOLDER} rows={10} @@ -254,7 +254,7 @@ function AddManyUsersToResourcePoolModal({ key={index} className={cx( index == 0 && "rounded-top", - index + 1 == userFields.length && "rounded-bottom" + index + 1 == userFields.length && "rounded-bottom", )} control={control} index={index} @@ -370,7 +370,7 @@ function UserItem({ } const match = users.find( (keycloakUser) => - keycloakUser.email.toLowerCase() === item.email.toLowerCase() + keycloakUser.email.toLowerCase() === item.email.toLowerCase(), ); return match; }, [item.email, users]); @@ -405,7 +405,7 @@ function UserItem({ "justify-content-between", "align-items-center", "bg-rk-white", - !userItem.isFetching && !userItem.found && "text-danger" + !userItem.isFetching && !userItem.found && "text-danger", )} > {userItem.isFetching ? ( diff --git a/client/src/features/admin/AddResourceClassButton.tsx b/client/src/features/admin/AddResourceClassButton.tsx index f6a025fd86..af1fd32089 100644 --- a/client/src/features/admin/AddResourceClassButton.tsx +++ b/client/src/features/admin/AddResourceClassButton.tsx @@ -122,7 +122,7 @@ function AddResourceClassModal({ }, }); }, - [addResourceClass, resourcePool.id] + [addResourceClass, resourcePool.id], ); const onAddTolerationLabel = useCallback(() => { @@ -314,7 +314,7 @@ function AddResourceClassModal({ "form-control", "rounded-0", "rounded-start", - errors.tolerations?.at?.(index) && "is-invalid" + errors.tolerations?.at?.(index) && "is-invalid", )} id={`updateResourceClassTolerations-${item.id}-${id}`} type="text" @@ -353,7 +353,7 @@ function AddResourceClassModal({ "flew-row", "flex-wrap", "align-items-center", - "my-3" + "my-3", )} key={item.id} > @@ -370,7 +370,7 @@ function AddResourceClassModal({ className={cx( "form-control", "rounded-0", - errors.node_affinities?.at?.(index) && "is-invalid" + errors.node_affinities?.at?.(index) && "is-invalid", )} id={`updateResourceClassNodeAffinitiesKey-${item.id}-${id}`} type="text" diff --git a/client/src/features/admin/AddResourcePoolButton.tsx b/client/src/features/admin/AddResourcePoolButton.tsx index 62010dae72..cb38c874f5 100644 --- a/client/src/features/admin/AddResourcePoolButton.tsx +++ b/client/src/features/admin/AddResourcePoolButton.tsx @@ -75,7 +75,7 @@ function AddResourcePoolModal({ isOpen, toggle }: AddResourcePoolModalProps) { ?.filter((pool) => pool.default) .flatMap(({ classes }) => classes) .find((c) => c.default), - [resourcePools] + [resourcePools], ); const defaultQuota = useMemo( () => @@ -86,7 +86,7 @@ function AddResourcePoolModal({ isOpen, toggle }: AddResourcePoolModalProps) { gpu: 2 * defaultSessionClass.gpu, } : { cpu: 1, memory: 1, gpu: 0 }, - [defaultSessionClass] + [defaultSessionClass], ); // Form state @@ -144,23 +144,23 @@ function AddResourcePoolModal({ isOpen, toggle }: AddResourcePoolModalProps) { const remote: RemoteConfiguration | undefined = !data.remote.enabled ? undefined : data.remote.kind == "firecrest" - ? { - kind: "firecrest", - provider_id: data.remote.firecrestConfiguration.providerId?.trim() - ? data.remote.firecrestConfiguration.providerId.trim() - : undefined, - api_url: data.remote.firecrestConfiguration.apiUrl.trim(), - system_name: data.remote.firecrestConfiguration.systemName.trim(), - partition: data.remote.firecrestConfiguration.partition?.trim() - ? data.remote.firecrestConfiguration.partition.trim() - : undefined, - } - : data.remote.kind == "runai" - ? { - kind: "runai", - base_url: data.remote.runaiConfiguration.baseUrl.trim(), - } - : undefined; + ? { + kind: "firecrest", + provider_id: data.remote.firecrestConfiguration.providerId?.trim() + ? data.remote.firecrestConfiguration.providerId.trim() + : undefined, + api_url: data.remote.firecrestConfiguration.apiUrl.trim(), + system_name: data.remote.firecrestConfiguration.systemName.trim(), + partition: data.remote.firecrestConfiguration.partition?.trim() + ? data.remote.firecrestConfiguration.partition.trim() + : undefined, + } + : data.remote.kind == "runai" + ? { + kind: "runai", + base_url: data.remote.runaiConfiguration.baseUrl.trim(), + } + : undefined; addResourcePool({ resourcePool: { classes: populatedClass ? [populatedClass] : [], @@ -179,7 +179,7 @@ function AddResourcePoolModal({ isOpen, toggle }: AddResourcePoolModalProps) { }, }); }, - [addResourcePool, defaultSessionClass] + [addResourcePool, defaultSessionClass], ); useEffect(() => { @@ -276,7 +276,7 @@ function AddResourcePoolModal({ isOpen, toggle }: AddResourcePoolModalProps) { { diff --git a/client/src/features/admin/AddUserToResourcePoolButton.tsx b/client/src/features/admin/AddUserToResourcePoolButton.tsx index 16df6eb1fd..e8211ca12c 100644 --- a/client/src/features/admin/AddUserToResourcePoolButton.tsx +++ b/client/src/features/admin/AddUserToResourcePoolButton.tsx @@ -109,7 +109,7 @@ function AddUserToResourcePoolModal({ poolUsersWithId: [{ id: data.userId }], }); }, - [addUsersToResourcePool, resourcePool.id] + [addUsersToResourcePool, resourcePool.id], ); const onPickUser = useCallback((user: KeycloakUser | null | undefined) => { @@ -178,7 +178,7 @@ function AddUserToResourcePoolModal({ className={cx( "rounded-0", "rounded-start", - errors.userId && "is-invalid" + errors.userId && "is-invalid", )} disabled id="addUserToResourcePoolUserDisplay" @@ -250,7 +250,7 @@ function UserAutoSuggest({ onPickUser }: UserAutoSuggestProps) { (_event: FormEvent, { newValue }: ChangeEvent) => { setValue(newValue); }, - [] + [], ); const inputProps: InputProps = { @@ -261,7 +261,7 @@ function UserAutoSuggest({ onPickUser }: UserAutoSuggestProps) { const getSuggestionValue = useCallback( ({ firstName, lastName }: KeycloakUser) => `${firstName} ${lastName}`, - [] + [], ); const onSuggestionsClearRequested = useCallback(() => { @@ -272,17 +272,17 @@ function UserAutoSuggest({ onPickUser }: UserAutoSuggestProps) { ({ value }: SuggestionsFetchRequestedParams) => { getKeycloakUsers({ realm, search: value }, /*preferCacheValue=*/ true); }, - [getKeycloakUsers, realm] + [getKeycloakUsers, realm], ); const onSuggestionSelected = useCallback( ( _event: FormEvent, - { suggestion }: SuggestionSelectedEventData + { suggestion }: SuggestionSelectedEventData, ) => { onPickUser(suggestion); }, - [onPickUser] + [onPickUser], ); const renderSuggestion = ({ firstName, lastName, email }: KeycloakUser) => ( diff --git a/client/src/features/admin/AdminPage.tsx b/client/src/features/admin/AdminPage.tsx index fddbde6daf..7ca217b384 100644 --- a/client/src/features/admin/AdminPage.tsx +++ b/client/src/features/admin/AdminPage.tsx @@ -189,7 +189,7 @@ function ResourcePoolItem({ resourcePool }: ResourcePoolItemProps) { "p-3", "bg-transparent", "border-0", - "fw-bold" + "fw-bold", )} onClick={toggle} type="button" @@ -224,7 +224,7 @@ function ResourcePoolItem({ resourcePool }: ResourcePoolItemProps) { "row-cols-1", "row-cols-sm-4", "row-cols-md-5", - "text-end" + "text-end", )} >
@@ -259,7 +259,7 @@ function ResourcePoolItem({ resourcePool }: ResourcePoolItemProps) { "align-items-center", "row", "row-cols-1", - "row-cols-sm-2" + "row-cols-sm-2", )} >
@@ -275,7 +275,7 @@ function ResourcePoolItem({ resourcePool }: ResourcePoolItemProps) { "align-items-center", "row", "row-cols-1", - "row-cols-sm-2" + "row-cols-sm-2", )} >
@@ -327,7 +327,7 @@ function ResourcePoolThresholds({ resourcePool }: ResourcePoolItemProps) { "row-cols-1", "row-cols-sm-3", "row-cols-lg-4", - "text-end" + "text-end", )} >
@@ -339,12 +339,14 @@ function ResourcePoolThresholds({ resourcePool }: ResourcePoolItemProps) { {idleThreshold ? toFullHumanDuration(idleThreshold) : isLoading - ? "(Loading...)" - : isError - ? "unavailable" - : data?.defaultCullingThresholds?.registered.idle - ? toFullHumanDuration(data.defaultCullingThresholds.registered.idle) - : "unknown"} + ? "(Loading...)" + : isError + ? "unavailable" + : data?.defaultCullingThresholds?.registered.idle + ? toFullHumanDuration( + data.defaultCullingThresholds.registered.idle, + ) + : "unknown"}
@@ -353,14 +355,14 @@ function ResourcePoolThresholds({ resourcePool }: ResourcePoolItemProps) { {hibernationThreshold ? toFullHumanDuration(hibernationThreshold) : isLoading - ? "(Loading...)" - : isError - ? "unavailable" - : data?.defaultCullingThresholds?.registered.hibernation - ? toFullHumanDuration( - data.defaultCullingThresholds.registered.hibernation - ) - : "unknown"} + ? "(Loading...)" + : isError + ? "unavailable" + : data?.defaultCullingThresholds?.registered.hibernation + ? toFullHumanDuration( + data.defaultCullingThresholds.registered.hibernation, + ) + : "unknown"}
@@ -449,7 +451,7 @@ function ResourceClassItem({ "flex-column", "flex-sm-row", "flex-wrap", - "justify-content-end" + "justify-content-end", )} > {isDefault ? ( diff --git a/client/src/features/admin/ConnectedServicesSection.tsx b/client/src/features/admin/ConnectedServicesSection.tsx index 4d7e63605e..64842eeae8 100644 --- a/client/src/features/admin/ConnectedServicesSection.tsx +++ b/client/src/features/admin/ConnectedServicesSection.tsx @@ -113,7 +113,7 @@ function ConnectedService({ provider }: ConnectedServiceProps) { "fw-bold", "gap-3", "p-3", - "w-100" + "w-100", )} onClick={toggle} type="button" @@ -162,7 +162,7 @@ function ConnectedService({ provider }: ConnectedServiceProps) { "flex-row", "gap-2", "justify-content-end", - "pt-0" + "pt-0", )} > diff --git a/client/src/features/admin/IncidentsAndMaintenanceSection.tsx b/client/src/features/admin/IncidentsAndMaintenanceSection.tsx index 9562efb847..c0e25b59d1 100644 --- a/client/src/features/admin/IncidentsAndMaintenanceSection.tsx +++ b/client/src/features/admin/IncidentsAndMaintenanceSection.tsx @@ -176,12 +176,12 @@ function IncidentBannerSection() { platformConfigPatch: { incident_banner: incidentBanner }, }); }, - [patchPlatformConfig, platformConfig?.etag] + [patchPlatformConfig, platformConfig?.etag], ); const onClearIncidentBanner = useCallback( () => onSubmit({ incidentBanner: "" }), - [onSubmit] + [onSubmit], ); useEffect(() => { @@ -230,7 +230,7 @@ function IncidentBannerSection() { "p-3", "bg-transparent", "border-0", - "fw-bold" + "fw-bold", )} onClick={onToggleOpen} type="button" @@ -260,7 +260,7 @@ function IncidentBannerSection() {

@@ -195,7 +195,7 @@ function DashboardSession({ session }: DashboardSessionProps) { "mt-2", "d-block", "d-sm-flex", - "gap-5" + "gap-5", )} xs={12} > diff --git a/client/src/features/dataConnectorsV2/api/data-connectors.enhanced-api.ts b/client/src/features/dataConnectorsV2/api/data-connectors.enhanced-api.ts index c5087f32df..a9750dd338 100644 --- a/client/src/features/dataConnectorsV2/api/data-connectors.enhanced-api.ts +++ b/client/src/features/dataConnectorsV2/api/data-connectors.enhanced-api.ts @@ -13,13 +13,11 @@ import type { } from "./data-connectors.api"; import { dataConnectorsApi as api } from "./data-connectors.api"; -export interface GetDataConnectorsApiResponse - extends AbstractKgPaginatedResponse { +export interface GetDataConnectorsApiResponse extends AbstractKgPaginatedResponse { dataConnectors: GetDataConnectorsApiResponseOrig; } -export interface GetDataConnectorsByDataConnectorIdDepositsApiResponse - extends AbstractKgPaginatedResponse { +export interface GetDataConnectorsByDataConnectorIdDepositsApiResponse extends AbstractKgPaginatedResponse { deposits: GetDataConnectorsByDataConnectorIdDepositsApiResponseOrig; } @@ -64,7 +62,7 @@ const injectedApi = api.injectEndpoints({ queryArg.params == null ? {} : { page: queryArg.params.page, perPage: queryArg.params.per_page }, - dataConnectors + dataConnectors, ); return { @@ -97,7 +95,7 @@ const injectedApi = api.injectEndpoints({ queryArg.params == null ? {} : { page: queryArg.params.page, perPage: queryArg.params.per_page }, - deposits + deposits, ); return { @@ -117,7 +115,7 @@ const injectedApi = api.injectEndpoints({ const { dataConnectorIds } = queryArg; const result: GetDataConnectorsListByDataConnectorIdsApiResponse = {}; const promises = dataConnectorIds.map((dataConnectorId) => - fetchWithBQ(`/data_connectors/${dataConnectorId}`) + fetchWithBQ(`/data_connectors/${dataConnectorId}`), ); const responses = await Promise.all(promises); for (let i = 0; i < dataConnectorIds.length; i++) { @@ -138,7 +136,7 @@ const injectedApi = api.injectEndpoints({ const { dataConnectorIds } = queryArg; const result: GetDataConnectorListSecretsApiResponse = {}; const promises = dataConnectorIds.map((dataConnectorId) => - fetchWithBQ(`/data_connectors/${dataConnectorId}/secrets`) + fetchWithBQ(`/data_connectors/${dataConnectorId}/secrets`), ); const responses = await Promise.all(promises); for (let i = 0; i < dataConnectorIds.length; i++) { diff --git a/client/src/features/dataConnectorsV2/components/DataConnectorActions.tsx b/client/src/features/dataConnectorsV2/components/DataConnectorActions.tsx index cc0e48dc46..a660ccfbc9 100644 --- a/client/src/features/dataConnectorsV2/components/DataConnectorActions.tsx +++ b/client/src/features/dataConnectorsV2/components/DataConnectorActions.tsx @@ -101,7 +101,7 @@ function DataConnectorRemoveDeleteModal({ (e: React.ChangeEvent) => { setTypedName(e.target.value.trim()); }, - [setTypedName] + [setTypedName], ); useEffect(() => { @@ -235,8 +235,10 @@ function DataConnectorRemoveDeleteModal({ ); } -interface DataConnectorRemoveUnlinkModalProps - extends Omit { +interface DataConnectorRemoveUnlinkModalProps extends Omit< + DataConnectorRemoveModalProps, + "dataConnectorLink" +> { dataConnectorLink: DataConnectorToProjectLink; projectNamespace: string; projectSlug: string; @@ -419,7 +421,7 @@ function DataConnectorActionsInner({ dataConnectorId: dataConnector.id, params: LAST_DEPOSIT_QUERY_PARAMS, }, - { pollingInterval: POLL_TIME_INACTIVE_DEPOSITS } + { pollingInterval: POLL_TIME_INACTIVE_DEPOSITS }, ); const { project_id: projectId } = dataConnectorLink ?? {}; @@ -429,7 +431,7 @@ function DataConnectorActionsInner({ const location = useLocation(); const pathMatch = matchPath( ABSOLUTE_ROUTES.v2.projects.show.root, - location.pathname + location.pathname, ); const namespace = pathMatch?.params?.namespace; const slug = pathMatch?.params?.slug; @@ -487,26 +489,26 @@ function DataConnectorActionsInner({ ), } : lastDeposit.status === "upload_complete" - ? { - key: "data-connector-deposit-finalize", - onClick: toggleFinalizationDepositOpen, - content: ( - <> - - Finalize deposit - - ), - } - : { - key: "data-connector-deposit-edit", - onClick: toggleEditDeposit, - content: ( - <> - - Edit or rerun data export - - ), - }, + ? { + key: "data-connector-deposit-finalize", + onClick: toggleFinalizationDepositOpen, + content: ( + <> + + Finalize deposit + + ), + } + : { + key: "data-connector-deposit-edit", + onClick: toggleEditDeposit, + content: ( + <> + + Edit or rerun data export + + ), + }, ] : []), ...(requiresCredentials diff --git a/client/src/features/dataConnectorsV2/components/DataConnectorCredentialsModal.tsx b/client/src/features/dataConnectorsV2/components/DataConnectorCredentialsModal.tsx index 8d9727dfa5..5de6641598 100644 --- a/client/src/features/dataConnectorsV2/components/DataConnectorCredentialsModal.tsx +++ b/client/src/features/dataConnectorsV2/components/DataConnectorCredentialsModal.tsx @@ -65,7 +65,7 @@ export default function DataConnectorCredentialsModal({ saveCredentials({ dataConnectorId: dataConnector.id, dataConnectorSecretPatchList: Object.entries( - config.sensitiveFieldValues + config.sensitiveFieldValues, ).map(([key, value]) => ({ name: key, value, @@ -78,7 +78,7 @@ export default function DataConnectorCredentialsModal({ dataConnector, saveCredentials, saveCredentialsResult, - ] + ], ); useEffect(() => { diff --git a/client/src/features/dataConnectorsV2/components/DataConnectorModal/DataConnectorModalBody.tsx b/client/src/features/dataConnectorsV2/components/DataConnectorModal/DataConnectorModalBody.tsx index 4cf5ce09b6..fa52e1a056 100644 --- a/client/src/features/dataConnectorsV2/components/DataConnectorModal/DataConnectorModalBody.tsx +++ b/client/src/features/dataConnectorsV2/components/DataConnectorModal/DataConnectorModalBody.tsx @@ -82,7 +82,7 @@ export default function DataConnectorModalBody({ switchMode, }: DataConnectorModalBodyProps) { const { flatDataConnector, schemata, success } = useAppSelector( - (state) => state.dataConnectorFormSlice + (state) => state.dataConnectorFormSlice, ); if (success) { return ( @@ -118,10 +118,10 @@ function AddOrEditDataConnector({ dispatch( dataConnectorFormSlice.actions.setCloudStorageState({ cloudStorageState: newState, - }) + }), ); }, - [dispatch] + [dispatch], ); const setFlatDataConnector = useCallback( (newDetails: Partial) => { @@ -131,10 +131,10 @@ function AddOrEditDataConnector({ ...newDetails, }, validationSucceeded: null, - }) + }), ); }, - [dispatch] + [dispatch], ); const CloudStorageContentByStep = cloudStorageState.step >= 0 && @@ -222,15 +222,15 @@ type DataConnectorMountFormFields = function DataConnectorMount({ dataConnector }: AddOrEditDataConnectorProps) { const dispatch = useAppDispatch(); const { cloudStorageState, flatDataConnector, schemata } = useAppSelector( - (state) => state.dataConnectorFormSlice + (state) => state.dataConnectorFormSlice, ); const [isAdvancedSettingOpen, setIsAdvancedSettingsOpen] = useState(false); const toggleIsOpen = useCallback( () => setIsAdvancedSettingsOpen( - (isAdvancedSettingOpen) => !isAdvancedSettingOpen + (isAdvancedSettingOpen) => !isAdvancedSettingOpen, ), - [] + [], ); const { control, @@ -281,14 +281,14 @@ function DataConnectorMount({ dataConnector }: AddOrEditDataConnectorProps) { dispatch( dataConnectorFormSlice.actions.setCloudStorageState({ cloudStorageState: { saveCredentials: !!value }, - }) + }), ); return; } dispatch( dataConnectorFormSlice.actions.setFlatDataConnector({ flatDataConnector: { ...getValues() }, - }) + }), ); }, [ @@ -298,28 +298,28 @@ function DataConnectorMount({ dataConnector }: AddOrEditDataConnectorProps) { setValue, touchedFields.mountPoint, touchedFields.slug, - ] + ], ); const { validationResult } = useAppSelector( - (state) => state.dataConnectorFormSlice + (state) => state.dataConnectorFormSlice, ); const schema = getSchema(schemata, flatDataConnector.schema); const schemaOptions = getSchemaOptions( schemata, true, flatDataConnector.schema, - flatDataConnector.provider + flatDataConnector.provider, ); const usesIntegration = !!schema?.usesIntegration; const secretFields = schemaOptions == null ? [] : Object.values(schemaOptions).filter( - (o) => o && o.convertedType === "secret" + (o) => o && o.convertedType === "secret", ); const hasPasswordFieldWithInput = secretFields.some( - (o) => flatDataConnector.options && flatDataConnector.options[o.name] + (o) => flatDataConnector.options && flatDataConnector.options[o.name], ); const currentName = watch("name"); @@ -328,7 +328,7 @@ function DataConnectorMount({ dataConnector }: AddOrEditDataConnectorProps) { dispatch( dataConnectorFormSlice.actions.setFlatDataConnector({ flatDataConnector: { ...getValues() }, - }) + }), ); }, [currentSlug, getValues, dispatch]); const resetUrl = useCallback(() => { @@ -620,7 +620,7 @@ function DataConnectorMount({ dataConnector }: AddOrEditDataConnectorProps) { {...field} className={cx( "form-control", - errors.keyword && "is-invalid" + errors.keyword && "is-invalid", )} data-cy="data-connector-keyword-input" onChange={(e) => { @@ -686,7 +686,7 @@ function DataConnectorMount({ dataConnector }: AddOrEditDataConnectorProps) { highlighted={!oldKeywords?.includes(keyword)} remove={() => { const newKeywords = currentKeywords.filter( - (k) => k !== keyword + (k) => k !== keyword, ); setValue("keywords", newKeywords, { shouldDirty: true, @@ -733,7 +733,7 @@ function DataConnectorMount({ dataConnector }: AddOrEditDataConnectorProps) { "border-0", "fw-medium", "fs-3", - "px-0" + "px-0", )} type="button" onClick={toggleIsOpen} @@ -762,7 +762,7 @@ function DataConnectorMount({ dataConnector }: AddOrEditDataConnectorProps) { {...field} className={cx( "form-control", - errors.mountPoint && "is-invalid" + errors.mountPoint && "is-invalid", )} data-cy="data-connector-mount-input" onChange={(e) => { diff --git a/client/src/features/dataConnectorsV2/components/DataConnectorModal/DataConnectorModalFooter.tsx b/client/src/features/dataConnectorsV2/components/DataConnectorModal/DataConnectorModalFooter.tsx index fe1487d590..669572fca5 100644 --- a/client/src/features/dataConnectorsV2/components/DataConnectorModal/DataConnectorModalFooter.tsx +++ b/client/src/features/dataConnectorsV2/components/DataConnectorModal/DataConnectorModalFooter.tsx @@ -89,10 +89,10 @@ function DataConnectorCreateFooter({ dispatch( dataConnectorFormSlice.actions.setCloudStorageState({ cloudStorageState: newState, - }) + }), ); }, - [dispatch] + [dispatch], ); // Mutations @@ -112,7 +112,7 @@ function DataConnectorCreateFooter({ dataConnectorFormSlice.actions.reset({ flatDataConnector: resetStatus, hasDataConnector: dataConnector != null, - }) + }), ); }, [ createResult, @@ -133,7 +133,7 @@ function DataConnectorCreateFooter({ const dataConnectorPost = dataConnectorPostFromFlattened( flatDataConnector, schemata ?? [], - dataConnector + dataConnector, ); createDataConnector({ @@ -143,7 +143,7 @@ function DataConnectorCreateFooter({ const currentSchema = useMemo( () => schemata?.find((s) => s.prefix === flatDataConnector.schema), - [schemata, flatDataConnector] + [schemata, flatDataConnector], ); const schemaHasAccessModes = currentSchema ? hasSchemaAccessMode(currentSchema) @@ -152,7 +152,7 @@ function DataConnectorCreateFooter({ const schemaRequiresProvider = useMemo( () => hasProviderShortlist(flatDataConnector.schema) || schemaHasAccessModes, - [flatDataConnector.schema, schemaHasAccessModes] + [flatDataConnector.schema, schemaHasAccessModes], ); useEffect(() => { @@ -169,7 +169,7 @@ function DataConnectorCreateFooter({ success: true, dataConnectorResultId: createResult.data.id, dataConnectorResultName, - }) + }), ); createResult.reset(); } @@ -180,7 +180,7 @@ function DataConnectorCreateFooter({ if (dataConnectorId == null) return; if (!schemata) return; const sensitiveFieldNames = findSensitive( - schemata.find((s) => s.prefix === flatDataConnector.schema) + schemata.find((s) => s.prefix === flatDataConnector.schema), ); const options = flatDataConnector.options as CloudStorageDetailsOptions; if (!options) return; @@ -198,7 +198,7 @@ function DataConnectorCreateFooter({ shouldSaveDataConnectorCredentials( dataConnectorSecretPatchList, cloudStorageState.saveCredentials, - validationResult?.isSuccess ?? false + validationResult?.isSuccess ?? false, ) && credentialSaveStatus === "none"; if (!shouldSaveCredentials) return; @@ -228,18 +228,18 @@ function DataConnectorCreateFooter({ validationResult?.isSuccess != true ? "none" : dataConnectorResultId == null || saveCredentialsResult.isUninitialized - ? "none" - : saveCredentialsResult.isLoading - ? "trying" - : saveCredentialsResult.isSuccess - ? "success" - : saveCredentialsResult.isError - ? "failure" - : "none"; + ? "none" + : saveCredentialsResult.isLoading + ? "trying" + : saveCredentialsResult.isSuccess + ? "success" + : saveCredentialsResult.isError + ? "failure" + : "none"; dispatch( dataConnectorFormSlice.actions.setCredentialSaveStatus({ credentialSaveStatus: status, - }) + }), ); }, [ credentialSaveStatus, @@ -280,19 +280,19 @@ function DataConnectorCreateFooter({ project?.id == null ? "none" : dataConnectorResultId == null || - createProjectLinkResult.isUninitialized - ? "none" - : createProjectLinkResult.isLoading - ? "trying" - : createProjectLinkResult.isSuccess - ? "success" - : createProjectLinkResult.isError - ? "failure" - : "none"; + createProjectLinkResult.isUninitialized + ? "none" + : createProjectLinkResult.isLoading + ? "trying" + : createProjectLinkResult.isSuccess + ? "success" + : createProjectLinkResult.isError + ? "failure" + : "none"; dispatch( dataConnectorFormSlice.actions.setProjectLinkStatus({ projectLinkStatus: status, - }) + }), ); }, [ createProjectLinkResult, @@ -313,7 +313,7 @@ function DataConnectorCreateFooter({ schemata, true, flatDataConnector.schema, - flatDataConnector.provider + flatDataConnector.provider, )?.every((o) => { return ( !o.required || @@ -343,16 +343,16 @@ function DataConnectorCreateFooter({ const addButtonDisableReason = isAddResultLoading ? "Please wait, the storage is being added" : !flatDataConnector.name - ? "Please provide a name" - : !flatDataConnector.mountPoint - ? "Please provide a mount point" - : !flatDataConnector.schema - ? "Please go back and select a storage type" - : schemaHasAccessModes - ? "Please go back and select a mode" - : disableContinueButton - ? "Please go back and select a provider" - : ""; + ? "Please provide a name" + : !flatDataConnector.mountPoint + ? "Please provide a mount point" + : !flatDataConnector.schema + ? "Please go back and select a storage type" + : schemaHasAccessModes + ? "Please go back and select a mode" + : disableContinueButton + ? "Please go back and select a provider" + : ""; const isResultLoading = isAddResultLoading; return ( @@ -403,8 +403,10 @@ function DataConnectorCreateFooter({ ); } -interface DataConnectorEditFooterProps - extends Omit { +interface DataConnectorEditFooterProps extends Omit< + DataConnectorModalFooterProps, + "dataConnector" +> { dataConnector: DataConnectorRead; } @@ -418,7 +420,7 @@ function DataConnectorEditFooter({ const dispatch = useAppDispatch(); const { data: connectorSecrets } = useGetDataConnectorsByDataConnectorIdSecretsQuery( - dataConnectorId ? { dataConnectorId } : skipToken + dataConnectorId ? { dataConnectorId } : skipToken, ); const { cloudStorageState, @@ -440,7 +442,7 @@ function DataConnectorEditFooter({ dataConnectorFormSlice.actions.reset({ flatDataConnector: resetStatus, hasDataConnector: dataConnector != null, - }) + }), ); }, [dataConnector, dispatch, updateResult]); @@ -455,7 +457,7 @@ function DataConnectorEditFooter({ const dataConnectorPost = dataConnectorPostFromFlattened( flatDataConnector, schemata ?? [], - dataConnector + dataConnector, ); // We manually set success only when we get an ID back. That's just to show a success message @@ -475,7 +477,7 @@ function DataConnectorEditFooter({ const currentSchema = useMemo( () => schemata?.find((s) => s.prefix === flatDataConnector.schema), - [schemata, flatDataConnector] + [schemata, flatDataConnector], ); const schemaHasAccessModes = currentSchema ? hasSchemaAccessMode(currentSchema) @@ -484,7 +486,7 @@ function DataConnectorEditFooter({ const schemaRequiresProvider = useMemo( () => hasProviderShortlist(flatDataConnector.schema) || schemaHasAccessModes, - [flatDataConnector.schema, schemaHasAccessModes] + [flatDataConnector.schema, schemaHasAccessModes], ); useEffect(() => { @@ -501,7 +503,7 @@ function DataConnectorEditFooter({ success: true, dataConnectorResultId: updateResult.data.id, dataConnectorResultName, - }) + }), ); updateResult.reset(); } @@ -518,7 +520,7 @@ function DataConnectorEditFooter({ schemata, true, flatDataConnector.schema, - flatDataConnector.provider + flatDataConnector.provider, )?.every((o) => { return ( !o.required || @@ -548,14 +550,14 @@ function DataConnectorEditFooter({ const addButtonDisableReason = updateResult.isLoading ? "Please wait, the storage is being modified" : !flatDataConnector.name - ? "Please provide a name" - : !flatDataConnector.mountPoint - ? "Please provide a mount point" - : !flatDataConnector.schema - ? "Please go back and select a storage type" - : schemaHasAccessModes - ? "Please go back and select a mode" - : "Please go back and select a provider"; + ? "Please provide a name" + : !flatDataConnector.mountPoint + ? "Please provide a mount point" + : !flatDataConnector.schema + ? "Please go back and select a storage type" + : schemaHasAccessModes + ? "Please go back and select a mode" + : "Please go back and select a provider"; const isResultLoading = isModifyResultLoading; const hasStoredCredentialsInConfig = @@ -636,7 +638,7 @@ export default function DataConnectorModalFooter({ function shouldSaveDataConnectorCredentials( dataConnectorSecretPatchList: { name: string; value: string }[], stateSaveCredentials: boolean, - validationSucceeded: boolean + validationSucceeded: boolean, ) { return !!( dataConnectorSecretPatchList.length > 0 && diff --git a/client/src/features/dataConnectorsV2/components/DataConnectorModal/DataConnectorModalResult.tsx b/client/src/features/dataConnectorsV2/components/DataConnectorModal/DataConnectorModalResult.tsx index cacf28e3c9..5df8b7de36 100644 --- a/client/src/features/dataConnectorsV2/components/DataConnectorModal/DataConnectorModalResult.tsx +++ b/client/src/features/dataConnectorsV2/components/DataConnectorModal/DataConnectorModalResult.tsx @@ -27,7 +27,7 @@ export default function DataConnectorModalResult({ alreadyExisted, }: DataConnectorModalResultProps) { const { dataConnectorResultName } = useAppSelector( - (state) => state.dataConnectorFormSlice + (state) => state.dataConnectorFormSlice, ); const dataConnectorFragment = ( <> @@ -55,7 +55,7 @@ function DataConnectorResultAlertContent({ dataConnectorFragment, }: DataConnectorResultAlertContentProps) { const { credentialSaveStatus, projectLinkStatus } = useAppSelector( - (state) => state.dataConnectorFormSlice + (state) => state.dataConnectorFormSlice, ); if (credentialSaveStatus == "none" && projectLinkStatus == "none") { return

{dataConnectorFragment}.

; diff --git a/client/src/features/dataConnectorsV2/components/DataConnectorModal/DataConnectorSaveCredentialsInfo.tsx b/client/src/features/dataConnectorsV2/components/DataConnectorModal/DataConnectorSaveCredentialsInfo.tsx index 502635e9ed..5c4f261ef8 100644 --- a/client/src/features/dataConnectorsV2/components/DataConnectorModal/DataConnectorSaveCredentialsInfo.tsx +++ b/client/src/features/dataConnectorsV2/components/DataConnectorModal/DataConnectorSaveCredentialsInfo.tsx @@ -34,7 +34,7 @@ export default function DataConnectorSaveCredentialsInfo({ onFieldValueChange, }: DataConnectorSaveCredentialsInfoProps) { const { cloudStorageState } = useAppSelector( - (state) => state.dataConnectorFormSlice + (state) => state.dataConnectorFormSlice, ); return (
diff --git a/client/src/features/dataConnectorsV2/components/DataConnectorModal/dataConnectorModalButtons.tsx b/client/src/features/dataConnectorsV2/components/DataConnectorModal/dataConnectorModalButtons.tsx index 7d7ab39ceb..d6beb836dc 100644 --- a/client/src/features/dataConnectorsV2/components/DataConnectorModal/dataConnectorModalButtons.tsx +++ b/client/src/features/dataConnectorsV2/components/DataConnectorModal/dataConnectorModalButtons.tsx @@ -55,7 +55,7 @@ export function DataConnectorModalBackButton({ initialStep, }: DataConnectorModalBackButtonProps) { const { cloudStorageState, isActionOngoing } = useAppSelector( - (state) => state.dataConnectorFormSlice + (state) => state.dataConnectorFormSlice, ); useAppSelector((state) => state.dataConnectorFormSlice); const dispatch = useAppDispatch(); @@ -85,7 +85,7 @@ export function DataConnectorModalBackButton({ : cloudStorageState.step - 1, }, validationResult: null, - }) + }), ); }} > @@ -119,7 +119,7 @@ export function DataConnectorModalContinueButton({ const addButtonId = "add-data-connector-continue"; const continueButtonId = "add-data-connector-next"; const { cloudStorageState, flatDataConnector } = useAppSelector( - (state) => state.dataConnectorFormSlice + (state) => state.dataConnectorFormSlice, ); const dispatch = useAppDispatch(); const setState = useCallback( @@ -127,10 +127,10 @@ export function DataConnectorModalContinueButton({ dispatch( dataConnectorFormSlice.actions.setCloudStorageState({ cloudStorageState: newState, - }) + }), ); }, - [dispatch] + [dispatch], ); if (cloudStorageState.step === 3 && cloudStorageState.completedSteps >= 2) { return ( @@ -233,8 +233,8 @@ export function DataConnectorModalContinueButton({ cloudStorageState.step === 0 ? CLOUD_STORAGE_TOTAL_STEPS - 1 : cloudStorageState.step > cloudStorageState.completedSteps - ? cloudStorageState.step - : cloudStorageState.completedSteps, + ? cloudStorageState.step + : cloudStorageState.completedSteps, step: cloudStorageState.step === 0 ? CLOUD_STORAGE_TOTAL_STEPS @@ -249,8 +249,8 @@ export function DataConnectorModalContinueButton({ {!flatDataConnector.schema ? "Please select a storage type" : selectedSchemaHasAccessMode - ? "Please select a mode or change storage type" - : "Please select a provider or change storage type"} + ? "Please select a mode or change storage type" + : "Please select a provider or change storage type"} )}
@@ -323,7 +323,7 @@ function TestConnectionAndContinueButtons({ dispatch( dataConnectorFormSlice.actions.setValidationResult({ validationResult: null, - }) + }), ); validationResult.reset(); } @@ -351,7 +351,9 @@ function TestConnectionAndContinueButtons({ }); } dispatch( - dataConnectorFormSlice.actions.setActionOngoing({ isActionOngoing: true }) + dataConnectorFormSlice.actions.setActionOngoing({ + isActionOngoing: true, + }), ); validateCloudStorageConnection({ body: validateParameters }).then( (result) => { @@ -364,9 +366,9 @@ function TestConnectionAndContinueButtons({ dataConnectorFormSlice.actions.setValidationResult({ validationResult, isActionOngoing: false, - }) + }), ); - } + }, ); }, [dispatch, flatDataConnector, validateCloudStorageConnection]); const buttonTestId = `${testId}-button`; @@ -388,8 +390,8 @@ function TestConnectionAndContinueButtons({ const testConnectionColor = validationResult.isSuccess ? "outline-primary" : validationResult.isError - ? "danger" - : "outline-primary"; + ? "danger" + : "outline-primary"; const testConnectionSection = (