From f3e7cd0f5883c86d86afd8db7dc5d44ab048d8c0 Mon Sep 17 00:00:00 2001 From: Ensar Emir Erol Date: Wed, 11 Dec 2024 11:18:39 +0100 Subject: [PATCH] package upgrade --- app/package-lock.json | 464 +++++++++--------- app/package.json | 36 +- app/src/app.tsx | 5 + app/src/consts/toast.ts | 2 +- .../components/AddOntologyDialog/styles.scss | 29 -- app/src/pages/ontologies_page/index.tsx | 18 +- app/src/pages/ontologies_page/state.ts | 5 +- .../components/AddPrefixDialog/index.tsx | 101 ++++ .../components/PrefixCardItem/index.tsx | 32 ++ app/src/pages/prefixes_page/index.tsx | 126 +++++ app/src/pages/prefixes_page/state.ts | 85 ++++ app/src/pages/prefixes_page/styles.scss | 14 + app/src/pages/workspace_page/index.tsx | 8 + app/src/pages/workspace_page/state.ts | 3 +- bootstrap.py | 2 +- main.py | 3 +- server/server.py | 2 +- 17 files changed, 624 insertions(+), 311 deletions(-) create mode 100644 app/src/pages/prefixes_page/components/AddPrefixDialog/index.tsx create mode 100644 app/src/pages/prefixes_page/components/PrefixCardItem/index.tsx create mode 100644 app/src/pages/prefixes_page/index.tsx create mode 100644 app/src/pages/prefixes_page/state.ts create mode 100644 app/src/pages/prefixes_page/styles.scss diff --git a/app/package-lock.json b/app/package-lock.json index 05000d6..d2817d5 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -8,29 +8,29 @@ "name": "rdfcraft-frontend", "version": "0.0.0", "dependencies": { - "@blueprintjs/core": "^5.16.0", - "@blueprintjs/icons": "^5.15.0", - "@blueprintjs/select": "^5.3.5", - "@blueprintjs/table": "^5.2.7", - "axios": "^1.7.8", + "@blueprintjs/core": "5.16.1", + "@blueprintjs/icons": "5.15.1", + "@blueprintjs/select": "5.3.6", + "@blueprintjs/table": "5.3.0", + "axios": "1.7.9", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-router-dom": "^7.0.1", - "zustand": "^5.0.1" + "react-router-dom": "7.0.2", + "zustand": "5.0.2" }, "devDependencies": { - "@eslint/js": "^9.15.0", + "@eslint/js": "9.16.0", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", - "@vitejs/plugin-react": "^4.3.4", - "eslint": "^9.15.0", - "eslint-plugin-react-hooks": "^5.0.0", - "eslint-plugin-react-refresh": "^0.4.14", - "globals": "^15.12.0", - "sass-embedded": "^1.81.0", - "typescript": "~5.6.2", - "typescript-eslint": "^8.15.0", - "vite": "^6.0.0" + "@vitejs/plugin-react": "4.3.4", + "eslint": "9.16.0", + "eslint-plugin-react-hooks": "5.1.0", + "eslint-plugin-react-refresh": "0.4.16", + "globals": "15.13.0", + "sass-embedded": "1.82.0", + "typescript": "5.7.2", + "typescript-eslint": "8.18.0", + "vite": "6.0.3" } }, "node_modules/@ampproject/remapping": { @@ -349,22 +349,22 @@ } }, "node_modules/@blueprintjs/colors": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@blueprintjs/colors/-/colors-5.1.4.tgz", - "integrity": "sha512-OBRswl1v/AQXtx8PLP6PhZX+xY+Q/LP/eQATQi/ZUCrNbE0ZkMXQRS9PK/7ZVllnQqcACkC4x/JVthkzkLoG2g==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@blueprintjs/colors/-/colors-5.1.5.tgz", + "integrity": "sha512-IUZvQLsQmfqumTTzeb5oQLnvskJcQYKcitzhDm5+iTWl42Jn5oyUqPDW96ubH/pfWoQGHzBp91ujq6KREl4GHQ==", "license": "Apache-2.0", "dependencies": { "tslib": "~2.6.2" } }, "node_modules/@blueprintjs/core": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/@blueprintjs/core/-/core-5.16.0.tgz", - "integrity": "sha512-umWvCL9iHP01AO11fILCLK8ZT8mkOouSC+MFwk4cVx8HElxLoUFCf64lUFSQpQMPyNKICYJ4qBrN/hKsez11lQ==", + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/@blueprintjs/core/-/core-5.16.1.tgz", + "integrity": "sha512-SwpP6tlV/7Fky2Ed2P2T5BtHXEsiC1HPDYPftQL5s8QcLp9oVfEJkCW5MSQ55SBnnDuIsadvqpXFJYFyHnUQzw==", "license": "Apache-2.0", "dependencies": { - "@blueprintjs/colors": "^5.1.4", - "@blueprintjs/icons": "^5.15.0", + "@blueprintjs/colors": "^5.1.5", + "@blueprintjs/icons": "^5.15.1", "@popperjs/core": "^2.11.8", "classnames": "^2.3.1", "normalize.css": "^8.0.1", @@ -390,9 +390,9 @@ } }, "node_modules/@blueprintjs/icons": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@blueprintjs/icons/-/icons-5.15.0.tgz", - "integrity": "sha512-5OiDY0hdQwfljfo9ynmmUBh3ibXTDuJ74WpwCakTr4hD9zGMhpzjnpEoZMfrMCsKZubGBiOFcT5riPljrDpdLw==", + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/@blueprintjs/icons/-/icons-5.15.1.tgz", + "integrity": "sha512-EE/LuHIGj/ubTl1LAnboiMZsgKtOXN7eT/KXhbIgd/AQFXKdqS+MUPpbfjxPE9/LkgoL3z3zK7OYPGG5IHjQfw==", "license": "Apache-2.0", "dependencies": { "change-case": "^4.1.2", @@ -411,13 +411,13 @@ } }, "node_modules/@blueprintjs/select": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/@blueprintjs/select/-/select-5.3.5.tgz", - "integrity": "sha512-oULOvtnFHiaXPWahyQg0XFc2YhZrY1FPOuHq3fDKyb1MukYEYshy+L4gHUA5gnVBxv6543Oi7m7ErxGE3bcJmQ==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/@blueprintjs/select/-/select-5.3.6.tgz", + "integrity": "sha512-2goHHgdLK5zO1TFXfNnyRFCza0RQHiXcLVJJUit+wWzevTNGucmR6c2sa4FH5/82z6kvVgJcKoj8KWCPr2BI2Q==", "license": "Apache-2.0", "dependencies": { - "@blueprintjs/core": "^5.16.0", - "@blueprintjs/icons": "^5.15.0", + "@blueprintjs/core": "^5.16.1", + "@blueprintjs/icons": "^5.15.1", "classnames": "^2.3.1", "tslib": "~2.6.2" }, @@ -433,12 +433,12 @@ } }, "node_modules/@blueprintjs/table": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/@blueprintjs/table/-/table-5.2.7.tgz", - "integrity": "sha512-SdpI3xA1NrOjMh1Ao4BU0u58W/3kc0rC5lXk9dt1aJ7aaK1wfrRKoWMbIYue92zFFuTCU1s22A+Cjpp5GvyEpQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@blueprintjs/table/-/table-5.3.0.tgz", + "integrity": "sha512-tRnel47Aj3FqleLxkRS//7OMq5L8a7cxYP1K7/9283ZptgrmT4o5gXOqnzRkq+e/TGFpGyAF55UolLuAG4AAzw==", "license": "Apache-2.0", "dependencies": { - "@blueprintjs/core": "^5.16.0", + "@blueprintjs/core": "^5.16.1", "classnames": "^2.3.1", "react-innertext": "^1.1.5", "tslib": "~2.6.2" @@ -971,9 +971,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.15.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz", - "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==", + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.16.0.tgz", + "integrity": "sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==", "dev": true, "license": "MIT", "engines": { @@ -1486,17 +1486,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.16.0.tgz", - "integrity": "sha512-5YTHKV8MYlyMI6BaEG7crQ9BhSc8RxzshOReKwZwRWN0+XvvTOm+L/UYLCYxFpfwYuAAqhxiq4yae0CMFwbL7Q==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.0.tgz", + "integrity": "sha512-NR2yS7qUqCL7AIxdJUQf2MKKNDVNaig/dEB0GBLU7D+ZdHgK1NoH/3wsgO3OnPVipn51tG3MAwaODEGil70WEw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.16.0", - "@typescript-eslint/type-utils": "8.16.0", - "@typescript-eslint/utils": "8.16.0", - "@typescript-eslint/visitor-keys": "8.16.0", + "@typescript-eslint/scope-manager": "8.18.0", + "@typescript-eslint/type-utils": "8.18.0", + "@typescript-eslint/utils": "8.18.0", + "@typescript-eslint/visitor-keys": "8.18.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -1511,25 +1511,21 @@ }, "peerDependencies": { "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.16.0.tgz", - "integrity": "sha512-D7DbgGFtsqIPIFMPJwCad9Gfi/hC0PWErRRHFnaCWoEDYi5tQUDiJCTmGUbBiLzjqAck4KcXt9Ayj0CNlIrF+w==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.18.0.tgz", + "integrity": "sha512-hgUZ3kTEpVzKaK3uNibExUYm6SKKOmTU2BOxBSvOYwtJEPdVQ70kZJpPjstlnhCHcuc2WGfSbpKlb/69ttyN5Q==", "dev": true, - "license": "BSD-2-Clause", + "license": "MITClause", "dependencies": { - "@typescript-eslint/scope-manager": "8.16.0", - "@typescript-eslint/types": "8.16.0", - "@typescript-eslint/typescript-estree": "8.16.0", - "@typescript-eslint/visitor-keys": "8.16.0", + "@typescript-eslint/scope-manager": "8.18.0", + "@typescript-eslint/types": "8.18.0", + "@typescript-eslint/typescript-estree": "8.18.0", + "@typescript-eslint/visitor-keys": "8.18.0", "debug": "^4.3.4" }, "engines": { @@ -1540,23 +1536,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.16.0.tgz", - "integrity": "sha512-mwsZWubQvBki2t5565uxF0EYvG+FwdFb8bMtDuGQLdCCnGPrDEDvm1gtfynuKlnpzeBRqdFCkMf9jg1fnAK8sg==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.0.tgz", + "integrity": "sha512-PNGcHop0jkK2WVYGotk/hxj+UFLhXtGPiGtiaWgVBVP1jhMoMCHlTyJA+hEj4rszoSdLTK3fN4oOatrL0Cp+Xw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.16.0", - "@typescript-eslint/visitor-keys": "8.16.0" + "@typescript-eslint/types": "8.18.0", + "@typescript-eslint/visitor-keys": "8.18.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1567,14 +1559,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.16.0.tgz", - "integrity": "sha512-IqZHGG+g1XCWX9NyqnI/0CX5LL8/18awQqmkZSl2ynn8F76j579dByc0jhfVSnSnhf7zv76mKBQv9HQFKvDCgg==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.18.0.tgz", + "integrity": "sha512-er224jRepVAVLnMF2Q7MZJCq5CsdH2oqjP4dT7K6ij09Kyd+R21r7UVJrF0buMVdZS5QRhDzpvzAxHxabQadow==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.16.0", - "@typescript-eslint/utils": "8.16.0", + "@typescript-eslint/typescript-estree": "8.18.0", + "@typescript-eslint/utils": "8.18.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -1586,18 +1578,14 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.16.0.tgz", - "integrity": "sha512-NzrHj6thBAOSE4d9bsuRNMvk+BvaQvmY4dDglgkgGC0EW/tB3Kelnp3tAKH87GEwzoxgeQn9fNGRyFJM/xd+GQ==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.0.tgz", + "integrity": "sha512-FNYxgyTCAnFwTrzpBGq+zrnoTO4x0c1CKYY5MuUTzpScqmY5fmsh2o3+57lqdI3NZucBDCzDgdEbIaNfAjAHQA==", "dev": true, "license": "MIT", "engines": { @@ -1609,14 +1597,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.16.0.tgz", - "integrity": "sha512-E2+9IzzXMc1iaBy9zmo+UYvluE3TW7bCGWSF41hVWUE01o8nzr1rvOQYSxelxr6StUvRcTMe633eY8mXASMaNw==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.0.tgz", + "integrity": "sha512-rqQgFRu6yPkauz+ms3nQpohwejS8bvgbPyIDq13cgEDbkXt4LH4OkDMT0/fN1RUtzG8e8AKJyDBoocuQh8qNeg==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.16.0", - "@typescript-eslint/visitor-keys": "8.16.0", + "@typescript-eslint/types": "8.18.0", + "@typescript-eslint/visitor-keys": "8.18.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -1631,10 +1619,8 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { @@ -1677,16 +1663,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.16.0.tgz", - "integrity": "sha512-C1zRy/mOL8Pj157GiX4kaw7iyRLKfJXBR3L82hk5kS/GyHcOFmy4YUq/zfZti72I9wnuQtA/+xzft4wCC8PJdA==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.0.tgz", + "integrity": "sha512-p6GLdY383i7h5b0Qrfbix3Vc3+J2k6QWw6UMUeY5JGfm3C5LbZ4QIZzJNoNOfgyRe0uuYKjvVOsO/jD4SJO+xg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.16.0", - "@typescript-eslint/types": "8.16.0", - "@typescript-eslint/typescript-estree": "8.16.0" + "@typescript-eslint/scope-manager": "8.18.0", + "@typescript-eslint/types": "8.18.0", + "@typescript-eslint/typescript-estree": "8.18.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1696,22 +1682,18 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.16.0.tgz", - "integrity": "sha512-pq19gbaMOmFE3CbL0ZB8J8BFCo2ckfHBfaIsaOZgBIF4EoISJIdLX5xRhd0FGB0LlHReNRuzoJoMGpTjq8F2CQ==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.0.tgz", + "integrity": "sha512-pCh/qEA8Lb1wVIqNvBke8UaRjJ6wrAWkJO5yyIbs8Yx6TNGYyfNjOo61tLv+WwLvoLPp4BQ8B7AHKijl8NGUfw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/types": "8.18.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -1796,9 +1778,9 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.8.tgz", - "integrity": "sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -2147,9 +2129,9 @@ } }, "node_modules/eslint": { - "version": "9.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz", - "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==", + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.16.0.tgz", + "integrity": "sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==", "dev": true, "license": "MIT", "dependencies": { @@ -2158,7 +2140,7 @@ "@eslint/config-array": "^0.19.0", "@eslint/core": "^0.9.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.15.0", + "@eslint/js": "9.16.0", "@eslint/plugin-kit": "^0.2.3", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -2207,9 +2189,9 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz", - "integrity": "sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz", + "integrity": "sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==", "dev": true, "license": "MIT", "engines": { @@ -2220,13 +2202,13 @@ } }, "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.14.tgz", - "integrity": "sha512-aXvzCTK7ZBv1e7fahFuR3Z/fyQQSIQ711yPgYRj+Oj64tyTgO4iQIDmYXDBqvSWQ/FA4OSCsXOStlF+noU0/NA==", + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.16.tgz", + "integrity": "sha512-slterMlxAhov/DZO8NScf6mEeMBBXodFUolijDvrtTxyezyLoTQaa73FyYus/VbTdftd8wBgBxPMRk3poleXNQ==", "dev": true, "license": "MIT", "peerDependencies": { - "eslint": ">=7" + "eslint": ">=8.40" } }, "node_modules/eslint-scope": { @@ -2587,9 +2569,9 @@ } }, "node_modules/globals": { - "version": "15.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz", - "integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==", + "version": "15.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.13.0.tgz", + "integrity": "sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g==", "dev": true, "license": "MIT", "engines": { @@ -3270,9 +3252,9 @@ } }, "node_modules/react-router": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.0.1.tgz", - "integrity": "sha512-WVAhv9oWCNsja5AkK6KLpXJDSJCQizOIyOd4vvB/+eHGbYx5vkhcmcmwWjQ9yqkRClogi+xjEg9fNEOd5EX/tw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.0.2.tgz", + "integrity": "sha512-m5AcPfTRUcjwmhBzOJGEl6Y7+Crqyju0+TgTQxoS4SO+BkWbhOrcfZNq6wSWdl2BBbJbsAoBUb8ZacOFT+/JlA==", "license": "MIT", "dependencies": { "@types/cookie": "^0.6.0", @@ -3294,12 +3276,12 @@ } }, "node_modules/react-router-dom": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.0.1.tgz", - "integrity": "sha512-duBzwAAiIabhFPZfDjcYpJ+f08TMbPMETgq254GWne2NW1ZwRHhZLj7tpSp8KGb7JvZzlLcjGUnqLxpZQVEPng==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.0.2.tgz", + "integrity": "sha512-VJOQ+CDWFDGaWdrG12Nl+d7yHtLaurNgAQZVgaIy7/Xd+DojgmYLosFfZdGz1wpxmjJIAkAMVTKWcvkx1oggAw==", "license": "MIT", "dependencies": { - "react-router": "7.0.1" + "react-router": "7.0.2" }, "engines": { "node": ">=20.0.0" @@ -3444,9 +3426,9 @@ } }, "node_modules/sass-embedded": { - "version": "1.81.0", - "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.81.0.tgz", - "integrity": "sha512-uZQ2Faxb1oWBHpeSSzjxnhClbMb3QadN0ql0ZFNuqWOLUxwaVhrMlMhPq6TDPbbfDUjihuwrMCuy695Bgna5RA==", + "version": "1.82.0", + "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.82.0.tgz", + "integrity": "sha512-v13sRVVZtWAQLpAGTz5D8hy+oyNKRHao5tKVc/P6AMqSP+jDM8X6GkEpL0jfbu3MaN2/hAQsd4Qx14GG1u0prQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3466,32 +3448,32 @@ "node": ">=16.0.0" }, "optionalDependencies": { - "sass-embedded-android-arm": "1.81.0", - "sass-embedded-android-arm64": "1.81.0", - "sass-embedded-android-ia32": "1.81.0", - "sass-embedded-android-riscv64": "1.81.0", - "sass-embedded-android-x64": "1.81.0", - "sass-embedded-darwin-arm64": "1.81.0", - "sass-embedded-darwin-x64": "1.81.0", - "sass-embedded-linux-arm": "1.81.0", - "sass-embedded-linux-arm64": "1.81.0", - "sass-embedded-linux-ia32": "1.81.0", - "sass-embedded-linux-musl-arm": "1.81.0", - "sass-embedded-linux-musl-arm64": "1.81.0", - "sass-embedded-linux-musl-ia32": "1.81.0", - "sass-embedded-linux-musl-riscv64": "1.81.0", - "sass-embedded-linux-musl-x64": "1.81.0", - "sass-embedded-linux-riscv64": "1.81.0", - "sass-embedded-linux-x64": "1.81.0", - "sass-embedded-win32-arm64": "1.81.0", - "sass-embedded-win32-ia32": "1.81.0", - "sass-embedded-win32-x64": "1.81.0" + "sass-embedded-android-arm": "1.82.0", + "sass-embedded-android-arm64": "1.82.0", + "sass-embedded-android-ia32": "1.82.0", + "sass-embedded-android-riscv64": "1.82.0", + "sass-embedded-android-x64": "1.82.0", + "sass-embedded-darwin-arm64": "1.82.0", + "sass-embedded-darwin-x64": "1.82.0", + "sass-embedded-linux-arm": "1.82.0", + "sass-embedded-linux-arm64": "1.82.0", + "sass-embedded-linux-ia32": "1.82.0", + "sass-embedded-linux-musl-arm": "1.82.0", + "sass-embedded-linux-musl-arm64": "1.82.0", + "sass-embedded-linux-musl-ia32": "1.82.0", + "sass-embedded-linux-musl-riscv64": "1.82.0", + "sass-embedded-linux-musl-x64": "1.82.0", + "sass-embedded-linux-riscv64": "1.82.0", + "sass-embedded-linux-x64": "1.82.0", + "sass-embedded-win32-arm64": "1.82.0", + "sass-embedded-win32-ia32": "1.82.0", + "sass-embedded-win32-x64": "1.82.0" } }, "node_modules/sass-embedded-android-arm": { - "version": "1.81.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.81.0.tgz", - "integrity": "sha512-NWEmIuaIEsGFNsIRa+5JpIpPJyZ32H15E85CNZqEIhhwWlk9UNw7vlOCmTH8MtabtnACwC/2NG8VyNa3nxKzUQ==", + "version": "1.82.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.82.0.tgz", + "integrity": "sha512-ttGMvWnA/5TYdZTjr5fWHDbb9nZgKipHKCc9zZQRF5HjUydOYWKNqmAJHQtbFWaq35kd5qn6yiE73IJN6eJ6wA==", "cpu": [ "arm" ], @@ -3506,9 +3488,9 @@ } }, "node_modules/sass-embedded-android-arm64": { - "version": "1.81.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.81.0.tgz", - "integrity": "sha512-I36P77/PKAHx6sqOmexO2iEY5kpsmQ1VxcgITZSOxPMQhdB6m4t3bTabfDuWQQmCrqqiNFtLQHeytB65bUqwiw==", + "version": "1.82.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.82.0.tgz", + "integrity": "sha512-bldHMs02QQWXsgHUZRgolNnZdMjN6XHvmUYoRkzmFq7lsvtLU6SJg2S1Wa9IZJs9jRWdTmOgA6YibSf3pROyFQ==", "cpu": [ "arm64" ], @@ -3523,9 +3505,9 @@ } }, "node_modules/sass-embedded-android-ia32": { - "version": "1.81.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.81.0.tgz", - "integrity": "sha512-k8V1usXw30w1GVxvrteG1RzgYJzYQ9PfL2aeOqGdroBN7zYTD9VGJXTGcxA4IeeRxmRd7szVW2mKXXS472fh8g==", + "version": "1.82.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.82.0.tgz", + "integrity": "sha512-FUJOnxw8IYKuYuxxiOkk6QXle8/yQFtKjnuSAJuZ5ZpLVMcSZzLc3SWOtuEXYx5iSAfJCO075o2ZoG/pPrJ9aw==", "cpu": [ "ia32" ], @@ -3540,9 +3522,9 @@ } }, "node_modules/sass-embedded-android-riscv64": { - "version": "1.81.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.81.0.tgz", - "integrity": "sha512-RXlanyLXEpN/DEehXgLuKPsqT//GYlsGFxKXgRiCc8hIPAueFLQXKJmLWlL3BEtHgmFdbsStIu4aZCcb1hOFlQ==", + "version": "1.82.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.82.0.tgz", + "integrity": "sha512-rd+vc+sxJxNnbhaubiIJmnb1b3FvC9wxCIq8spstopbO7o1uufvBBDeRoFSJaN+7oNhamzjlYGdu6aQoQNs3+A==", "cpu": [ "riscv64" ], @@ -3557,9 +3539,9 @@ } }, "node_modules/sass-embedded-android-x64": { - "version": "1.81.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.81.0.tgz", - "integrity": "sha512-RQG0FxGQ1DERNyUDED8+BDVaLIjI+BNg8lVcyqlLZUrWY6NhzjwYEeiN/DNZmMmHtqDucAPNDcsdVUNQqsBy2A==", + "version": "1.82.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.82.0.tgz", + "integrity": "sha512-EVlybGTgJ8wNLyWj8RUatPXSnmIcvCsx3EfsRfBfhGihLbn4NNpavYO9QsvZzI2XWbJqHLBCd+CvkTcDw/TaSQ==", "cpu": [ "x64" ], @@ -3574,9 +3556,9 @@ } }, "node_modules/sass-embedded-darwin-arm64": { - "version": "1.81.0", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.81.0.tgz", - "integrity": "sha512-gLKbsfII9Ppua76N41ODFnKGutla9qv0OGAas8gxe0jYBeAQFi/1iKQYdNtQtKi4mA9n5TQTqz+HHCKszZCoyA==", + "version": "1.82.0", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.82.0.tgz", + "integrity": "sha512-LvdJPojjKlNGYOB0nSUR/ZtMDuAF4puspHlwK42aA/qK292bfSkMUKZPPapB2aSRwccc/ieBq5fI7n/WHrOCVw==", "cpu": [ "arm64" ], @@ -3591,9 +3573,9 @@ } }, "node_modules/sass-embedded-darwin-x64": { - "version": "1.81.0", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.81.0.tgz", - "integrity": "sha512-7uMOlT9hD2KUJCbTN2XcfghDxt/rc50ujjfSjSHjX1SYj7mGplkINUXvVbbvvaV2wt6t9vkGkCo5qNbeBhfwBg==", + "version": "1.82.0", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.82.0.tgz", + "integrity": "sha512-6LfnD6YmG1aBfd3ReqMOJDb6Pg2Z/hmlJB7nU+Lb3E+hCNjAZAgeUHQxU/Pm1eIqJJTU/h4ib5QP0Pt9O8yVnw==", "cpu": [ "x64" ], @@ -3608,9 +3590,9 @@ } }, "node_modules/sass-embedded-linux-arm": { - "version": "1.81.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.81.0.tgz", - "integrity": "sha512-REqR9qM4RchCE3cKqzRy9Q4zigIV82SbSpCi/O4O3oK3pg2I1z7vkb3TiJsivusG/li7aqKZGmYOtAXjruGQDA==", + "version": "1.82.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.82.0.tgz", + "integrity": "sha512-ozjdC5rWzyi5Vo300I4tVZzneXOTQUiaxOr7DjtN26HuFaGAGCGmvThh2BRV4RvySg++5H9rdFu+VgyUQ5iukw==", "cpu": [ "arm" ], @@ -3625,9 +3607,9 @@ } }, "node_modules/sass-embedded-linux-arm64": { - "version": "1.81.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.81.0.tgz", - "integrity": "sha512-jy4bvhdUmqbyw1jv1f3Uxl+MF8EU/Y/GDx4w6XPJm4Ds+mwH/TwnyAwsxxoBhWfnBnW8q2ADy039DlS5p+9csQ==", + "version": "1.82.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.82.0.tgz", + "integrity": "sha512-590/y0HJr/JiyxaqgR7Xf9P20BIhJ+zhB/afAnVuZe/4lEfCpTyM5xMe2+sKLsqtrVyzs9Zm/M4S4ASUOPCggA==", "cpu": [ "arm64" ], @@ -3642,9 +3624,9 @@ } }, "node_modules/sass-embedded-linux-ia32": { - "version": "1.81.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.81.0.tgz", - "integrity": "sha512-ga/Jk4q5Bn1aC+iHJteDZuLSKnmBUiS3dEg1fnl/Z7GaHIChceKDJOw0zNaILRXI0qT2E1at9MwzoRaRA5Nn/g==", + "version": "1.82.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.82.0.tgz", + "integrity": "sha512-hpc4acZ3UTjjJ3Q/GUXqQOCSml6AFKaku0HMawra9bKyRmOpxn8V5hqgXeOWVjK2oQzCmCnJvwKoQUP+S/SIYQ==", "cpu": [ "ia32" ], @@ -3659,9 +3641,9 @@ } }, "node_modules/sass-embedded-linux-musl-arm": { - "version": "1.81.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.81.0.tgz", - "integrity": "sha512-oWVUvQ4d5Kx1Md75YXZl5z1WBjc+uOhfRRqzkJ3nWc8tjszxJN+y/5EOJavhsNI3/2yoTt6eMXRTqDD9b0tWSQ==", + "version": "1.82.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.82.0.tgz", + "integrity": "sha512-R5PQmY/I+GSoMtfLo8GgHkvF/q6x6y8VNM7yu/Ac1mJj86n48VFi29W1HfY2496+Q6cpAq7toobDj7YfldIdVA==", "cpu": [ "arm" ], @@ -3676,9 +3658,9 @@ } }, "node_modules/sass-embedded-linux-musl-arm64": { - "version": "1.81.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.81.0.tgz", - "integrity": "sha512-hpntWf5kjkoxncA1Vh8vhsUOquZ8AROZKx0rQh7ZjSRs4JrYZASz1cfevPKaEM3wIim/nYa6TJqm0VqWsrERlA==", + "version": "1.82.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.82.0.tgz", + "integrity": "sha512-bc2MUSMv/jabnNGEyKP2jQAYZoEzTT/c633W6QoeSEWETGCuTNjaHvWWE6qSI6/UfRg1EpuV1LQA2jPMzZfv/w==", "cpu": [ "arm64" ], @@ -3693,9 +3675,9 @@ } }, "node_modules/sass-embedded-linux-musl-ia32": { - "version": "1.81.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.81.0.tgz", - "integrity": "sha512-UEXUYkBuqTSwg5JNWiNlfMZ1Jx6SJkaEdx+fsL3Tk099L8cKSoJWH2EPz4ZJjNbyIMymrSdVfymheTeZ8u24xA==", + "version": "1.82.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.82.0.tgz", + "integrity": "sha512-ZQKCFKm5TBcJ19UG6uUQmIKfVCJIWMb7e1a93lGeujSb9gyKF5Fb6MN3tuExoT7iFK8zU0Z9iyHqh93F58lcCw==", "cpu": [ "ia32" ], @@ -3710,9 +3692,9 @@ } }, "node_modules/sass-embedded-linux-musl-riscv64": { - "version": "1.81.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.81.0.tgz", - "integrity": "sha512-1D7OznytbIhx2XDHWi1nuQ8d/uCVR7FGGzELgaU//T8A9DapVTUgPKvB70AF1k4GzChR9IXU/WvFZs2hDTbaJg==", + "version": "1.82.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.82.0.tgz", + "integrity": "sha512-5meSU8BHFeaT09RWfkuUrikRlC+WZcYb9To7MpfV1d9nlD7CZ2xydPExK+mj3DqRuQvTbvhMPcr7f+pHlgHINQ==", "cpu": [ "riscv64" ], @@ -3727,9 +3709,9 @@ } }, "node_modules/sass-embedded-linux-musl-x64": { - "version": "1.81.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.81.0.tgz", - "integrity": "sha512-ia6VCTeVDQtBSMktXRFza1AZCt8/6aUoujot6Ugf4KmdytQqPJIHxkHaGftm5xwi9WdrMGYS7zgolToPijR11A==", + "version": "1.82.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.82.0.tgz", + "integrity": "sha512-ASLAMfjWv7YEPBvEOVlb3zzHq8l4Y9Eh4x3m7B1dNauGVbO11Yng5cPCX/XbwGVf30BtE75pwqvV7oXxBtN15w==", "cpu": [ "x64" ], @@ -3744,9 +3726,9 @@ } }, "node_modules/sass-embedded-linux-riscv64": { - "version": "1.81.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.81.0.tgz", - "integrity": "sha512-KbxSsqu4tT1XbhZfJV/5NfW0VtJIGlD58RjqJqJBi8Rnjrx29/upBsuwoDWtsPV/LhoGwwU1XkSa9Q1ifCz4fQ==", + "version": "1.82.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.82.0.tgz", + "integrity": "sha512-qWvRDXCXH3GzD8OcP0ntd8gBTK3kZyUeyXmxQDZyEtMAM4STC2Tn7+5+2JYYHlppzqWnZPFBNESvpKeOtHaBBw==", "cpu": [ "riscv64" ], @@ -3761,9 +3743,9 @@ } }, "node_modules/sass-embedded-linux-x64": { - "version": "1.81.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.81.0.tgz", - "integrity": "sha512-AMDeVY2T9WAnSFkuQcsOn5c29GRs/TuqnCiblKeXfxCSKym5uKdBl/N7GnTV6OjzoxiJBbkYKdVIaS5By7Gj4g==", + "version": "1.82.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.82.0.tgz", + "integrity": "sha512-AmRaHqShztwfep+M4NagdGaY7fTyWGSOM3k4Z/dd7q4nZclXbALLqNJtKx8xOM7A41LHYJ9zDpIBVRkrh0PzTA==", "cpu": [ "x64" ], @@ -3778,9 +3760,9 @@ } }, "node_modules/sass-embedded-win32-arm64": { - "version": "1.81.0", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.81.0.tgz", - "integrity": "sha512-YOmBRYnygwWUmCoH14QbMRHjcvCJufeJBAp0m61tOJXIQh64ziwV4mjdqjS/Rx3zhTT4T+nulDUw4d3kLiMncA==", + "version": "1.82.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.82.0.tgz", + "integrity": "sha512-zL9JDQZHXHSGAZe5DqSrR86wMHbm9QPziU4/3hoIG+99StuS74CuV42+hw/+FXXBkXMWbjKWsyF/HZt+I/wJuw==", "cpu": [ "arm64" ], @@ -3795,9 +3777,9 @@ } }, "node_modules/sass-embedded-win32-ia32": { - "version": "1.81.0", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.81.0.tgz", - "integrity": "sha512-HFfr/C+uLJGGTENdnssuNTmXI/xnIasUuEHEKqI+2J0FHCWT5cpz3PGAOHymPyJcZVYGUG/7gIxIx/d7t0LFYw==", + "version": "1.82.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.82.0.tgz", + "integrity": "sha512-xE+AzLquCkFPnnpo0NHjQdLRIhG1bVs42xIKx42aUbVLYKkBDvbBGpw6EtTscRMyvcjoOqGH5saRvSFComUQcw==", "cpu": [ "ia32" ], @@ -3812,9 +3794,9 @@ } }, "node_modules/sass-embedded-win32-x64": { - "version": "1.81.0", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.81.0.tgz", - "integrity": "sha512-wxj52jDcIAwWcXb7ShZ7vQYKcVUkJ+04YM9l46jDY+qwHzliGuorAUyujLyKTE9heGD3gShJ3wPPC1lXzq6v9A==", + "version": "1.82.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.82.0.tgz", + "integrity": "sha512-cEgfOQG5womOzzk16ReTv2dxPq5BG16LgLUold/LH9IZH86u4E/MN7Fspf4RWeEJ2EcLdew9QYSC2YWs1l98dQ==", "cpu": [ "x64" ], @@ -3973,9 +3955,9 @@ } }, "node_modules/ts-api-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.2.tgz", - "integrity": "sha512-ZF5gQIQa/UmzfvxbHZI3JXN0/Jt+vnAfAviNRAMc491laiK6YCLpCW9ft8oaCRFOTxCZtUTE6XB0ZQAe3olntw==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", "dev": true, "license": "MIT", "engines": { @@ -4011,9 +3993,9 @@ } }, "node_modules/typescript": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", "dev": true, "license": "Apache-2.0", "bin": { @@ -4025,15 +4007,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.16.0.tgz", - "integrity": "sha512-wDkVmlY6O2do4V+lZd0GtRfbtXbeD0q9WygwXXSJnC1xorE8eqyC2L1tJimqpSeFrOzRlYtWnUp/uzgHQOgfBQ==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.18.0.tgz", + "integrity": "sha512-Xq2rRjn6tzVpAyHr3+nmSg1/9k9aIHnJ2iZeOH7cfGOWqTkXTm3kwpQglEuLGdNrYvPF+2gtAs+/KF5rjVo+WQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.16.0", - "@typescript-eslint/parser": "8.16.0", - "@typescript-eslint/utils": "8.16.0" + "@typescript-eslint/eslint-plugin": "8.18.0", + "@typescript-eslint/parser": "8.18.0", + "@typescript-eslint/utils": "8.18.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4043,12 +4025,8 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/update-browserslist-db": { @@ -4127,9 +4105,9 @@ "license": "MIT" }, "node_modules/vite": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.0.tgz", - "integrity": "sha512-Q2+5yQV79EdnpbNxjD3/QHVMCBaQ3Kpd4/uL51UGuh38bIIM+s4o3FqyCzRvTRwFb+cWIUeZvaWwS9y2LD2qeQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.3.tgz", + "integrity": "sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==", "dev": true, "license": "MIT", "dependencies": { @@ -4269,9 +4247,9 @@ } }, "node_modules/zustand": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.1.tgz", - "integrity": "sha512-pRET7Lao2z+n5R/HduXMio35TncTlSW68WsYBq2Lg1ASspsNGjpwLAsij3RpouyV6+kHMwwwzP0bZPD70/Jx/w==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.2.tgz", + "integrity": "sha512-8qNdnJVJlHlrKXi50LDqqUNmUbuBjoKLrYQBnoChIbVph7vni+sY+YpvdjXG9YLd/Bxr6scMcR+rm5H3aSqPaw==", "license": "MIT", "engines": { "node": ">=12.20.0" diff --git a/app/package.json b/app/package.json index 8c44c35..bc24a8f 100644 --- a/app/package.json +++ b/app/package.json @@ -10,28 +10,28 @@ "preview": "vite preview" }, "dependencies": { - "@blueprintjs/core": "^5.16.0", - "@blueprintjs/icons": "^5.15.0", - "@blueprintjs/select": "^5.3.5", - "@blueprintjs/table": "^5.2.7", - "axios": "^1.7.8", + "@blueprintjs/core": "5.16.1", + "@blueprintjs/icons": "5.15.1", + "@blueprintjs/select": "5.3.6", + "@blueprintjs/table": "5.3.0", + "axios": "1.7.9", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-router-dom": "^7.0.1", - "zustand": "^5.0.1" + "react-router-dom": "7.0.2", + "zustand": "5.0.2" }, "devDependencies": { - "@eslint/js": "^9.15.0", + "@eslint/js": "9.16.0", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", - "@vitejs/plugin-react": "^4.3.4", - "eslint": "^9.15.0", - "eslint-plugin-react-hooks": "^5.0.0", - "eslint-plugin-react-refresh": "^0.4.14", - "globals": "^15.12.0", - "sass-embedded": "^1.81.0", - "typescript": "~5.6.2", - "typescript-eslint": "^8.15.0", - "vite": "^6.0.0" + "@vitejs/plugin-react": "4.3.4", + "eslint": "9.16.0", + "eslint-plugin-react-hooks": "5.1.0", + "eslint-plugin-react-refresh": "0.4.16", + "globals": "15.13.0", + "sass-embedded": "1.82.0", + "typescript": "5.7.2", + "typescript-eslint": "8.18.0", + "vite": "6.0.3" } -} +} \ No newline at end of file diff --git a/app/src/app.tsx b/app/src/app.tsx index 25b46a9..af50d90 100644 --- a/app/src/app.tsx +++ b/app/src/app.tsx @@ -5,6 +5,7 @@ import WorkspacesPage from './pages/workspaces_page'; import './index.scss'; import OntologiesPage from './pages/ontologies_page'; +import PrefixPage from './pages/prefixes_page'; import WorkspacePage from './pages/workspace_page'; const router = createBrowserRouter([ @@ -20,6 +21,10 @@ const router = createBrowserRouter([ path: '/workspaces/:uuid/ontologies', element: , }, + { + path: '/workspaces/:uuid/prefixes', + element: , + }, ]); const App = () => { diff --git a/app/src/consts/toast.ts b/app/src/consts/toast.ts index a290941..af79630 100644 --- a/app/src/consts/toast.ts +++ b/app/src/consts/toast.ts @@ -1,6 +1,6 @@ import { OverlayToaster } from '@blueprintjs/core'; -const toast = await OverlayToaster.createAsync({ +const toast = OverlayToaster.create({ position: 'top', }); diff --git a/app/src/pages/ontologies_page/components/AddOntologyDialog/styles.scss b/app/src/pages/ontologies_page/components/AddOntologyDialog/styles.scss index 3372885..e69de29 100644 --- a/app/src/pages/ontologies_page/components/AddOntologyDialog/styles.scss +++ b/app/src/pages/ontologies_page/components/AddOntologyDialog/styles.scss @@ -1,29 +0,0 @@ -.card-item { - width: calc(25% - 10px); - max-height: fit-content; -} - -h5 { - text-overflow: ellipsis; - overflow: hidden; -} - -p { - text-overflow: ellipsis; - overflow: hidden; -} - -@media (max-width: 768px) { - .card-item.bp5-card.bp5-elevation-2 { - width: calc(100% - 10px); - } -} - -.card-item-actions { - display: flex; - margin-top: auto; - justify-content: right; - & > *:not(:first-child) { - margin-left: 10px; - } -} diff --git a/app/src/pages/ontologies_page/index.tsx b/app/src/pages/ontologies_page/index.tsx index 0c3b3ee..81c1677 100644 --- a/app/src/pages/ontologies_page/index.tsx +++ b/app/src/pages/ontologies_page/index.tsx @@ -3,7 +3,6 @@ import { useNavigate, useParams } from 'react-router-dom'; import { Button, ButtonGroup, Navbar, NonIdealState } from '@blueprintjs/core'; import { useEffect, useState } from 'react'; import DeleteAlert from '../../components/DeleteAlert'; -import toast from '../../consts/toast'; import useErrorToast from '../../hooks/useErrorToast'; import { Ontology } from '../../lib/api/ontology_api/types'; import AddOntologyDialog from './components/AddOntologyDialog'; @@ -65,10 +64,6 @@ const OntologiesPage = () => { try { createOntology(uuid, data); refreshOntologies(uuid); - toast.show({ - message: 'Ontology created', - intent: 'success', - }); } catch { /* empty */ } @@ -97,7 +92,7 @@ const OntologiesPage = () => { @@ -120,11 +115,11 @@ const OntologiesPage = () => { } /> )} -
- {ontologies && - ontologies.length > 0 && - ontologies.map(ontology => ( + {ontologies && ontologies.length > 0 && ( +
+ {ontologies.map(ontology => ( { @@ -132,7 +127,8 @@ const OntologiesPage = () => { }} /> ))} -
+
+ )} ); diff --git a/app/src/pages/ontologies_page/state.ts b/app/src/pages/ontologies_page/state.ts index 0e72b49..67002d1 100644 --- a/app/src/pages/ontologies_page/state.ts +++ b/app/src/pages/ontologies_page/state.ts @@ -33,7 +33,6 @@ const defaultState: OntologiesPageState = { const functions: ZustandActions< OntologiesPageStateActions, OntologiesPageState - // eslint-disable-next-line @typescript-eslint/no-unused-vars > = (set, get) => ({ refreshOntologies(workspaceUuid: string) { set({ isLoading: 'Loading ontologies...' }); @@ -60,7 +59,7 @@ const functions: ZustandActions< data.file, ) .then(() => { - set({ error: null }); + get().refreshOntologies(workspaceUuid); }) .catch(error => { if (error instanceof Error) { @@ -75,7 +74,7 @@ const functions: ZustandActions< set({ isLoading: 'Deleting ontology...' }); OntologyApi.deleteOntologyInWorkspace(workspaceUuid, ontologyUuid) .then(() => { - set({ error: null }); + get().refreshOntologies(workspaceUuid); }) .catch(error => { if (error instanceof Error) { diff --git a/app/src/pages/prefixes_page/components/AddPrefixDialog/index.tsx b/app/src/pages/prefixes_page/components/AddPrefixDialog/index.tsx new file mode 100644 index 0000000..726954d --- /dev/null +++ b/app/src/pages/prefixes_page/components/AddPrefixDialog/index.tsx @@ -0,0 +1,101 @@ +import { + Button, + Callout, + Dialog, + DialogBody, + DialogFooter, + FormGroup, + InputGroup, +} from '@blueprintjs/core'; +import { useRef, useState } from 'react'; +import { Prefix } from '../../../../lib/api/prefix_api/types'; + +interface AddPrefixDialogProps { + open: boolean; + onClose: () => void; + onCreate: (data: Prefix) => void; +} + +const AddPrefixDialog = (props: AddPrefixDialogProps) => { + const form_ref = useRef(null); + + const [error, setError] = useState(null); + + const onClose = () => { + props.onClose(); + setError(null); + }; + + const submit = (e: React.FormEvent) => { + e.preventDefault(); + if (!form_ref.current) return; + setError(null); + + const { prefix_value, uri } = form_ref.current; + + if (!prefix_value || !uri) { + setError('Please fill all fields'); + return; + } + + // Check if baseUri is a valid URI + try { + new URL(uri.value); + } catch { + setError('Invalid base URI'); + return; + } + + props.onCreate({ + prefix: prefix_value.value, + uri: uri.value, + }); + }; + + return ( + +
+ + {error && ( + + {error} + + )} + + + + + + + + +
+ ); +}; + +export default AddPrefixDialog; diff --git a/app/src/pages/prefixes_page/components/PrefixCardItem/index.tsx b/app/src/pages/prefixes_page/components/PrefixCardItem/index.tsx new file mode 100644 index 0000000..e7a2095 --- /dev/null +++ b/app/src/pages/prefixes_page/components/PrefixCardItem/index.tsx @@ -0,0 +1,32 @@ +import { Button } from '@blueprintjs/core'; +import CardItem from '../../../../components/CardItem'; +import { Prefix } from '../../../../lib/api/prefix_api/types'; + +interface PrefixCardItemProps { + prefix: Prefix; + onDelete: (Prefix: Prefix) => void; +} + +const PrefixCardItem = ({ prefix, onDelete }: PrefixCardItemProps) => { + return ( + +

+ URI: {prefix.uri} +

+ + } + actions={ + <> + + + } + /> + ); +}; + +export default PrefixCardItem; diff --git a/app/src/pages/prefixes_page/index.tsx b/app/src/pages/prefixes_page/index.tsx new file mode 100644 index 0000000..2ceceba --- /dev/null +++ b/app/src/pages/prefixes_page/index.tsx @@ -0,0 +1,126 @@ +import { Button, ButtonGroup, Navbar, NonIdealState } from '@blueprintjs/core'; +import { useEffect, useState } from 'react'; +import { useNavigate, useParams } from 'react-router-dom'; +import DeleteAlert from '../../components/DeleteAlert'; +import useErrorToast from '../../hooks/useErrorToast'; +import { Prefix } from '../../lib/api/prefix_api/types'; +import AddPrefixDialog from './components/AddPrefixDialog'; +import PrefixCardItem from './components/PrefixCardItem'; +import usePrefixesPageState from './state'; +import './styles.scss'; + +type PrefixPageUrlProps = { + uuid: string; +}; + +const PrefixPage = () => { + const { uuid } = useParams(); + const navigation = useNavigate(); + const prefixes = usePrefixesPageState(state => state.prefixes); + const isLoading = usePrefixesPageState(state => state.isLoading); + const error = usePrefixesPageState(state => state.error); + const refreshPrefixes = usePrefixesPageState(state => state.refreshPrefixes); + const createPrefix = usePrefixesPageState(state => state.createPrefix); + const deletePrefix = usePrefixesPageState(state => state.deletePrefix); + + const [open, setOpen] = useState<'create' | 'delete' | null>(null); + const [toBeDeleted, setToBeDeleted] = useState(null); + + const handleDelete = (prefix: Prefix) => { + setToBeDeleted(prefix.prefix); + setOpen('delete'); + }; + + useErrorToast(error); + + useEffect(() => { + if (uuid) { + refreshPrefixes(uuid); + } + }, [uuid, refreshPrefixes]); + + return ( +
+ setOpen(null)} + onConfirm={() => { + if (toBeDeleted && uuid) { + deletePrefix(uuid, toBeDeleted); + refreshPrefixes(uuid); + } + setOpen(null); + }} + title='Delete Prefix' + message='Are you sure you want to delete this prefix?' + /> + setOpen(null)} + onCreate={data => { + if (uuid) { + createPrefix(uuid, data); + refreshPrefixes(uuid); + } + setOpen(null); + }} + /> + + + + + + +
+ {!prefixes && <>} + {prefixes?.length === 0 && ( + setOpen('create')} + > + Add new Prefix + + } + /> + )} + {prefixes && prefixes.length > 0 && ( +
+ {prefixes.map(prefix => ( + + ))} +
+ )} +
+
+ ); +}; + +export default PrefixPage; diff --git a/app/src/pages/prefixes_page/state.ts b/app/src/pages/prefixes_page/state.ts new file mode 100644 index 0000000..f79693b --- /dev/null +++ b/app/src/pages/prefixes_page/state.ts @@ -0,0 +1,85 @@ +import { create } from 'zustand'; +import { devtools } from 'zustand/middleware'; +import PrefixApi from '../../lib/api/prefix_api'; +import { Prefix } from '../../lib/api/prefix_api/types'; +import { ZustandActions } from '../../utils/zustand'; + +interface PrefixesPageState { + prefixes: Prefix[] | null; + isLoading: string | null; // If the value is null, it means that the data is not being loaded, otherwise it will contain the loading message + error: string | null; +} + +interface PrefixesPageStateActions { + refreshPrefixes: (workspaceUuid: string) => void; + createPrefix: (workspaceUuid: string, data: Prefix) => void; + deletePrefix: (workspaceUuid: string, prefixUuid: string) => void; +} + +const defaultState: PrefixesPageState = { + prefixes: null, + isLoading: null, + error: null, +}; + +const functions: ZustandActions = ( + set, + get, +) => ({ + refreshPrefixes(workspaceUuid: string) { + set({ isLoading: 'Loading prefixes...' }); + PrefixApi.getPrefixesInWorkspace(workspaceUuid) + .then(prefixes => { + set({ prefixes, error: null }); + }) + .catch(error => { + if (error instanceof Error) { + set({ error: error.message }); + } + }) + .finally(() => { + set({ isLoading: null }); + }); + }, + createPrefix(workspaceUuid, data) { + set({ isLoading: 'Creating prefix...' }); + PrefixApi.addPrefixToWorkspace(workspaceUuid, data) + .then(() => { + get().refreshPrefixes(workspaceUuid); + }) + .catch(error => { + if (error instanceof Error) { + set({ error: error.message }); + } + }) + .finally(() => { + set({ isLoading: null }); + }); + }, + deletePrefix(workspaceUuid, prefixUuid) { + set({ isLoading: 'Deleting prefix...' }); + PrefixApi.removePrefixFromWorkspace(workspaceUuid, prefixUuid) + .then(() => { + get().refreshPrefixes(workspaceUuid); + }) + .catch(error => { + if (error instanceof Error) { + set({ error: error.message }); + } + }) + .finally(() => { + set({ isLoading: null }); + }); + }, +}); + +const usePrefixesPageState = create< + PrefixesPageState & PrefixesPageStateActions +>()( + devtools((set, get) => ({ + ...defaultState, + ...functions(set, get), + })), +); + +export default usePrefixesPageState; diff --git a/app/src/pages/prefixes_page/styles.scss b/app/src/pages/prefixes_page/styles.scss new file mode 100644 index 0000000..e6acde5 --- /dev/null +++ b/app/src/pages/prefixes_page/styles.scss @@ -0,0 +1,14 @@ +@use '@blueprintjs/core/lib/scss/variables' as *; + +.prefix-page { + display: flex; + flex-direction: column; + width: 100vw; + height: 100vh; +} + +.prefix-page-content { + margin-top: $pt-navbar-height; + width: 100vw; + height: calc(100vh - #{$pt-navbar-height}); +} diff --git a/app/src/pages/workspace_page/index.tsx b/app/src/pages/workspace_page/index.tsx index 3a691ce..a57be51 100644 --- a/app/src/pages/workspace_page/index.tsx +++ b/app/src/pages/workspace_page/index.tsx @@ -53,6 +53,14 @@ const WorkspacePage = () => { > Ontologies + diff --git a/app/src/pages/workspace_page/state.ts b/app/src/pages/workspace_page/state.ts index 6d360c8..11e49e3 100644 --- a/app/src/pages/workspace_page/state.ts +++ b/app/src/pages/workspace_page/state.ts @@ -24,8 +24,7 @@ const defaultState: WorkspacePageState = { const functions: ZustandActions< WorkspacePageStateActions, WorkspacePageState - // eslint-disable-next-line @typescript-eslint/no-unused-vars -> = (set, get) => ({ +> = set => ({ loadWorkspace(uuid) { set({ isLoading: 'Loading workspace...' }); WorkspacesApi.getWorkspace(uuid) diff --git a/bootstrap.py b/bootstrap.py index abb89fc..8887c25 100644 --- a/bootstrap.py +++ b/bootstrap.py @@ -23,7 +23,7 @@ async def bootstrap(): load_dotenv() logger.info("Loading environment variables") - _debug = getenv("DEBUG") + _debug = getenv("DEBUG", False) if _debug: logger.setLevel(logging.DEBUG) diff --git a/main.py b/main.py index 315cbe7..6e98a9f 100644 --- a/main.py +++ b/main.py @@ -10,7 +10,7 @@ load_dotenv() -DEBUG = os.getenv("DEBUG") +DEBUG = os.getenv("DEBUG", False) os.environ["DD_TRACE_ENABLED"] = os.getenv( "DD_TRACE_ENABLED", "false" @@ -60,4 +60,3 @@ def on_closing(): window.events.closing += on_closing webview._settings["debug"] = True webview.start() - \ No newline at end of file diff --git a/server/server.py b/server/server.py index 6e17210..446aa33 100644 --- a/server/server.py +++ b/server/server.py @@ -23,7 +23,7 @@ load_dotenv() -DEBUG = getenv("DEBUG") +DEBUG = getenv("DEBUG", False) logger = logging.getLogger(__name__)