From cf0113e8d86401d2b6944085ef4b3ba6b69ff977 Mon Sep 17 00:00:00 2001 From: jialin Date: Fri, 28 Jun 2024 17:13:49 +0800 Subject: [PATCH] chore: watch api --- config/config.ts | 1 + package.json | 5 +- pnpm-lock.yaml | 646 ++++++++++-------- src/app.tsx | 26 +- src/assets/.gitkeep | 0 src/assets/images/bg-6.png | Bin 0 -> 10693 bytes src/assets/styles/common.less | 17 + src/components/logs-viewer/index.less | 22 + src/components/logs-viewer/index.tsx | 63 ++ src/components/progress-bar/index.tsx | 63 +- .../seal-form/components/wrapper.less | 7 +- src/components/seal-table/styles/index.less | 1 + src/config/global.d.ts | 1 + src/global.less | 2 + src/hooks/use-chunk-request.ts | 2 +- src/layouts/index.tsx | 2 - src/locales/en-US/models.ts | 3 +- src/locales/zh-CN/models.ts | 3 +- .../dashboard/components/active-table.tsx | 4 +- src/pages/llmodels/components/add-modal.tsx | 2 +- .../llmodels/components/view-logs-modal.tsx | 15 +- src/pages/llmodels/config/types.ts | 1 + src/pages/llmodels/index.tsx | 103 ++- src/pages/login/components/login-form.tsx | 142 ++++ src/pages/login/components/password-form.tsx | 93 +++ src/pages/login/index.tsx | 119 +--- src/pages/playground/apis/index.ts | 40 -- .../playground/components/ground-left.tsx | 24 +- src/pages/resources/apis/index.ts | 18 +- src/pages/resources/components/gpus.tsx | 126 +++- src/pages/resources/components/test.tsx | 22 - src/pages/resources/components/workers.tsx | 134 ++-- src/pages/resources/config/types.ts | 25 +- src/utils/fetch-chunk-data.ts | 53 ++ src/utils/index.ts | 13 +- 35 files changed, 1171 insertions(+), 627 deletions(-) delete mode 100644 src/assets/.gitkeep create mode 100644 src/assets/images/bg-6.png create mode 100644 src/components/logs-viewer/index.less create mode 100644 src/components/logs-viewer/index.tsx create mode 100644 src/pages/login/components/login-form.tsx create mode 100644 src/pages/login/components/password-form.tsx delete mode 100644 src/pages/resources/components/test.tsx create mode 100644 src/utils/fetch-chunk-data.ts diff --git a/config/config.ts b/config/config.ts index dfcaf3b0..4cf6dd41 100644 --- a/config/config.ts +++ b/config/config.ts @@ -98,6 +98,7 @@ export default defineConfig({ hash: true, access: {}, model: {}, + valtio: {}, initialState: {}, request: {}, locale: { diff --git a/package.json b/package.json index cd16dd77..be527a00 100644 --- a/package.json +++ b/package.json @@ -18,12 +18,15 @@ "@monaco-editor/react": "^4.6.0", "@types/lodash": "^4.17.4", "@umijs/max": "^4.2.1", - "antd": "^5.17.0", + "ansi-to-html": "^0.7.2", + "antd": "^5.18.3", "antd-style": "^3.6.2", "axios": "^1.7.2", "classnames": "^2.5.1", "crypto-js": "^4.2.0", "dayjs": "^1.11.11", + "has-ansi": "^5.0.1", + "jotai": "^2.8.4", "lodash": "^4.17.21", "numeral": "^2.0.6", "query-string": "^9.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3ca35041..2148053f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ dependencies: version: 2.2.2(lodash-es@4.17.21)(react-dom@18.3.1)(react@18.3.1) '@ant-design/pro-components': specifier: ^2.7.1 - version: 2.7.1(antd@5.17.0)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) + version: 2.7.1(antd@5.18.3)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) '@huggingface/hub': specifier: ^0.15.1 version: 0.15.1 @@ -26,12 +26,15 @@ dependencies: '@umijs/max': specifier: ^4.2.1 version: 4.2.1(@babel/core@7.24.5)(@types/react-dom@18.3.0)(@types/react@18.3.1)(dva@2.5.0-beta.2)(prettier@3.2.5)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5)(webpack@5.91.0) + ansi-to-html: + specifier: ^0.7.2 + version: 0.7.2 antd: - specifier: ^5.17.0 - version: 5.17.0(react-dom@18.3.1)(react@18.3.1) + specifier: ^5.18.3 + version: 5.18.3(react-dom@18.3.1)(react@18.3.1) antd-style: specifier: ^3.6.2 - version: 3.6.2(@types/react@18.3.1)(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) + version: 3.6.2(@types/react@18.3.1)(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) axios: specifier: ^1.7.2 version: 1.7.2 @@ -44,6 +47,12 @@ dependencies: dayjs: specifier: ^1.11.11 version: 1.11.11 + has-ansi: + specifier: ^5.0.1 + version: 5.0.1 + jotai: + specifier: ^2.8.4 + version: 2.8.4(@types/react@18.3.1)(react@18.3.1) lodash: specifier: ^4.17.21 version: 4.17.21 @@ -58,7 +67,7 @@ dependencies: version: 4.5.0(react-dom@18.3.1)(react@18.3.1) umi-presets-pro: specifier: ^2.0.3 - version: 2.0.3(@babel/core@7.24.5)(@types/react-dom@18.3.0)(@types/react@18.3.1)(antd@5.17.0)(dva@2.5.0-beta.2)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1)(umi@4.2.1) + version: 2.0.3(@babel/core@7.24.5)(@types/react-dom@18.3.0)(@types/react@18.3.1)(antd@5.18.3)(dva@2.5.0-beta.2)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1)(umi@4.2.1) devDependencies: '@types/react': @@ -151,7 +160,7 @@ packages: react: 18.3.1 dev: false - /@alita/plugins@3.5.0(@babel/core@7.24.5)(@types/react-dom@18.3.0)(@types/react@18.3.1)(antd@5.17.0)(dva@2.5.0-beta.2)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1): + /@alita/plugins@3.5.0(@babel/core@7.24.5)(@types/react-dom@18.3.0)(@types/react@18.3.1)(antd@5.18.3)(dva@2.5.0-beta.2)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-/vpSYnGWdePgzZu4warBGxZC6lhCWgeNCWWtbznEWJ9rnV5+TXJRJPlYvO5xBJzYuZAQLeLRM+nwelRtJyVjxg==, tarball: https://registry.npmjs.org/@alita/plugins/-/plugins-3.5.0.tgz} dependencies: '@alita/babel-transform-jsx-class': 0.0.2 @@ -159,7 +168,7 @@ packages: '@alita/request': 3.1.2 '@alita/types': 3.1.2 '@umijs/bundler-utils': 4.2.8 - '@umijs/plugins': 4.2.8(@babel/core@7.24.5)(@types/react-dom@18.3.0)(@types/react@18.3.1)(antd@5.17.0)(dva@2.5.0-beta.2)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) + '@umijs/plugins': 4.2.8(@babel/core@7.24.5)(@types/react-dom@18.3.0)(@types/react@18.3.1)(antd@5.18.3)(dva@2.5.0-beta.2)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) '@umijs/utils': 4.2.8 ahooks: 3.8.0(react@18.3.1) antd-mobile-alita: 2.3.4(react-dom@18.3.1)(react@18.3.1) @@ -250,6 +259,23 @@ packages: stylis: 4.3.2 dev: false + /@ant-design/cssinjs@1.21.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-gIilraPl+9EoKdYxnupxjHB/Q6IHNRjEXszKbDxZdsgv4sAZ9pjkCq8yanDWNvyfjp4leir2OVAJm0vxwKK8YA==, tarball: https://registry.npmjs.org/@ant-design/cssinjs/-/cssinjs-1.21.0.tgz} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@babel/runtime': 7.24.7 + '@emotion/hash': 0.8.0 + '@emotion/unitless': 0.7.5 + classnames: 2.5.1 + csstype: 3.1.3 + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + stylis: 4.3.2 + dev: false + /@ant-design/icons-svg@4.4.2: resolution: {integrity: sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==} dev: false @@ -328,17 +354,17 @@ packages: - react-dom dev: false - /@ant-design/pro-card@2.6.1(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1): + /@ant-design/pro-card@2.6.1(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-LiZwTUFHNU8t7bJsp51DnSmuct2uY2WHxl+dMcWCpsW2V6KRPws4raGo96SDMPfGjwbF0YrMZhR9yO7qmI5nag==} peerDependencies: antd: ^4.24.15 || ^5.11.2 react: '>=17.0.0' dependencies: '@ant-design/icons': 5.3.7(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-provider': 2.14.1(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-utils': 2.15.7(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-provider': 2.14.1(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-utils': 2.15.7(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) '@babel/runtime': 7.24.5 - antd: 5.17.0(react-dom@18.3.1)(react@18.3.1) + antd: 5.18.3(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 omit.js: 2.0.2 rc-resize-observer: 1.4.0(react-dom@18.3.1)(react@18.3.1) @@ -374,25 +400,25 @@ packages: - rc-field-form dev: false - /@ant-design/pro-components@2.7.1(antd@5.17.0)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1): + /@ant-design/pro-components@2.7.1(antd@5.18.3)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-9e1BCrDNZ4NZXt7sY9eotVOFa506Pnwhsg9alRWfAzn36IpLt0o9/VllBSAR3WeGaUn452vEEOWJTsCVW4Jq4w==} peerDependencies: antd: ^4.24.15 || ^5.11.2 react: '>=17.0.0' react-dom: '>=17.0.0' dependencies: - '@ant-design/pro-card': 2.6.1(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-descriptions': 2.5.37(antd@5.17.0)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-field': 2.14.10(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-form': 2.26.0(antd@5.17.0)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-layout': 7.19.1(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-list': 2.5.52(antd@5.17.0)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-provider': 2.14.1(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-skeleton': 2.1.11(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-table': 3.15.3(antd@5.17.0)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-utils': 2.15.7(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-card': 2.6.1(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-descriptions': 2.5.37(antd@5.18.3)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-field': 2.14.10(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-form': 2.26.0(antd@5.18.3)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-layout': 7.19.1(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-list': 2.5.52(antd@5.18.3)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-provider': 2.14.1(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-skeleton': 2.1.11(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-table': 3.15.3(antd@5.18.3)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-utils': 2.15.7(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) '@babel/runtime': 7.24.5 - antd: 5.17.0(react-dom@18.3.1)(react@18.3.1) + antd: 5.18.3(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) transitivePeerDependencies: @@ -421,18 +447,18 @@ packages: - react-dom dev: false - /@ant-design/pro-descriptions@2.5.37(antd@5.17.0)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1): + /@ant-design/pro-descriptions@2.5.37(antd@5.18.3)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-YaMs0IGQ39n8jMDUQjhpWW6uZMDktgxAAYwUE9s1tF2XK/ySQSdfylsGvMHZFKqWPRnOqNFIYQ1kAcDLIO9KXQ==} peerDependencies: antd: ^4.24.15 || ^5.11.2 react: '>=17.0.0' dependencies: - '@ant-design/pro-field': 2.14.10(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-form': 2.26.0(antd@5.17.0)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-skeleton': 2.1.11(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-utils': 2.15.7(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-field': 2.14.10(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-form': 2.26.0(antd@5.18.3)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-skeleton': 2.1.11(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-utils': 2.15.7(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) '@babel/runtime': 7.24.5 - antd: 5.17.0(react-dom@18.3.1)(react@18.3.1) + antd: 5.18.3(react-dom@18.3.1)(react@18.3.1) rc-resize-observer: 0.2.6(react-dom@18.3.1)(react@18.3.1) rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 @@ -465,18 +491,18 @@ packages: - react-dom dev: false - /@ant-design/pro-field@2.14.10(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1): + /@ant-design/pro-field@2.14.10(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-Q5JIfZJheQKbxgpX29xNwQgsP+fA9WYD4ov5QBLBn1ePUqOreXOQK4cLMBPxxD5MOMULihzHoKi3JOBmuyBCUw==} peerDependencies: antd: ^4.24.15 || ^5.11.2 react: '>=17.0.0' dependencies: '@ant-design/icons': 5.3.7(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-provider': 2.14.1(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-utils': 2.15.7(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-provider': 2.14.1(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-utils': 2.15.7(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) '@babel/runtime': 7.24.5 '@chenshuai2144/sketch-color': 1.0.9(react@18.3.1) - antd: 5.17.0(react-dom@18.3.1)(react@18.3.1) + antd: 5.18.3(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 dayjs: 1.11.11 lodash.tonumber: 4.0.3 @@ -519,7 +545,7 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false - /@ant-design/pro-form@2.26.0(antd@5.17.0)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1): + /@ant-design/pro-form@2.26.0(antd@5.18.3)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-K542iiEM0mS/U2iaBHhJjsNinsquy4ZSSfoz6dRdFg6OQEU6+qxx7SpvXpVAGk+CtTxDTmd6u0EKlyVl6shK5Q==} peerDependencies: '@types/lodash.merge': ^4.6.7 @@ -532,13 +558,13 @@ packages: optional: true dependencies: '@ant-design/icons': 5.3.7(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-field': 2.14.10(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-provider': 2.14.1(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-utils': 2.15.7(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-field': 2.14.10(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-provider': 2.14.1(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-utils': 2.15.7(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) '@babel/runtime': 7.24.5 '@chenshuai2144/sketch-color': 1.0.9(react@18.3.1) '@umijs/use-params': 1.0.9(react@18.3.1) - antd: 5.17.0(react-dom@18.3.1)(react@18.3.1) + antd: 5.18.3(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 dayjs: 1.11.11 lodash.merge: 4.6.2 @@ -576,7 +602,7 @@ packages: warning: 4.0.3 dev: false - /@ant-design/pro-layout@7.19.1(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1): + /@ant-design/pro-layout@7.19.1(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-JquPxUMFuEZ0kAgs75ECsRFEgygmXawk/oAvEvKNuNTavrUyU/8EJHN+oAETjKdhtsst0Wp5MJKQqPZAcQdYnA==} peerDependencies: antd: ^4.24.15 || ^5.11.2 @@ -584,12 +610,12 @@ packages: react-dom: '>=17.0.0' dependencies: '@ant-design/icons': 5.3.7(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-provider': 2.14.1(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-utils': 2.15.7(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-provider': 2.14.1(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-utils': 2.15.7(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) '@babel/runtime': 7.24.5 '@umijs/route-utils': 4.0.1 '@umijs/use-params': 1.0.9(react@18.3.1) - antd: 5.17.0(react-dom@18.3.1)(react@18.3.1) + antd: 5.18.3(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 lodash.merge: 4.6.2 omit.js: 2.0.2 @@ -627,7 +653,7 @@ packages: - rc-field-form dev: false - /@ant-design/pro-list@2.5.52(antd@5.17.0)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1): + /@ant-design/pro-list@2.5.52(antd@5.18.3)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-Ndro8YKubSQxFDJ3ZTMU9esZJAjye9TqKMLd768ST86nWvSeDrm8A0oUIKtyMgvnbzsh7YXj4JgexGUNJJPaGg==} peerDependencies: antd: ^4.24.15 || ^5.11.2 @@ -635,12 +661,12 @@ packages: react-dom: '>=17.0.0' dependencies: '@ant-design/icons': 5.3.7(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-card': 2.6.1(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-field': 2.14.10(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-table': 3.15.3(antd@5.17.0)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-utils': 2.15.7(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-card': 2.6.1(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-field': 2.14.10(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-table': 3.15.3(antd@5.18.3)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-utils': 2.15.7(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) '@babel/runtime': 7.24.5 - antd: 5.17.0(react-dom@18.3.1)(react@18.3.1) + antd: 5.18.3(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 dayjs: 1.11.11 rc-resize-observer: 1.4.0(react-dom@18.3.1)(react@18.3.1) @@ -669,7 +695,7 @@ packages: swr: 2.2.5(react@18.3.1) dev: false - /@ant-design/pro-provider@2.14.1(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1): + /@ant-design/pro-provider@2.14.1(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-N8hTUNJc7dtIjj79ZFviielizo15nOUyjrmz9Ll0Mn68Btne2FLpf8cKHsUMdA+yLDW9oM0ExcqIWJOKyx0nUg==} peerDependencies: antd: ^4.24.15 || ^5.11.2 @@ -679,7 +705,7 @@ packages: '@ant-design/cssinjs': 1.20.0(react-dom@18.3.1)(react@18.3.1) '@babel/runtime': 7.24.5 '@ctrl/tinycolor': 3.6.1 - antd: 5.17.0(react-dom@18.3.1)(react@18.3.1) + antd: 5.18.3(react-dom@18.3.1)(react@18.3.1) rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -699,7 +725,7 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false - /@ant-design/pro-skeleton@2.1.11(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1): + /@ant-design/pro-skeleton@2.1.11(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-a1drmZSDXHFexFniN1YD7PgYiWvhdBAM9OwzSOO3eXPAltAg2cGcaVBlFmweShN+dupO220RN+6aaLUv3G9B2Q==} peerDependencies: antd: ^4.24.15 || ^5.11.2 @@ -707,7 +733,7 @@ packages: react-dom: '>=17.0.0' dependencies: '@babel/runtime': 7.24.5 - antd: 5.17.0(react-dom@18.3.1)(react@18.3.1) + antd: 5.18.3(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -745,7 +771,7 @@ packages: - '@types/lodash.merge' dev: false - /@ant-design/pro-table@3.15.3(antd@5.17.0)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1): + /@ant-design/pro-table@3.15.3(antd@5.18.3)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-85LMPOsE8vqnKO0/C/r1fLBMhG5jfBUzSlzO7dtDKNzgR3FIeIdOBm49rtoKJ3sHdf3HV3sFazHkOUv9aXQ6Bg==} peerDependencies: antd: ^4.24.15 || ^5.11.2 @@ -754,17 +780,17 @@ packages: react-dom: '>=17.0.0' dependencies: '@ant-design/icons': 5.3.7(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-card': 2.6.1(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-field': 2.14.10(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-form': 2.26.0(antd@5.17.0)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-provider': 2.14.1(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-utils': 2.15.7(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-card': 2.6.1(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-field': 2.14.10(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-form': 2.26.0(antd@5.18.3)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-provider': 2.14.1(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-utils': 2.15.7(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) '@babel/runtime': 7.24.5 '@dnd-kit/core': 6.1.0(react-dom@18.3.1)(react@18.3.1) '@dnd-kit/modifiers': 6.0.1(@dnd-kit/core@6.1.0)(react@18.3.1) '@dnd-kit/sortable': 7.0.2(@dnd-kit/core@6.1.0)(react@18.3.1) '@dnd-kit/utilities': 3.2.2(react@18.3.1) - antd: 5.17.0(react-dom@18.3.1)(react@18.3.1) + antd: 5.18.3(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 dayjs: 1.11.11 lodash.merge: 4.6.2 @@ -799,7 +825,7 @@ packages: swr: 2.2.5(react@18.3.1) dev: false - /@ant-design/pro-utils@2.15.7(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1): + /@ant-design/pro-utils@2.15.7(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-VMK1mkb9St4OoEoekW0qUqkKK632XOGjBZusKjlfP9WPwv+MP8bPAB2jOH89JoY8SIQ87Zod6lMgWLMJX3qbOw==} peerDependencies: antd: ^4.24.15 || ^5.11.2 @@ -807,9 +833,9 @@ packages: react-dom: '>=17.0.0' dependencies: '@ant-design/icons': 5.3.7(react-dom@18.3.1)(react@18.3.1) - '@ant-design/pro-provider': 2.14.1(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-provider': 2.14.1(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1) '@babel/runtime': 7.24.5 - antd: 5.17.0(react-dom@18.3.1)(react@18.3.1) + antd: 5.18.3(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 dayjs: 1.11.11 lodash.merge: 4.6.2 @@ -834,11 +860,11 @@ packages: dev: false /@ant-design/react-slick@1.1.2(react@18.3.1): - resolution: {integrity: sha512-EzlvzE6xQUBrZuuhSAFTdsr4P2bBBHGZwKFemEfq8gIGyIQCxalYfZW/T2ORbtQx5rU69o+WycP3exY/7T1hGA==} + resolution: {integrity: sha512-EzlvzE6xQUBrZuuhSAFTdsr4P2bBBHGZwKFemEfq8gIGyIQCxalYfZW/T2ORbtQx5rU69o+WycP3exY/7T1hGA==, tarball: https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-1.1.2.tgz} peerDependencies: react: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 classnames: 2.5.1 json2mq: 0.2.0 react: 18.3.1 @@ -2694,6 +2720,13 @@ packages: regenerator-runtime: 0.14.1 dev: false + /@babel/runtime@7.24.7: + resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==, tarball: https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + dev: false + /@babel/template@7.24.0: resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} engines: {node: '>=6.9.0'} @@ -4139,55 +4172,55 @@ packages: dev: false /@rc-component/async-validator@5.0.3: - resolution: {integrity: sha512-eN5chKrc0ANerXjLJuoqh/YJpor0u4T1bgaph5BPh42cJ2afDihaHJ2Mh3Up3XIFk05EfKG4nIQxbqC6y2eM4Q==} + resolution: {integrity: sha512-eN5chKrc0ANerXjLJuoqh/YJpor0u4T1bgaph5BPh42cJ2afDihaHJ2Mh3Up3XIFk05EfKG4nIQxbqC6y2eM4Q==, tarball: https://registry.npmjs.org/@rc-component/async-validator/-/async-validator-5.0.3.tgz} engines: {node: '>=14.x'} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 dev: false /@rc-component/color-picker@1.5.3(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-+tGGH3nLmYXTalVe0L8hSZNs73VTP5ueSHwUlDC77KKRaN7G4DS4wcpG5DTDzdcV/Yas+rzA6UGgIyzd8fS4cw==} + resolution: {integrity: sha512-+tGGH3nLmYXTalVe0L8hSZNs73VTP5ueSHwUlDC77KKRaN7G4DS4wcpG5DTDzdcV/Yas+rzA6UGgIyzd8fS4cw==, tarball: https://registry.npmjs.org/@rc-component/color-picker/-/color-picker-1.5.3.tgz} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 '@ctrl/tinycolor': 3.6.1 classnames: 2.5.1 - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false /@rc-component/context@1.4.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w==} + resolution: {integrity: sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w==, tarball: https://registry.npmjs.org/@rc-component/context/-/context-1.4.0.tgz} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + '@babel/runtime': 7.24.7 + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false /@rc-component/mini-decimal@1.1.0: - resolution: {integrity: sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==} + resolution: {integrity: sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==, tarball: https://registry.npmjs.org/@rc-component/mini-decimal/-/mini-decimal-1.1.0.tgz} engines: {node: '>=8.x'} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 dev: false /@rc-component/mutate-observer@1.1.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw==} + resolution: {integrity: sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw==, tarball: https://registry.npmjs.org/@rc-component/mutate-observer/-/mutate-observer-1.1.0.tgz} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 classnames: 2.5.1 - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -4206,35 +4239,35 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false - /@rc-component/tour@1.14.2(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-A75DZ8LVvahBIvxooj3Gvf2sxe+CGOkmzPNX7ek0i0AJHyKZ1HXe5ieIGo3m0FMdZfVOlbCJ952Duq8VKAHk6g==} + /@rc-component/tour@1.15.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-h6hyILDwL+In9GAgRobwRWihLqqsD7Uft3fZGrJ7L4EiyCoxbnNYwzPXDfz7vNDhWeVyvAWQJj9fJCzpI4+b4g==, tarball: https://registry.npmjs.org/@rc-component/tour/-/tour-1.15.0.tgz} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 '@rc-component/portal': 1.1.2(react-dom@18.3.1)(react@18.3.1) - '@rc-component/trigger': 2.1.1(react-dom@18.3.1)(react@18.3.1) + '@rc-component/trigger': 2.2.0(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false - /@rc-component/trigger@2.1.1(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-UjHkedkgtEcgQu87w1VuWug1idoDJV7VUt0swxHXRcmei2uu1AuUzGBPEUlmOmXGJ+YtTgZfVLi7kuAUKoZTMA==} + /@rc-component/trigger@2.2.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-QarBCji02YE9aRFhZgRZmOpXBj0IZutRippsVBv85sxvG4FGk/vRxwAlkn3MS9zK5mwbETd86mAVg2tKqTkdJA==, tarball: https://registry.npmjs.org/@rc-component/trigger/-/trigger-2.2.0.tgz} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 '@rc-component/portal': 1.1.2(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 - rc-motion: 2.9.0(react-dom@18.3.1)(react@18.3.1) + rc-motion: 2.9.2(react-dom@18.3.1)(react@18.3.1) rc-resize-observer: 1.4.0(react-dom@18.3.1)(react@18.3.1) - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -5632,7 +5665,7 @@ packages: - supports-color dev: false - /@umijs/plugins@4.2.1(@babel/core@7.24.5)(@types/react-dom@18.3.0)(@types/react@18.3.1)(antd@5.17.0)(dva@2.5.0-beta.2)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1): + /@umijs/plugins@4.2.1(@babel/core@7.24.5)(@types/react-dom@18.3.0)(@types/react@18.3.1)(antd@5.18.3)(dva@2.5.0-beta.2)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-bTpYLEyzhJQNzruDeG1oaVWW+W5bGihkOoPFNqbd6r/IjoK9YuUQKCq471FgH/LV68rTIrPzVWwhRCejcvqorA==} dependencies: '@ahooksjs/use-request': 2.8.15(react@18.3.1) @@ -5640,7 +5673,7 @@ packages: '@ant-design/cssinjs': 1.20.0(react-dom@18.3.1)(react@18.3.1) '@ant-design/icons': 4.8.3(react-dom@18.3.1)(react@18.3.1) '@ant-design/moment-webpack-plugin': 0.0.3 - '@ant-design/pro-components': 2.7.1(antd@5.17.0)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-components': 2.7.1(antd@5.18.3)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) '@tanstack/react-query': 4.36.1(react-dom@18.3.1)(react@18.3.1) '@tanstack/react-query-devtools': 4.36.1(@tanstack/react-query@4.36.1)(react-dom@18.3.1)(react@18.3.1) '@umijs/bundler-utils': 4.2.1 @@ -5680,7 +5713,7 @@ packages: - supports-color dev: false - /@umijs/plugins@4.2.8(@babel/core@7.24.5)(@types/react-dom@18.3.0)(@types/react@18.3.1)(antd@5.17.0)(dva@2.5.0-beta.2)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1): + /@umijs/plugins@4.2.8(@babel/core@7.24.5)(@types/react-dom@18.3.0)(@types/react@18.3.1)(antd@5.18.3)(dva@2.5.0-beta.2)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-IkWX4/0NYxWV+KvyzTVlZIepblSIpbTcZA6wVfJR82+gv3192uJVL7SKC7OfElq1UaF0cBQeeMC/onC2dRN9SQ==, tarball: https://registry.npmjs.org/@umijs/plugins/-/plugins-4.2.8.tgz} dependencies: '@ahooksjs/use-request': 2.8.15(react@18.3.1) @@ -5688,7 +5721,7 @@ packages: '@ant-design/cssinjs': 1.20.0(react-dom@18.3.1)(react@18.3.1) '@ant-design/icons': 4.8.3(react-dom@18.3.1)(react@18.3.1) '@ant-design/moment-webpack-plugin': 0.0.3 - '@ant-design/pro-components': 2.7.1(antd@5.17.0)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) + '@ant-design/pro-components': 2.7.1(antd@5.18.3)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) '@tanstack/react-query': 4.36.1(react-dom@18.3.1)(react@18.3.1) '@tanstack/react-query-devtools': 4.36.1(@tanstack/react-query@4.36.1)(react-dom@18.3.1)(react@18.3.1) '@umijs/bundler-utils': 4.2.8 @@ -6206,7 +6239,7 @@ packages: dev: false /ansi-regex@2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==, tarball: https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz} engines: {node: '>=0.10.0'} dev: false @@ -6215,7 +6248,7 @@ packages: engines: {node: '>=8'} /ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==, tarball: https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz} engines: {node: '>=12'} /ansi-styles@2.2.1: @@ -6239,6 +6272,14 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + /ansi-to-html@0.7.2: + resolution: {integrity: sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g==, tarball: https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.7.2.tgz} + engines: {node: '>=8.0.0'} + hasBin: true + dependencies: + entities: 2.2.0 + dev: false + /antd-dayjs-webpack-plugin@1.0.6(dayjs@1.11.11): resolution: {integrity: sha512-UlK3BfA0iE2c5+Zz/Bd2iPAkT6cICtrKG4/swSik5MZweBHtgmu1aUQCHvICdiv39EAShdZy/edfP6mlkS/xXg==} peerDependencies: @@ -6282,7 +6323,7 @@ packages: resolution: {integrity: sha512-iquIc7EsQTndk5nMv9pQQv+/OY5YnjVIPhtCFo7W7JL+Gjqzq/YJ/HO2WxUxyCgYha2NsTTNAb2vPa/M4zAi2g==, tarball: https://registry.npmjs.org/antd-mobile-icons/-/antd-mobile-icons-0.2.2.tgz} dev: false - /antd-style@3.6.2(@types/react@18.3.1)(antd@5.17.0)(react-dom@18.3.1)(react@18.3.1): + /antd-style@3.6.2(@types/react@18.3.1)(antd@5.18.3)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-p6tRV63+U9yp3T3DB4ope1Xs3VdkhNsPD+yiZMJnR57dclPQPtrNnrGBmdGwjWYP1HlzB1XS4JHqFAyMjvObHA==} peerDependencies: antd: '>=5.8.1' @@ -6296,7 +6337,7 @@ packages: '@emotion/serialize': 1.1.4 '@emotion/server': 11.11.0(@emotion/css@11.11.2) '@emotion/utils': 1.2.1 - antd: 5.17.0(react-dom@18.3.1)(react@18.3.1) + antd: 5.18.3(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 use-merge-value: 1.2.0(react@18.3.1) transitivePeerDependencies: @@ -6305,7 +6346,7 @@ packages: dev: false /antd@4.24.16(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-zZrK4UYxHtU6tGOOf0uG/kBRx1kTvypfuSB3GqE/SBQxFhZ/TZ+yj7Z1qwI8vGfMtUUJdLeuoCAqGDa1zPsXnQ==} + resolution: {integrity: sha512-zZrK4UYxHtU6tGOOf0uG/kBRx1kTvypfuSB3GqE/SBQxFhZ/TZ+yj7Z1qwI8vGfMtUUJdLeuoCAqGDa1zPsXnQ==, tarball: https://registry.npmjs.org/antd/-/antd-4.24.16.tgz} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -6357,58 +6398,58 @@ packages: scroll-into-view-if-needed: 2.2.31 dev: false - /antd@5.17.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-jrzMIcaTJIy12/GJ2PfgchgZGuAlDodlaOKd05/TxEtFilRHnv8oaf0qfqNGG3slvvuy4J/57xn21jM4cLl7Hw==} + /antd@5.18.3(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-Dm3P8HBxoo/DiR/QZLj5Mk+rQZsSXxCCArSZACHGiklkkjW6klzlebAElOUr9NyDeFX7UnQ6LVk7vznXlnjTqQ==, tarball: https://registry.npmjs.org/antd/-/antd-5.18.3.tgz} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@ant-design/colors': 7.0.2 - '@ant-design/cssinjs': 1.20.0(react-dom@18.3.1)(react@18.3.1) + '@ant-design/cssinjs': 1.21.0(react-dom@18.3.1)(react@18.3.1) '@ant-design/icons': 5.3.7(react-dom@18.3.1)(react@18.3.1) '@ant-design/react-slick': 1.1.2(react@18.3.1) - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 '@ctrl/tinycolor': 3.6.1 '@rc-component/color-picker': 1.5.3(react-dom@18.3.1)(react@18.3.1) '@rc-component/mutate-observer': 1.1.0(react-dom@18.3.1)(react@18.3.1) - '@rc-component/tour': 1.14.2(react-dom@18.3.1)(react@18.3.1) - '@rc-component/trigger': 2.1.1(react-dom@18.3.1)(react@18.3.1) + '@rc-component/tour': 1.15.0(react-dom@18.3.1)(react@18.3.1) + '@rc-component/trigger': 2.2.0(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 copy-to-clipboard: 3.3.3 dayjs: 1.11.11 qrcode.react: 3.1.0(react@18.3.1) - rc-cascader: 3.25.0(react-dom@18.3.1)(react@18.3.1) - rc-checkbox: 3.2.0(react-dom@18.3.1)(react@18.3.1) + rc-cascader: 3.26.0(react-dom@18.3.1)(react@18.3.1) + rc-checkbox: 3.3.0(react-dom@18.3.1)(react@18.3.1) rc-collapse: 3.7.3(react-dom@18.3.1)(react@18.3.1) - rc-dialog: 9.4.0(react-dom@18.3.1)(react@18.3.1) - rc-drawer: 7.1.0(react-dom@18.3.1)(react@18.3.1) + rc-dialog: 9.5.2(react-dom@18.3.1)(react@18.3.1) + rc-drawer: 7.2.0(react-dom@18.3.1)(react@18.3.1) rc-dropdown: 4.2.0(react-dom@18.3.1)(react@18.3.1) - rc-field-form: 2.0.1(react-dom@18.3.1)(react@18.3.1) - rc-image: 7.6.0(react-dom@18.3.1)(react@18.3.1) - rc-input: 1.4.5(react-dom@18.3.1)(react@18.3.1) - rc-input-number: 9.0.0(react-dom@18.3.1)(react@18.3.1) - rc-mentions: 2.11.1(react-dom@18.3.1)(react@18.3.1) - rc-menu: 9.13.0(react-dom@18.3.1)(react@18.3.1) - rc-motion: 2.9.0(react-dom@18.3.1)(react@18.3.1) - rc-notification: 5.4.0(react-dom@18.3.1)(react@18.3.1) + rc-field-form: 2.2.1(react-dom@18.3.1)(react@18.3.1) + rc-image: 7.9.0(react-dom@18.3.1)(react@18.3.1) + rc-input: 1.5.1(react-dom@18.3.1)(react@18.3.1) + rc-input-number: 9.1.0(react-dom@18.3.1)(react@18.3.1) + rc-mentions: 2.14.0(react-dom@18.3.1)(react@18.3.1) + rc-menu: 9.14.1(react-dom@18.3.1)(react@18.3.1) + rc-motion: 2.9.2(react-dom@18.3.1)(react@18.3.1) + rc-notification: 5.6.0(react-dom@18.3.1)(react@18.3.1) rc-pagination: 4.0.4(react-dom@18.3.1)(react@18.3.1) rc-picker: 4.5.0(dayjs@1.11.11)(react-dom@18.3.1)(react@18.3.1) rc-progress: 4.0.0(react-dom@18.3.1)(react@18.3.1) - rc-rate: 2.12.0(react-dom@18.3.1)(react@18.3.1) + rc-rate: 2.13.0(react-dom@18.3.1)(react@18.3.1) rc-resize-observer: 1.4.0(react-dom@18.3.1)(react@18.3.1) rc-segmented: 2.3.0(react-dom@18.3.1)(react@18.3.1) - rc-select: 14.13.3(react-dom@18.3.1)(react@18.3.1) + rc-select: 14.14.0(react-dom@18.3.1)(react@18.3.1) rc-slider: 10.6.2(react-dom@18.3.1)(react@18.3.1) rc-steps: 6.0.1(react-dom@18.3.1)(react@18.3.1) rc-switch: 4.1.0(react-dom@18.3.1)(react@18.3.1) - rc-table: 7.45.5(react-dom@18.3.1)(react@18.3.1) - rc-tabs: 15.0.0(react-dom@18.3.1)(react@18.3.1) - rc-textarea: 1.6.3(react-dom@18.3.1)(react@18.3.1) + rc-table: 7.45.7(react-dom@18.3.1)(react@18.3.1) + rc-tabs: 15.1.1(react-dom@18.3.1)(react@18.3.1) + rc-textarea: 1.7.0(react-dom@18.3.1)(react@18.3.1) rc-tooltip: 6.2.0(react-dom@18.3.1)(react@18.3.1) - rc-tree: 5.8.7(react-dom@18.3.1)(react@18.3.1) - rc-tree-select: 5.20.0(react-dom@18.3.1)(react@18.3.1) + rc-tree: 5.8.8(react-dom@18.3.1)(react@18.3.1) + rc-tree-select: 5.21.0(react-dom@18.3.1)(react@18.3.1) rc-upload: 4.5.2(react-dom@18.3.1)(react@18.3.1) - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) scroll-into-view-if-needed: 3.1.0 @@ -7348,7 +7389,7 @@ packages: dev: false /compute-scroll-into-view@3.1.0: - resolution: {integrity: sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==} + resolution: {integrity: sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==, tarball: https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz} dev: false /concat-map@0.0.1: @@ -7412,7 +7453,7 @@ packages: dev: false /copy-to-clipboard@3.3.3: - resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} + resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==, tarball: https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz} dependencies: toggle-selection: 1.0.6 dev: false @@ -8123,7 +8164,7 @@ packages: peerDependencies: redux: 3.x dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 flatten: 1.0.3 global: 4.4.0 invariant: 2.2.4 @@ -8173,7 +8214,7 @@ packages: react: 15.x || ^16.0.0-0 react-dom: 15.x || ^16.0.0-0 dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 '@types/isomorphic-fetch': 0.0.34 '@types/react-router-dom': 4.3.5 '@types/react-router-redux': 5.0.27 @@ -8274,11 +8315,11 @@ packages: dev: false /entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==, tarball: https://registry.npmjs.org/entities/-/entities-2.2.0.tgz} dev: false /entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==, tarball: https://registry.npmjs.org/entities/-/entities-4.5.0.tgz} engines: {node: '>=0.12'} dev: false @@ -9818,12 +9859,19 @@ packages: dev: false /has-ansi@2.0.0: - resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} + resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==, tarball: https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz} engines: {node: '>=0.10.0'} dependencies: ansi-regex: 2.1.1 dev: false + /has-ansi@5.0.1: + resolution: {integrity: sha512-Fp2IsZDnnyoJkKg22ZyQFvD7QRCcMTsLAtloKXyXWJ1joGLtItRU9Bv/k1o0tELL2NF3ZZBcycSKryZUM+Yl3g==, tarball: https://registry.npmjs.org/has-ansi/-/has-ansi-5.0.1.tgz} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: false + /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: false @@ -9907,7 +9955,7 @@ packages: /history@4.10.1: resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==, tarball: https://registry.npmjs.org/history/-/history-4.10.1.tgz} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 loose-envify: 1.4.0 resolve-pathname: 3.0.0 tiny-invariant: 1.3.3 @@ -10743,6 +10791,22 @@ packages: supports-color: 8.1.1 dev: false + /jotai@2.8.4(@types/react@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-f6jwjhBJcDtpeauT2xH01gnqadKEySwwt1qNBLvAXcnojkmb76EdqRt05Ym8IamfHGAQz2qMKAwftnyjeSoHAA==, tarball: https://registry.npmjs.org/jotai/-/jotai-2.8.4.tgz} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=17.0.0' + react: '>=17.0.0' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + dependencies: + '@types/react': 18.3.1 + react: 18.3.1 + dev: false + /js-cookie@2.2.1: resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==, tarball: https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz} dev: false @@ -12949,7 +13013,7 @@ packages: dev: false /qrcode.react@3.1.0(react@18.3.1): - resolution: {integrity: sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==} + resolution: {integrity: sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==, tarball: https://registry.npmjs.org/qrcode.react/-/qrcode.react-3.1.0.tgz} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: @@ -13090,18 +13154,18 @@ packages: react-lifecycles-compat: 3.0.4 dev: false - /rc-cascader@3.25.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-mBY6/CykOvzAYnIye0rpt5JkMAXJaX8zZawOwSndbKuFakYE+leqBQWIZoN9HIgAptPpTi2Aty3RvbaBmk8SKQ==} + /rc-cascader@3.26.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-L1dml383TPSJD1I11YwxuVbmqaJY64psZqFp1ETlgl3LEOwDu76Cyl11fw5dmjJhMlUWwM5dECQfqJgfebhUjg==, tarball: https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.26.0.tgz} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 array-tree-filter: 2.1.0 classnames: 2.5.1 - rc-select: 14.13.3(react-dom@18.3.1)(react@18.3.1) - rc-tree: 5.8.7(react-dom@18.3.1)(react@18.3.1) - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-select: 14.14.0(react-dom@18.3.1)(react@18.3.1) + rc-tree: 5.8.8(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -13144,15 +13208,15 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false - /rc-checkbox@3.2.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-8inzw4y9dAhZmv/Ydl59Qdy5tdp9CKg4oPVcRigi+ga/yKPZS5m5SyyQPtYSgbcqHRYOdUhiPSeKfktc76du1A==} + /rc-checkbox@3.3.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-Ih3ZaAcoAiFKJjifzwsGiT/f/quIkxJoklW4yKGho14Olulwn8gN7hOBve0/WGDg5o/l/5mL0w7ff7/YGvefVw==, tarball: https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-3.3.0.tgz} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 classnames: 2.5.1 - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -13185,15 +13249,15 @@ packages: dev: false /rc-collapse@3.7.3(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-60FJcdTRn0X5sELF18TANwtVi7FtModq649H11mYF1jh83DniMoM4MqY627sEKRCTm4+WXfGDcB7hY5oW6xhyw==} + resolution: {integrity: sha512-60FJcdTRn0X5sELF18TANwtVi7FtModq649H11mYF1jh83DniMoM4MqY627sEKRCTm4+WXfGDcB7hY5oW6xhyw==, tarball: https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.7.3.tgz} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 classnames: 2.5.1 - rc-motion: 2.9.0(react-dom@18.3.1)(react@18.3.1) - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-motion: 2.9.2(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -13213,17 +13277,17 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false - /rc-dialog@9.4.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-AScCexaLACvf8KZRqCPz12BJ8olszXOS4lKlkMyzDQHS1m0zj1KZMYgmMCh39ee0Dcv8kyrj8mTqxuLyhH+QuQ==} + /rc-dialog@9.5.2(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-qVUjc8JukG+j/pNaHVSRa2GO2/KbV2thm7yO4hepQ902eGdYK913sGkwg/fh9yhKYV1ql3BKIN2xnud3rEXAPw==, tarball: https://registry.npmjs.org/rc-dialog/-/rc-dialog-9.5.2.tgz} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 '@rc-component/portal': 1.1.2(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 - rc-motion: 2.9.0(react-dom@18.3.1)(react@18.3.1) - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-motion: 2.9.2(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -13243,17 +13307,17 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false - /rc-drawer@7.1.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-nBE1rF5iZvpavoyqhSSz2mk/yANltA7g3aF0U45xkx381n3we/RKs9cJfNKp9mSWCedOKWt9FLEwZDaAaOGn2w==} + /rc-drawer@7.2.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-9lOQ7kBekEJRdEpScHvtmEtXnAsy+NGDXiRWc2ZVC7QXAazNVbeT4EraQKYwCME8BJLa8Bxqxvs5swwyOepRwg==, tarball: https://registry.npmjs.org/rc-drawer/-/rc-drawer-7.2.0.tgz} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 '@rc-component/portal': 1.1.2(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 - rc-motion: 2.9.0(react-dom@18.3.1)(react@18.3.1) - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-motion: 2.9.2(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -13273,15 +13337,15 @@ packages: dev: false /rc-dropdown@4.2.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-odM8Ove+gSh0zU27DUj5cG1gNKg7mLWBYzB5E4nNLrLwBmYEgYP43vHKDGOVZcJSVElQBI0+jTQgjnq0NfLjng==} + resolution: {integrity: sha512-odM8Ove+gSh0zU27DUj5cG1gNKg7mLWBYzB5E4nNLrLwBmYEgYP43vHKDGOVZcJSVElQBI0+jTQgjnq0NfLjng==, tarball: https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-4.2.0.tgz} peerDependencies: react: '>=16.11.0' react-dom: '>=16.11.0' dependencies: - '@babel/runtime': 7.24.5 - '@rc-component/trigger': 2.1.1(react-dom@18.3.1)(react@18.3.1) + '@babel/runtime': 7.24.7 + '@rc-component/trigger': 2.2.0(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -13307,23 +13371,23 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 async-validator: 4.2.5 - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false - /rc-field-form@2.0.1(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-3WK/POHBcfMFKrzScrkmgMIXqoVQ0KgVwcVnej/ukwuQG4ZHCJaTi2KhM+tWTK4WODBXbmjKg5pKHj2IVmSg4A==} + /rc-field-form@2.2.1(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-uoNqDoR7A4tn4QTSqoWPAzrR7ZwOK5I+vuZ/qdcHtbKx+ZjEsTg7QXm2wk/jalDiSksAQmATxL0T5LJkRREdIA==, tarball: https://registry.npmjs.org/rc-field-form/-/rc-field-form-2.2.1.tgz} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 '@rc-component/async-validator': 5.0.3 - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -13350,18 +13414,18 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false - /rc-image@7.6.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-tL3Rvd1sS+frZQ01i+tkeUPaOeFz2iG9/scAt/Cfs0hyCRVA/w0Pu1J/JxIX8blalvmHE0bZQRYdOmRAzWu4Hg==} + /rc-image@7.9.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-l4zqO5E0quuLMCtdKfBgj4Suv8tIS011F5k1zBBlK25iMjjiNHxA0VeTzGFtUZERSA45gvpXDg8/P6qNLjR25g==, tarball: https://registry.npmjs.org/rc-image/-/rc-image-7.9.0.tgz} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 '@rc-component/portal': 1.1.2(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 - rc-dialog: 9.4.0(react-dom@18.3.1)(react@18.3.1) - rc-motion: 2.9.0(react-dom@18.3.1)(react@18.3.1) - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-dialog: 9.5.2(react-dom@18.3.1)(react@18.3.1) + rc-motion: 2.9.2(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -13379,17 +13443,17 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false - /rc-input-number@9.0.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-RfcDBDdWFFetouWFXBA+WPEC8LzBXyngr9b+yTLVIygfFu7HiLRGn/s/v9wwno94X7KFvnb28FNynMGj9XJlDQ==} + /rc-input-number@9.1.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-NqJ6i25Xn/AgYfVxynlevIhX3FuKlMwIFpucGG1h98SlK32wQwDK0zhN9VY32McOmuaqzftduNYWWooWz8pXQA==, tarball: https://registry.npmjs.org/rc-input-number/-/rc-input-number-9.1.0.tgz} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 '@rc-component/mini-decimal': 1.1.0 classnames: 2.5.1 - rc-input: 1.4.5(react-dom@18.3.1)(react@18.3.1) - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-input: 1.5.1(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -13407,15 +13471,15 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false - /rc-input@1.4.5(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-AjzykhwnwYTRSwwgCu70CGKBIAv6bP2nqnFptnNTprph/TF1BAs0Qxl91mie/BR6n827WIJB6ZjaRf9iiMwAfw==} + /rc-input@1.5.1(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-+nOzQJDeIfIpNP/SgY45LXSKbuMlp4Yap2y8c+ZpU7XbLmNzUd6+d5/S75sA/52jsVE6S/AkhkkDEAOjIu7i6g==, tarball: https://registry.npmjs.org/rc-input/-/rc-input-1.5.1.tgz} peerDependencies: react: '>=16.0.0' react-dom: '>=16.0.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 classnames: 2.5.1 - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -13436,35 +13500,35 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false - /rc-mentions@2.11.1(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-upb4AK1SRFql7qGnbLEvJqLMugVVIyjmwBJW9L0eLoN9po4JmJZaBzmKA4089fNtsU8k6l/tdZiVafyooeKnLw==} + /rc-mentions@2.14.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-qKR59FMuF8PK4ZqsbWX3UuA5P1M/snzyqV6Yt3y1DCFbCEdqUGIBgQp6vEfLCO6Z0RoRFlzXtCeSlBTcDDpg1A==, tarball: https://registry.npmjs.org/rc-mentions/-/rc-mentions-2.14.0.tgz} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 - '@rc-component/trigger': 2.1.1(react-dom@18.3.1)(react@18.3.1) + '@babel/runtime': 7.24.7 + '@rc-component/trigger': 2.2.0(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 - rc-input: 1.4.5(react-dom@18.3.1)(react@18.3.1) - rc-menu: 9.13.0(react-dom@18.3.1)(react@18.3.1) - rc-textarea: 1.6.3(react-dom@18.3.1)(react@18.3.1) - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-input: 1.5.1(react-dom@18.3.1)(react@18.3.1) + rc-menu: 9.14.1(react-dom@18.3.1)(react@18.3.1) + rc-textarea: 1.7.0(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false - /rc-menu@9.13.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-1l8ooCB3HcYJKCltC/s7OxRKRjgymdl9htrCeGZcXNaMct0RxZRK6OPV3lPhVksIvAGMgzPd54ClpZ5J4b8cZA==} + /rc-menu@9.14.1(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-5wlRb3M8S4yGlWhSoEYJ7ZVRElyScdcpUHxgiLxkeig1tEdyKrnED3B2fhpN0Rrpdp9jyhnmZR/Lwq2fH5VvDQ==, tarball: https://registry.npmjs.org/rc-menu/-/rc-menu-9.14.1.tgz} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 - '@rc-component/trigger': 2.1.1(react-dom@18.3.1)(react@18.3.1) + '@babel/runtime': 7.24.7 + '@rc-component/trigger': 2.2.0(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 - rc-motion: 2.9.0(react-dom@18.3.1)(react@18.3.1) + rc-motion: 2.9.2(react-dom@18.3.1)(react@18.3.1) rc-overflow: 1.3.2(react-dom@18.3.1)(react@18.3.1) - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -13498,6 +13562,19 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false + /rc-motion@2.9.2(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-fUAhHKLDdkAXIDLH0GYwof3raS58dtNUmzLF2MeiR8o6n4thNpSDQhOqQzWE4WfFZDCi9VEN8n7tiB7czREcyw==, tarball: https://registry.npmjs.org/rc-motion/-/rc-motion-2.9.2.tgz} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.24.7 + classnames: 2.5.1 + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: false + /rc-notification@4.6.1(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-NSmFYwrrdY3+un1GvDAJQw62Xi9LNMSsoQyo95tuaYrcad5Bn9gJUL8AREufRxSQAQnr64u3LtP3EUyLYT6bhw==} engines: {node: '>=8.x'} @@ -13513,17 +13590,17 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false - /rc-notification@5.4.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-li19y9RoYJciF3WRFvD+DvWS70jdL8Fr+Gfb/OshK+iY6iTkwzoigmSIp76/kWh5tF5i/i9im12X3nsF85GYdA==} + /rc-notification@5.6.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-TGQW5T7waOxLwgJG7fXcw8l7AQiFOjaZ7ISF5PrU526nunHRNcTMuzKihQHaF4E/h/KfOCDk3Mv8eqzbu2e28w==, tarball: https://registry.npmjs.org/rc-notification/-/rc-notification-5.6.0.tgz} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 classnames: 2.5.1 - rc-motion: 2.9.0(react-dom@18.3.1)(react@18.3.1) - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-motion: 2.9.2(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -13555,14 +13632,14 @@ packages: dev: false /rc-pagination@4.0.4(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-GGrLT4NgG6wgJpT/hHIpL9nELv27A1XbSZzECIuQBQTVSf4xGKxWr6I/jhpRPauYEWEbWVw22ObG6tJQqwJqWQ==} + resolution: {integrity: sha512-GGrLT4NgG6wgJpT/hHIpL9nELv27A1XbSZzECIuQBQTVSf4xGKxWr6I/jhpRPauYEWEbWVw22ObG6tJQqwJqWQ==, tarball: https://registry.npmjs.org/rc-pagination/-/rc-pagination-4.0.4.tgz} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 classnames: 2.5.1 - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -13587,7 +13664,7 @@ packages: dev: false /rc-picker@4.5.0(dayjs@1.11.11)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-suqz9bzuhBQlf7u+bZd1bJLPzhXpk12w6AjQ9BTPTiFwexVZgUKViG1KNLyfFvW6tCUZZK0HmCCX7JAyM+JnCg==} + resolution: {integrity: sha512-suqz9bzuhBQlf7u+bZd1bJLPzhXpk12w6AjQ9BTPTiFwexVZgUKViG1KNLyfFvW6tCUZZK0HmCCX7JAyM+JnCg==, tarball: https://registry.npmjs.org/rc-picker/-/rc-picker-4.5.0.tgz} engines: {node: '>=8.x'} peerDependencies: date-fns: '>= 2.x' @@ -13606,13 +13683,13 @@ packages: moment: optional: true dependencies: - '@babel/runtime': 7.24.5 - '@rc-component/trigger': 2.1.1(react-dom@18.3.1)(react@18.3.1) + '@babel/runtime': 7.24.7 + '@rc-component/trigger': 2.2.0(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 dayjs: 1.11.11 rc-overflow: 1.3.2(react-dom@18.3.1)(react@18.3.1) rc-resize-observer: 1.4.0(react-dom@18.3.1)(react@18.3.1) - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -13631,28 +13708,28 @@ packages: dev: false /rc-progress@4.0.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-oofVMMafOCokIUIBnZLNcOZFsABaUw8PPrf1/y0ZBvKZNpOiu5h4AO9vv11Sw0p4Hb3D0yGWuEattcQGtNJ/aw==} + resolution: {integrity: sha512-oofVMMafOCokIUIBnZLNcOZFsABaUw8PPrf1/y0ZBvKZNpOiu5h4AO9vv11Sw0p4Hb3D0yGWuEattcQGtNJ/aw==, tarball: https://registry.npmjs.org/rc-progress/-/rc-progress-4.0.0.tgz} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 classnames: 2.5.1 - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false - /rc-rate@2.12.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-g092v5iZCdVzbjdn28FzvWebK2IutoVoiTeqoLTj9WM7SjA/gOJIw5/JFZMRyJYYVe1jLAU2UhAfstIpCNRozg==} + /rc-rate@2.13.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-oxvx1Q5k5wD30sjN5tqAyWTvJfLNNJn7Oq3IeS4HxWfAiC4BOXMITNAsw7u/fzdtO4MS8Ki8uRLOzcnEuoQiAw==, tarball: https://registry.npmjs.org/rc-rate/-/rc-rate-2.13.0.tgz} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 classnames: 2.5.1 - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -13700,15 +13777,15 @@ packages: dev: false /rc-segmented@2.3.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-I3FtM5Smua/ESXutFfb8gJ8ZPcvFR+qUgeeGFQHBOvRiRKyAk4aBE5nfqrxXx+h8/vn60DQjOt6i4RNtrbOobg==} + resolution: {integrity: sha512-I3FtM5Smua/ESXutFfb8gJ8ZPcvFR+qUgeeGFQHBOvRiRKyAk4aBE5nfqrxXx+h8/vn60DQjOt6i4RNtrbOobg==, tarball: https://registry.npmjs.org/rc-segmented/-/rc-segmented-2.3.0.tgz} peerDependencies: react: '>=16.0.0' react-dom: '>=16.0.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 classnames: 2.5.1 - rc-motion: 2.9.0(react-dom@18.3.1)(react@18.3.1) - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-motion: 2.9.2(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -13731,19 +13808,19 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false - /rc-select@14.13.3(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-AMEfdE40RhlqahMGN3Q7OKVd1txNph0zIn2Xpvn0ZJiUYafCsqoGv+Rj6v1umgm8ZOEAJ3LefnkznAYNMMzACg==} + /rc-select@14.14.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-Uo2wulrjoPPRLCPd7zlK4ZFVJxlTN//yp1xWP/U+TUOQCyXrT+Duvq/Si5OzVcmQyWAUSbsplc2OwNNhvbOeKQ==, tarball: https://registry.npmjs.org/rc-select/-/rc-select-14.14.0.tgz} engines: {node: '>=8.x'} peerDependencies: react: '*' react-dom: '*' dependencies: - '@babel/runtime': 7.24.5 - '@rc-component/trigger': 2.1.1(react-dom@18.3.1)(react@18.3.1) + '@babel/runtime': 7.24.7 + '@rc-component/trigger': 2.2.0(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 - rc-motion: 2.9.0(react-dom@18.3.1)(react@18.3.1) + rc-motion: 2.9.2(react-dom@18.3.1)(react@18.3.1) rc-overflow: 1.3.2(react-dom@18.3.1)(react@18.3.1) - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) rc-virtual-list: 3.11.5(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -13765,15 +13842,15 @@ packages: dev: false /rc-slider@10.6.2(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-FjkoFjyvUQWcBo1F3RgSglky3ar0+qHLM41PlFVYB4Bj3RD8E/Mv7kqMouLFBU+3aFglMzzctAIWRwajEuueSw==} + resolution: {integrity: sha512-FjkoFjyvUQWcBo1F3RgSglky3ar0+qHLM41PlFVYB4Bj3RD8E/Mv7kqMouLFBU+3aFglMzzctAIWRwajEuueSw==, tarball: https://registry.npmjs.org/rc-slider/-/rc-slider-10.6.2.tgz} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 classnames: 2.5.1 - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -13808,15 +13885,15 @@ packages: dev: false /rc-steps@6.0.1(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g==} + resolution: {integrity: sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g==, tarball: https://registry.npmjs.org/rc-steps/-/rc-steps-6.0.1.tgz} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 classnames: 2.5.1 - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -13844,14 +13921,14 @@ packages: dev: false /rc-switch@4.1.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg==} + resolution: {integrity: sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg==, tarball: https://registry.npmjs.org/rc-switch/-/rc-switch-4.1.0.tgz} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 classnames: 2.5.1 - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -13872,19 +13949,19 @@ packages: shallowequal: 1.1.0 dev: false - /rc-table@7.45.5(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-R5sOfToOk7CalSkebZpqM8lkKWOJR7uXPGEhjjTSoj5egyHBwMxaACoPj2oI+6qLSll9yZrG5K+8HTN57b2Ahg==} + /rc-table@7.45.7(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-wi9LetBL1t1csxyGkMB2p3mCiMt+NDexMlPbXHvQFmBBAsMxrgNSAPwUci2zDLUq9m8QdWc1Nh8suvrpy9mXrg==, tarball: https://registry.npmjs.org/rc-table/-/rc-table-7.45.7.tgz} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 '@rc-component/context': 1.4.0(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 rc-resize-observer: 1.4.0(react-dom@18.3.1)(react@18.3.1) - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) - rc-virtual-list: 3.11.5(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) + rc-virtual-list: 3.14.5(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -13907,20 +13984,20 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false - /rc-tabs@15.0.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-7m541VcEiJSpHZmosMZNMIhemxtIN+f0WDhZNyXQ1/cZ40aaWsknlbj0FH6HryLoKEQvBnCI89hgQuT7MBSOBA==} + /rc-tabs@15.1.1(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-Tc7bJvpEdkWIVCUL7yQrMNBJY3j44NcyWS48jF/UKMXuUlzaXK+Z/pEL5LjGcTadtPvVmNqA40yv7hmr+tCOAw==, tarball: https://registry.npmjs.org/rc-tabs/-/rc-tabs-15.1.1.tgz} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 classnames: 2.5.1 rc-dropdown: 4.2.0(react-dom@18.3.1)(react@18.3.1) - rc-menu: 9.13.0(react-dom@18.3.1)(react@18.3.1) - rc-motion: 2.9.0(react-dom@18.3.1)(react@18.3.1) + rc-menu: 9.14.1(react-dom@18.3.1)(react@18.3.1) + rc-motion: 2.9.2(react-dom@18.3.1)(react@18.3.1) rc-resize-observer: 1.4.0(react-dom@18.3.1)(react@18.3.1) - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -13940,17 +14017,17 @@ packages: shallowequal: 1.1.0 dev: false - /rc-textarea@1.6.3(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-8k7+8Y2GJ/cQLiClFMg8kUXOOdvcFQrnGeSchOvI2ZMIVvX5a3zQpLxoODL0HTrvU63fPkRmMuqaEcOF9dQemA==} + /rc-textarea@1.7.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-UxizYJkWkmxP3zofXgc487QiGyDmhhheDLLjIWbFtDmiru1ls30KpO8odDaPyqNUIy9ugj5djxTEuezIn6t3Jg==, tarball: https://registry.npmjs.org/rc-textarea/-/rc-textarea-1.7.0.tgz} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 classnames: 2.5.1 - rc-input: 1.4.5(react-dom@18.3.1)(react@18.3.1) + rc-input: 1.5.1(react-dom@18.3.1)(react@18.3.1) rc-resize-observer: 1.4.0(react-dom@18.3.1)(react@18.3.1) - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -13980,29 +14057,29 @@ packages: dev: false /rc-tooltip@6.2.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-iS/3iOAvtDh9GIx1ulY7EFUXUtktFccNLsARo3NPgLf0QW9oT0w3dA9cYWlhqAKmD+uriEwdWz1kH0Qs4zk2Aw==} + resolution: {integrity: sha512-iS/3iOAvtDh9GIx1ulY7EFUXUtktFccNLsARo3NPgLf0QW9oT0w3dA9cYWlhqAKmD+uriEwdWz1kH0Qs4zk2Aw==, tarball: https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-6.2.0.tgz} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 - '@rc-component/trigger': 2.1.1(react-dom@18.3.1)(react@18.3.1) + '@babel/runtime': 7.24.7 + '@rc-component/trigger': 2.2.0(react-dom@18.3.1)(react@18.3.1) classnames: 2.5.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false - /rc-tree-select@5.20.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-zFtkHx5/6PnXSi3oSbBSFbIPiJJQdpSU3qz/joLe75URgvxmTHi989O8MtMgpwyZwrCMOJpGi6L1uy+13uzZPw==} + /rc-tree-select@5.21.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-w+9qEu6zh0G3wt9N/hzWNSnqYH1i9mH1Nqxo0caxLRRFXF5yZWYmpCDoDTMdQM1Y4z3Q5yj08qyrPH/d4AtumA==, tarball: https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.21.0.tgz} peerDependencies: react: '*' react-dom: '*' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 classnames: 2.5.1 - rc-select: 14.13.3(react-dom@18.3.1)(react@18.3.1) - rc-tree: 5.8.7(react-dom@18.3.1)(react@18.3.1) - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-select: 14.14.0(react-dom@18.3.1)(react@18.3.1) + rc-tree: 5.8.8(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -14038,17 +14115,17 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false - /rc-tree@5.8.7(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-cpsIQZ4nNYwpj6cqPRt52e/69URuNdgQF9wZ10InmEf8W3+i0A41OVmZWwHuX9gegQSqj+DPmaDkZFKQZ+ZV1w==} + /rc-tree@5.8.8(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-S+mCMWo91m5AJqjz3PdzKilGgbFm7fFJRFiTDOcoRbD7UfMOPnerXwMworiga0O2XIo383UoWuEfeHs1WOltag==, tarball: https://registry.npmjs.org/rc-tree/-/rc-tree-5.8.8.tgz} engines: {node: '>=10.x'} peerDependencies: react: '*' react-dom: '*' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 classnames: 2.5.1 - rc-motion: 2.9.0(react-dom@18.3.1)(react@18.3.1) - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-motion: 2.9.2(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) rc-virtual-list: 3.11.5(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -14099,14 +14176,14 @@ packages: dev: false /rc-upload@4.5.2(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-QO3ne77DwnAPKFn0bA5qJM81QBjQi0e0NHdkvpFyY73Bea2NfITiotqJqVjHgeYPOJu5lLVR32TNGP084aSoXA==} + resolution: {integrity: sha512-QO3ne77DwnAPKFn0bA5qJM81QBjQi0e0NHdkvpFyY73Bea2NfITiotqJqVjHgeYPOJu5lLVR32TNGP084aSoXA==, tarball: https://registry.npmjs.org/rc-upload/-/rc-upload-4.5.2.tgz} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 classnames: 2.5.1 - rc-util: 5.39.3(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -14133,6 +14210,18 @@ packages: react-is: 18.3.1 dev: false + /rc-util@5.43.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-AzC7KKOXFqAdIBqdGWepL9Xn7cm3vnAmjlHqUnoQaTMZYhM4VlXGLkkHHxj/BZ7Td0+SOPKB4RGPboBVKT9htw==, tarball: https://registry.npmjs.org/rc-util/-/rc-util-5.43.0.tgz} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.24.7 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-is: 18.3.1 + dev: false + /rc-virtual-list@3.11.5(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-iZRW99m5jAxtwKNPLwUrPryurcnKpXBdTyhuBp6ythf7kg/otKO5cCiIvL55GQwU0QGSlouQS0tnkciRMJUwRQ==} engines: {node: '>=8.x'} @@ -14148,6 +14237,21 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false + /rc-virtual-list@3.14.5(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-ZMOnkCLv2wUN8Jz7yI4XiSLa9THlYvf00LuMhb1JlsQCewuU7ydPuHw1rGVPhe9VZYl/5UqODtNd7QKJ2DMGfg==, tarball: https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.14.5.tgz} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.24.7 + classnames: 2.5.1 + rc-resize-observer: 1.4.0(react-dom@18.3.1)(react@18.3.1) + rc-util: 5.43.0(react-dom@18.3.1)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: false + /react-dom@18.1.0(react@18.1.0): resolution: {integrity: sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==} peerDependencies: @@ -14271,7 +14375,7 @@ packages: react: ^0.14.0 || ^15.0.0-0 || ^16.0.0-0 redux: ^2.0.0 || ^3.0.0 || ^4.0.0-0 dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.7 hoist-non-react-statics: 3.3.2 invariant: 2.2.4 loose-envify: 1.4.0 @@ -15082,7 +15186,7 @@ packages: dev: false /scroll-into-view-if-needed@3.1.0: - resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} + resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==, tarball: https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz} dependencies: compute-scroll-into-view: 3.1.0 dev: false @@ -16165,7 +16269,7 @@ packages: is-number: 7.0.0 /toggle-selection@1.0.6: - resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} + resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==, tarball: https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz} dev: false /toidentifier@1.0.1: @@ -16356,12 +16460,12 @@ packages: dev: false optional: true - /umi-presets-pro@2.0.3(@babel/core@7.24.5)(@types/react-dom@18.3.0)(@types/react@18.3.1)(antd@5.17.0)(dva@2.5.0-beta.2)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1)(umi@4.2.1): + /umi-presets-pro@2.0.3(@babel/core@7.24.5)(@types/react-dom@18.3.0)(@types/react@18.3.1)(antd@5.18.3)(dva@2.5.0-beta.2)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1)(umi@4.2.1): resolution: {integrity: sha512-sHKynw/fi7UeUftzTRPRsrV5GHV4BWvWYhyvwkg8s+shmt0ROPW/52y4gxBziEvetxl8yWMKUCWk50OUDOcrww==, tarball: https://registry.npmjs.org/umi-presets-pro/-/umi-presets-pro-2.0.3.tgz} dependencies: - '@alita/plugins': 3.5.0(@babel/core@7.24.5)(@types/react-dom@18.3.0)(@types/react@18.3.1)(antd@5.17.0)(dva@2.5.0-beta.2)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) + '@alita/plugins': 3.5.0(@babel/core@7.24.5)(@types/react-dom@18.3.0)(@types/react@18.3.1)(antd@5.18.3)(dva@2.5.0-beta.2)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) '@umijs/max-plugin-openapi': 2.0.3 - '@umijs/plugins': 4.2.1(@babel/core@7.24.5)(@types/react-dom@18.3.0)(@types/react@18.3.1)(antd@5.17.0)(dva@2.5.0-beta.2)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) + '@umijs/plugins': 4.2.1(@babel/core@7.24.5)(@types/react-dom@18.3.0)(@types/react@18.3.1)(antd@5.18.3)(dva@2.5.0-beta.2)(rc-field-form@1.44.0)(react-dom@18.3.1)(react@18.3.1) '@umijs/request-record': 1.1.4(umi@4.2.1) swagger-ui-dist: 4.19.1 transitivePeerDependencies: diff --git a/src/app.tsx b/src/app.tsx index 50642c5f..72853696 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -9,11 +9,14 @@ let currentUserInfo: any = {}; // 全局初始化数据配置,用于 Layout 用户信息和权限初始化 // 更多信息见文档:https://umijs.org/docs/api/runtime-config#getinitialstate -export async function getInitialState() { +export async function getInitialState(): Promise<{ + fetchUserInfo: () => Promise; + currentUser?: Global.UserInfo; +}> { // 如果不是登录页面,执行 const { location } = history; - const fetchUserInfo = async () => { + const fetchUserInfo = async (): Promise => { try { const data = await queryCurrentUserState({ skipErrorHandler: true @@ -22,7 +25,7 @@ export async function getInitialState() { } catch (error) { history.push(loginPath); } - return undefined; + return {} as Global.UserInfo; }; if (![loginPath].includes(location.pathname)) { @@ -40,23 +43,6 @@ export async function getInitialState() { }; } -// export const patchClientRoutes = async (params: { routes: any[] }) => { -// const { routes } = params; -// console.log('routes============999', routes); -// const data = await queryCurrentUserState({ -// skipErrorHandler: true -// }); - -// routes.unshift({ -// path: '/', -// element: data?.is_admin ? ( -// -// ) : ( -// -// ) -// }); -// }; - export const request: RequestConfig = { baseURL: ' /v1', ...requestConfig diff --git a/src/assets/.gitkeep b/src/assets/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/src/assets/images/bg-6.png b/src/assets/images/bg-6.png new file mode 100644 index 0000000000000000000000000000000000000000..d76880ef4203947b947c377ace66bd882d9034d8 GIT binary patch literal 10693 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 literal 0 HcmV?d00001 diff --git a/src/assets/styles/common.less b/src/assets/styles/common.less index cd5b0e64..95f06e8b 100644 --- a/src/assets/styles/common.less +++ b/src/assets/styles/common.less @@ -14,6 +14,18 @@ margin-left: 8px; } +.m-r-10 { + margin-right: 10px; +} + +.m-r-5 { + margin-right: 5px; +} + +.m-r-8 { + margin-right: 8px; +} + .flex { display: flex; } @@ -35,3 +47,8 @@ .opct-8 { opacity: 0.8; } + +.flex-column { + display: flex; + flex-direction: column; +} diff --git a/src/components/logs-viewer/index.less b/src/components/logs-viewer/index.less new file mode 100644 index 00000000..f631b709 --- /dev/null +++ b/src/components/logs-viewer/index.less @@ -0,0 +1,22 @@ +.logs-viewer-wrap-w2 { + .wrap { + padding: 5px 0 5px 10px; + overflow: auto; + background-color: var(--color-logs-bg); + border-radius: var(--border-radius-small); + + .content { + word-wrap: break-word; + + &.line-break { + word-wrap: break-word; + } + + color: var(--color-logs-text); + font-size: var(--font-size-small); + line-height: 22px; + white-space: pre-wrap; + background-color: var(--color-logs-bg); + } + } +} diff --git a/src/components/logs-viewer/index.tsx b/src/components/logs-viewer/index.tsx new file mode 100644 index 00000000..f69a7dee --- /dev/null +++ b/src/components/logs-viewer/index.tsx @@ -0,0 +1,63 @@ +import useSetChunkRequest from '@/hooks/use-chunk-request'; +import Convert from 'ansi-to-html'; +import classNames from 'classnames'; +import hasAnsi from 'has-ansi'; +import { useEffect, useRef, useState } from 'react'; +import './index.less'; + +interface LogsViewerProps { + height: number; + content: string; + url: string; + params?: object; +} +const LogsViewer: React.FC = (props) => { + const { height, content, url } = props; + const [nowrap, setNowrap] = useState(false); + const [logsContent, setLogsContent] = useState(content); + const { setChunkRequest } = useSetChunkRequest(); + const chunkRequedtRef = useRef(null); + + const convert = new Convert(); + + const updateContent = (newVal: string) => { + if (hasAnsi(newVal)) { + const htmlStr = `${convert.toHtml(newVal)}`; + setLogsContent(htmlStr); + } else { + setLogsContent(newVal); + } + }; + + const createChunkConnection = async () => { + chunkRequedtRef.current?.current?.cancel?.(); + chunkRequedtRef.current = setChunkRequest({ + url, + params: { + ...props.params, + watch: true + }, + contentType: 'text', + handler: updateContent + }); + }; + + useEffect(() => { + createChunkConnection(); + return () => { + chunkRequedtRef.current?.current?.cancel?.(); + }; + }, [url, props.params]); + + return ( +
+
+
+
{logsContent}
+
+
+
+ ); +}; + +export default LogsViewer; diff --git a/src/components/progress-bar/index.tsx b/src/components/progress-bar/index.tsx index 6aaca303..4b309b27 100644 --- a/src/components/progress-bar/index.tsx +++ b/src/components/progress-bar/index.tsx @@ -1,9 +1,14 @@ -import { Progress } from 'antd'; +import { Progress, Tooltip } from 'antd'; import { memo, useMemo } from 'react'; const RenderProgress = memo( - (props: { percent: number; steps?: number; download?: boolean }) => { - const { percent, steps = 5, download } = props; + (props: { + percent: number; + steps?: number; + download?: boolean; + label?: React.ReactNode; + }) => { + const { percent, steps = 5, download, label } = props; const strokeColor = useMemo(() => { if (download) { @@ -19,16 +24,48 @@ const RenderProgress = memo( }, [percent]); return ( - { - return ( - {percent}% - ); - }} - percent={percent} - strokeColor={strokeColor} - /> + <> + {label ? ( + + { + return ( + + {percent}% + + ); + }} + percent={percent} + strokeColor={strokeColor} + > + + ) : ( + { + return ( + + {percent}% + + ); + }} + percent={percent} + strokeColor={strokeColor} + > + )} + ); } ); diff --git a/src/components/seal-form/components/wrapper.less b/src/components/seal-form/components/wrapper.less index d100388d..25791a4d 100644 --- a/src/components/seal-form/components/wrapper.less +++ b/src/components/seal-form/components/wrapper.less @@ -2,6 +2,7 @@ @wrapheight: 54px; @inputheight: 32px; @borderRadius: 8px; + @input-inner-padding: 12px; position: relative; display: flex; @@ -115,7 +116,7 @@ :global(.ant-select-selector) { border: none !important; padding-block: 5px; - padding-inline: 12px; + padding-inline: @input-inner-padding !important; box-shadow: none !important; } @@ -167,7 +168,7 @@ border: none; box-shadow: none; padding-block: 5px; - padding-inline: 12px; + padding-inline: @input-inner-padding; height: @inputheight !important; &.seal-textarea { @@ -182,7 +183,7 @@ :global(input.ant-input-number-input) { height: @inputheight !important; padding-block: 5px; - padding-inline: 12px; + padding-inline: @input-inner-padding; } :global(.ant-input-group) { diff --git a/src/components/seal-table/styles/index.less b/src/components/seal-table/styles/index.less index c6c05b5f..4e627055 100644 --- a/src/components/seal-table/styles/index.less +++ b/src/components/seal-table/styles/index.less @@ -23,6 +23,7 @@ margin-bottom: 20px; border-radius: var(--ant-table-header-border-radius); overflow: hidden; + box-shadow: var(--box-shadow-base); } .expanded-row { diff --git a/src/config/global.d.ts b/src/config/global.d.ts index dbd0ee81..069f2052 100644 --- a/src/config/global.d.ts +++ b/src/config/global.d.ts @@ -18,6 +18,7 @@ declare namespace Global { username: string; is_admin: boolean; full_name: string; + require_password_change: boolean; id: number; } } diff --git a/src/global.less b/src/global.less index 958766e7..ca0c5c94 100644 --- a/src/global.less +++ b/src/global.less @@ -7,6 +7,8 @@ html { // --color-fill-1: #fff; --color-fill-2: #fff; --color-fill-3: #f3f6fa; + --color-logs-bg: #1e1e1e; + --color-logs-text: #d4d4d4; --menu-border-radius-base: 8px; --border-radius-base: 16px; --border-radius-middle: 20px; diff --git a/src/hooks/use-chunk-request.ts b/src/hooks/use-chunk-request.ts index 91a66fa0..fa1d9cf7 100644 --- a/src/hooks/use-chunk-request.ts +++ b/src/hooks/use-chunk-request.ts @@ -199,7 +199,7 @@ const useSetChunkRequest = () => { retryCount.current = totalCount; clearTimeout(timer.current); axiosChunkRequest(requestConfig.current); - return axiosToken.current; + return axiosToken; }; useEffect(() => { diff --git a/src/layouts/index.tsx b/src/layouts/index.tsx index edb88887..e31f200e 100644 --- a/src/layouts/index.tsx +++ b/src/layouts/index.tsx @@ -87,7 +87,6 @@ export default (props: any) => { loading: false, setInitialState: null }; - console.log('initialInfo==========', initialInfo); const { initialState, loading, setInitialState } = initialInfo; const userConfig = { @@ -97,7 +96,6 @@ export default (props: any) => { }; const formatMessage = (args) => { - console.log('formatMessage', args); return intl.formatMessage({ id: args.id }); }; diff --git a/src/locales/en-US/models.ts b/src/locales/en-US/models.ts index a82e528a..7a6363e6 100644 --- a/src/locales/en-US/models.ts +++ b/src/locales/en-US/models.ts @@ -11,5 +11,6 @@ export default { 'models.form.replicas': 'Replicas', 'models.form.s3address': 'S3 Address', 'models.openinplayground': 'Open in Playground', - 'models.instances': 'instances' + 'models.instances': 'instances', + 'model.form.ollama.model': 'Ollama Model' }; diff --git a/src/locales/zh-CN/models.ts b/src/locales/zh-CN/models.ts index 16d57832..c6beec9d 100644 --- a/src/locales/zh-CN/models.ts +++ b/src/locales/zh-CN/models.ts @@ -11,5 +11,6 @@ export default { 'models.form.replicas': '副本数', 'models.form.s3address': 'S3 地址', 'models.openinplayground': '在 Playground 中打开', - 'models.instances': '实例' + 'models.instances': '实例', + 'model.form.ollama.model': 'Ollama 模型' }; diff --git a/src/pages/dashboard/components/active-table.tsx b/src/pages/dashboard/components/active-table.tsx index ea065d84..d815eecd 100644 --- a/src/pages/dashboard/components/active-table.tsx +++ b/src/pages/dashboard/components/active-table.tsx @@ -16,7 +16,7 @@ const modelColumns = [ dataIndex: 'gpu_utilization', key: 'gpu_utilization', render: (text: any, record: any) => ( - + ) }, { @@ -24,7 +24,7 @@ const modelColumns = [ dataIndex: 'gpu_memory_utilization', key: 'gpu_memory_utilization', render: (text: any, record: any) => ( - + ) }, { diff --git a/src/pages/llmodels/components/add-modal.tsx b/src/pages/llmodels/components/add-modal.tsx index 885c62ef..4c3cc2e6 100644 --- a/src/pages/llmodels/components/add-modal.tsx +++ b/src/pages/llmodels/components/add-modal.tsx @@ -223,7 +223,7 @@ const AddModal: React.FC = (props) => { > diff --git a/src/pages/llmodels/components/view-logs-modal.tsx b/src/pages/llmodels/components/view-logs-modal.tsx index b8801073..18b59dc5 100644 --- a/src/pages/llmodels/components/view-logs-modal.tsx +++ b/src/pages/llmodels/components/view-logs-modal.tsx @@ -1,15 +1,17 @@ +import LogsViewer from '@/components/logs-viewer'; import { Modal } from 'antd'; import React from 'react'; type ViewModalProps = { - content?: string; + content: string; title: string; open: boolean; + url: string; onCancel: () => void; }; const ViewCodeModal: React.FC = (props) => { - const { title, open, onCancel, content } = props || {}; + const { title, open, url, onCancel, content = '' } = props || {}; if (!open) { return null; } @@ -27,7 +29,14 @@ const ViewCodeModal: React.FC = (props) => { style={{ top: '80px' }} footer={null} > -
{content}
+ ); }; diff --git a/src/pages/llmodels/config/types.ts b/src/pages/llmodels/config/types.ts index 6f01c90b..1174943e 100644 --- a/src/pages/llmodels/config/types.ts +++ b/src/pages/llmodels/config/types.ts @@ -28,6 +28,7 @@ export interface ModelInstanceListItem { s3_address: string; worker_id: number; worker_ip: string; + gpu_index: number; pid: number; port: number; state: string; diff --git a/src/pages/llmodels/index.tsx b/src/pages/llmodels/index.tsx index ff0b0f67..8fced94b 100644 --- a/src/pages/llmodels/index.tsx +++ b/src/pages/llmodels/index.tsx @@ -23,27 +23,26 @@ import { import { PageContainer } from '@ant-design/pro-components'; import { Access, useAccess, useIntl, useNavigate } from '@umijs/max'; import { - App, Button, Col, Input, Modal, - Progress, Row, Space, + Tag, Tooltip, message } from 'antd'; import dayjs from 'dayjs'; import _ from 'lodash'; -import { useEffect, useRef, useState } from 'react'; +import { useCallback, useEffect, useRef, useState } from 'react'; import { MODELS_API, + MODEL_INSTANCE_API, createModel, createModelInstance, deleteModel, deleteModelInstance, - queryModelInstanceLogs, queryModelInstancesList, queryModelsList, updateModel @@ -54,7 +53,7 @@ import { status } from './config'; import { FormData, ListItem, ModelInstanceListItem } from './config/types'; const Models: React.FC = () => { - const { modal } = App.useApp(); + // const { modal } = App.useApp(); const access = useAccess(); const intl = useIntl(); const navigate = useNavigate(); @@ -75,6 +74,9 @@ const Models: React.FC = () => { const [currentData, setCurrentData] = useState( undefined ); + const [currentInstanceUrl, setCurrentInstanceUrl] = useState(''); + + const chunkRequedtRef = useRef(); const timer = useRef(); let axiosToken = createAxiosToken(); const [queryParams, setQueryParams] = useState({ @@ -152,8 +154,9 @@ const Models: React.FC = () => { }; const createModelsChunkRequest = () => { + chunkRequedtRef.current?.current?.cancel?.(); try { - setChunkRequest({ + chunkRequedtRef.current = setChunkRequest({ url: MODELS_API, params: { ..._.pickBy( @@ -242,7 +245,6 @@ const Models: React.FC = () => { }; const handleOpenPlayGround = (row: any) => { - console.log('handleOpenPlayGround', row); navigate(`/playground?model=${row.name}`); }; @@ -260,12 +262,34 @@ const Models: React.FC = () => { } catch (error) {} }; + const handleStreamData = (data: any) => { + setLogContent(data); + }; + const handleViewLogs = async (row: any) => { try { - const data = await queryModelInstanceLogs(row.id); - setLogContent(data); + // const result = await fetchChunkedData({ + // url: `/v1${MODEL_INSTANCE_API}/${row.id}/logs`, + // params: { + // follow: false + // }, + // method: 'GET' + // }); + // if (!result) { + // setLogContent(''); + // } else { + // const { reader, decoder } = result; + // await readStreamData(reader, decoder, (chunk: any) => { + // handleStreamData(chunk); + // }); + // } + + setCurrentInstanceUrl(`${MODEL_INSTANCE_API}/${row.id}/logs`); + setOpenLogModal(true); - } catch (error) {} + } catch (error) { + console.log('error:', error); + } }; const handleDeleteInstace = (row: any) => { Modal.confirm({ @@ -293,7 +317,7 @@ const Models: React.FC = () => { setHoverChildIndex(-1); }; - const getModelInstances = async (row: any) => { + const getModelInstances = useCallback(async (row: any) => { const params = { id: row.id, page: 1, @@ -301,7 +325,7 @@ const Models: React.FC = () => { }; const data = await queryModelInstancesList(params); return data.items || []; - }; + }, []); const handleEdit = (row: ListItem) => { setCurrentData(row); @@ -315,11 +339,11 @@ const Models: React.FC = () => { }, [queryParams]); useEffect(() => { - fetchDataByPolling(); + createModelsChunkRequest(); return () => { - clearInterval(timer.current); + chunkRequedtRef.current?.current?.cancel?.(); }; - }, []); + }, [queryParams]); const renderChildren = (list: any) => { return ( @@ -337,20 +361,19 @@ const Models: React.FC = () => { > - + + {item.gpu_index} {item.worker_ip}:{item.port} - + {item.huggingface_filename} - - {dayjs(item.updated_at).format('YYYY-MM-DD HH:mm:ss')} - + {item.state && ( { > )} - + + {dayjs(item.updated_at).format('YYYY-MM-DD HH:mm:ss')} + + {hoverChildIndex === `${item.id}-${index}` && ( { @@ -455,7 +482,7 @@ const Models: React.FC = () => { rowKey="id" expandable={true} onChange={handleTableChange} - pollingChildren={true} + pollingChildren={false} loadChildren={getModelInstances} renderChildren={renderChildren} pagination={{ @@ -470,26 +497,32 @@ const Models: React.FC = () => { > { return ( <> {text} - {record.progress && ( - - )} ); }} /> + + { }} /> { @@ -558,8 +591,10 @@ const Models: React.FC = () => { onOk={handleModalOk} > diff --git a/src/pages/login/components/login-form.tsx b/src/pages/login/components/login-form.tsx new file mode 100644 index 00000000..a5f2e35f --- /dev/null +++ b/src/pages/login/components/login-form.tsx @@ -0,0 +1,142 @@ +import LogoIcon from '@/assets/images/logo.png'; +import SealInput from '@/components/seal-form/seal-input'; +import { GlobalOutlined, LockOutlined, UserOutlined } from '@ant-design/icons'; +import { SelectLang, history, useIntl, useModel } from '@umijs/max'; +import { Button, Checkbox, Form } from 'antd'; +import { useEffect } from 'react'; +import { flushSync } from 'react-dom'; +import { login } from '../apis'; + +const renderLogo = () => { + return ( +
+ logo + SEAL +
+ ); +}; +const LoginForm: React.FC<{ + setCurrentUser: (userInfo: any) => void; +}> = ({ setCurrentUser }) => { + const { initialState, setInitialState } = useModel('@@initialState'); + const { globalState, setGlobalState } = useModel('global'); + const intl = useIntl(); + const [form] = Form.useForm(); + + useEffect(() => { + console.log('initstate===', { + initialState, + globalState + }); + }, []); + const gotoDefaultPage = (userInfo: any) => { + const pathname = userInfo?.is_admin ? '/dashboard' : '/playground'; + history.push(pathname); + }; + const fetchUserInfo = async () => { + const userInfo = await initialState?.fetchUserInfo?.(); + + if (userInfo) { + flushSync(() => { + setInitialState((s: any) => ({ + ...s, + currentUser: userInfo + })); + }); + } + return userInfo; + }; + + const handleLogin = async (values: any) => { + console.log('values', values, form); + try { + await login({ + username: values.username, + password: values.password + }); + const userInfo = await fetchUserInfo(); + setGlobalState({ + userInfo + }); + // if (userInfo?.require_password_change) { + // setCurrentUser(userInfo); + // } else { + // setCurrentUser(null); + // gotoDefaultPage(userInfo); + // } + gotoDefaultPage(userInfo); + } catch (error) { + console.log('error====', error); + } + }; + + return ( +
+
+ } reload={false} /> +
+
+
{renderLogo()}
+ + } + /> + + + + } + label={intl.formatMessage({ id: 'common.form.password' })} + /> + + +
+ + {intl.formatMessage({ id: 'common.login.rember' })} + +
+
+ +
+
+ ); +}; + +export default LoginForm; diff --git a/src/pages/login/components/password-form.tsx b/src/pages/login/components/password-form.tsx new file mode 100644 index 00000000..e6651c47 --- /dev/null +++ b/src/pages/login/components/password-form.tsx @@ -0,0 +1,93 @@ +import SealInput from '@/components/seal-form/seal-input'; +import { GlobalOutlined, LockOutlined } from '@ant-design/icons'; +import { SelectLang, history, useIntl, useModel } from '@umijs/max'; +import { Button, Form, message } from 'antd'; +import { useEffect } from 'react'; +import { updatePassword } from '../apis'; + +const PasswordForm: React.FC = () => { + const { globalState, setGlobalState } = useModel('global'); + const [currentUser, setCurrentUser] = useState(null); + const intl = useIntl(); + const [form] = Form.useForm(); + + useEffect(() => { + console.log('initstate===', { + globalState + }); + }, []); + const gotoDefaultPage = (userInfo: any) => { + const pathname = userInfo?.is_admin ? '/dashboard' : '/playground'; + history.push(pathname); + }; + + const handleSubmit = async (values: any) => { + console.log('values', values, form); + try { + await updatePassword({ + new_password: values.new_password, + comfirm_password: values.comfirm_password + }); + gotoDefaultPage(currentUser); + message.success(intl.formatMessage({ id: 'common.message.success' })); + } catch (error) { + console.log('error====', error); + } + }; + + return ( +
+
+ } reload={false} /> +
+
+
修改密码
+ + + } + label={intl.formatMessage({ id: 'common.form.password' })} + /> + + + } + label={intl.formatMessage({ id: 'common.form.password' })} + /> + + + +
+
+ ); +}; + +export default PasswordForm; diff --git a/src/pages/login/index.tsx b/src/pages/login/index.tsx index 9b150c8f..10c54667 100644 --- a/src/pages/login/index.tsx +++ b/src/pages/login/index.tsx @@ -1,122 +1,13 @@ -import LogoIcon from '@/assets/images/logo.png'; -import SealInput from '@/components/seal-form/seal-input'; -import { GlobalOutlined, LockOutlined, UserOutlined } from '@ant-design/icons'; -import { SelectLang, history, useIntl, useModel } from '@umijs/max'; -import { Button, Checkbox, Form } from 'antd'; -import { flushSync } from 'react-dom'; -import { login } from './apis'; +import { useState } from 'react'; +import LoginForm from './components/login-form'; -const renderLogo = () => { - return ( -
- logo - SEAL -
- ); -}; const Login = () => { - const { initialState, setInitialState } = useModel('@@initialState'); - const intl = useIntl(); - const [form] = Form.useForm(); - - const gotoDefaultPage = (userInfo: any) => { - const pathname = userInfo?.is_admin ? '/dashboard' : '/playground'; - history.push(pathname); - }; - const fetchUserInfo = async () => { - const userInfo = await initialState?.fetchUserInfo?.(); - - if (userInfo) { - flushSync(() => { - setInitialState((s: any) => ({ - ...s, - currentUser: userInfo - })); - }); - } - return userInfo; - }; - - const handleLogin = async (values: any) => { - console.log('values', values, form); - try { - await login({ - username: values.username, - password: values.password - }); - const userInfo = await fetchUserInfo(); - - gotoDefaultPage(userInfo); - } catch (error) { - console.log('error====', error); - } - }; + const [currentUser, setCurrentUser] = useState(null); return (
-
- } reload={false} /> -
-
-
{renderLogo()}
- - } - /> - - - - } - label={intl.formatMessage({ id: 'common.form.password' })} - /> - - -
- - {intl.formatMessage({ id: 'common.login.rember' })} - -
-
- -
+ + {/* */}
); }; diff --git a/src/pages/playground/apis/index.ts b/src/pages/playground/apis/index.ts index 24ded23f..8dc7eed7 100644 --- a/src/pages/playground/apis/index.ts +++ b/src/pages/playground/apis/index.ts @@ -14,43 +14,3 @@ export async function execChatCompletions(params: any) { export const queryModelsList = async () => { return request(`${OPENAI_MODELS}`); }; - -export const fetchChatStream = async (params: any) => { - const response = await fetch(`${CHAT_API}`, { - method: 'POST', - body: JSON.stringify(params), - headers: { - 'Content-Type': 'application/json' - } - }); - if (!response.ok) { - throw new Error('Network response was not ok'); - return null; - } - const reader = response?.body?.getReader(); - const decoder = new TextDecoder('utf-8'); - return { - reader, - decoder - }; -}; - -export const receiveChatStream = async ( - reader: any, - decoder: TextDecoder, - callback: (data: any) => void -) => { - const { done, value } = await reader.read(); - - if (done) { - return; - } - - let chunk = decoder.decode(value, { stream: true }); - if (chunk.startsWith('data:')) { - chunk = chunk.substring('data:'.length); - } - const item = JSON.parse(chunk?.trim()); - callback(item); - await receiveChatStream(reader, decoder, callback); -}; diff --git a/src/pages/playground/components/ground-left.tsx b/src/pages/playground/components/ground-left.tsx index 0d0d3761..5990daa9 100644 --- a/src/pages/playground/components/ground-left.tsx +++ b/src/pages/playground/components/ground-left.tsx @@ -1,5 +1,6 @@ import TransitionWrapper from '@/components/transition'; import HotKeys from '@/config/hotkeys'; +import { fetchChunkedData, readStreamData } from '@/utils/fetch-chunk-data'; import { EyeInvisibleOutlined } from '@ant-design/icons'; import { PageContainer } from '@ant-design/pro-components'; import { useIntl } from '@umijs/max'; @@ -7,7 +8,7 @@ import { Button, Input, Spin } from 'antd'; import _ from 'lodash'; import { useRef, useState } from 'react'; import { useHotkeys } from 'react-hotkeys-hook'; -import { fetchChatStream, receiveChatStream } from '../apis'; +import { CHAT_API } from '../apis'; import { Roles } from '../config'; import '../style/ground-left.less'; import '../style/system-message-wrap.less'; @@ -65,7 +66,12 @@ const MessageList: React.FC = (props) => { setActiveIndex(messageList.length - 1); }; - const joinMessage = (chunk: any) => { + const joinMessage = (str: any) => { + let data = str; + if (data.startsWith('data:')) { + data = data.substring('data:'.length); + } + const chunk = JSON.parse(data?.trim()); if (_.get(chunk, 'choices.0.finish_reason')) { setTokenResult({ ...chunk?.usage @@ -104,14 +110,17 @@ const MessageList: React.FC = (props) => { ...parameters, stream: true }; - const result = await fetchChatStream(chatParams); + const result = await fetchChunkedData({ + data: chatParams, + url: CHAT_API + }); if (!result) { return; } const { reader, decoder } = result; - await receiveChatStream(reader, decoder, (data: any) => { + await readStreamData(reader, decoder, (data: any) => { joinMessage(data); }); setLoading(false); @@ -218,12 +227,7 @@ const MessageList: React.FC = (props) => { })} {loading && ( - {}} - updateMessage={() => {}} - /> +
)} diff --git a/src/pages/resources/apis/index.ts b/src/pages/resources/apis/index.ts index 124a3fb7..3f06fde9 100644 --- a/src/pages/resources/apis/index.ts +++ b/src/pages/resources/apis/index.ts @@ -1,7 +1,8 @@ import { request } from '@umijs/max'; -import { ListItem } from '../config/types'; +import { GPUDeviceItem, ListItem } from '../config/types'; export const WORKERS_API = '/workers'; +export const GPU_DEVICES_API = '/gpu-devices'; export async function queryWorkersList( params: Global.Pagination & { query?: string } @@ -11,3 +12,18 @@ export async function queryWorkersList( params }); } + +export async function queryGpuDevicesList( + params: Global.Pagination & { query?: string } +) { + return request>(`${GPU_DEVICES_API}`, { + methos: 'GET', + params + }); +} + +export async function queryGPUDeviceItem(id: string) { + return request(`${GPU_DEVICES_API}/${id}`, { + methos: 'GET' + }); +} diff --git a/src/pages/resources/components/gpus.tsx b/src/pages/resources/components/gpus.tsx index 9b92af17..0a28dba4 100644 --- a/src/pages/resources/components/gpus.tsx +++ b/src/pages/resources/components/gpus.tsx @@ -1,15 +1,18 @@ import PageTools from '@/components/page-tools'; import ProgressBar from '@/components/progress-bar'; -import StatusTag from '@/components/status-tag'; import useTableRowSelection from '@/hooks/use-table-row-selection'; import useTableSort from '@/hooks/use-table-sort'; +import { convertFileSize } from '@/utils'; import { SyncOutlined } from '@ant-design/icons'; +import { useIntl } from '@umijs/max'; import { Button, Input, Space, Table } from 'antd'; -import { useState } from 'react'; -import { Gpu } from '../config/types'; +import _ from 'lodash'; +import { useEffect, useState } from 'react'; +import { queryGpuDevicesList } from '../apis'; +import { GPUDeviceItem } from '../config/types'; const { Column } = Table; -const dataSource: Gpu[] = [ +const dataSource: GPUDeviceItem[] = [ { id: 1, name: 'bj-web-service-1', @@ -101,23 +104,32 @@ const dataSource: Gpu[] = [ ]; const Models: React.FC = () => { + const intl = useIntl(); const rowSelection = useTableRowSelection(); const { sortOrder, setSortOrder } = useTableSort({ defaultSortOrder: 'descend' }); + const [dataSource, setDataSource] = useState([]); const [total, setTotal] = useState(10); const [loading, setLoading] = useState(false); const [queryParams, setQueryParams] = useState({ - current: 1, - pageSize: 10, - name: '' + page: 1, + perPage: 10, + query: '' }); const handleShowSizeChange = (current: number, size: number) => { - console.log(current, size); + setQueryParams({ + ...queryParams, + perPage: size + }); }; - const handlePageChange = (page: number, pageSize: number | undefined) => { - console.log(page, pageSize); + const handlePageChange = (page: number, perPage: number | undefined) => { + console.log(page, perPage); + setQueryParams({ + ...queryParams, + page: page + }); }; const handleTableChange = (pagination: any, filters: any, sorter: any) => { @@ -125,7 +137,20 @@ const Models: React.FC = () => { }; const fetchData = async () => { - console.log('fetchData'); + setLoading(true); + try { + const params = { + ..._.pickBy(queryParams, (val: any) => !!val) + }; + const res = await queryGpuDevicesList(params); + + setDataSource(res.items); + setTotal(res.pagination.total); + } catch (error) { + console.log('error', error); + } finally { + setLoading(false); + } }; const handleSearch = (e: any) => { fetchData(); @@ -134,10 +159,14 @@ const Models: React.FC = () => { const handleNameChange = (e: any) => { setQueryParams({ ...queryParams, - name: e.target.value + query: e.target.value }); }; + useEffect(() => { + fetchData(); + }, [queryParams]); + return ( <> { left={ @@ -166,46 +197,73 @@ const Models: React.FC = () => { onChange={handleTableChange} pagination={{ showSizeChanger: true, - pageSize: 10, - current: 2, + pageSize: queryParams.perPage, + current: queryParams.page, total: total, hideOnSinglePage: true, onShowSizeChange: handleShowSizeChange, onChange: handlePageChange }} > - + { - return ( - - ); + title="Index" + dataIndex="index" + key="index" + render={(text, record: GPUDeviceItem) => { + return {record.index}; }} /> - + + { + return {_.round(text, 1)}; + }} + /> + { + return {record.core?.total}; + }} + /> + { + return ( + + ); + }} /> - - { - return ; + render={(text, record: GPUDeviceItem) => { + return ( + + + Total: {convertFileSize(record.memory?.total, 0)} + + Used: {convertFileSize(record.memory?.used, 0)} + + } + > + ); }} /> diff --git a/src/pages/resources/components/test.tsx b/src/pages/resources/components/test.tsx deleted file mode 100644 index cca4b650..00000000 --- a/src/pages/resources/components/test.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import SealTable from '@/components/seal-table'; -import SealColumn from '@/components/seal-table/components/seal-column'; -import useTableRowSelection from '@/hooks/use-table-row-selection'; - -const Table = () => { - const dataSource = [{ name: 'test' }, { name: 'test2' }]; - const rowSelection = useTableRowSelection(); - return ( - - - - - ); -}; - -export default Table; diff --git a/src/pages/resources/components/workers.tsx b/src/pages/resources/components/workers.tsx index 2c5e9ea6..c0d636e7 100644 --- a/src/pages/resources/components/workers.tsx +++ b/src/pages/resources/components/workers.tsx @@ -3,13 +3,14 @@ import ProgressBar from '@/components/progress-bar'; import StatusTag from '@/components/status-tag'; import useTableRowSelection from '@/hooks/use-table-row-selection'; import useTableSort from '@/hooks/use-table-sort'; +import { convertFileSize } from '@/utils'; import { SyncOutlined } from '@ant-design/icons'; import { useIntl } from '@umijs/max'; import { Button, Input, Space, Table } from 'antd'; import _ from 'lodash'; import { useEffect, useState } from 'react'; import { queryWorkersList } from '../apis'; -import { ListItem } from '../config/types'; +import { Filesystem, GPUDeviceItem, ListItem } from '../config/types'; const { Column } = Table; const Models: React.FC = () => { @@ -44,7 +45,10 @@ const Models: React.FC = () => { } }; const handleShowSizeChange = (current: number, size: number) => { - console.log(current, size); + setQueryParams({ + ...queryParams, + perPage: size + }); }; const handlePageChange = (page: number, perPage: number | undefined) => { @@ -74,7 +78,30 @@ const Models: React.FC = () => { if (!val2 || !val1) { return 0; } - return _.round((val1 / val2) * 100, 2); + return _.round((val1 / val2) * 100, 0); + }; + + const calcStorage = (files: Filesystem[]) => { + const mountRoot = _.find( + files, + (item: Filesystem) => item.mount_point === '/' + ); + return mountRoot ? formateUtilazation(mountRoot.used, mountRoot.total) : 0; + }; + + const renderStorageTooltip = (files: Filesystem[]) => { + const mountRoot = _.find( + files, + (item: Filesystem) => item.mount_point === '/' + ); + return mountRoot ? ( + + Total: {convertFileSize(mountRoot?.total, 0)} + Used: {convertFileSize(mountRoot?.used, 0)} + + ) : ( + 0 + ); }; useEffect(() => { fetchData(); @@ -148,7 +175,7 @@ const Models: React.FC = () => { render={(text, record: ListItem) => { return ( ); }} @@ -164,6 +191,16 @@ const Models: React.FC = () => { record?.status?.memory.used, record?.status?.memory.total )} + label={ + + + Total: {convertFileSize(record?.status?.memory.total, 0)} + + + Used: {convertFileSize(record?.status?.memory.used, 0)} + + + } > ); }} @@ -174,30 +211,19 @@ const Models: React.FC = () => { key="GPU" render={(text, record: ListItem) => { return ( - - {record?.status?.gpu.map((item) => { + + {record?.status?.gpu_devices.map((item, index) => { return ( - - - - {' '} - {`${item.core.total}C`} /{' '} - {item.core.utilization_rate - ? `${item.core.utilization_rate}%` - : 0} - + + [{index}] + ); })} - + ); }} /> @@ -208,28 +234,39 @@ const Models: React.FC = () => { key="VRAM" render={(text, record: ListItem) => { return ( - - {record?.status?.gpu.map((item) => { - return ( - - - - {item.memory.allocated - ? `${formateUtilazation(item.memory.allocated, item.memory.total)}%` - : 0} + + {record?.status?.gpu_devices.map( + (item: GPUDeviceItem, index) => { + return ( + + {item.memory.is_unified_memory ? ( + 'Unified Memory' + ) : ( + + [{index}] + + + Total:{' '} + {convertFileSize(item.memory?.total, 0)} + + + Used:{' '} + {convertFileSize(item.memory?.used, 0)} + + + } + > + + )} - - ); - })} - + ); + } + )} + ); }} /> @@ -238,7 +275,12 @@ const Models: React.FC = () => { dataIndex="storage" key="storage" render={(text, record: ListItem) => { - return ; + return ( + + ); }} /> diff --git a/src/pages/resources/config/types.ts b/src/pages/resources/config/types.ts index 74a1b1a3..1f7ed6cc 100644 --- a/src/pages/resources/config/types.ts +++ b/src/pages/resources/config/types.ts @@ -17,6 +17,29 @@ export interface Gpu { temperature: number; } +export interface GPUDeviceItem { + uuid: string; + name: string; + vendor: string; + index: number; + core: { + total: number; + utilization_rate: number; + }; + memory: { + total: number; + utilization_rate: number; + is_unified_memory: boolean; + used: number; + allocated: number; + }; + temperature: number; + id: string; + worker_id: number; + worker_name: string; + worker_ip: string; +} + export interface Filesystem { name: string; mount_point: string; @@ -52,7 +75,7 @@ export interface ListItem { used: number; allocated: number; }; - gpu: Gpu[]; + gpu_devices: GPUDeviceItem[]; swap: { total: number; used: number; diff --git a/src/utils/fetch-chunk-data.ts b/src/utils/fetch-chunk-data.ts new file mode 100644 index 00000000..e1f8814a --- /dev/null +++ b/src/utils/fetch-chunk-data.ts @@ -0,0 +1,53 @@ +import qs from 'query-string'; + +/** + * + * @param params data: for post request, params: for get request + * @returns + */ +export const fetchChunkedData = async (params: { + data?: any; + url: string; + params?: any; + method?: string; +}) => { + const method = params.method || 'POST'; + let url = params.url; + if (params.params) { + url = `${url}?${qs.stringify(params.params)}`; + } + const response = await fetch(url, { + method, + body: method === 'POST' ? JSON.stringify(params.data) : null, + headers: { + 'Content-Type': 'application/json' + } + }); + if (!response.ok) { + throw new Error('Network response was not ok'); + return null; + } + const reader = response?.body?.getReader(); + const decoder = new TextDecoder('utf-8'); + return { + reader, + decoder + }; +}; + +export const readStreamData = async ( + reader: any, + decoder: TextDecoder, + callback: (data: any) => void +) => { + const { done, value } = await reader.read(); + + if (done) { + return; + } + + let chunk = decoder.decode(value, { stream: true }); + console.log('chunk==========', chunk); + callback(chunk); + await readStreamData(reader, decoder, callback); +}; diff --git a/src/utils/index.ts b/src/utils/index.ts index 55b69441..06d8effd 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -19,20 +19,21 @@ export const handleBatchRequest = async ( return Promise.all(list.map((item) => fn(item))); }; -export const convertFileSize = (sizeInBytes: number) => { +export const convertFileSize = (sizeInBytes: number, prec?: number) => { + const precision = prec ?? 2; if (!sizeInBytes) { return '0 B'; } if (sizeInBytes < 1024) { - return `${sizeInBytes.toFixed(2)} B`; + return `${sizeInBytes.toFixed(precision)} B`; } else if (sizeInBytes < 1024 * 1024) { - return `${(sizeInBytes / 1024).toFixed(2)} KB`; + return `${(sizeInBytes / 1024).toFixed(precision)} KiB`; } else if (sizeInBytes < 1024 * 1024 * 1024) { - return `${(sizeInBytes / (1024 * 1024)).toFixed(2)} MB`; + return `${(sizeInBytes / (1024 * 1024)).toFixed(precision)} MiB`; } else if (sizeInBytes < 1024 * 1024 * 1024 * 1024) { - return `${(sizeInBytes / (1024 * 1024 * 1024)).toFixed(2)} GB`; + return `${(sizeInBytes / (1024 * 1024 * 1024)).toFixed(precision)} GiB`; } else { - return `${(sizeInBytes / (1024 * 1024 * 1024 * 1024)).toFixed(2)} TB`; + return `${(sizeInBytes / (1024 * 1024 * 1024 * 1024)).toFixed(precision)} TiB`; } };