From 83169132452decc14226e64780bd325ccfd46ca4 Mon Sep 17 00:00:00 2001 From: typescreep Date: Tue, 27 May 2025 23:20:59 +0300 Subject: [PATCH] fix navigation and deref --- package-lock.json | 114 +++++++++++--------------------- package.json | 4 +- src/App.tsx | 7 +- src/pages/MainPage/MainPage.tsx | 9 +-- vite.config.ts | 2 +- 5 files changed, 50 insertions(+), 86 deletions(-) diff --git a/package-lock.json b/package-lock.json index 36babed..7c71cd7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@monaco-editor/react": "4.6.0", "@originjs/vite-plugin-federation": "1.3.6", "@prorobotech/openapi-k8s-toolkit": "0.0.1-alpha.16", - "@readme/openapi-parser": "2.6.0", + "@readme/openapi-parser": "^4.0.0", "@reduxjs/toolkit": "2.2.5", "@tanstack/react-query": "5.62.2", "@tanstack/react-query-devtools": "5.62.2", @@ -172,11 +172,22 @@ "react": ">=16.9.0" } }, - "node_modules/@apidevtools/swagger-methods": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", - "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==", - "license": "MIT" + "node_modules/@apidevtools/json-schema-ref-parser": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-12.0.2.tgz", + "integrity": "sha512-SoZWqQz4YMKdw4kEMfG5w6QAy+rntjsoAT1FtvZAnVEnCR4uy9YSuDBNoVAFHgzSz0dJbISLLCSrGR2Zd7bcvA==", + "license": "MIT", + "dependencies": { + "@jsdevtools/ono": "^7.1.3", + "@types/json-schema": "^7.0.15", + "js-yaml": "^4.1.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/philsturgeon" + } }, "node_modules/@babel/cli": { "version": "7.27.2", @@ -2921,59 +2932,40 @@ } }, "node_modules/@readme/better-ajv-errors": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@readme/better-ajv-errors/-/better-ajv-errors-1.6.0.tgz", - "integrity": "sha512-9gO9rld84Jgu13kcbKRU+WHseNhaVt76wYMeRDGsUGYxwJtI3RmEJ9LY9dZCYQGI8eUZLuxb5qDja0nqklpFjQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@readme/better-ajv-errors/-/better-ajv-errors-2.3.2.tgz", + "integrity": "sha512-T4GGnRAlY3C339NhoUpgJJFsMYko9vIgFAlhgV+/vEGFw66qEY4a4TRJIAZBcX/qT1pq5DvXSme+SQODHOoBrw==", "license": "Apache-2.0", "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/runtime": "^7.21.0", + "@babel/code-frame": "^7.22.5", + "@babel/runtime": "^7.22.5", "@humanwhocodes/momoa": "^2.0.3", - "chalk": "^4.1.2", - "json-to-ast": "^2.0.3", "jsonpointer": "^5.0.0", - "leven": "^3.1.0" + "leven": "^3.1.0", + "picocolors": "^1.1.1" }, "engines": { - "node": ">=14" + "node": ">=18" }, "peerDependencies": { "ajv": "4.11.8 - 8" } }, - "node_modules/@readme/json-schema-ref-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@readme/json-schema-ref-parser/-/json-schema-ref-parser-1.2.1.tgz", - "integrity": "sha512-FKCnFnpKklBPu8atyXqmSRBPSYlZLdcdbIilX19y0vVFiVthqKV9SQp4GZ8L4rOqSVmjn14uZ4Ono5tZKMr1SQ==", - "deprecated": "This package is no longer maintained. Please use `@apidevtools/json-schema-ref-parser` instead.", - "license": "MIT", - "dependencies": { - "@jsdevtools/ono": "^7.1.3", - "@types/json-schema": "^7.0.12", - "call-me-maybe": "^1.0.1", - "js-yaml": "^4.1.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/@readme/openapi-parser": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@readme/openapi-parser/-/openapi-parser-2.6.0.tgz", - "integrity": "sha512-pyFJXezWj9WI1O+gdp95CoxfY+i+Uq3kKk4zXIFuRAZi9YnHpHOpjumWWr67wkmRTw19Hskh9spyY0Iyikf3fA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@readme/openapi-parser/-/openapi-parser-4.0.0.tgz", + "integrity": "sha512-TYeEjSYGCmaBjvQA+BcQYjfv4k+02oychlRHShj/3Iwm2s+a+isENeJU/HPgxIZqtKuP2JZ0gJTvBXo9ci4NEg==", "license": "MIT", "dependencies": { - "@apidevtools/swagger-methods": "^3.0.2", - "@jsdevtools/ono": "^7.1.3", - "@readme/better-ajv-errors": "^1.6.0", - "@readme/json-schema-ref-parser": "^1.2.0", + "@apidevtools/json-schema-ref-parser": "^12.0.1", + "@readme/better-ajv-errors": "^2.3.2", "@readme/openapi-schemas": "^3.1.0", + "@types/json-schema": "^7.0.15", "ajv": "^8.12.0", - "ajv-draft-04": "^1.0.0", - "call-me-maybe": "^1.0.1" + "ajv-draft-04": "^1.0.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "peerDependencies": { "openapi-types": ">=7" @@ -4346,6 +4338,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -5119,12 +5112,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/call-me-maybe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", - "license": "MIT" - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -5168,6 +5155,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -5238,19 +5226,11 @@ "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", "license": "MIT" }, - "node_modules/code-error-fragment": { - "version": "0.0.230", - "resolved": "https://registry.npmjs.org/code-error-fragment/-/code-error-fragment-0.0.230.tgz", - "integrity": "sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -5263,6 +5243,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/colord": { @@ -7316,12 +7297,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "license": "MIT" - }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -7356,6 +7331,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -8169,19 +8145,6 @@ "dev": true, "license": "MIT" }, - "node_modules/json-to-ast": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json-to-ast/-/json-to-ast-2.1.0.tgz", - "integrity": "sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ==", - "license": "MIT", - "dependencies": { - "code-error-fragment": "0.0.230", - "grapheme-splitter": "^1.0.4" - }, - "engines": { - "node": ">= 4" - } - }, "node_modules/json2mq": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", @@ -11139,6 +11102,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" diff --git a/package.json b/package.json index 7b31610..b06eac5 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "version": "0.0.1", "private": true, "scripts": { - "dev": "cross-env BASEPREFIX=/ vite --open --port 4001 --strictPort", + "dev": "cross-env BASEPREFIX=/openapi-ui vite --open --port 4001 --strictPort", "build": "tsc && vite build", "serve": "vite preview --port 4001 --strictPort", "preview": "vite preview --port 4001 --strictPort", @@ -18,7 +18,7 @@ "@monaco-editor/react": "4.6.0", "@originjs/vite-plugin-federation": "1.3.6", "@prorobotech/openapi-k8s-toolkit": "0.0.1-alpha.16", - "@readme/openapi-parser": "2.6.0", + "@readme/openapi-parser": "4.0.0", "@reduxjs/toolkit": "2.2.5", "@tanstack/react-query": "5.62.2", "@tanstack/react-query-devtools": "5.62.2", diff --git a/src/App.tsx b/src/App.tsx index f2a81a9..7f77548 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -4,7 +4,7 @@ import React, { FC, useEffect } from 'react' import { BrowserRouter, Routes, Route } from 'react-router-dom' import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import { ReactQueryDevtools } from '@tanstack/react-query-devtools' -import OpenAPIParser from '@readme/openapi-parser' +import { dereference } from '@readme/openapi-parser' import { OpenAPIV2 } from 'openapi-types' import { ConfigProvider, theme as antdtheme } from 'antd' import { getSwagger } from '@prorobotech/openapi-k8s-toolkit' @@ -53,9 +53,12 @@ export const App: FC = ({ isFederation, forcedTheme }) => { }, [dispatch, isFederation]) useEffect(() => { + if (!cluster) { + return + } getSwagger({ clusterName: cluster }) .then(({ data }) => { - OpenAPIParser.dereference(data, { + dereference(data, { dereference: { circular: 'ignore', }, diff --git a/src/pages/MainPage/MainPage.tsx b/src/pages/MainPage/MainPage.tsx index 222e5f2..e9ace57 100644 --- a/src/pages/MainPage/MainPage.tsx +++ b/src/pages/MainPage/MainPage.tsx @@ -1,7 +1,5 @@ import React, { FC, useEffect } from 'react' import { useNavigate } from 'react-router-dom' -import { useSelector } from 'react-redux' -import type { RootState } from 'store/store' import { BaseTemplate } from 'templates' type TMainPageProps = { @@ -10,11 +8,10 @@ type TMainPageProps = { export const MainPage: FC = ({ forcedTheme }) => { const navigate = useNavigate() - const baseprefix = useSelector((state: RootState) => state.baseprefix.baseprefix) useEffect(() => { - navigate(`${baseprefix}/cluster-list`) - }, [navigate, baseprefix]) + navigate(`./cluster-list`) + }, [navigate]) - return + return } diff --git a/vite.config.ts b/vite.config.ts index 788f486..2cf6faa 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -31,7 +31,7 @@ export default defineConfig({ shared: ['react', 'react-dom', 'react-redux', 'react-router-dom', 'antd', '@tanstack/react-query'], }), nodePolyfills({ - include: ['buffer', 'process'], + include: ['buffer', 'process', 'path'], globals: { Buffer: true, // can also be 'build', 'dev', or false global: true,