From 28088b270df5e2460cbb33ea3dc8315b02600436 Mon Sep 17 00:00:00 2001 From: jialin Date: Fri, 14 Jun 2024 17:35:39 +0800 Subject: [PATCH] chore: update model list polling --- package.json | 5 +- pnpm-lock.yaml | 303 +++++++++--------- .../seal-table/components/table-row.tsx | 50 ++- src/components/seal-table/index.tsx | 2 + .../seal-table/styles/row-children.less | 2 + src/components/seal-table/types.ts | 2 + src/config/index.ts | 6 + src/global.less | 76 +++-- src/hooks/use-chunk-request.ts | 239 ++++++++++++++ src/hooks/use-request-token.ts | 6 + src/hooks/use-update-chunk-list.ts | 79 +++++ src/pages/llmodels/apis/index.ts | 15 +- src/pages/llmodels/index.tsx | 87 ++++- 13 files changed, 691 insertions(+), 181 deletions(-) create mode 100644 src/hooks/use-chunk-request.ts create mode 100644 src/hooks/use-request-token.ts create mode 100644 src/hooks/use-update-chunk-list.ts diff --git a/package.json b/package.json index 099c8c69..263de24f 100644 --- a/package.json +++ b/package.json @@ -2,11 +2,11 @@ "private": true, "author": "jialin ", "scripts": { - "dev": "max dev", "build": "max build", + "dev": "max dev", "format": "prettier --cache --write .", - "prepare": "husky", "postinstall": "max setup", + "prepare": "husky", "setup": "max setup", "start": "npm run dev" }, @@ -19,6 +19,7 @@ "@umijs/max": "^4.2.1", "antd": "^5.17.0", "antd-style": "^3.6.2", + "axios": "^1.7.2", "classnames": "^2.5.1", "crypto-js": "^4.2.0", "dayjs": "^1.11.11", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9cc9e05e..c22d323b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,6 +29,9 @@ dependencies: 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) + axios: + specifier: ^1.7.2 + version: 1.7.2 classnames: specifier: ^2.5.1 version: 2.5.1 @@ -1726,7 +1729,7 @@ packages: dev: false /@esbuild/android-arm64@0.17.19: - resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==, tarball: https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -1735,7 +1738,7 @@ packages: optional: true /@esbuild/android-arm64@0.18.20: - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==, tarball: https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -1744,7 +1747,7 @@ packages: optional: true /@esbuild/android-arm@0.17.19: - resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==, tarball: https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -1753,7 +1756,7 @@ packages: optional: true /@esbuild/android-arm@0.18.20: - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==, tarball: https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -1762,7 +1765,7 @@ packages: optional: true /@esbuild/android-x64@0.17.19: - resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==, tarball: https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -1771,7 +1774,7 @@ packages: optional: true /@esbuild/android-x64@0.18.20: - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==, tarball: https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -1780,7 +1783,7 @@ packages: optional: true /@esbuild/darwin-arm64@0.17.19: - resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==, tarball: https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -1789,7 +1792,7 @@ packages: optional: true /@esbuild/darwin-arm64@0.18.20: - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==, tarball: https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -1798,7 +1801,7 @@ packages: optional: true /@esbuild/darwin-x64@0.17.19: - resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==, tarball: https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -1807,7 +1810,7 @@ packages: optional: true /@esbuild/darwin-x64@0.18.20: - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==, tarball: https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -1816,7 +1819,7 @@ packages: optional: true /@esbuild/freebsd-arm64@0.17.19: - resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==, tarball: https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -1825,7 +1828,7 @@ packages: optional: true /@esbuild/freebsd-arm64@0.18.20: - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==, tarball: https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -1834,7 +1837,7 @@ packages: optional: true /@esbuild/freebsd-x64@0.17.19: - resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==, tarball: https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -1843,7 +1846,7 @@ packages: optional: true /@esbuild/freebsd-x64@0.18.20: - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==, tarball: https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -1852,7 +1855,7 @@ packages: optional: true /@esbuild/linux-arm64@0.17.19: - resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==, tarball: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -1861,7 +1864,7 @@ packages: optional: true /@esbuild/linux-arm64@0.18.20: - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==, tarball: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -1870,7 +1873,7 @@ packages: optional: true /@esbuild/linux-arm@0.17.19: - resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==, tarball: https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -1879,7 +1882,7 @@ packages: optional: true /@esbuild/linux-arm@0.18.20: - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==, tarball: https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -1888,7 +1891,7 @@ packages: optional: true /@esbuild/linux-ia32@0.17.19: - resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==, tarball: https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -1897,7 +1900,7 @@ packages: optional: true /@esbuild/linux-ia32@0.18.20: - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==, tarball: https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -1906,7 +1909,7 @@ packages: optional: true /@esbuild/linux-loong64@0.17.19: - resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==, tarball: https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -1915,7 +1918,7 @@ packages: optional: true /@esbuild/linux-loong64@0.18.20: - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==, tarball: https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -1924,7 +1927,7 @@ packages: optional: true /@esbuild/linux-mips64el@0.17.19: - resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==, tarball: https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -1933,7 +1936,7 @@ packages: optional: true /@esbuild/linux-mips64el@0.18.20: - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==, tarball: https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -1942,7 +1945,7 @@ packages: optional: true /@esbuild/linux-ppc64@0.17.19: - resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==, tarball: https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -1951,7 +1954,7 @@ packages: optional: true /@esbuild/linux-ppc64@0.18.20: - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==, tarball: https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -1960,7 +1963,7 @@ packages: optional: true /@esbuild/linux-riscv64@0.17.19: - resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==, tarball: https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -1969,7 +1972,7 @@ packages: optional: true /@esbuild/linux-riscv64@0.18.20: - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==, tarball: https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -1978,7 +1981,7 @@ packages: optional: true /@esbuild/linux-s390x@0.17.19: - resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==, tarball: https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -1987,7 +1990,7 @@ packages: optional: true /@esbuild/linux-s390x@0.18.20: - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==, tarball: https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -1996,7 +1999,7 @@ packages: optional: true /@esbuild/linux-x64@0.17.19: - resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==, tarball: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -2005,7 +2008,7 @@ packages: optional: true /@esbuild/linux-x64@0.18.20: - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==, tarball: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -2014,7 +2017,7 @@ packages: optional: true /@esbuild/netbsd-x64@0.17.19: - resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==, tarball: https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -2023,7 +2026,7 @@ packages: optional: true /@esbuild/netbsd-x64@0.18.20: - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==, tarball: https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -2032,7 +2035,7 @@ packages: optional: true /@esbuild/openbsd-x64@0.17.19: - resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==, tarball: https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -2041,7 +2044,7 @@ packages: optional: true /@esbuild/openbsd-x64@0.18.20: - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==, tarball: https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -2050,7 +2053,7 @@ packages: optional: true /@esbuild/sunos-x64@0.17.19: - resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==, tarball: https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -2059,7 +2062,7 @@ packages: optional: true /@esbuild/sunos-x64@0.18.20: - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==, tarball: https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -2068,7 +2071,7 @@ packages: optional: true /@esbuild/win32-arm64@0.17.19: - resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==, tarball: https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -2077,7 +2080,7 @@ packages: optional: true /@esbuild/win32-arm64@0.18.20: - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==, tarball: https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -2086,7 +2089,7 @@ packages: optional: true /@esbuild/win32-ia32@0.17.19: - resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==, tarball: https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -2095,7 +2098,7 @@ packages: optional: true /@esbuild/win32-ia32@0.18.20: - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==, tarball: https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -2104,7 +2107,7 @@ packages: optional: true /@esbuild/win32-x64@0.17.19: - resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==, tarball: https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -2113,7 +2116,7 @@ packages: optional: true /@esbuild/win32-x64@0.18.20: - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==, tarball: https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -2474,7 +2477,7 @@ packages: fastq: 1.17.1 /@pkgjs/parseargs@0.11.0: - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==, tarball: https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz} engines: {node: '>=14'} requiresBuild: true dev: false @@ -2838,21 +2841,21 @@ packages: dev: false /@types/eslint-scope@3.7.7: - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==, tarball: https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz} dependencies: '@types/eslint': 8.56.10 '@types/estree': 1.0.5 dev: false /@types/eslint@8.56.10: - resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} + resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==, tarball: https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz} dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 dev: false /@types/estree@1.0.5: - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==, tarball: https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz} dev: false /@types/graceful-fs@4.1.9: @@ -2866,11 +2869,11 @@ packages: dev: false /@types/history@4.7.11: - resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} + resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==, tarball: https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz} dev: false /@types/history@5.0.0: - resolution: {integrity: sha512-hy8b7Y1J8OGe6LbAjj3xniQrj3v6lsivCcrmf4TzSgPzLkhIeKgc5IZnT7ReIqmEuodjfO8EYAuoFvIrHi/+jQ==} + resolution: {integrity: sha512-hy8b7Y1J8OGe6LbAjj3xniQrj3v6lsivCcrmf4TzSgPzLkhIeKgc5IZnT7ReIqmEuodjfO8EYAuoFvIrHi/+jQ==, tarball: https://registry.npmjs.org/@types/history/-/history-5.0.0.tgz} deprecated: This is a stub types definition. history provides its own type definitions, so you do not need this installed. dependencies: history: 5.3.0 @@ -2892,7 +2895,7 @@ packages: dev: false /@types/isomorphic-fetch@0.0.34: - resolution: {integrity: sha512-BmJKuPCZCR6pbYYgi5nKFJrPC4pLoBgsi/B1nFN64Ba+hLLGUcKPIh7eVlR2xG763Ap08hgQafq/Wx4RFb0omQ==} + resolution: {integrity: sha512-BmJKuPCZCR6pbYYgi5nKFJrPC4pLoBgsi/B1nFN64Ba+hLLGUcKPIh7eVlR2xG763Ap08hgQafq/Wx4RFb0omQ==, tarball: https://registry.npmjs.org/@types/isomorphic-fetch/-/isomorphic-fetch-0.0.34.tgz} dev: false /@types/istanbul-lib-coverage@2.0.6: @@ -2946,7 +2949,7 @@ packages: '@types/react': 18.3.1 /@types/react-router-dom@4.3.5: - resolution: {integrity: sha512-eFajSUASYbPHg2BDM1G8Btx+YqGgvROPIg6sBhl3O4kbDdYXdFdfrgQFf/pcBuQVObjfT9AL/dd15jilR5DIEA==} + resolution: {integrity: sha512-eFajSUASYbPHg2BDM1G8Btx+YqGgvROPIg6sBhl3O4kbDdYXdFdfrgQFf/pcBuQVObjfT9AL/dd15jilR5DIEA==, tarball: https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-4.3.5.tgz} dependencies: '@types/history': 5.0.0 '@types/react': 18.3.1 @@ -2954,7 +2957,7 @@ packages: dev: false /@types/react-router-redux@5.0.27: - resolution: {integrity: sha512-qC5lbuP2K/kMR/HE3e5ltCJptyiQhmfV0wbklqcqWDbNdpJBDwUsBGP4f/0RDYJf09+OTbz43u6iG+8E0Zcwqw==} + resolution: {integrity: sha512-qC5lbuP2K/kMR/HE3e5ltCJptyiQhmfV0wbklqcqWDbNdpJBDwUsBGP4f/0RDYJf09+OTbz43u6iG+8E0Zcwqw==, tarball: https://registry.npmjs.org/@types/react-router-redux/-/react-router-redux-5.0.27.tgz} dependencies: '@types/history': 4.7.11 '@types/react': 18.3.1 @@ -2963,7 +2966,7 @@ packages: dev: false /@types/react-router@5.1.20: - resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} + resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==, tarball: https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz} dependencies: '@types/history': 4.7.11 '@types/react': 18.3.1 @@ -3277,7 +3280,7 @@ packages: dev: false /@umijs/es-module-parser-darwin-arm64@0.0.7: - resolution: {integrity: sha512-1QeNupekuVYVvL4UHyCRq4ISP2PNk4rDd9UOPONW+KpqTyP9p7RfgGpwB0VLPaFSu2ADtm0XZyIaYEGPY6zuDw==} + resolution: {integrity: sha512-1QeNupekuVYVvL4UHyCRq4ISP2PNk4rDd9UOPONW+KpqTyP9p7RfgGpwB0VLPaFSu2ADtm0XZyIaYEGPY6zuDw==, tarball: https://registry.npmjs.org/@umijs/es-module-parser-darwin-arm64/-/es-module-parser-darwin-arm64-0.0.7.tgz} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -3286,7 +3289,7 @@ packages: optional: true /@umijs/es-module-parser-darwin-x64@0.0.7: - resolution: {integrity: sha512-FBFmfigmToPc9qBCW7wHiTYpqnLdPbAvoMGOydzAu2NspdPEF7TfILcr8vCPNbNe3vCobS+T/YM1dP+SagERlA==} + resolution: {integrity: sha512-FBFmfigmToPc9qBCW7wHiTYpqnLdPbAvoMGOydzAu2NspdPEF7TfILcr8vCPNbNe3vCobS+T/YM1dP+SagERlA==, tarball: https://registry.npmjs.org/@umijs/es-module-parser-darwin-x64/-/es-module-parser-darwin-x64-0.0.7.tgz} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -3295,7 +3298,7 @@ packages: optional: true /@umijs/es-module-parser-linux-arm-gnueabihf@0.0.7: - resolution: {integrity: sha512-AXfmg3htkadLGsXUyiyrTig4omGCWIN4l+HS7Qapqv0wlfFYSpC0KPemjyBQgzXO70tDcT+1FNhGjIy+yr2pIQ==} + resolution: {integrity: sha512-AXfmg3htkadLGsXUyiyrTig4omGCWIN4l+HS7Qapqv0wlfFYSpC0KPemjyBQgzXO70tDcT+1FNhGjIy+yr2pIQ==, tarball: https://registry.npmjs.org/@umijs/es-module-parser-linux-arm-gnueabihf/-/es-module-parser-linux-arm-gnueabihf-0.0.7.tgz} engines: {node: '>= 10'} cpu: [arm] os: [linux] @@ -3304,7 +3307,7 @@ packages: optional: true /@umijs/es-module-parser-linux-arm64-gnu@0.0.7: - resolution: {integrity: sha512-2wSdChFc39fPJwvS8tRq+jx8qNlIwrjRk1hb3N5o0rJR+rqt+ceAyNPbYwpNBmUHW7xtmDQvJUeinvr7hIBP+w==} + resolution: {integrity: sha512-2wSdChFc39fPJwvS8tRq+jx8qNlIwrjRk1hb3N5o0rJR+rqt+ceAyNPbYwpNBmUHW7xtmDQvJUeinvr7hIBP+w==, tarball: https://registry.npmjs.org/@umijs/es-module-parser-linux-arm64-gnu/-/es-module-parser-linux-arm64-gnu-0.0.7.tgz} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -3314,7 +3317,7 @@ packages: optional: true /@umijs/es-module-parser-linux-arm64-musl@0.0.7: - resolution: {integrity: sha512-cqQffARWkmQ3n1RYNKZR3aD6X8YaP6u1maASjDgPQOpZMAlv/OSDrM/7iGujWTs0PD0haockNG9/DcP6lgPHMw==} + resolution: {integrity: sha512-cqQffARWkmQ3n1RYNKZR3aD6X8YaP6u1maASjDgPQOpZMAlv/OSDrM/7iGujWTs0PD0haockNG9/DcP6lgPHMw==, tarball: https://registry.npmjs.org/@umijs/es-module-parser-linux-arm64-musl/-/es-module-parser-linux-arm64-musl-0.0.7.tgz} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -3324,7 +3327,7 @@ packages: optional: true /@umijs/es-module-parser-linux-x64-gnu@0.0.7: - resolution: {integrity: sha512-PHrKHtT665Za0Ydjch4ACrNpRU+WIIden12YyF1CtMdhuLDSoU6UfdhF3NoDbgEUcXVDX/ftOqmj0SbH3R1uew==} + resolution: {integrity: sha512-PHrKHtT665Za0Ydjch4ACrNpRU+WIIden12YyF1CtMdhuLDSoU6UfdhF3NoDbgEUcXVDX/ftOqmj0SbH3R1uew==, tarball: https://registry.npmjs.org/@umijs/es-module-parser-linux-x64-gnu/-/es-module-parser-linux-x64-gnu-0.0.7.tgz} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -3334,7 +3337,7 @@ packages: optional: true /@umijs/es-module-parser-linux-x64-musl@0.0.7: - resolution: {integrity: sha512-cyZvUK5lcECLWzLp/eU1lFlCETcz+LEb+wrdARQSST1dgoIGZsT4cqM1WzYmdZNk3o883tiZizLt58SieEiHBQ==} + resolution: {integrity: sha512-cyZvUK5lcECLWzLp/eU1lFlCETcz+LEb+wrdARQSST1dgoIGZsT4cqM1WzYmdZNk3o883tiZizLt58SieEiHBQ==, tarball: https://registry.npmjs.org/@umijs/es-module-parser-linux-x64-musl/-/es-module-parser-linux-x64-musl-0.0.7.tgz} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -3344,7 +3347,7 @@ packages: optional: true /@umijs/es-module-parser-win32-arm64-msvc@0.0.7: - resolution: {integrity: sha512-V7WxnUI88RboSl0RWLNQeKBT7EDW35fW6Tn92zqtoHHxrhAIL9DtDyvC8REP4qTxeZ6Oej/Ax5I6IjsLx3yTOg==} + resolution: {integrity: sha512-V7WxnUI88RboSl0RWLNQeKBT7EDW35fW6Tn92zqtoHHxrhAIL9DtDyvC8REP4qTxeZ6Oej/Ax5I6IjsLx3yTOg==, tarball: https://registry.npmjs.org/@umijs/es-module-parser-win32-arm64-msvc/-/es-module-parser-win32-arm64-msvc-0.0.7.tgz} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -3353,7 +3356,7 @@ packages: optional: true /@umijs/es-module-parser-win32-x64-msvc@0.0.7: - resolution: {integrity: sha512-X3Pqy0l38hg6wMPquPeMHuoHU+Cx+wzyz32SVYCta+RPJQ7n9PjrEBiIuVAw5+GJZjSABN7LVr8u/n0RZT9EQA==} + resolution: {integrity: sha512-X3Pqy0l38hg6wMPquPeMHuoHU+Cx+wzyz32SVYCta+RPJQ7n9PjrEBiIuVAw5+GJZjSABN7LVr8u/n0RZT9EQA==, tarball: https://registry.npmjs.org/@umijs/es-module-parser-win32-x64-msvc/-/es-module-parser-win32-x64-msvc-0.0.7.tgz} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -3412,7 +3415,7 @@ packages: dev: false /@umijs/mako-darwin-arm64@0.4.15: - resolution: {integrity: sha512-ve/bW0RxzuyjhEg7GFyFHhLREalOSnvtO21A0XYHg+vVLEljOxmZzIQi9XiM1aHqhV8s0c5WGpd3B5Ab2P/YNA==} + resolution: {integrity: sha512-ve/bW0RxzuyjhEg7GFyFHhLREalOSnvtO21A0XYHg+vVLEljOxmZzIQi9XiM1aHqhV8s0c5WGpd3B5Ab2P/YNA==, tarball: https://registry.npmjs.org/@umijs/mako-darwin-arm64/-/mako-darwin-arm64-0.4.15.tgz} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -3421,7 +3424,7 @@ packages: optional: true /@umijs/mako-darwin-x64@0.4.15: - resolution: {integrity: sha512-aGZJUk2jQ+7a265c2vS2UI+CRtfCIwDpgZ295ysGMhn7h3SPFk8ZIOkrFUrSjwxoKhGyaBHJT2MHfp1qmenaQQ==} + resolution: {integrity: sha512-aGZJUk2jQ+7a265c2vS2UI+CRtfCIwDpgZ295ysGMhn7h3SPFk8ZIOkrFUrSjwxoKhGyaBHJT2MHfp1qmenaQQ==, tarball: https://registry.npmjs.org/@umijs/mako-darwin-x64/-/mako-darwin-x64-0.4.15.tgz} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -3430,7 +3433,7 @@ packages: optional: true /@umijs/mako-linux-x64-gnu@0.4.15: - resolution: {integrity: sha512-zyQ3YAuVSZFFG9Em5wFQN/gGutSIBr2PNaR1fn5xjw0JMYOIs6YAQ6hKngtor0xYiMArdmJfGzNzccSofC441A==} + resolution: {integrity: sha512-zyQ3YAuVSZFFG9Em5wFQN/gGutSIBr2PNaR1fn5xjw0JMYOIs6YAQ6hKngtor0xYiMArdmJfGzNzccSofC441A==, tarball: https://registry.npmjs.org/@umijs/mako-linux-x64-gnu/-/mako-linux-x64-gnu-0.4.15.tgz} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -3783,26 +3786,26 @@ packages: dev: false /@webassemblyjs/ast@1.12.1: - resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==, tarball: https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz} dependencies: '@webassemblyjs/helper-numbers': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 dev: false /@webassemblyjs/floating-point-hex-parser@1.11.6: - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==, tarball: https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz} dev: false /@webassemblyjs/helper-api-error@1.11.6: - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==, tarball: https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz} dev: false /@webassemblyjs/helper-buffer@1.12.1: - resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==, tarball: https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz} dev: false /@webassemblyjs/helper-numbers@1.11.6: - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==, tarball: https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz} dependencies: '@webassemblyjs/floating-point-hex-parser': 1.11.6 '@webassemblyjs/helper-api-error': 1.11.6 @@ -3810,11 +3813,11 @@ packages: dev: false /@webassemblyjs/helper-wasm-bytecode@1.11.6: - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==, tarball: https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz} dev: false /@webassemblyjs/helper-wasm-section@1.12.1: - resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==, tarball: https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz} dependencies: '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-buffer': 1.12.1 @@ -3823,23 +3826,23 @@ packages: dev: false /@webassemblyjs/ieee754@1.11.6: - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==, tarball: https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz} dependencies: '@xtuc/ieee754': 1.2.0 dev: false /@webassemblyjs/leb128@1.11.6: - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==, tarball: https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz} dependencies: '@xtuc/long': 4.2.2 dev: false /@webassemblyjs/utf8@1.11.6: - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==, tarball: https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz} dev: false /@webassemblyjs/wasm-edit@1.12.1: - resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==, tarball: https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz} dependencies: '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-buffer': 1.12.1 @@ -3852,7 +3855,7 @@ packages: dev: false /@webassemblyjs/wasm-gen@1.12.1: - resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==, tarball: https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz} dependencies: '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 @@ -3862,7 +3865,7 @@ packages: dev: false /@webassemblyjs/wasm-opt@1.12.1: - resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==, tarball: https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz} dependencies: '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-buffer': 1.12.1 @@ -3871,7 +3874,7 @@ packages: dev: false /@webassemblyjs/wasm-parser@1.12.1: - resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==, tarball: https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz} dependencies: '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-api-error': 1.11.6 @@ -3882,18 +3885,18 @@ packages: dev: false /@webassemblyjs/wast-printer@1.12.1: - resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==, tarball: https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz} dependencies: '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 dev: false /@xtuc/ieee754@1.2.0: - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==, tarball: https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz} dev: false /@xtuc/long@4.2.2: - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==, tarball: https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz} dev: false /accepts@1.3.8: @@ -3905,7 +3908,7 @@ packages: dev: false /acorn-import-assertions@1.9.0(acorn@8.11.3): - resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==, tarball: https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz} peerDependencies: acorn: ^8 dependencies: @@ -4298,7 +4301,7 @@ packages: dev: false /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, tarball: https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz} dev: false /atomic-sleep@1.0.0: @@ -4330,7 +4333,7 @@ packages: dev: false /axios@0.27.2: - resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} + resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==, tarball: https://registry.npmjs.org/axios/-/axios-0.27.2.tgz} dependencies: follow-redirects: 1.15.6 form-data: 4.0.0 @@ -4338,6 +4341,16 @@ packages: - debug dev: false + /axios@1.7.2: + resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==, tarball: https://registry.npmjs.org/axios/-/axios-1.7.2.tgz} + dependencies: + follow-redirects: 1.15.6 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + /babel-jest@29.7.0(@babel/core@7.24.5): resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4780,7 +4793,7 @@ packages: dev: false /chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==, tarball: https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz} engines: {node: '>=6.0'} dev: false @@ -4899,7 +4912,7 @@ packages: dev: true /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, tarball: https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz} engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 @@ -5494,7 +5507,7 @@ packages: dev: false /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, tarball: https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz} engines: {node: '>=0.4.0'} dev: false @@ -5636,7 +5649,7 @@ packages: dev: false /dva-core@1.5.0-beta.2(redux@3.7.2): - resolution: {integrity: sha512-xmtr/J63EZXBdVXNBW+QCD7p9CaE8kAo2U1faRyv3PIGcy0G3Y6IBDNtoBB/Cj3nzk/jvX0dv96Hnh1kpSnI7Q==} + resolution: {integrity: sha512-xmtr/J63EZXBdVXNBW+QCD7p9CaE8kAo2U1faRyv3PIGcy0G3Y6IBDNtoBB/Cj3nzk/jvX0dv96Hnh1kpSnI7Q==, tarball: https://registry.npmjs.org/dva-core/-/dva-core-1.5.0-beta.2.tgz} peerDependencies: redux: 3.x dependencies: @@ -5685,7 +5698,7 @@ packages: dev: false /dva@2.5.0-beta.2(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-kc2+CHhF1cNIU3Rg1miMhHgOKJ/VDrq9d6ynVBZf1EN2YKWU3MVFq/uTTBqMr2qkR0m9f8VKHOFmfKLtfMI93Q==} + resolution: {integrity: sha512-kc2+CHhF1cNIU3Rg1miMhHgOKJ/VDrq9d6ynVBZf1EN2YKWU3MVFq/uTTBqMr2qkR0m9f8VKHOFmfKLtfMI93Q==, tarball: https://registry.npmjs.org/dva/-/dva-2.5.0-beta.2.tgz} peerDependencies: react: 15.x || ^16.0.0-0 react-dom: 15.x || ^16.0.0-0 @@ -5754,7 +5767,7 @@ packages: dev: false /encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==, tarball: https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz} dependencies: iconv-lite: 0.6.3 dev: false @@ -5791,7 +5804,7 @@ packages: dev: false /errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==, tarball: https://registry.npmjs.org/errno/-/errno-0.1.8.tgz} hasBin: true requiresBuild: true dependencies: @@ -5910,7 +5923,7 @@ packages: dev: false /es-module-lexer@1.5.2: - resolution: {integrity: sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==} + resolution: {integrity: sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==, tarball: https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.2.tgz} dev: false /es-object-atoms@1.0.0: @@ -6580,7 +6593,7 @@ packages: dev: false /follow-redirects@1.15.6: - resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==, tarball: https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -6627,7 +6640,7 @@ packages: dev: false /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==, tarball: https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz} engines: {node: '>= 6'} dependencies: asynckit: 0.4.0 @@ -6673,7 +6686,7 @@ packages: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, tarball: https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true @@ -6784,7 +6797,7 @@ packages: is-glob: 4.0.3 /glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==, tarball: https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz} dev: false /glob@10.3.14: @@ -6992,7 +7005,7 @@ packages: dev: false /history@4.10.1: - resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} + resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==, tarball: https://registry.npmjs.org/history/-/history-4.10.1.tgz} dependencies: '@babel/runtime': 7.24.5 loose-envify: 1.4.0 @@ -7017,7 +7030,7 @@ packages: dev: false /hoist-non-react-statics@2.5.5: - resolution: {integrity: sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==} + resolution: {integrity: sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==, tarball: https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz} dev: false /hoist-non-react-statics@3.3.2: @@ -7186,7 +7199,7 @@ packages: engines: {node: '>= 4'} /image-size@0.5.5: - resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==, tarball: https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz} engines: {node: '>=0.10.0'} hasBin: true requiresBuild: true @@ -7540,7 +7553,7 @@ packages: dev: false /is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==, tarball: https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz} engines: {node: '>=0.10.0'} dev: false @@ -7630,7 +7643,7 @@ packages: dev: false /isomorphic-fetch@2.2.1: - resolution: {integrity: sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==} + resolution: {integrity: sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==, tarball: https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz} dependencies: node-fetch: 1.7.3 whatwg-fetch: 3.6.20 @@ -7721,7 +7734,7 @@ packages: dev: false /jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==, tarball: https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz} engines: {node: '>= 10.13.0'} dependencies: '@types/node': 20.12.11 @@ -7911,7 +7924,7 @@ packages: type-check: 0.4.0 /lightningcss-darwin-arm64@1.22.1: - resolution: {integrity: sha512-ldvElu+R0QimNTjsKpaZkUv3zf+uefzLy/R1R19jtgOfSRM+zjUCUgDhfEDRmVqJtMwYsdhMI2aJtJChPC6Osg==} + resolution: {integrity: sha512-ldvElu+R0QimNTjsKpaZkUv3zf+uefzLy/R1R19jtgOfSRM+zjUCUgDhfEDRmVqJtMwYsdhMI2aJtJChPC6Osg==, tarball: https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.22.1.tgz} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] @@ -7920,7 +7933,7 @@ packages: optional: true /lightningcss-darwin-x64@1.22.1: - resolution: {integrity: sha512-5p2rnlVTv6Gpw4PlTLq925nTVh+HFh4MpegX8dPDYJae+NFVjQ67gY7O6iHIzQjLipDiYejFF0yHrhjU3XgLBQ==} + resolution: {integrity: sha512-5p2rnlVTv6Gpw4PlTLq925nTVh+HFh4MpegX8dPDYJae+NFVjQ67gY7O6iHIzQjLipDiYejFF0yHrhjU3XgLBQ==, tarball: https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.22.1.tgz} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] @@ -7929,7 +7942,7 @@ packages: optional: true /lightningcss-freebsd-x64@1.22.1: - resolution: {integrity: sha512-1FaBtcFrZqB2hkFbAxY//Pnp8koThvyB6AhjbdVqKD4/pu13Rl91fKt2N9qyeQPUt3xy7ORUvSO+dPk3J6EjXg==} + resolution: {integrity: sha512-1FaBtcFrZqB2hkFbAxY//Pnp8koThvyB6AhjbdVqKD4/pu13Rl91fKt2N9qyeQPUt3xy7ORUvSO+dPk3J6EjXg==, tarball: https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.22.1.tgz} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] @@ -7938,7 +7951,7 @@ packages: optional: true /lightningcss-linux-arm-gnueabihf@1.22.1: - resolution: {integrity: sha512-6rub98tYGfE5I5j0BP8t/2d4BZyu1S7Iz9vUkm0H26snAFHYxLfj3RbQn0xHHIePSetjLnhcg3QlfwUAkD/FYg==} + resolution: {integrity: sha512-6rub98tYGfE5I5j0BP8t/2d4BZyu1S7Iz9vUkm0H26snAFHYxLfj3RbQn0xHHIePSetjLnhcg3QlfwUAkD/FYg==, tarball: https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.22.1.tgz} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] @@ -7947,7 +7960,7 @@ packages: optional: true /lightningcss-linux-arm64-gnu@1.22.1: - resolution: {integrity: sha512-nYO5qGtb/1kkTZu3FeTiM+2B2TAb7m2DkLCTgQIs2bk2o9aEs7I96fwySKcoHWQAiQDGR9sMux9vkV4KQXqPaQ==} + resolution: {integrity: sha512-nYO5qGtb/1kkTZu3FeTiM+2B2TAb7m2DkLCTgQIs2bk2o9aEs7I96fwySKcoHWQAiQDGR9sMux9vkV4KQXqPaQ==, tarball: https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.22.1.tgz} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] @@ -7957,7 +7970,7 @@ packages: optional: true /lightningcss-linux-arm64-musl@1.22.1: - resolution: {integrity: sha512-MCV6RuRpzXbunvzwY644iz8cw4oQxvW7oer9xPkdadYqlEyiJJ6wl7FyJOH7Q6ZYH4yjGAUCvxDBxPbnDu9ZVg==} + resolution: {integrity: sha512-MCV6RuRpzXbunvzwY644iz8cw4oQxvW7oer9xPkdadYqlEyiJJ6wl7FyJOH7Q6ZYH4yjGAUCvxDBxPbnDu9ZVg==, tarball: https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.22.1.tgz} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] @@ -7967,7 +7980,7 @@ packages: optional: true /lightningcss-linux-x64-gnu@1.22.1: - resolution: {integrity: sha512-RjNgpdM20VUXgV7us/VmlO3Vn2ZRiDnc3/bUxCVvySZWPiVPprpqW/QDWuzkGa+NCUf6saAM5CLsZLSxncXJwg==} + resolution: {integrity: sha512-RjNgpdM20VUXgV7us/VmlO3Vn2ZRiDnc3/bUxCVvySZWPiVPprpqW/QDWuzkGa+NCUf6saAM5CLsZLSxncXJwg==, tarball: https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.22.1.tgz} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] @@ -7977,7 +7990,7 @@ packages: optional: true /lightningcss-linux-x64-musl@1.22.1: - resolution: {integrity: sha512-ZgO4C7Rd6Hv/5MnyY2KxOYmIlzk4rplVolDt3NbkNR8DndnyX0Q5IR4acJWNTBICQ21j3zySzKbcJaiJpk/4YA==} + resolution: {integrity: sha512-ZgO4C7Rd6Hv/5MnyY2KxOYmIlzk4rplVolDt3NbkNR8DndnyX0Q5IR4acJWNTBICQ21j3zySzKbcJaiJpk/4YA==, tarball: https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.22.1.tgz} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] @@ -7987,7 +8000,7 @@ packages: optional: true /lightningcss-win32-x64-msvc@1.22.1: - resolution: {integrity: sha512-4pozV4eyD0MDET41ZLHAeBo+H04Nm2UEYIk5w/ts40231dRFV7E0cjwbnZvSoc1DXFgecAhiC0L16ruv/ZDCpg==} + resolution: {integrity: sha512-4pozV4eyD0MDET41ZLHAeBo+H04Nm2UEYIk5w/ts40231dRFV7E0cjwbnZvSoc1DXFgecAhiC0L16ruv/ZDCpg==, tarball: https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.22.1.tgz} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] @@ -8053,7 +8066,7 @@ packages: dev: true /loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==, tarball: https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz} engines: {node: '>=6.11.5'} dev: false @@ -8158,7 +8171,7 @@ packages: dev: false /make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==, tarball: https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz} engines: {node: '>=6'} requiresBuild: true dependencies: @@ -8261,12 +8274,12 @@ packages: dev: false /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, tarball: https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz} engines: {node: '>= 0.6'} dev: false /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, tarball: https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 @@ -8352,7 +8365,7 @@ packages: dev: false /monaco-editor@0.49.0: - resolution: {integrity: sha512-2I8/T3X/hLxB2oPHgqcNYUVdA/ZEFShT7IAujifIPMfKkNbLOqY8XCoyHCXrsdjb36dW9MwoTwBCFpXKMwNwaQ==} + resolution: {integrity: sha512-2I8/T3X/hLxB2oPHgqcNYUVdA/ZEFShT7IAujifIPMfKkNbLOqY8XCoyHCXrsdjb36dW9MwoTwBCFpXKMwNwaQ==, tarball: https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.49.0.tgz} dev: false /ms@2.0.0: @@ -8386,7 +8399,7 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} /needle@3.3.1: - resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==, tarball: https://registry.npmjs.org/needle/-/needle-3.3.1.tgz} engines: {node: '>= 4.4.x'} hasBin: true requiresBuild: true @@ -8402,7 +8415,7 @@ packages: dev: false /neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==, tarball: https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz} dev: false /next-tick@1.1.0: @@ -8426,7 +8439,7 @@ packages: dev: false /node-fetch@1.7.3: - resolution: {integrity: sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==} + resolution: {integrity: sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==, tarball: https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz} dependencies: encoding: 0.1.13 is-stream: 1.1.0 @@ -8853,7 +8866,7 @@ packages: dev: false /path-to-regexp@1.8.0: - resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==} + resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==, tarball: https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz} dependencies: isarray: 0.0.1 dev: false @@ -9508,6 +9521,10 @@ packages: resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} dev: false + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==, tarball: https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz} + dev: false + /prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} requiresBuild: true @@ -9838,7 +9855,7 @@ packages: dev: false /rc-field-form@1.44.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-el7w87fyDUsca63Y/s8qJcq9kNkf/J5h+iTdqG5WsSHLH0e6Usl7QuYSmSVzJMgtp40mOVZIY/W/QP9zwrp1FA==} + resolution: {integrity: sha512-el7w87fyDUsca63Y/s8qJcq9kNkf/J5h+iTdqG5WsSHLH0e6Usl7QuYSmSVzJMgtp40mOVZIY/W/QP9zwrp1FA==, tarball: https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.44.0.tgz} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' @@ -10640,7 +10657,7 @@ packages: dev: false /react-dom@18.3.1(react@18.3.1): - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==, tarball: https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz} peerDependencies: react: ^18.3.1 dependencies: @@ -10724,7 +10741,7 @@ packages: dev: false /react-redux@5.1.2(react@18.3.1)(redux@3.7.2): - resolution: {integrity: sha512-Ns1G0XXc8hDyH/OcBHOxNgQx9ayH3SPxBnFCOidGKSle8pKihysQw2rG/PmciUQRoclhVBO8HMhiRmGXnDja9Q==} + resolution: {integrity: sha512-Ns1G0XXc8hDyH/OcBHOxNgQx9ayH3SPxBnFCOidGKSle8pKihysQw2rG/PmciUQRoclhVBO8HMhiRmGXnDja9Q==, tarball: https://registry.npmjs.org/react-redux/-/react-redux-5.1.2.tgz} peerDependencies: react: ^0.14.0 || ^15.0.0-0 || ^16.0.0-0 redux: ^2.0.0 || ^3.0.0 || ^4.0.0-0 @@ -10785,7 +10802,7 @@ packages: dev: false /react-router-dom@4.3.1(react@18.3.1): - resolution: {integrity: sha512-c/MlywfxDdCp7EnB7YfPMOfMD3tOtIjrQlj/CKfNMBxdmpJP8xcz5P/UAFn3JbnQCNUxsHyVVqllF9LhgVyFCA==} + resolution: {integrity: sha512-c/MlywfxDdCp7EnB7YfPMOfMD3tOtIjrQlj/CKfNMBxdmpJP8xcz5P/UAFn3JbnQCNUxsHyVVqllF9LhgVyFCA==, tarball: https://registry.npmjs.org/react-router-dom/-/react-router-dom-4.3.1.tgz} peerDependencies: react: '>=15' dependencies: @@ -10823,7 +10840,7 @@ packages: dev: false /react-router-redux@5.0.0-alpha.9(react@18.3.1): - resolution: {integrity: sha512-euSgNIANnRXr4GydIuwA7RZCefrLQzIw5WdXspS8NPYbV+FxrKSS9MKG7U9vb6vsKHONnA4VxrVNWfnMUnUQAw==} + resolution: {integrity: sha512-euSgNIANnRXr4GydIuwA7RZCefrLQzIw5WdXspS8NPYbV+FxrKSS9MKG7U9vb6vsKHONnA4VxrVNWfnMUnUQAw==, tarball: https://registry.npmjs.org/react-router-redux/-/react-router-redux-5.0.0-alpha.9.tgz} deprecated: This project is no longer maintained. peerDependencies: react: '>=15' @@ -10835,7 +10852,7 @@ packages: dev: false /react-router@4.3.1(react@18.3.1): - resolution: {integrity: sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg==} + resolution: {integrity: sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg==, tarball: https://registry.npmjs.org/react-router/-/react-router-4.3.1.tgz} peerDependencies: react: '>=15' dependencies: @@ -10875,7 +10892,7 @@ packages: dev: false /react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==, tarball: https://registry.npmjs.org/react/-/react-18.3.1.tgz} engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 @@ -10964,7 +10981,7 @@ packages: dev: false /redux@3.7.2: - resolution: {integrity: sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==} + resolution: {integrity: sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==, tarball: https://registry.npmjs.org/redux/-/redux-3.7.2.tgz} dependencies: lodash: 4.17.21 lodash-es: 4.17.21 @@ -11073,7 +11090,7 @@ packages: dev: false /resolve-pathname@3.0.0: - resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} + resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==, tarball: https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz} dev: false /resolve-pkg-maps@1.0.0: @@ -11240,7 +11257,7 @@ packages: dev: false /scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==, tarball: https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz} dependencies: loose-envify: 1.4.0 dev: false @@ -11307,7 +11324,7 @@ packages: dev: false /serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==, tarball: https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz} dependencies: randombytes: 2.1.0 dev: false @@ -11956,7 +11973,7 @@ packages: dev: false /symbol-observable@1.2.0: - resolution: {integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==} + resolution: {integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==, tarball: https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz} engines: {node: '>=0.10.0'} dev: false @@ -12019,7 +12036,7 @@ packages: dev: false /terser-webpack-plugin@5.3.10(webpack@5.91.0): - resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==, tarball: https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz} engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -12095,11 +12112,11 @@ packages: dev: false /tiny-invariant@1.3.3: - resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==, tarball: https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz} dev: false /tiny-warning@1.0.3: - resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==, tarball: https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz} dev: false /tinycolor2@1.6.0: @@ -12274,7 +12291,7 @@ packages: dev: false /uglify-to-browserify@1.0.2: - resolution: {integrity: sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==} + resolution: {integrity: sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==, tarball: https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz} requiresBuild: true dev: false optional: true @@ -12496,7 +12513,7 @@ packages: dev: false /value-equal@1.0.1: - resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} + resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==, tarball: https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz} dev: false /vary@1.1.2: @@ -12563,7 +12580,7 @@ packages: dev: false /watchpack@2.4.1: - resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} + resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==, tarball: https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz} engines: {node: '>=10.13.0'} dependencies: glob-to-regexp: 0.4.1 @@ -12590,12 +12607,12 @@ packages: dev: false /webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==, tarball: https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz} engines: {node: '>=10.13.0'} dev: false /webpack@5.91.0: - resolution: {integrity: sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==} + resolution: {integrity: sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==, tarball: https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -12635,7 +12652,7 @@ packages: dev: false /whatwg-fetch@3.6.20: - resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==, tarball: https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz} dev: false /which-boxed-primitive@1.0.2: diff --git a/src/components/seal-table/components/table-row.tsx b/src/components/seal-table/components/table-row.tsx index 3888b7ab..f7e9f5e1 100644 --- a/src/components/seal-table/components/table-row.tsx +++ b/src/components/seal-table/components/table-row.tsx @@ -2,7 +2,7 @@ import { DownOutlined, RightOutlined } from '@ant-design/icons'; import { Button, Checkbox, Col, Empty, Row, Spin } from 'antd'; import classNames from 'classnames'; import _ from 'lodash'; -import React, { useEffect, useState } from 'react'; +import React, { useEffect, useRef, useState } from 'react'; import RowContext from '../row-context'; import { RowContextProps, SealTableProps } from '../types'; @@ -17,6 +17,7 @@ const TableRow: React.FC< rowSelection, rowKey, columns, + pollingChildren, onExpand, renderChildren, loadChildren @@ -26,6 +27,7 @@ const TableRow: React.FC< const [checked, setChecked] = useState(false); const [childrenData, setChildrenData] = useState([]); const [loading, setLoading] = useState(false); + const pollTimer = useRef(null); useEffect(() => { if (rowSelection) { @@ -38,12 +40,26 @@ const TableRow: React.FC< } }, [rowSelection]); - const handleRowExpand = async () => { - setExpanded(!expanded); - onExpand?.(!expanded, record); - if (expanded) { - return; + useEffect(() => { + return () => { + if (pollTimer.current) { + clearInterval(pollTimer.current); + } + }; + }, []); + + const handlePolling = async () => { + if (pollingChildren) { + try { + const data = await loadChildren?.(record); + setChildrenData(data || []); + } catch (error) { + setChildrenData([]); + } } + }; + + const handleLoadChildren = async () => { try { setLoading(true); const data = await loadChildren?.(record); @@ -55,6 +71,28 @@ const TableRow: React.FC< } }; + const handleRowExpand = async () => { + setExpanded(!expanded); + onExpand?.(!expanded, record); + + if (pollTimer.current) { + clearInterval(pollTimer.current); + } + + if (expanded) { + return; + } + + if (pollingChildren) { + await handleLoadChildren(); + pollTimer.current = setInterval(() => { + handlePolling(); + }, 1000); + } else { + handleLoadChildren(); + } + }; + const handleSelectChange = (e: any) => { if (e.target.checked) { // update selectedRowKeys diff --git a/src/components/seal-table/index.tsx b/src/components/seal-table/index.tsx index 94735157..9f323eea 100644 --- a/src/components/seal-table/index.tsx +++ b/src/components/seal-table/index.tsx @@ -14,6 +14,7 @@ const SealTable: React.FC = (props) => { onExpand, loading, expandable, + pollingChildren, rowSelection, renderChildren, loadChildren @@ -129,6 +130,7 @@ const SealTable: React.FC = (props) => { rowSelection={rowSelection} expandable={expandable} rowKey={rowKey} + pollingChildren={pollingChildren} renderChildren={renderChildren} loadChildren={loadChildren} onExpand={onExpand} diff --git a/src/components/seal-table/styles/row-children.less b/src/components/seal-table/styles/row-children.less index 121c4fba..df805f55 100644 --- a/src/components/seal-table/styles/row-children.less +++ b/src/components/seal-table/styles/row-children.less @@ -1,4 +1,5 @@ .row-children { + position: relative; display: flex; align-items: center; height: 54px; @@ -6,6 +7,7 @@ border-radius: var(--ant-table-header-border-radius); background-color: var(--color-fill-1); transition: all 0.2s ease; + &:hover { background-color: var(--ant-table-row-hover-bg); transition: all 0.2s ease; diff --git a/src/components/seal-table/types.ts b/src/components/seal-table/types.ts index bfdf007b..7534e588 100644 --- a/src/components/seal-table/types.ts +++ b/src/components/seal-table/types.ts @@ -29,6 +29,7 @@ export interface SealTableProps { empty?: React.ReactNode; expandable?: React.ReactNode; dataSource: any[]; + pollingChildren?: boolean; loading?: boolean; onExpand?: (expanded: boolean, record: any) => void; renderChildren?: (data: any) => React.ReactNode; @@ -39,5 +40,6 @@ export interface SealTableProps { export interface RowContextProps { record: Record; columns: React.ReactNode[]; + pollingChildren?: boolean; rowIndex: number; } diff --git a/src/config/index.ts b/src/config/index.ts index ce964099..38033fbb 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -37,3 +37,9 @@ export const StatusMaps = { success: 'success', inactive: 'inactive' }; + +export const WatchEventType = { + CREATE: 'ADDED', + UPDATE: 'MODIFIED', + DELETE: 'DELETED' +}; diff --git a/src/global.less b/src/global.less index 2fded4d3..be529e0e 100644 --- a/src/global.less +++ b/src/global.less @@ -1,8 +1,10 @@ +@import url('src/assets/styles/common.less'); +@import url('src/assets/styles/menu.less'); + html { - --color-fill-1: rgba(0, 0, 0, 0.04); + --color-fill-1: rgba(0, 0, 0, 4%); // --color-fill-1: #f3f6fa; --color-fill-2: #fff; - --color-fill-2: #fff; --color-fill-3: #f3f6fa; --menu-border-radius-base: 32px; --border-radius-base: 16px; @@ -12,7 +14,7 @@ html { --color-text-1: var(--ant-color-text); --color-bg-light-1: #f0fff6; --font-size-base: 12px; - --ant-color-fill-secondary: rgba(0, 0, 0, 0.06); + --ant-color-fill-secondary: rgba(0, 0, 0, 6%); --table-td-radius: 24px; --checkbox-border-radius: 4px; --ant-table-cell-padding-inline: 16px; @@ -26,17 +28,19 @@ html { --seal-transition-func: cubic-bezier(0, 0, 1, 1); // ======== input ============ - --ant-input-active-shadow: 0 0 0 2px rgba(5, 255, 105, 0.06); + --ant-input-active-shadow: 0 0 0 2px rgba(5, 255, 105, 6%); --ant-input-active-border-color: #2fbf85; --ant-input-hover-border-color: #54cc98; .css-var-rf { --ant-font-size: var(--font-size-base); } + .css-var-rg, .css-var-ri, .css-var-rh { --ant-font-size: var(--font-size-base); + &.ant-menu-css-var { --ant-menu-item-height: 46px; --ant-menu-item-selected-bg: var(--color-white-1); @@ -47,6 +51,7 @@ html { --ant-menu-item-active-bg: var(--color-white-1); } } + .css-var-r0 { // --ant-control-height: 36px; --ant-font-size-sm: var(--font-size-base); @@ -56,7 +61,7 @@ html { --ant-padding-sm: 14px; --ant-border-radius-lg: 16px; --ant-color-error: #ff4d4f; - --ant-color-bg-mask: rgba(0, 0, 0, 0.35); + --ant-color-bg-mask: rgba(0, 0, 0, 35%); &.ant-popover { --ant-popover-inner-padding: 26px; @@ -72,6 +77,7 @@ html { &.ant-table-css-var { --ant-table-row-hover-bg: #e6e6e6; } + &.ant-modal-css-var { --ant-modal-title-font-size: 14px; --ant-modal-header-margin-bottom: 26px; @@ -90,12 +96,14 @@ html { --ant-menu-item-color: var(--color-text-1); --ant-menu-item-active-bg: var(--color-white-1); } + .css-var-r0.ant-input-css-var { --ant-input-input-font-size: var(--font-size-base); --ant-input-input-font-size-lg: var(--font-size-base); --ant-input-input-font-size-sm: var(--font-size-base); --ant-input-padding-inline-lg: 14px; } + .css-var-r0.ant-select-css-var { --ant-select-option-active-bg: var(--color-fill-1); --ant-select-option-font-size: var(--font-size-base); @@ -117,35 +125,44 @@ body { .ant-table-wrapper .ant-table-selection-column { padding-inline-start: 16px !important; } + .ant-table-container .ant-table-content table { border-spacing: 0 20px; + .ant-table-thead th.ant-table-column-sort { background-color: transparent; + &::before { background-color: var(--ant-table-header-split-color) !important; } } + .ant-checkbox { .ant-checkbox-inner::after { display: flex !important; } } - .ant-checkbox-indeterminate .ant-checkbox-inner:after { + + .ant-checkbox-indeterminate .ant-checkbox-inner::after { display: flex !important; } + tr > th { background-color: var(--color-white-1); border: none; - padding-block: 0px; + padding-block: 0; } + tr > td { background-color: var(--color-fill-1); border-bottom: none; height: 70px; + &:first-child { border-top-left-radius: var(--table-td-radius); border-bottom-left-radius: var(--table-td-radius); } + &:last-child { border-top-right-radius: var(--table-td-radius); border-bottom-right-radius: var(--table-td-radius); @@ -156,6 +173,7 @@ body { .ant-input-css-var.ant-input { height: 40px; } + .ant-input-outlined.ant-input-status-error:not(.ant-input-disabled) { border: none; box-shadow: none; @@ -200,36 +218,40 @@ body { } // ======== basic layout style start============ + +// ======== basic layout style end ============ + +// ======== menu style start ============ +.ant-pro-sider-collapsed-button { + display: none; +} + .ant-pro-layout { height: 100vh; + .ant-pro-sider-logo { padding-left: 22px; border-block-end: none; } + .ant-layout { min-height: 100vh; } + .ant-pro-layout-container { background-color: var(--color-fill-2); } -} -// ======== basic layout style end ============ - -// ======== menu style start ============ -.ant-pro-sider-collapsed-button { - display: none; -} - -.ant-pro-layout { .ant-pro-sider { .ant-menu { .ant-menu-item:not(.ant-menu-item-selected) { color: var(--ant-color-text); } + .ant-menu-item:hover { color: var(--ant-color-text); } + .ant-menu-item.ant-menu-item-selected:hover { color: var(--ant-color-primary); } @@ -243,5 +265,23 @@ body { border-radius: 16px; } -@import url('src/assets/styles/common.less'); -@import url('src/assets/styles/menu.less'); +@keyframes skeleton-loading { + 0% { + background-position: 100% 50%; + } + + 100% { + background-position: 0 50%; + } +} + +.skeleton-loading { + animation: skeleton-loading 2.5s ease infinite; + background: linear-gradient( + 90deg, + rgba(255, 255, 255, 4%) 25%, + rgba(0, 0, 0, 10%) 37%, + rgba(255, 255, 255, 4%) 63% + ); + background-size: 400% 100%; +} diff --git a/src/hooks/use-chunk-request.ts b/src/hooks/use-chunk-request.ts new file mode 100644 index 00000000..91a66fa0 --- /dev/null +++ b/src/hooks/use-chunk-request.ts @@ -0,0 +1,239 @@ +import { WatchEventType } from '@/config'; +import { request } from '@umijs/max'; +import axios from 'axios'; +import _ from 'lodash'; +import { useEffect, useRef, useState } from 'react'; + +interface RequestConfig { + url: string; + handler: (data: any) => any; + beforeReconnect?: () => void; + params?: object; + contentType?: 'json' | 'text'; +} + +export const sliceJsonStr = (text: string) => { + if (!text) return []; + const result: string[] = []; + for (let i = 0, j = 0, start = 0; i < text.length; i += 1) { + if (text.charAt(i) === '{') { + j += 1; + } + if (text.charAt(i) === '}') { + j -= 1; + } + if (j === 0 && i !== start) { + result.push(text.slice(start, i + 1)); + start = i + 1; + } + } + return result; +}; + +export const parseJsonStr = (list: string[]) => { + return _.map(list, (str: string) => { + return JSON.parse(str); + }); +}; + +const findMatchingClosingBracket = (inputStr: string, startIndex: number) => { + let count = 0; + for (let i = startIndex; i < inputStr.length; i += 1) { + if (inputStr[i] === '{') { + count += 1; + } else if (inputStr[i] === '}') { + count -= 1; + } + + if (count === 0) { + return i; + } + } + return -1; +}; + +const findValidJSONStrings = (inputStr: string) => { + const validJSONStrings: any[] = []; + let startIndex = 0; + + while (startIndex < inputStr.length) { + const openingBraceIndex = inputStr.indexOf('{', startIndex); + if (openingBraceIndex === -1) { + break; // No more opening braces + } + + const closingBraceIndex = findMatchingClosingBracket( + inputStr, + openingBraceIndex + ); + if (closingBraceIndex === -1) { + // If no matching closing brace, set startIndex to next character + startIndex = openingBraceIndex + 1; + } else { + const jsonString = inputStr.substring( + openingBraceIndex, + closingBraceIndex + 1 + ); + try { + const data = JSON.parse(jsonString); + validJSONStrings.push(data); + } catch (error) { + // Ignore invalid JSON + } + + startIndex = closingBraceIndex + 1; + } + } + + return validJSONStrings; +}; + +const parseData = (data: string) => { + const res = findValidJSONStrings(data); + return res; +}; + +export const createAxiosToken = () => { + const { CancelToken } = axios; + const source = CancelToken.source(); + return source; +}; + +export const sliceData = (data: string, loaded: number, loadedSize: any) => { + const result = data.slice(loadedSize.current); + loadedSize.current = loaded; + return result; +}; + +const useSetChunkRequest = () => { + const [requestReadyState, setRequestReadyState] = useState(3); + const axiosToken = useRef(null); + const requestConfig = useRef({}); + const loaded = useRef(0); + const total = useRef(0); + const totalCount = 5; + const retryCount = useRef(totalCount); + const particalConfig = { params: {}, contentType: 'json' }; + const timer = useRef(null); + const loadedSize = useRef(0); + + const reset = () => { + loaded.current = 0; + total.current = 0; + loadedSize.current = 0; + setRequestReadyState(3); + }; + + const resetResultSchema = (result: any[]) => { + return _.map(result, (data: any) => { + if (data.type === WatchEventType.DELETE) { + data.ids = _.map(data.items, (item: any) => item.id); + } + data.collection = data.items || []; + return data; + }); + }; + + const axiosChunkRequest = async ({ + url, + handler, + beforeReconnect, + params = {}, + contentType = 'json' + }: RequestConfig) => { + reset(); + axiosToken.current?.cancel?.(); + axiosToken.current = createAxiosToken(); + try { + const { request: requestData } = await request(url, { + params: { + ...params, + watch: true + }, + skipErrorHandler: true, + getResponse: true, + cancelToken: axiosToken.current.token, + + async onDownloadProgress(e) { + const { response, readyState } = e.currentTarget; + setRequestReadyState(readyState); + loaded.current = e.loaded || 0; + total.current = e.total || 0; + + let result = response; + let cres = ''; + if (contentType === 'json') { + const currentRes = sliceData(response, e.loaded, loadedSize); + result = parseData(currentRes); + result = resetResultSchema(result); + cres = currentRes; + } + + handler(result); + console.log('chunkrequest===', { + result, + url, + params, + raw: cres + }); + } + }); + setRequestReadyState(requestData?.readyState); + if (retryCount.current > 0) { + retryCount.current -= 1; + } + } catch (error) { + if (!axios.isCancel(error)) { + setRequestReadyState(4); + if (retryCount.current > 0) { + retryCount.current -= 1; + } + } + } + + return axiosToken.current; + }; + + const setChunkRequest = (config: RequestConfig) => { + requestConfig.current = { ...particalConfig, ...config }; + retryCount.current = totalCount; + clearTimeout(timer.current); + axiosChunkRequest(requestConfig.current); + return axiosToken.current; + }; + + useEffect(() => { + const handleUnload = () => { + axiosToken.current?.cancel?.(); + }; + + window.addEventListener('beforeunload', handleUnload); + + return () => { + reset(); + requestConfig.current.beforeReconnect = null; + axiosToken.current?.cancel?.(); + clearTimeout(timer.current); + window.removeEventListener('beforeunload', handleUnload); + }; + }, []); + + useEffect(() => { + if (requestReadyState === 4 && retryCount.current > 0) { + requestConfig.current.beforeReconnect?.(); + clearTimeout(timer.current); + timer.current = setTimeout( + () => { + axiosChunkRequest(requestConfig.current); + }, + 2 ** (totalCount - retryCount.current) * 1000 + ); + } + }, [requestReadyState]); + + return { + setChunkRequest + }; +}; + +export default useSetChunkRequest; diff --git a/src/hooks/use-request-token.ts b/src/hooks/use-request-token.ts new file mode 100644 index 00000000..f6864a6e --- /dev/null +++ b/src/hooks/use-request-token.ts @@ -0,0 +1,6 @@ +import axiso from 'axios'; + +export default function useRequestToken() { + const { source } = axiso.CancelToken; + return source; +} diff --git a/src/hooks/use-update-chunk-list.ts b/src/hooks/use-update-chunk-list.ts new file mode 100644 index 00000000..7b94e191 --- /dev/null +++ b/src/hooks/use-update-chunk-list.ts @@ -0,0 +1,79 @@ +import { WatchEventType } from '@/config'; +import _ from 'lodash'; + +interface ChunkedCollection { + ids: string[]; + collection: any[]; + type: string; +} +// Only used to update lists without nested state +export function useUpdateChunkedList( + dataList: { id: string | number }[], + options: { + setDataList: (args: any) => void; + callback?: (args: any) => void; + filterFun?: (args: any) => boolean; + mapFun?: (args: any) => any; + computedID?: (d: object) => string; + } +) { + const updateChunkedList = (data: ChunkedCollection) => { + let collections = data?.collection || []; + if (options?.computedID) { + collections = _.map(collections, (item: any) => { + item.id = options?.computedID?.(item); + return item; + }); + } + if (options?.filterFun) { + collections = _.filter(data?.collection, options?.filterFun); + } + if (options?.mapFun) { + collections = _.map(data?.collection, options?.mapFun); + } + const ids = data?.ids || []; + // CREATE + if (data?.type === WatchEventType.CREATE) { + _.each(collections, (item: any) => { + const updateIndex = _.findIndex( + dataList, + (sItem: any) => sItem.id === item.id + ); + if (updateIndex === -1) { + const updateItem = _.cloneDeep(item); + const list = _.concat(updateItem, dataList); + options.setDataList(list); + } + }); + } + // DELETE + if (data?.type === WatchEventType.DELETE) { + const list = _.filter(dataList, (item: any) => { + return !_.find(ids, (id: any) => id === item.id); + }); + options.setDataList(list); + } + // UPDATE + if (data?.type === WatchEventType.UPDATE) { + _.each(collections, (item: any) => { + const updateIndex = _.findIndex( + dataList, + (sItem: any) => sItem.id === item.id + ); + if (updateIndex > -1) { + const updateItem = _.cloneDeep(item); + dataList[updateIndex] = updateItem; + } + options.setDataList(dataList); + }); + } + if (options?.callback) { + options?.callback(dataList); + } + }; + return { + updateChunkedList + }; +} + +export default useUpdateChunkedList; diff --git a/src/pages/llmodels/apis/index.ts b/src/pages/llmodels/apis/index.ts index 12ff2d49..667a5db6 100644 --- a/src/pages/llmodels/apis/index.ts +++ b/src/pages/llmodels/apis/index.ts @@ -12,11 +12,13 @@ export const MODEL_INSTANCE_API = '/model_instances'; // ===================== Models ===================== export async function queryModelsList( - params: Global.Pagination & { query?: string } + params: Global.Pagination & { query?: string }, + options?: any ) { return request>(`${MODELS_API}`, { methos: 'GET', - params + params, + ...options }); } @@ -112,3 +114,12 @@ export async function callHuggingfaceQuickSearch(params: any) { params }); } + +export async function queryHuggingfaceModelFiles(params: any) { + return request( + `https://huggingface.co/openbmb/MiniCPM-Llama3-V-2_5-gguf/tree/main`, + { + method: 'GET' + } + ); +} diff --git a/src/pages/llmodels/index.tsx b/src/pages/llmodels/index.tsx index a21b56c2..adaf9328 100644 --- a/src/pages/llmodels/index.tsx +++ b/src/pages/llmodels/index.tsx @@ -5,8 +5,12 @@ import SealColumn from '@/components/seal-table/components/seal-column'; import StatusTag from '@/components/status-tag'; import { PageAction } from '@/config'; import type { PageActionType } from '@/config/types'; +import useSetChunkRequest, { + createAxiosToken +} from '@/hooks/use-chunk-request'; import useTableRowSelection from '@/hooks/use-table-row-selection'; import useTableSort from '@/hooks/use-table-sort'; +import useUpdateChunkedList from '@/hooks/use-update-chunk-list'; import { DeleteOutlined, FieldTimeOutlined, @@ -30,8 +34,9 @@ import { } from 'antd'; import dayjs from 'dayjs'; import _ from 'lodash'; -import { useEffect, useState } from 'react'; +import { useEffect, useRef, useState } from 'react'; import { + MODELS_API, createModel, createModelInstance, deleteModel, @@ -50,6 +55,7 @@ const Models: React.FC = () => { const access = useAccess(); const intl = useIntl(); const navigate = useNavigate(); + const { setChunkRequest } = useSetChunkRequest(); const rowSelection = useTableRowSelection(); const { sortOrder, setSortOrder } = useTableSort({ defaultSortOrder: 'descend' @@ -63,19 +69,30 @@ const Models: React.FC = () => { const [action, setAction] = useState(PageAction.CREATE); const [title, setTitle] = useState(''); const [dataSource, setDataSource] = useState([]); + const timer = useRef(); + let axiosToken = createAxiosToken(); const [queryParams, setQueryParams] = useState({ page: 1, perPage: 10, query: '' }); + // request data + + const { updateChunkedList } = useUpdateChunkedList(dataSource, { + setDataList: setDataSource + }); - const fetchData = async () => { - setLoading(true); + const fetchData = async (polling?: boolean) => { + axiosToken?.cancel?.(); + axiosToken = createAxiosToken(); + setLoading(!polling); try { const params = { ..._.pickBy(queryParams, (val: any) => !!val) }; - const res = await queryModelsList(params); + const res = await queryModelsList(params, { + cancelToken: axiosToken.token + }); console.log('res=======', res); setDataSource(res.items); setTotal(res.pagination.total); @@ -85,6 +102,15 @@ const Models: React.FC = () => { setLoading(false); } }; + + // update data by polling + const fetchDataByPolling = () => { + clearInterval(timer.current); + timer.current = setInterval(() => { + fetchData(true); + }, 3000); + }; + const handleShowSizeChange = (page: number, size: number) => { console.log(page, size); setQueryParams({ @@ -106,7 +132,38 @@ const Models: React.FC = () => { setSortOrder(sorter.order); }; + const handleFilter = () => { + fetchData(); + }; + + const updateHandler = (list: any) => { + _.each(list, (data: any) => { + updateChunkedList(data); + }); + if (!dataSource.length) { + handleFilter(); + } + }; + + const createModelsChunkRequest = () => { + try { + setChunkRequest({ + url: MODELS_API, + params: { + ..._.pickBy( + _.omit(queryParams, ['page', 'perPage']), + (val: any) => !!val + ) + }, + handler: updateHandler + }); + } catch (error) { + // ignore + } + }; + const handleSearch = (e: any) => { + console.log('request=========='); fetchData(); }; @@ -230,6 +287,17 @@ const Models: React.FC = () => { return data.items || []; }; + useEffect(() => { + fetchData(); + }, [queryParams]); + + useEffect(() => { + fetchDataByPolling(); + return () => { + clearInterval(timer.current); + }; + }, []); + const renderChildren = (list: any) => { return ( @@ -239,6 +307,10 @@ const Models: React.FC = () => { key={`${item.id}`} onMouseEnter={() => handleOnMouseEnter(item.id, index)} onMouseLeave={handleOnMouseLeave} + style={{ borderRadius: 'var(--ant-table-header-border-radius)' }} + className={ + item.download_progress !== 100 ? 'skeleton-loading' : '' + } > @@ -296,12 +368,6 @@ const Models: React.FC = () => { ); }; - // request data - - useEffect(() => { - fetchData(); - }, [queryParams]); - return ( <> { rowKey="id" expandable={true} onChange={handleTableChange} + pollingChildren={true} loadChildren={getModelInstances} renderChildren={renderChildren} pagination={{