diff --git a/package-lock.json b/package-lock.json index 643a36da..9f8ecafc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -144,30 +144,30 @@ } }, "node_modules/@axa-fr/oidc-client": { - "version": "7.25.10", - "resolved": "https://registry.npmjs.org/@axa-fr/oidc-client/-/oidc-client-7.25.10.tgz", - "integrity": "sha512-PBpzTfBINyFL3LGpqt8RcvqODHKC24UcptGLgbNEVSS/BYT9YzrHbbpGZxJlApSipqGNtwWAaeKy+KVaKuhF2g==", + "version": "7.25.12", + "resolved": "https://registry.npmjs.org/@axa-fr/oidc-client/-/oidc-client-7.25.12.tgz", + "integrity": "sha512-Xxl6scLYFcw1/yhGjwZWy7yKOGc05P9B7QhdX9IGfT1GsfdteqpnXhbFW/IpDFrYV02mLaqjfISRWottA8pixw==", "hasInstallScript": true, "license": "MIT", "dependencies": { - "@axa-fr/oidc-client-service-worker": "7.25.10" + "@axa-fr/oidc-client-service-worker": "7.25.12" } }, "node_modules/@axa-fr/oidc-client-service-worker": { - "version": "7.25.10", - "resolved": "https://registry.npmjs.org/@axa-fr/oidc-client-service-worker/-/oidc-client-service-worker-7.25.10.tgz", - "integrity": "sha512-WxDFgmQq4bgpotaTvLGVR5cG+Q7su72TmCRZZjw0niQc8Pdl660fQ0Z/BUse9Ou2e9UE9D4Sa49ROGRorJyGtQ==", + "version": "7.25.12", + "resolved": "https://registry.npmjs.org/@axa-fr/oidc-client-service-worker/-/oidc-client-service-worker-7.25.12.tgz", + "integrity": "sha512-hUOCBt8pKGR+rDHY7WTc6IlgyxZFvlPcrbeR0F9b7EbHgKg3dT2Fc5Ai8FhgmNLvU/GY+VoKLzS85fsxNiw5vA==", "license": "MIT" }, "node_modules/@axa-fr/react-oidc": { - "version": "7.25.10", - "resolved": "https://registry.npmjs.org/@axa-fr/react-oidc/-/react-oidc-7.25.10.tgz", - "integrity": "sha512-0go/XHJFPutNpb8miXx9FTjz1fl/fJfIJOr4zd59GcoOUhowbfy1RfPWI6g3CqN1drvPm9QDDuRm2dKD8qQWtQ==", + "version": "7.25.12", + "resolved": "https://registry.npmjs.org/@axa-fr/react-oidc/-/react-oidc-7.25.12.tgz", + "integrity": "sha512-/zYLhHzuTp05QIIusyxCnYv5FqoVKbDTAxBDK6B20IzjRAIWF1REgrxTbQLupcXGUtnkkw48wSEmFdhIgR8tzg==", "hasInstallScript": true, "license": "MIT", "dependencies": { - "@axa-fr/oidc-client": "7.25.10", - "@axa-fr/oidc-client-service-worker": "7.25.10" + "@axa-fr/oidc-client": "7.25.12", + "@axa-fr/oidc-client-service-worker": "7.25.12" }, "peerDependencies": { "react": "^17.0.0 || ^18.0.0 || ^19.0.0" @@ -9847,9 +9847,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001715", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001715.tgz", - "integrity": "sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw==", + "version": "1.0.30001716", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001716.tgz", + "integrity": "sha512-49/c1+x3Kwz7ZIWt+4DvK3aMJy9oYXXG6/97JKsnjdCk/6n9vVyWL8NAwVt95Lwt9eigI10Hl782kDfZUUlRXw==", "funding": [ { "type": "opencollective", @@ -10403,9 +10403,9 @@ "license": "MIT" }, "node_modules/core-js-compat": { - "version": "3.41.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz", - "integrity": "sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==", + "version": "3.42.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.42.0.tgz", + "integrity": "sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10417,9 +10417,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.41.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.41.0.tgz", - "integrity": "sha512-71Gzp96T9YPk63aUvE5Q5qP+DryB4ZloUZPSOebGM88VNw8VNfvdA7z6kGA8iGOTEzAomsRidp4jXSmUIJsL+Q==", + "version": "3.42.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.42.0.tgz", + "integrity": "sha512-007bM04u91fF4kMgwom2I5cQxAFIy8jVulgr9eozILl/SZE53QOqnW/+vviC+wQWLv+AunBG+8Q0TLoeSsSxRQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -11416,9 +11416,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.144", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.144.tgz", - "integrity": "sha512-eJIaMRKeAzxfBSxtjYnoIAw/tdD6VIH6tHBZepZnAbE3Gyqqs5mGN87DvcldPUbVkIljTK8pY0CMcUljP64lfQ==", + "version": "1.5.145", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.145.tgz", + "integrity": "sha512-pZ5EcTWRq/055MvSBgoFEyKf2i4apwfoqJbK/ak2jnFq8oHjZ+vzc3AhRcz37Xn+ZJfL58R666FLJx0YOK9yTw==", "license": "ISC" }, "node_modules/elliptic": { diff --git a/packages/extensions/eslint.config.js b/packages/extensions/eslint.config.js index b1b9fb50..2f441cec 100644 --- a/packages/extensions/eslint.config.js +++ b/packages/extensions/eslint.config.js @@ -4,6 +4,8 @@ import { fixupConfigRules, fixupPluginRules } from "@eslint/compat"; import _import from "eslint-plugin-import"; import js from "@eslint/js"; import { FlatCompat } from "@eslint/eslintrc"; +import tsPlugin from "@typescript-eslint/eslint-plugin"; +import eslintPluginUnusedImports from "eslint-plugin-unused-imports"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); @@ -25,6 +27,8 @@ export default [ { plugins: { import: fixupPluginRules(_import), + "@typescript-eslint": tsPlugin, + "unused-imports": eslintPluginUnusedImports, }, languageOptions: { @@ -34,10 +38,34 @@ export default [ }, rules: { + // Import rules "import/order": ["error"], "import/no-unused-modules": ["error"], + "import/no-namespace": ["error"], + "unused-imports/no-unused-imports": ["error"], + "import/no-useless-path-segments": ["error"], "react/destructuring-assignment": ["error", "always"], + + // Coding style rules + "comma-dangle": ["error", "always-multiline"], + "no-unreachable": ["error"], + "prefer-const": ["error"], + "no-unused-vars": [ + "error", + { + vars: "all", + varsIgnorePattern: "^_", + args: "after-used", + argsIgnorePattern: "^_", + }, + ], + "@typescript-eslint/no-explicit-any": ["error"], + semi: ["error", "always"], + + // Identation rules + indent: ["error", 2], + "no-restricted-properties": [ "error", { diff --git a/packages/extensions/src/app/(dashboard)/layout.tsx b/packages/extensions/src/app/(dashboard)/layout.tsx index 710b6f86..b15d764d 100644 --- a/packages/extensions/src/app/(dashboard)/layout.tsx +++ b/packages/extensions/src/app/(dashboard)/layout.tsx @@ -1,5 +1,5 @@ "use client"; -import * as React from "react"; +import React from "react"; import { Box } from "@mui/material"; import { OIDCSecure, diff --git a/packages/extensions/src/gubbins/components/OwnerMonitor/OwnerMonitor.tsx b/packages/extensions/src/gubbins/components/OwnerMonitor/OwnerMonitor.tsx index 0514036f..6dc9c552 100644 --- a/packages/extensions/src/gubbins/components/OwnerMonitor/OwnerMonitor.tsx +++ b/packages/extensions/src/gubbins/components/OwnerMonitor/OwnerMonitor.tsx @@ -1,18 +1,11 @@ "use client"; -import React, { useEffect, useMemo, useState } from "react"; +import React, { useMemo, useState } from "react"; import { useOidcAccessToken } from "@axa-fr/react-oidc"; import { fetcher, useOIDCContext, } from "@dirac-grid/diracx-web-components/hooks"; -import { - Alert, - Box, - Button, - Snackbar, - TextField, - Typography, -} from "@mui/material"; +import { Alert, Box, Button, Snackbar, TextField } from "@mui/material"; import { createColumnHelper, getCoreRowModel, @@ -55,17 +48,13 @@ export default function OwnerMonitor() { name, // Set the name })); setOwners(transformedData); - } catch (err) { + } catch { setError("Failed to fetch owners"); } finally { setIsLoading(false); } }; - useEffect(() => { - fetchOwners(); - }, [accessToken]); - // Handle adding a new owner const handleAddOwner = async () => { if (!ownerName) return setError("Owner name cannot be empty."); @@ -78,7 +67,7 @@ export default function OwnerMonitor() { setSuccess(`Owner "${ownerName}" added successfully.`); setOwnerName(""); fetchOwners(); // Refresh the owners list - } catch (err) { + } catch { setError("Failed to add owner."); } };