From fed1c8b22e6d1c7d6044a18d883c46a818d0d17c Mon Sep 17 00:00:00 2001 From: Asuka109 Date: Fri, 2 Feb 2024 16:14:19 +0800 Subject: [PATCH 01/11] feat(devtools): add new tab `client/routes/doctor` to show overview of rsdoctor (#5361) --- .../src/components/Card/Indicate.module.scss | 8 + .../client/src/components/Card/Indicate.tsx | 35 +++ .../client/src/components/Card/index.ts | 1 + .../client/routes/doctor/page.module.scss | 76 ++++++ .../src/entries/client/routes/doctor/page.tsx | 139 ++++++++++ .../client/routes/doctor/rsdoctor-large.png | Bin 0 -> 212800 bytes .../src/entries/client/routes/doctor/state.ts | 12 + .../client/routes/overview/page.module.scss | 9 - .../entries/client/routes/overview/page.tsx | 24 +- .../src/entries/client/routes/state.tsx | 7 + packages/devtools/kit/src/node.ts | 1 + packages/devtools/kit/src/rsdoctor.ts | 66 +++++ packages/devtools/kit/src/runtime.ts | 1 + packages/devtools/kit/src/server.ts | 10 + packages/devtools/plugin/src/rpc/index.ts | 34 ++- pnpm-lock.yaml | 254 +++++++++++++++++- tests/integration/devtools/modern.config.ts | 8 +- tests/integration/devtools/package.json | 5 +- 18 files changed, 647 insertions(+), 43 deletions(-) create mode 100644 packages/devtools/client/src/components/Card/Indicate.module.scss create mode 100644 packages/devtools/client/src/components/Card/Indicate.tsx create mode 100644 packages/devtools/client/src/components/Card/index.ts create mode 100644 packages/devtools/client/src/entries/client/routes/doctor/page.module.scss create mode 100644 packages/devtools/client/src/entries/client/routes/doctor/page.tsx create mode 100644 packages/devtools/client/src/entries/client/routes/doctor/rsdoctor-large.png create mode 100644 packages/devtools/client/src/entries/client/routes/doctor/state.ts create mode 100644 packages/devtools/kit/src/rsdoctor.ts diff --git a/packages/devtools/client/src/components/Card/Indicate.module.scss b/packages/devtools/client/src/components/Card/Indicate.module.scss new file mode 100644 index 000000000000..08cfc156efd2 --- /dev/null +++ b/packages/devtools/client/src/components/Card/Indicate.module.scss @@ -0,0 +1,8 @@ +.indicate-card { + border-radius: var(--radius-5); + box-shadow: var(--shadow-4); + padding: var(--space-5); + :global(.dark) & { + background-color: var(--gray-1); + } +} diff --git a/packages/devtools/client/src/components/Card/Indicate.tsx b/packages/devtools/client/src/components/Card/Indicate.tsx new file mode 100644 index 000000000000..25be8691694d --- /dev/null +++ b/packages/devtools/client/src/components/Card/Indicate.tsx @@ -0,0 +1,35 @@ +import { FC } from 'react'; +import clsx from 'clsx'; +import { Box, Flex } from '@radix-ui/themes'; +import type { BoxProps } from '@radix-ui/themes/dist/cjs/components/box'; +import type { FlexProps } from '@radix-ui/themes/dist/cjs/components/flex'; +import styles from './Indicate.module.scss'; + +export type IndicateCardProps = BoxProps & React.RefAttributes; + +const Card: FC = ({ children, className, ...props }) => { + return ( + + {children} + + ); +}; + +Card.displayName = 'IndicateCard'; + +const Column: FC = props => ( + +); + +Column.displayName = 'IndicateCard.Column'; + +export const IndicateCard = Object.assign(Card, { + Column, +}); diff --git a/packages/devtools/client/src/components/Card/index.ts b/packages/devtools/client/src/components/Card/index.ts new file mode 100644 index 000000000000..65cde4cb5201 --- /dev/null +++ b/packages/devtools/client/src/components/Card/index.ts @@ -0,0 +1 @@ +export * from './Indicate'; diff --git a/packages/devtools/client/src/entries/client/routes/doctor/page.module.scss b/packages/devtools/client/src/entries/client/routes/doctor/page.module.scss new file mode 100644 index 000000000000..b7d382ea3c9b --- /dev/null +++ b/packages/devtools/client/src/entries/client/routes/doctor/page.module.scss @@ -0,0 +1,76 @@ +.container { + max-width: 40rem; +} + +.primary-card { + flex: 4; + min-width: max-content; +} + +.info-card { + flex: 2; + min-width: max-content; +} + +.count-card { + flex: 1; + width: max-content; +} + +.compile-cost-card { + flex: 4; +} + +.logo { + width: var(--space-8); + opacity: 0.5; +} + +.count-text { + display: flex; + align-items: center; + gap: var(--space-1); +} + +.error-item { + display: flex; + align-items: center; + width: 100%; + gap: var(--space-1); + color: var(--gray-11); +} + +.text-truncation { + width: 100%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.cost-box { + min-width: var(--space-2); + + .cost-bar { + height: var(--space-1); + width: 100%; + border-radius: var(--radius-thumb); + } + + &:nth-child(odd) { + .cost-bar { + background-color: var(--red-9); + } + } + + &:nth-child(even) { + .cost-bar { + background-color: var(--orange-9); + } + } + + .cost-label { + word-break: keep-all; + display: block; + margin-bottom: var(--space-2); + } +} diff --git a/packages/devtools/client/src/entries/client/routes/doctor/page.tsx b/packages/devtools/client/src/entries/client/routes/doctor/page.tsx new file mode 100644 index 000000000000..35ba3bfe1454 --- /dev/null +++ b/packages/devtools/client/src/entries/client/routes/doctor/page.tsx @@ -0,0 +1,139 @@ +import { FC } from 'react'; +import { useSnapshot } from 'valtio'; +import { Box, Flex, Heading, Link, Text } from '@radix-ui/themes'; +import { + HiLink, + HiMiniArchiveBox, + HiMiniExclamationCircle, + HiMiniInboxStack, + HiMiniRectangleStack, + HiMiniScale, +} from 'react-icons/hi2'; +import _ from 'lodash'; +import clsx from 'clsx'; +import logo from './rsdoctor-large.png'; +import { $doctor } from './state'; +import styles from './page.module.scss'; +import { IndicateCard } from '@/components/Card'; + +const Page: FC = () => { + const doctor = useSnapshot($doctor); + const costs = _(doctor.summary.costs) + .sortBy(['startAt', 'name', 'costs']) + .sortedUniqBy('name') + .cloneDeep(); + + for (const cost of costs) { + if (cost.name === 'bootstrap->beforeCompile') { + cost.name = 'prepare'; + } else if (cost.name === 'beforeCompile->afterCompile') { + cost.name = 'compile'; + } else if (cost.name === 'afterCompile->done') { + cost.name = 'optimize'; + } + } + + const errors = _.groupBy(doctor.errors, 'description'); + + return ( + + + + + Rsdoctor + + + + + Click to open panel with complete features. + + + + + + + Visit our website + + + + rsdoctor.dev + + + + + + + + + + 114 MB + + + {doctor.numModules} modules + + + {doctor.numPackages} packages + + + {doctor.numChunks} chunks + + + + + + Compile Overall + + {costs.map(cost => ( + + + {_.startCase(cost.name)} ({cost.costs}ms) + + + + ))} + + + + + + + Found {_.size(errors)} {_.size(errors) > 1 ? 'errors' : 'error'} + + {Object.entries(errors).map(([desc, errs]) => ( + + {' '} + + {desc} + + {errs.length > 1 && ( + + (x{errs.length}) + + )} + + ))} + + + + + ); +}; + +export default Page; diff --git a/packages/devtools/client/src/entries/client/routes/doctor/rsdoctor-large.png b/packages/devtools/client/src/entries/client/routes/doctor/rsdoctor-large.png new file mode 100644 index 0000000000000000000000000000000000000000..1656dad727a942d7619091cd79de1b43da6891ff GIT binary patch literal 212800 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�WQG^jKOYaz>8sy-kRmo5B8nn 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 literal 0 HcmV?d00001 diff --git a/packages/devtools/client/src/entries/client/routes/doctor/state.ts b/packages/devtools/client/src/entries/client/routes/doctor/state.ts new file mode 100644 index 000000000000..3c93ce395d2d --- /dev/null +++ b/packages/devtools/client/src/entries/client/routes/doctor/state.ts @@ -0,0 +1,12 @@ +import { proxy } from 'valtio'; +import { $server } from '../state'; + +const _request = $server.then(server => server.remote.getDoctorOverview()); + +export const $doctor = proxy({ + errors: _request.then(res => res.errors), + numChunks: _request.then(res => res.numChunks), + numModules: _request.then(res => res.numModules), + numPackages: _request.then(res => res.numPackages), + summary: _request.then(res => res.summary), +}); diff --git a/packages/devtools/client/src/entries/client/routes/overview/page.module.scss b/packages/devtools/client/src/entries/client/routes/overview/page.module.scss index 9f6f4c9cc64a..88a70ae242f0 100644 --- a/packages/devtools/client/src/entries/client/routes/overview/page.module.scss +++ b/packages/devtools/client/src/entries/client/routes/overview/page.module.scss @@ -10,15 +10,6 @@ } } -.indicate-card { - border-radius: var(--radius-6); - box-shadow: var(--shadow-4); - padding: var(--space-5); - :global(.dark) & { - background-color: var(--gray-1); - } -} - .primary-card { flex: 4; min-width: max-content; diff --git a/packages/devtools/client/src/entries/client/routes/overview/page.tsx b/packages/devtools/client/src/entries/client/routes/overview/page.tsx index d5bc9a4320f1..d56f2fb1bcd8 100644 --- a/packages/devtools/client/src/entries/client/routes/overview/page.tsx +++ b/packages/devtools/client/src/entries/client/routes/overview/page.tsx @@ -1,6 +1,4 @@ import { Box, Flex, Kbd, Link, Text, Theme } from '@radix-ui/themes'; -import type { BoxProps } from '@radix-ui/themes/dist/cjs/components/box'; -import { clsx } from 'clsx'; import React from 'react'; import { HiOutlineDocumentText, @@ -19,23 +17,15 @@ import { VERSION, } from '../state'; import srcHeading from './heading.svg'; +import '@/components/Card/Indicate.module.scss'; import styles from './page.module.scss'; +import { IndicateCard } from '@/components/Card'; const BUNDLER_PACKAGE_NAMES = { webpack: 'webpack', rspack: '@rspack/core', } as const; -const IndicateCard: React.FC< - BoxProps & React.RefAttributes -> = ({ children, className, ...props }) => { - return ( - - {children} - - ); -}; - const Page: React.FC = () => { const framework = useSnapshot($framework); const def = useSnapshot($definition); @@ -67,13 +57,7 @@ const Page: React.FC = () => { > - + @@ -81,7 +65,7 @@ const Page: React.FC = () => { Powered by {toolsPackage}@{toolsPackageVer} - + diff --git a/packages/devtools/client/src/entries/client/routes/state.tsx b/packages/devtools/client/src/entries/client/routes/state.tsx index 65dfd8d4aa83..66b7e897e09a 100644 --- a/packages/devtools/client/src/entries/client/routes/state.tsx +++ b/packages/devtools/client/src/entries/client/routes/state.tsx @@ -12,6 +12,7 @@ import { HiOutlineCube, HiOutlineHome, HiOutlineRectangleGroup, + HiMagnifyingGlass, } from 'react-icons/hi2'; import { RiReactjsLine } from 'react-icons/ri'; import { stringifyParsedURL } from 'ufo'; @@ -134,6 +135,12 @@ export const $tabs = proxy([ icon: ref(), view: { type: 'builtin', url: '/headers' }, }, + { + name: 'doctor', + title: 'Doctor', + icon: ref(), + view: { type: 'builtin', url: '/doctor' }, + }, ]); export const VERSION = process.env.PKG_VERSION; diff --git a/packages/devtools/kit/src/node.ts b/packages/devtools/kit/src/node.ts index 7c9f426f3dd9..4d979d87a802 100644 --- a/packages/devtools/kit/src/node.ts +++ b/packages/devtools/kit/src/node.ts @@ -4,3 +4,4 @@ export * from './mount-point'; export * from './utils'; export * from './constants'; export * from './channel'; +export * from './rsdoctor'; diff --git a/packages/devtools/kit/src/rsdoctor.ts b/packages/devtools/kit/src/rsdoctor.ts new file mode 100644 index 000000000000..58ec21befe37 --- /dev/null +++ b/packages/devtools/kit/src/rsdoctor.ts @@ -0,0 +1,66 @@ +import type { Manifest } from '@rsdoctor/types'; + +export async function fetchShardingFile(url: string): Promise { + const { Url } = await import('@rsdoctor/utils/common'); + if (Url.isUrl(url)) { + const resp = await fetch(url); + return resp.text(); + } + // json string + return url; +} + +export async function parseManifest( + json: Manifest.RsdoctorManifestWithShardingFiles, +): Promise { + const [utils, fs] = await Promise.all([ + import('@rsdoctor/utils/common'), + import('@modern-js/utils/fs-extra'), + ]); + + // try to load cloud data first + if ('cloudManifestUrl' in json && 'cloudData' in json) { + try { + const data = await utils.Manifest.fetchShardingFiles( + json.data, + fetchShardingFile, + ); + return { ...json, data }; + } catch (err) { + console.error(err); + } + } + // fallback to load local data. + const data = await utils.Manifest.fetchShardingFiles(json.data, url => + fs.readFile(url, 'utf-8'), + ); + + return { ...json, data }; +} + +const MANIFEST_DIRS = ['.rsdoctor', '.web-doctor']; + +const MANIFEST_NAME = 'manifest.json'; + +/** + * @throws {Error} Cannot find manifest.json in ${rootPath} + */ +export async function findManifest( + dirname: string, + silent = false, +): Promise { + const [fs, path] = await Promise.all([import('fs'), import('path')]); + + for (const dir of MANIFEST_DIRS) { + const manifestPath = path.resolve(dirname, dir, MANIFEST_NAME); + if (fs.existsSync(manifestPath)) { + return manifestPath; + } + } + + if (silent) { + return ''; + } else { + throw new Error(`Cannot find manifest.json in ${dirname}`); + } +} diff --git a/packages/devtools/kit/src/runtime.ts b/packages/devtools/kit/src/runtime.ts index 2fea9a625fbe..1822327aa619 100644 --- a/packages/devtools/kit/src/runtime.ts +++ b/packages/devtools/kit/src/runtime.ts @@ -4,3 +4,4 @@ export * from './mount-point'; export * from './utils'; export * from './constants'; export * from './channel'; +export type * from './rsdoctor'; diff --git a/packages/devtools/kit/src/server.ts b/packages/devtools/kit/src/server.ts index 83b28c74ee71..e1d28753d2f5 100644 --- a/packages/devtools/kit/src/server.ts +++ b/packages/devtools/kit/src/server.ts @@ -10,6 +10,7 @@ import type { } from '@modern-js/uni-builder'; import { NormalizedConfig } from '@modern-js/core'; import { RouteLegacy, NestedRouteForCli, PageRoute } from '@modern-js/types'; +import type { Manifest } from '@rsdoctor/types'; import type { ClientDefinition } from './client'; export type BuilderContext = RsbuildContext; @@ -40,6 +41,14 @@ export type FileSystemRoutes = | RouteLegacy[] | (NestedRouteForCli | PageRoute)[]; +export interface DoctorManifestOverview { + numModules: number; + numChunks: number; + numPackages: number; + summary: Manifest.RsdoctorManifest['data']['summary']; + errors: Manifest.RsdoctorManifest['data']['errors']; +} + export interface ServerFunctions { getFrameworkConfig: () => Promise; getTransformedFrameworkConfig: () => Promise; @@ -53,5 +62,6 @@ export interface ServerFunctions { getDependencies: () => Promise>; getCompileTimeCost: () => Promise; getClientDefinition: () => Promise; + getDoctorOverview: () => Promise; echo: (content: string) => string; } diff --git a/packages/devtools/plugin/src/rpc/index.ts b/packages/devtools/plugin/src/rpc/index.ts index be240cce8e1e..6724df3ce53c 100644 --- a/packages/devtools/plugin/src/rpc/index.ts +++ b/packages/devtools/plugin/src/rpc/index.ts @@ -7,6 +7,8 @@ import { type FileSystemRoutes, type NormalizedBuilderConfig, type ServerFunctions, + findManifest, + parseManifest, } from '@modern-js/devtools-kit/node'; import type { JsonValue, PartialDeep } from 'type-fest'; import { createBirpc, BirpcOptions } from 'birpc'; @@ -143,6 +145,19 @@ export const setupClientConnection = async ( Object.assign(ret.announcement, def.announcement); return ret; }, + async getDoctorOverview() { + const ctx = api.useAppContext(); + const manifestPath = await findManifest(ctx.distDirectory); + const json = await parseManifest(require(manifestPath)); + const data = { + numModules: json.data.moduleGraph.modules.length, + numChunks: json.data.chunkGraph.chunks.length, + numPackages: json.data.packageGraph.packages.length, + summary: json.data.summary, + errors: json.data.errors, + }; + return data; + }, echo(content) { return content; }, @@ -187,20 +202,25 @@ export const setupClientConnection = async ( ); }); - const modifyBundlerConfig = - api.context.bundlerType === 'webpack' - ? api.modifyWebpackConfig - : api.modifyRspackConfig; const expectBundlerNum = _.castArray(api.context.targets).length; const bundlerConfigs: JsonValue[] = []; - modifyBundlerConfig(config => { - bundlerConfigs.push(config as JsonValue); + const handleBundlerConfig = (config: JsonValue) => { + bundlerConfigs.push(config); if (bundlerConfigs.length >= expectBundlerNum) { deferred.bundler.config.resolved.resolve( _.cloneDeep(bundlerConfigs) as any, ); } - }); + }; + if (api.context.bundlerType === 'webpack') { + api.modifyWebpackConfig(config => { + handleBundlerConfig(config as JsonValue); + }); + } else { + api.modifyRspackConfig(config => { + handleBundlerConfig(config as JsonValue); + }); + } api.onBeforeCreateCompiler(({ bundlerConfigs }) => { deferred.bundler.config.transformed.resolve( diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8b567c8e05ce..6a81a660356d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6825,6 +6825,9 @@ importers: '@modern-js/plugin-devtools': specifier: workspace:* version: link:../../../packages/devtools/plugin + '@rsdoctor/rspack-plugin': + specifier: ^0.1.0 + version: 0.1.0(esbuild@0.17.19) '@types/jest': specifier: ^29 version: 29.2.6 @@ -12196,7 +12199,7 @@ packages: dependencies: '@modern-js/utils': 2.39.2 '@swc/helpers': 0.5.1 - axios: 1.6.0 + axios: 1.6.7 tar: 6.2.0 transitivePeerDependencies: - debug @@ -14638,6 +14641,108 @@ packages: - webpack-cli dev: false + /@rsdoctor/client@0.1.0: + resolution: {integrity: sha512-IT2yoEWRWmdc1gPYTycImxARARutlm4NszjY+75qUMA3TQtnmPuLYHR1RJPWmgIggR6rjLqUyS7KJtDS/LU2oA==} + dev: true + + /@rsdoctor/core@0.1.0(esbuild@0.17.19): + resolution: {integrity: sha512-wUfg/gtUA1CMBVjLOazH+lMRqTZMa2nHlxKaw49221896rUZDikdsA4iwYnPcIaWrfkg9gEbRqfPeWvUNz0ejA==} + dependencies: + '@rsdoctor/graph': 0.1.0(esbuild@0.17.19) + '@rsdoctor/sdk': 0.1.0(esbuild@0.17.19) + '@rsdoctor/types': 0.1.0(@swc/helpers@0.5.3)(esbuild@0.17.19) + '@rsdoctor/utils': 0.1.0(@swc/helpers@0.5.3)(esbuild@0.17.19) + '@rspack/core': 0.5.1(@swc/helpers@0.5.3) + axios: 1.6.7 + bytes: 3.1.2 + enhanced-resolve: 5.12.0 + fs-extra: 11.2.0 + loader-utils: 2.0.4 + lodash: 4.17.21 + path-browserify: 1.0.1 + semver: 7.5.4 + source-map: 0.7.4 + webpack-bundle-analyzer: 4.9.1 + transitivePeerDependencies: + - '@swc/core' + - '@swc/helpers' + - bufferutil + - debug + - esbuild + - supports-color + - uglify-js + - utf-8-validate + - webpack-cli + dev: true + + /@rsdoctor/graph@0.1.0(esbuild@0.17.19): + resolution: {integrity: sha512-BT4yM+yajBMA+rrD83OG6JK9nfMmR9B5XP8YgK/BbuPBOfflAwtmAsUnp2s0zwlz8z+E+16gFa++SwqoUgNPBA==} + dependencies: + '@rsdoctor/types': 0.1.0(@swc/helpers@0.5.3)(esbuild@0.17.19) + '@rsdoctor/utils': 0.1.0(@swc/helpers@0.5.3)(esbuild@0.17.19) + lodash: 4.17.21 + socket.io: 4.7.2 + source-map: 0.7.4 + transitivePeerDependencies: + - '@swc/core' + - '@swc/helpers' + - bufferutil + - esbuild + - supports-color + - uglify-js + - utf-8-validate + - webpack-cli + dev: true + + /@rsdoctor/rspack-plugin@0.1.0(esbuild@0.17.19): + resolution: {integrity: sha512-CD3gM6vlv+7NL5qo6qsDfctQpNfjCe84r8U1SlYoQ8wTj+ixoXCMXdaZm71X5A9WqLPE/vhSNiyj0RUsv3IUtg==} + dependencies: + '@rsdoctor/core': 0.1.0(esbuild@0.17.19) + '@rsdoctor/graph': 0.1.0(esbuild@0.17.19) + '@rsdoctor/sdk': 0.1.0(esbuild@0.17.19) + '@rspack/core': 0.5.1(@swc/helpers@0.5.3) + loader-utils: 2.0.4 + lodash: 4.17.21 + transitivePeerDependencies: + - '@swc/core' + - '@swc/helpers' + - bufferutil + - debug + - esbuild + - supports-color + - uglify-js + - utf-8-validate + - webpack-cli + dev: true + + /@rsdoctor/sdk@0.1.0(esbuild@0.17.19): + resolution: {integrity: sha512-Eov7KfK0yHbAlhjOCFU7HgGCLF+cexJ/MQ3VaYPTPfJyuNbcS1Qo9+40u053JO5TERHSG6R63jdZMyyDXxyd5w==} + dependencies: + '@rsdoctor/client': 0.1.0 + '@rsdoctor/graph': 0.1.0(esbuild@0.17.19) + '@rsdoctor/types': 0.1.0(@swc/helpers@0.5.3)(esbuild@0.17.19) + '@rsdoctor/utils': 0.1.0(@swc/helpers@0.5.3)(esbuild@0.17.19) + body-parser: 1.20.1 + cors: 2.8.5 + dayjs: 1.11.6 + ip: 1.1.8 + lodash: 4.17.21 + open: 8.4.0 + serve-static: 1.15.0 + socket.io: 4.7.2 + source-map: 0.7.4 + tapable: 2.2.1 + transitivePeerDependencies: + - '@swc/core' + - '@swc/helpers' + - bufferutil + - esbuild + - supports-color + - uglify-js + - utf-8-validate + - webpack-cli + dev: true + /@rsdoctor/types@0.1.0(@swc/helpers@0.5.3)(esbuild@0.17.19): resolution: {integrity: sha512-1aFC75rjvWiK5C4jjYIyHrK7ynkm4Ks1SJByTt1ugIEgTmhku2Ywmzrk+jO67FiZTHbAO2oac1qCJRO9+zAsUw==} dependencies: @@ -15358,6 +15463,10 @@ packages: dependencies: '@sinonjs/commons': 2.0.0 + /@socket.io/component-emitter@3.1.0: + resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} + dev: true + /@stitches/core@1.2.8: resolution: {integrity: sha512-Gfkvwk9o9kE9r9XNBmJRfV8zONvXThnm1tcuojL04Uy5uRyqg93DC83lDebl0rocZCfKSjUv+fWYtMQmEDJldg==} dev: false @@ -16447,7 +16556,6 @@ packages: /@types/cookie@0.4.1: resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} - dev: false /@types/cookie@0.5.1: resolution: {integrity: sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==} @@ -16466,6 +16574,12 @@ packages: '@types/node': 18.11.17 dev: true + /@types/cors@2.8.17: + resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} + dependencies: + '@types/node': 18.11.17 + dev: true + /@types/cross-spawn@6.0.2: resolution: {integrity: sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw==} dependencies: @@ -18203,7 +18317,7 @@ packages: /axios@0.27.2: resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} dependencies: - follow-redirects: 1.15.1 + follow-redirects: 1.15.5 form-data: 4.0.0 transitivePeerDependencies: - debug @@ -18218,6 +18332,15 @@ packages: transitivePeerDependencies: - debug + /axios@1.6.7: + resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} + dependencies: + follow-redirects: 1.15.5 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + /b-tween@0.3.3: resolution: {integrity: sha512-oEHegcRpA7fAuc9KC4nktucuZn2aS8htymCPcP3qkEGPqiBH+GfqtqoG2l7LxHngg6O0HFM7hOeOYExl1Oz4ZA==} @@ -18464,6 +18587,11 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + /base64id@2.0.0: + resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} + engines: {node: ^4.5.0 || >= 5.9} + dev: true + /basic-auth@1.0.0: resolution: {integrity: sha512-qzxS7/bW/LSiKZzdZw3isPjiVmzXbJLM3ImZZ62WMR3oJQAyqy094Nnb0TA2ZZm65xB7nu0acfTQ99z7wwCDCw==} dev: false @@ -18532,6 +18660,26 @@ packages: transitivePeerDependencies: - supports-color + /body-parser@1.20.1: + resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.4 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.1 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /body-scroll-lock@4.0.0-beta.0: resolution: {integrity: sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==} dev: true @@ -19473,7 +19621,6 @@ packages: /cookie@0.4.2: resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} engines: {node: '>= 0.6'} - dev: false /cookie@0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} @@ -19532,6 +19679,14 @@ packages: /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + /cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + dev: true + /cosmiconfig-typescript-loader@4.3.0(@types/node@18.11.17)(cosmiconfig@8.1.3)(ts-node@10.9.2)(typescript@5.3.3): resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} engines: {node: '>=12', npm: '>=6'} @@ -19987,6 +20142,10 @@ packages: /dayjs@1.11.3: resolution: {integrity: sha512-xxwlswWOlGhzgQ4TKzASQkUhqERI3egRNqgV4ScR8wlANA/A9tZ7miXa44vTTKEq5l7vWoL5G57bG3zA+Kow0A==} + /dayjs@1.11.6: + resolution: {integrity: sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ==} + dev: true + /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -20549,6 +20708,31 @@ packages: objectorarray: 1.0.5 dev: false + /engine.io-parser@5.2.1: + resolution: {integrity: sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==} + engines: {node: '>=10.0.0'} + dev: true + + /engine.io@6.5.4: + resolution: {integrity: sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==} + engines: {node: '>=10.2.0'} + dependencies: + '@types/cookie': 0.4.1 + '@types/cors': 2.8.17 + '@types/node': 18.11.17 + accepts: 1.3.8 + base64id: 2.0.0 + cookie: 0.4.2 + cors: 2.8.5 + debug: 4.3.4(supports-color@9.3.1) + engine.io-parser: 5.2.1 + ws: 8.11.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + /enhanced-resolve@5.12.0: resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} engines: {node: '>=10.13.0'} @@ -22050,6 +22234,15 @@ packages: debug: optional: true + /follow-redirects@1.15.5: + resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: @@ -23425,6 +23618,10 @@ packages: engines: {node: '>=4'} dev: false + /ip@1.1.8: + resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} + dev: true + /ip@2.0.0: resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} dev: false @@ -30687,6 +30884,42 @@ packages: resolution: {integrity: sha512-YMN2SdbrNjA4OWzpMUe7sZzUvvfEKl2JToyBLfFJMK+EpkU4bJEAkePqYE3YjZtgdLCoUaK0Lo84MjM8UqF38w==} dev: false + /socket.io-adapter@2.5.2: + resolution: {integrity: sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==} + dependencies: + ws: 8.11.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} + dependencies: + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.4(supports-color@9.3.1) + transitivePeerDependencies: + - supports-color + dev: true + + /socket.io@4.7.2: + resolution: {integrity: sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==} + engines: {node: '>=10.2.0'} + dependencies: + accepts: 1.3.8 + base64id: 2.0.0 + cors: 2.8.5 + debug: 4.3.4(supports-color@9.3.1) + engine.io: 6.5.4 + socket.io-adapter: 2.5.2 + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + /sockx@0.2.0: resolution: {integrity: sha512-vVCmnzhVCKRp5bu+uJmqbYoocX5qpC96PRiij0HzyEvk9N0E2ZVpuR/ffHweijAcWDBEHA0bYzZdkR1jUSiOcg==} engines: {node: '>=0.10.0'} @@ -33531,6 +33764,19 @@ packages: optional: true dev: true + /ws@8.11.0: + resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + /ws@8.13.0: resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} diff --git a/tests/integration/devtools/modern.config.ts b/tests/integration/devtools/modern.config.ts index 92a3353d3f19..9973a1d67ec0 100644 --- a/tests/integration/devtools/modern.config.ts +++ b/tests/integration/devtools/modern.config.ts @@ -1,5 +1,8 @@ import { devtoolsPlugin } from '@modern-js/plugin-devtools'; import { defineConfig, appTools } from '@modern-js/app-tools'; +import { RsdoctorRspackPlugin } from '@rsdoctor/rspack-plugin'; + +const disableClientServer = !process.env.DOCTOR_SERVER; export default defineConfig({ runtime: { @@ -19,6 +22,9 @@ export default defineConfig({ }, tools: { devServer: {}, + rspack(config, { appendPlugins }) { + appendPlugins(new RsdoctorRspackPlugin({ disableClientServer })); + }, }, - plugins: [appTools(), devtoolsPlugin()], + plugins: [appTools({ bundler: 'experimental-rspack' }), devtoolsPlugin()], }); diff --git a/tests/integration/devtools/package.json b/tests/integration/devtools/package.json index 8411b04c66dc..5004bde31eae 100644 --- a/tests/integration/devtools/package.json +++ b/tests/integration/devtools/package.json @@ -15,10 +15,11 @@ "devDependencies": { "@modern-js/app-tools": "workspace:*", "@modern-js/plugin-devtools": "workspace:*", - "@types/react": "^18", - "@types/react-dom": "^18", + "@rsdoctor/rspack-plugin": "^0.1.0", "@types/jest": "^29", "@types/node": "^14", + "@types/react": "^18", + "@types/react-dom": "^18", "typescript": "^5" }, "browserslist": {} From 50e957f67a59af541543db29c1d7a9e1d8187919 Mon Sep 17 00:00:00 2001 From: Asuka109 Date: Sun, 4 Feb 2024 22:43:39 +0800 Subject: [PATCH 02/11] feat(devtools): use subset of Noto Sans for the logo and headings (#5364) --- .../src/assets/NotoSans-latin-subset.woff2 | Bin 0 -> 38364 bytes .../client/routes/doctor/page.module.scss | 6 ++++++ .../src/entries/client/routes/doctor/page.tsx | 4 +++- .../entries/client/routes/overview/heading.svg | 12 ------------ .../client/routes/overview/page.module.scss | 6 ++++++ .../src/entries/client/routes/overview/page.tsx | 7 ++++--- packages/devtools/client/src/styles/fonts.scss | 11 +++++++++++ packages/devtools/client/src/styles/theme.scss | 1 + 8 files changed, 31 insertions(+), 16 deletions(-) create mode 100644 packages/devtools/client/src/assets/NotoSans-latin-subset.woff2 delete mode 100644 packages/devtools/client/src/entries/client/routes/overview/heading.svg create mode 100644 packages/devtools/client/src/styles/fonts.scss diff --git a/packages/devtools/client/src/assets/NotoSans-latin-subset.woff2 b/packages/devtools/client/src/assets/NotoSans-latin-subset.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..d2f454384d4d34ebd48b0b9730a6473700df95c2 GIT binary patch literal 38364 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 IdhL}%6Wsy^s{jB1 literal 0 HcmV?d00001 diff --git a/packages/devtools/client/src/entries/client/routes/doctor/page.module.scss b/packages/devtools/client/src/entries/client/routes/doctor/page.module.scss index b7d382ea3c9b..c98b92c03032 100644 --- a/packages/devtools/client/src/entries/client/routes/doctor/page.module.scss +++ b/packages/devtools/client/src/entries/client/routes/doctor/page.module.scss @@ -74,3 +74,9 @@ margin-bottom: var(--space-2); } } + +.heading { + font-family: 'NotoSans'; + font-weight: 900; + font-size: var(--font-size-7); +} diff --git a/packages/devtools/client/src/entries/client/routes/doctor/page.tsx b/packages/devtools/client/src/entries/client/routes/doctor/page.tsx index 35ba3bfe1454..866b80cbb54e 100644 --- a/packages/devtools/client/src/entries/client/routes/doctor/page.tsx +++ b/packages/devtools/client/src/entries/client/routes/doctor/page.tsx @@ -46,7 +46,9 @@ const Page: FC = () => { > - Rsdoctor + + Rsdoctor + diff --git a/packages/devtools/client/src/entries/client/routes/overview/heading.svg b/packages/devtools/client/src/entries/client/routes/overview/heading.svg deleted file mode 100644 index c25179e14745..000000000000 --- a/packages/devtools/client/src/entries/client/routes/overview/heading.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/devtools/client/src/entries/client/routes/overview/page.module.scss b/packages/devtools/client/src/entries/client/routes/overview/page.module.scss index 88a70ae242f0..3454ecacb4ee 100644 --- a/packages/devtools/client/src/entries/client/routes/overview/page.module.scss +++ b/packages/devtools/client/src/entries/client/routes/overview/page.module.scss @@ -68,3 +68,9 @@ background-color: var(--red-9); } } + +.heading { + font-family: 'NotoSans'; + font-weight: 900; + font-size: var(--font-size-7); +} diff --git a/packages/devtools/client/src/entries/client/routes/overview/page.tsx b/packages/devtools/client/src/entries/client/routes/overview/page.tsx index d56f2fb1bcd8..83688991e336 100644 --- a/packages/devtools/client/src/entries/client/routes/overview/page.tsx +++ b/packages/devtools/client/src/entries/client/routes/overview/page.tsx @@ -1,4 +1,4 @@ -import { Box, Flex, Kbd, Link, Text, Theme } from '@radix-ui/themes'; +import { Box, Flex, Kbd, Link, Text, Theme, Heading } from '@radix-ui/themes'; import React from 'react'; import { HiOutlineDocumentText, @@ -16,7 +16,6 @@ import { $perf, VERSION, } from '../state'; -import srcHeading from './heading.svg'; import '@/components/Card/Indicate.module.scss'; import styles from './page.module.scss'; import { IndicateCard } from '@/components/Card'; @@ -58,7 +57,9 @@ const Page: React.FC = () => { - + + DevTools + diff --git a/packages/devtools/client/src/styles/fonts.scss b/packages/devtools/client/src/styles/fonts.scss new file mode 100644 index 000000000000..e8ea4fad20f9 --- /dev/null +++ b/packages/devtools/client/src/styles/fonts.scss @@ -0,0 +1,11 @@ +/* + * This subset is modified from the Noto Sans font, + * which is distributed under the Open Font License. + * You can learn more about it at the following link. + * https://openfontlicense.org/ + * https://fonts.google.com/noto/specimen/Noto+Sans + */ +@font-face { + font-family: 'NotoSans'; + src: url('@/assets/NotoSans-latin-subset.woff2'); +} diff --git a/packages/devtools/client/src/styles/theme.scss b/packages/devtools/client/src/styles/theme.scss index 0c53f57d61c0..8d986f5c6766 100644 --- a/packages/devtools/client/src/styles/theme.scss +++ b/packages/devtools/client/src/styles/theme.scss @@ -1,5 +1,6 @@ @import '@radix-ui/themes/styles.css'; @import './breakpoints.scss'; +@import './fonts.scss'; :root { --color-page-background: var(--gray-2) !important; From 51636ee63b74971ae9b07c3c8dcee39370ad17bc Mon Sep 17 00:00:00 2001 From: Asuka109 Date: Tue, 6 Feb 2024 14:28:41 +0800 Subject: [PATCH 03/11] feat(devtools): styling doctor tab of devtools (#5369) --- packages/devtools/client/modern.config.ts | 16 +++ .../client/routes/doctor/layout.config.ts | 5 + .../client/routes/doctor/page.module.scss | 21 ++- .../src/entries/client/routes/doctor/page.tsx | 129 ++++++++++++------ .../client/routes/overview/page.module.scss | 6 +- 5 files changed, 132 insertions(+), 45 deletions(-) create mode 100644 packages/devtools/client/src/entries/client/routes/doctor/layout.config.ts diff --git a/packages/devtools/client/modern.config.ts b/packages/devtools/client/modern.config.ts index e2459b0c811e..1b3ffc94d7d3 100644 --- a/packages/devtools/client/modern.config.ts +++ b/packages/devtools/client/modern.config.ts @@ -46,6 +46,22 @@ export default defineConfig<'rspack'>({ disableInlineRuntimeChunk: true, disableSourceMap: process.env.NODE_ENV === 'production', }, + performance: { + chunkSplit: { + strategy: 'split-by-experience', + override: { + cacheGroups: { + components: { + test: /\/src\/components\/.*\.(scss|css)$/, + chunks: 'all', + name: 'components', + enforce: true, + priority: 9999, + }, + }, + }, + }, + }, tools: { postcss: (config, { addPlugins }) => { addPlugins(require('postcss-custom-media')); diff --git a/packages/devtools/client/src/entries/client/routes/doctor/layout.config.ts b/packages/devtools/client/src/entries/client/routes/doctor/layout.config.ts new file mode 100644 index 000000000000..559fec86039e --- /dev/null +++ b/packages/devtools/client/src/entries/client/routes/doctor/layout.config.ts @@ -0,0 +1,5 @@ +export const handle = { + breadcrumb: { + title: 'Doctor', + }, +}; diff --git a/packages/devtools/client/src/entries/client/routes/doctor/page.module.scss b/packages/devtools/client/src/entries/client/routes/doctor/page.module.scss index c98b92c03032..d4b89267e479 100644 --- a/packages/devtools/client/src/entries/client/routes/doctor/page.module.scss +++ b/packages/devtools/client/src/entries/client/routes/doctor/page.module.scss @@ -1,10 +1,29 @@ .container { max-width: 40rem; + width: 100%; } .primary-card { flex: 4; min-width: max-content; + background-color: var(--amber-9); + :global(.dark) & { + background-color: var(--amber-9); + } + button { + border: none; + border-radius: var(--radius-thumb); + color: var(--black-a8); + font-size: var(--font-size-1); + font-weight: var(--font-weight-regular); + padding: var(--space-1) var(--space-2); + overflow: hidden; + background-color: var(--black-a2); + &:hover, + &:active { + background-color: var(--black-a1); + } + } } .info-card { @@ -14,7 +33,7 @@ .count-card { flex: 1; - width: max-content; + min-width: max-content; } .compile-cost-card { diff --git a/packages/devtools/client/src/entries/client/routes/doctor/page.tsx b/packages/devtools/client/src/entries/client/routes/doctor/page.tsx index 866b80cbb54e..3f99f86d24f0 100644 --- a/packages/devtools/client/src/entries/client/routes/doctor/page.tsx +++ b/packages/devtools/client/src/entries/client/routes/doctor/page.tsx @@ -1,7 +1,16 @@ import { FC } from 'react'; import { useSnapshot } from 'valtio'; -import { Box, Flex, Heading, Link, Text } from '@radix-ui/themes'; import { + Box, + Flex, + Heading, + HoverCard, + Link, + Text, + Theme, +} from '@radix-ui/themes'; +import { + HiChartBar, HiLink, HiMiniArchiveBox, HiMiniExclamationCircle, @@ -16,22 +25,67 @@ import { $doctor } from './state'; import styles from './page.module.scss'; import { IndicateCard } from '@/components/Card'; +interface SummaryCostsData { + title: string; + name: string; + startAt: number; + costs: number; +} + +const WEBPACK_HOOKS_PREFIX = 'https://webpack.js.org/api/compiler-hooks'; + +const GraphBar: FC<{ cost: SummaryCostsData }> = ({ cost }) => { + const [leftHook, rightHook] = cost.name.split('->'); + const [leftHref, rightHref] = [leftHook, rightHook].map(hook => + ['bootstrap', 'done'].includes(hook) + ? undefined + : `${WEBPACK_HOOKS_PREFIX}#${hook.toLowerCase()}`, + ); + return ( + + + + + {_.startCase(cost.title)}({cost.costs}ms) + + + + + + + + {leftHook} + + ···{cost.costs}ms··· + + {rightHook} + + + + + ); +}; + const Page: FC = () => { const doctor = useSnapshot($doctor); - const costs = _(doctor.summary.costs) + const costs: SummaryCostsData[] = _(doctor.summary.costs) .sortBy(['startAt', 'name', 'costs']) .sortedUniqBy('name') - .cloneDeep(); - - for (const cost of costs) { - if (cost.name === 'bootstrap->beforeCompile') { - cost.name = 'prepare'; - } else if (cost.name === 'beforeCompile->afterCompile') { - cost.name = 'compile'; - } else if (cost.name === 'afterCompile->done') { - cost.name = 'optimize'; - } - } + .cloneDeep() + .map(cost => { + if (cost.name === 'bootstrap->beforeCompile') { + return { ...cost, title: 'prepare' }; + } else if (cost.name === 'beforeCompile->afterCompile') { + return { ...cost, title: 'compile' }; + } else if (cost.name === 'afterCompile->done') { + return { ...cost, title: 'optimize' }; + } + return { ...cost, title: 'unknown' }; + }); const errors = _.groupBy(doctor.errors, 'description'); @@ -45,20 +99,22 @@ const Page: FC = () => { className={styles.container} > - - - Rsdoctor - - - - - - Click to open panel with complete features. - - + + + + Rsdoctor + + + + + + Click to open panel with complete features. + + + - + Visit our website @@ -93,29 +149,22 @@ const Page: FC = () => { - Compile Overall + + + + Compile Overall + + {costs.map(cost => ( - - - {_.startCase(cost.name)} ({cost.costs}ms) - - - + ))} - + Found {_.size(errors)} {_.size(errors) > 1 ? 'errors' : 'error'} {Object.entries(errors).map(([desc, errs]) => ( diff --git a/packages/devtools/client/src/entries/client/routes/overview/page.module.scss b/packages/devtools/client/src/entries/client/routes/overview/page.module.scss index 3454ecacb4ee..20eef03404cc 100644 --- a/packages/devtools/client/src/entries/client/routes/overview/page.module.scss +++ b/packages/devtools/client/src/entries/client/routes/overview/page.module.scss @@ -1,5 +1,6 @@ .container { max-width: 40rem; + width: 100%; } .bottom-tip { @@ -13,10 +14,7 @@ .primary-card { flex: 4; min-width: max-content; - background-color: var(--blue-9); - :global(.dark) & { - background-color: var(--blue-10); - } + background-color: var(--blue-10); button { border: none; border-radius: var(--radius-thumb); From 3ce73bbba0adabde4394a93139e4c0987f5f1aaf Mon Sep 17 00:00:00 2001 From: Asuka109 Date: Tue, 6 Feb 2024 17:46:20 +0800 Subject: [PATCH 04/11] feat(devtools): refactor DevtoolsPuller into Puller to support common deep link (#5372) --- .../src/components/Devtools/Capsule.tsx | 24 +++++++++++++++--- .../client/src/components/Devtools/Puller.tsx | 25 ++++++------------- .../src/entries/client/routes/layout.tsx | 4 +-- .../client/routes/overview/page.module.scss | 3 +++ .../entries/client/routes/overview/page.tsx | 4 +-- .../client/routes/react/[tab]/page.tsx | 19 +++++++++++++- .../src/entries/client/routes/state.tsx | 4 +-- packages/devtools/client/src/types/rpc.ts | 2 +- 8 files changed, 57 insertions(+), 28 deletions(-) diff --git a/packages/devtools/client/src/components/Devtools/Capsule.tsx b/packages/devtools/client/src/components/Devtools/Capsule.tsx index 50228cf8016f..3943bdc76a8e 100644 --- a/packages/devtools/client/src/components/Devtools/Capsule.tsx +++ b/packages/devtools/client/src/components/Devtools/Capsule.tsx @@ -1,7 +1,7 @@ import { SetupClientParams } from '@modern-js/devtools-kit/runtime'; import { Flex, Theme } from '@radix-ui/themes'; import React, { useEffect, useState } from 'react'; -import { useEvent, useToggle } from 'react-use'; +import { useAsync, useEvent, useToggle } from 'react-use'; import { HiMiniCursorArrowRipple } from 'react-icons/hi2'; import { withQuery } from 'ufo'; import Visible from '../Visible'; @@ -13,9 +13,21 @@ import { $client, wallAgent } from '@/entries/mount/state'; import { pTimeout } from '@/utils/promise'; import { ReactDevtoolsWallListener } from '@/utils/react-devtools'; +const parseDeepLink = (url = window.location) => { + // Expected: #/__devtools/doctor + const { hash } = url; + // Parse pathname from hash. + const pathname = hash.match(/^#\/__devtools(.*)/)?.[1]; + // Check if match the expected pattern. + if (typeof pathname !== 'string') return null; + if (pathname === '') return '/'; + return pathname; +}; + export const DevtoolsCapsule: React.FC = props => { const logoSrc = props.def.assets.logo; - const [showDevtools, toggleDevtools] = useToggle(false); + const deepLink = parseDeepLink(); + const [showDevtools, toggleDevtools] = useToggle(Boolean(deepLink)); const [loadDevtools, setLoadDevtools] = useState(false); const src = withQuery(props.endpoint, { src: props.dataSource }); @@ -64,13 +76,19 @@ export const DevtoolsCapsule: React.FC = props => { setLoadDevtools(true); try { const client = await pTimeout($client, 10_000); - client.remote.pullUpReactInspector(); + client.remote.pullUp('/react/components#inspecting'); } catch (e) { console.error(e); document.documentElement.style.removeProperty('cursor'); } }; + useAsync(async () => { + if (!deepLink) return; + const client = await pTimeout($client, 10_000); + client.remote.pullUp(deepLink); + }, []); + return ( diff --git a/packages/devtools/client/src/components/Devtools/Puller.tsx b/packages/devtools/client/src/components/Devtools/Puller.tsx index d3110cccb074..b105097740e2 100644 --- a/packages/devtools/client/src/components/Devtools/Puller.tsx +++ b/packages/devtools/client/src/components/Devtools/Puller.tsx @@ -2,32 +2,23 @@ import React, { useEffect } from 'react'; import { useNavigate } from '@modern-js/runtime/router'; import { useThrowable } from '@/utils'; import { $mountPoint } from '@/entries/client/routes/state'; -import { wallAgent } from '@/entries/client/routes/react/state'; -let _intendPullUp = false; +let _intendPullUp = ''; $mountPoint.then(({ hooks }) => { - hooks.hookOnce('pullUpReactInspector', async () => { - _intendPullUp = true; + hooks.hookOnce('pullUp', async target => { + _intendPullUp = target; }); }); -export const DevtoolsPuller: React.FC = () => { +export const Puller: React.FC = () => { const navigate = useNavigate(); const mountPoint = useThrowable($mountPoint); - const handlePullUp = async () => { - navigate('/react'); - if (wallAgent.status === 'active') { - wallAgent.send('startInspectingNative', null); - } else { - wallAgent.hookOnce('active', () => { - wallAgent.send('startInspectingNative', null); - }); - } - }; useEffect(() => { - _intendPullUp && handlePullUp(); - mountPoint.hooks.hook('pullUpReactInspector', handlePullUp); + _intendPullUp && navigate(_intendPullUp); + mountPoint.hooks.hook('pullUp', async target => { + navigate(target); + }); }, []); return null; }; diff --git a/packages/devtools/client/src/entries/client/routes/layout.tsx b/packages/devtools/client/src/entries/client/routes/layout.tsx index a991298c5e7c..2283173d7580 100644 --- a/packages/devtools/client/src/entries/client/routes/layout.tsx +++ b/packages/devtools/client/src/entries/client/routes/layout.tsx @@ -16,7 +16,7 @@ import { $tabs } from './state'; import { Theme } from '@/components/Theme'; import { InternalTab } from '@/entries/client/types'; import { Breadcrumbs } from '@/components/Breadcrumbs'; -import { DevtoolsPuller } from '@/components/Devtools/Puller'; +import { Puller } from '@/components/Devtools/Puller'; const NavigateButton: React.FC<{ tab: InternalTab }> = ({ tab }) => { let to = ''; @@ -107,7 +107,7 @@ export default function Layout() { - + ); } diff --git a/packages/devtools/client/src/entries/client/routes/overview/page.module.scss b/packages/devtools/client/src/entries/client/routes/overview/page.module.scss index 20eef03404cc..747f659e9f05 100644 --- a/packages/devtools/client/src/entries/client/routes/overview/page.module.scss +++ b/packages/devtools/client/src/entries/client/routes/overview/page.module.scss @@ -15,6 +15,9 @@ flex: 4; min-width: max-content; background-color: var(--blue-10); + :global(.dark) & { + background-color: var(--blue-10); + } button { border: none; border-radius: var(--radius-thumb); diff --git a/packages/devtools/client/src/entries/client/routes/overview/page.tsx b/packages/devtools/client/src/entries/client/routes/overview/page.tsx index 83688991e336..c5a0af1bfabb 100644 --- a/packages/devtools/client/src/entries/client/routes/overview/page.tsx +++ b/packages/devtools/client/src/entries/client/routes/overview/page.tsx @@ -1,9 +1,9 @@ -import { Box, Flex, Kbd, Link, Text, Theme, Heading } from '@radix-ui/themes'; +import { Box, Flex, Heading, Kbd, Link, Text, Theme } from '@radix-ui/themes'; import React from 'react'; import { - HiOutlineDocumentText, HiLink, HiOutlineClock, + HiOutlineDocumentText, HiOutlinePuzzlePiece, } from 'react-icons/hi2'; import { parseURL } from 'ufo'; diff --git a/packages/devtools/client/src/entries/client/routes/react/[tab]/page.tsx b/packages/devtools/client/src/entries/client/routes/react/[tab]/page.tsx index 62338423f56c..d8c1f4c75a24 100644 --- a/packages/devtools/client/src/entries/client/routes/react/[tab]/page.tsx +++ b/packages/devtools/client/src/entries/client/routes/react/[tab]/page.tsx @@ -1,4 +1,4 @@ -import { useParams } from '@modern-js/runtime/router'; +import { useLocation, useNavigate, useParams } from '@modern-js/runtime/router'; import { Box, useThemeContext } from '@radix-ui/themes'; import React, { useEffect, useMemo } from 'react'; import { @@ -13,6 +13,8 @@ import { useThrowable } from '@/utils'; const Page: React.FC = () => { const params = useParams(); const ctx = useThemeContext(); + const location = useLocation(); + const navigate = useNavigate(); const browserTheme = ctx.appearance === 'light' ? 'light' : 'dark'; const mountPoint = useThrowable($mountPoint); @@ -20,6 +22,21 @@ const Page: React.FC = () => { mountPoint.remote.activateReactDevtools(); }, []); + useEffect(() => { + // 检查URL的hash部分 + if (location.hash === '#inspecting') { + const startInspecting = () => { + wallAgent.send('startInspectingNative', null); + navigate(location.pathname, { replace: true }); + }; + if (wallAgent.status === 'active') { + startInspecting(); + } else { + wallAgent.hookOnce('active', startInspecting); + } + } + }, [location, navigate]); + const InnerView = useMemo(() => { const bridge = createBridge(window.parent, wallAgent); const store = createStore(bridge); diff --git a/packages/devtools/client/src/entries/client/routes/state.tsx b/packages/devtools/client/src/entries/client/routes/state.tsx index 66b7e897e09a..8aaed21d0e8c 100644 --- a/packages/devtools/client/src/entries/client/routes/state.tsx +++ b/packages/devtools/client/src/entries/client/routes/state.tsx @@ -37,8 +37,8 @@ export const $mountPointChannel = MessagePortChannel.link( export const $mountPoint = $mountPointChannel.then(async channel => { const hooks = createHooks(); const definitions: ToMountPointFunctions = { - async pullUpReactInspector() { - await hooks.callHook('pullUpReactInspector'); + async pullUp(target) { + await hooks.callHook('pullUp', target); }, }; const remote = createBirpc( diff --git a/packages/devtools/client/src/types/rpc.ts b/packages/devtools/client/src/types/rpc.ts index e088576a7412..621d0b6f6ccb 100644 --- a/packages/devtools/client/src/types/rpc.ts +++ b/packages/devtools/client/src/types/rpc.ts @@ -1,5 +1,5 @@ export interface ClientFunctions { - pullUpReactInspector: () => Promise; + pullUp: (target: string) => Promise; } export interface MountPointFunctions { From aed3020d89b496e7b8682306e452007f5d48621f Mon Sep 17 00:00:00 2001 From: chenwenjie Date: Sun, 18 Feb 2024 16:08:35 +0800 Subject: [PATCH 05/11] chore: update pnpm lock file --- pnpm-lock.yaml | 744 +++++++++++++++++++++++++++++-------------------- 1 file changed, 442 insertions(+), 302 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6a81a660356d..77355a1d76cb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -91,8 +91,8 @@ importers: specifier: workspace:* version: link:../../toolkit/utils '@rsbuild/monorepo-utils': - specifier: 0.3.7 - version: 0.3.7(@swc/helpers@0.5.3) + specifier: 0.4.3 + version: 0.4.3(@swc/helpers@0.5.3) '@svgr/webpack': specifier: 8.1.0 version: 8.1.0(typescript@5.3.3) @@ -331,8 +331,8 @@ importers: specifier: 0.5.10 version: 0.5.10(react-refresh@0.14.0)(webpack@5.89.0) '@rsbuild/babel-preset': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) + specifier: 0.4.3 + version: 0.4.3 '@swc/helpers': specifier: 0.5.3 version: 0.5.3 @@ -649,56 +649,56 @@ importers: specifier: 0.5.10 version: 0.5.10(react-refresh@0.14.0)(webpack@5.89.0) '@rsbuild/babel-preset': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) + specifier: 0.4.3 + version: 0.4.3 '@rsbuild/core': - specifier: 0.3.7 - version: 0.3.7 + specifier: 0.4.3 + version: 0.4.3 '@rsbuild/plugin-assets-retry': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) + specifier: 0.4.3 + version: 0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3) '@rsbuild/plugin-babel': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) + specifier: 0.4.3 + version: 0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3) '@rsbuild/plugin-check-syntax': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) + specifier: 0.4.3 + version: 0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3) '@rsbuild/plugin-css-minimizer': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3)(esbuild@0.17.19)(webpack@5.89.0) + specifier: 0.4.3 + version: 0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3)(esbuild@0.17.19)(webpack@5.89.0) '@rsbuild/plugin-pug': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) + specifier: 0.4.3 + version: 0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3) '@rsbuild/plugin-react': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) + specifier: 0.4.3 + version: 0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3) '@rsbuild/plugin-rem': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) + specifier: 0.4.3 + version: 0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3) '@rsbuild/plugin-source-build': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) + specifier: 0.4.3 + version: 0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3) '@rsbuild/plugin-styled-components': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) + specifier: 0.4.3 + version: 0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3) '@rsbuild/plugin-svgr': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3)(typescript@5.3.3) + specifier: 0.4.3 + version: 0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3)(typescript@5.3.3) '@rsbuild/plugin-toml': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) + specifier: 0.4.3 + version: 0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3) '@rsbuild/plugin-type-check': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3)(typescript@5.3.3)(webpack@5.89.0) + specifier: 0.4.3 + version: 0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3)(typescript@5.3.3)(webpack@5.89.0) '@rsbuild/plugin-yaml': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) + specifier: 0.4.3 + version: 0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3) '@rsbuild/shared': - specifier: 0.3.7 - version: 0.3.7(@swc/helpers@0.5.3) + specifier: 0.4.3 + version: 0.4.3(@swc/helpers@0.5.3) '@rsbuild/webpack': - specifier: 0.3.7 - version: 0.3.7(@swc/helpers@0.5.3)(esbuild@0.17.19) + specifier: 0.4.3 + version: 0.4.3(@swc/helpers@0.5.3)(esbuild@0.17.19) '@swc/helpers': specifier: 0.5.3 version: 0.5.3 @@ -729,6 +729,9 @@ importers: postcss-custom-properties: specifier: 13.1.5 version: 13.1.5(postcss@8.4.31) + postcss-flexbugs-fixes: + specifier: 5.0.2 + version: 5.0.2(postcss@8.4.31) postcss-font-variant: specifier: 5.0.0 version: 5.0.0(postcss@8.4.31) @@ -767,8 +770,8 @@ importers: specifier: workspace:* version: link:../plugin-node-polyfill '@rsbuild/plugin-swc': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7) + specifier: 0.4.3 + version: 0.4.3(@rsbuild/core@0.4.3) '@scripts/build': specifier: workspace:* version: link:../../../scripts/build @@ -1244,8 +1247,8 @@ importers: specifier: workspace:* version: link:../../toolkit/utils '@rsbuild/plugin-swc': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7) + specifier: 0.4.3 + version: 0.4.3(@rsbuild/core@0.4.3) '@swc/helpers': specifier: 0.5.3 version: 0.5.3 @@ -1378,8 +1381,8 @@ importers: specifier: ^2.0.0 version: 2.0.0(@types/react-dom@18.0.6)(@types/react@18.0.21)(react-dom@18.2.0)(react@18.2.0) '@rsbuild/core': - specifier: 0.3.7 - version: 0.3.7 + specifier: 0.4.3 + version: 0.4.3 '@scripts/jest-config': specifier: workspace:* version: link:../../../scripts/jest-config @@ -1647,8 +1650,8 @@ importers: specifier: workspace:* version: link:../../review/tsconfig '@rspress/shared': - specifier: 1.11.1 - version: 1.11.1 + specifier: 1.11.2 + version: 1.11.2 '@types/node': specifier: ^14 version: 14.18.35 @@ -1659,8 +1662,8 @@ importers: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) rspress: - specifier: 1.11.1 - version: 1.11.1(typescript@5.3.3)(webpack@5.89.0) + specifier: 1.11.2 + version: 1.11.2(typescript@5.3.3)(webpack@5.89.0) packages/document/main-doc: dependencies: @@ -1675,8 +1678,8 @@ importers: specifier: workspace:* version: link:../../cli/doc-plugin-auto-sidebar '@rspress/shared': - specifier: 1.11.1 - version: 1.11.1 + specifier: 1.11.2 + version: 1.11.2 '@types/fs-extra': specifier: 9.0.13 version: 9.0.13 @@ -1699,8 +1702,8 @@ importers: specifier: ^18 version: 18.2.0(react@18.2.0) rspress: - specifier: 1.11.1 - version: 1.11.1(typescript@5.3.3)(webpack@5.89.0) + specifier: 1.11.2 + version: 1.11.2(typescript@5.3.3)(webpack@5.89.0) ts-node: specifier: ^10.9.1 version: 10.9.2(@types/node@16.11.68)(typescript@5.3.3) @@ -1714,8 +1717,8 @@ importers: specifier: workspace:* version: link:../../cli/doc-plugin-auto-sidebar '@rspress/shared': - specifier: 1.11.1 - version: 1.11.1 + specifier: 1.11.2 + version: 1.11.2 react: specifier: ^18.2.0 version: 18.2.0 @@ -1723,8 +1726,8 @@ importers: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) rspress: - specifier: 1.11.1 - version: 1.11.1(typescript@5.3.3)(webpack@5.89.0) + specifier: 1.11.2 + version: 1.11.2(typescript@5.3.3)(webpack@5.89.0) packages/generator/generator-cases: dependencies: @@ -3274,8 +3277,8 @@ importers: specifier: ^7.22.10 version: 7.22.10(@babel/eslint-parser@7.22.15)(eslint@8.28.0) '@rsbuild/babel-preset': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) + specifier: 0.4.3 + version: 0.4.3 '@typescript-eslint/eslint-plugin': specifier: ^5.59.0 version: 5.59.6(@typescript-eslint/parser@5.59.6)(eslint@8.28.0)(typescript@5.3.3) @@ -3685,8 +3688,8 @@ importers: specifier: workspace:* version: link:../../toolkit/utils '@rsbuild/babel-preset': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) + specifier: 0.4.3 + version: 0.4.3 '@swc/helpers': specifier: 0.5.3 version: 0.5.3 @@ -4448,8 +4451,8 @@ importers: specifier: workspace:* version: link:../core '@rsbuild/shared': - specifier: 0.3.7 - version: 0.3.7(@swc/helpers@0.5.3) + specifier: 0.4.3 + version: 0.4.3(@swc/helpers@0.5.3) '@scripts/build': specifier: workspace:* version: link:../../../scripts/build @@ -4520,8 +4523,8 @@ importers: specifier: workspace:* version: link:../../toolkit/utils '@rsbuild/babel-preset': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) + specifier: 0.4.3 + version: 0.4.3 '@swc/helpers': specifier: 0.5.3 version: 0.5.3 @@ -4614,14 +4617,14 @@ importers: specifier: workspace:* version: link:../../toolkit/utils '@rsbuild/plugin-esbuild': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) + specifier: 0.4.3 + version: 0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3) '@rsbuild/plugin-node-polyfill': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) + specifier: 0.4.3 + version: 0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3) '@rsbuild/shared': - specifier: 0.3.7 - version: 0.3.7(@swc/helpers@0.5.3) + specifier: 0.4.3 + version: 0.4.3(@swc/helpers@0.5.3) '@swc/helpers': specifier: 0.5.3 version: 0.5.3 @@ -4633,8 +4636,8 @@ importers: version: 0.17.19 devDependencies: '@rsbuild/plugin-swc': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7) + specifier: 0.4.3 + version: 0.4.3(@rsbuild/core@0.4.3) '@scripts/build': specifier: workspace:* version: link:../../../scripts/build @@ -5965,11 +5968,11 @@ importers: specifier: 1.33.0 version: 1.33.0 '@rsbuild/plugin-swc': - specifier: 0.3.7 - version: 0.3.7(@rsbuild/core@0.3.7) + specifier: 0.4.3 + version: 0.4.3(@rsbuild/core@0.4.3) '@rsbuild/shared': - specifier: 0.3.7 - version: 0.3.7(@swc/helpers@0.5.3) + specifier: 0.4.3 + version: 0.4.3(@swc/helpers@0.5.3) '@types/lodash': specifier: ^4.14.202 version: 4.14.202 @@ -14280,8 +14283,8 @@ packages: rollup: 3.29.4 dev: true - /@rsbuild/babel-preset@0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3): - resolution: {integrity: sha512-GeKUdQRZFNzfoRw0tDRyabtKsgj3SXP0tqE/2spmedUriP8W6m5ywbaWwsyiBV6VU/fMljnvk4xlGzcdSfDGgg==} + /@rsbuild/babel-preset@0.4.3: + resolution: {integrity: sha512-Zdo6wHv4zC8xx4HBE6uGHUWP9JPWSGg6/GThcLRASpIF/D4+N+epT4kF1VCRkrLPaGkdPCOmUQRzSB0PIcYdmA==} dependencies: '@babel/core': 7.23.6 '@babel/plugin-proposal-decorators': 7.23.6(@babel/core@7.23.6) @@ -14293,72 +14296,69 @@ packages: '@babel/preset-typescript': 7.23.2(@babel/core@7.23.6) '@babel/runtime': 7.23.2 '@babel/types': 7.23.6 - '@rsbuild/plugin-babel': 0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) - '@rsbuild/shared': 0.3.7(@swc/helpers@0.5.3) '@types/babel__core': 7.20.3 babel-plugin-dynamic-import-node: 2.3.3 core-js: 3.32.2 transitivePeerDependencies: - - '@rsbuild/core' - - '@swc/helpers' - supports-color dev: false - /@rsbuild/core@0.3.1: - resolution: {integrity: sha512-YrE9mPG1/NmUm9oEVCfSD1NS0wiLUqrfh9b26hXjdSLa5SkPJCpjkTY6ukSyJe+AhT7jmOWTNAAk/X2tD1FwIg==} + /@rsbuild/core@0.4.0: + resolution: {integrity: sha512-AHz7yMsR0OAsrU3Mqbx0dsBTspV+95ZXaOjjCJYFENSrXnftfcvWy+SOsyKgvz6gHIeOraNKXFuYwXSdd+ImuA==} engines: {node: '>=14.0.0'} hasBin: true dependencies: - '@rsbuild/shared': 0.3.1(@swc/helpers@0.5.3) - '@rspack/core': 0.5.0(@swc/helpers@0.5.3) + '@rsbuild/shared': 0.4.0(@swc/helpers@0.5.3) + '@rspack/core': 0.5.3(@swc/helpers@0.5.3) '@swc/helpers': 0.5.3 core-js: 3.32.2 html-webpack-plugin: /html-rspack-plugin@5.5.7 - postcss: 8.4.31 + postcss: 8.4.33 dev: true - /@rsbuild/core@0.3.7: - resolution: {integrity: sha512-3CECaT33x0m+tnnvdSMmNkRUn5D0hrd2lSBklmyBKwTASKT8xlhHNWOTFbrOlG4PByjPRCO4PoykZa5OOVvXMA==} + /@rsbuild/core@0.4.3: + resolution: {integrity: sha512-Kh6NtMhTX6TyHGRt1fKZpJlIIG7+C2r+SazcyYBjsryQ4/l2rLO/9l82x5xxwTv5IkaCz8wl0eFD1FCJXq137w==} engines: {node: '>=14.0.0'} hasBin: true dependencies: - '@rsbuild/shared': 0.3.7(@swc/helpers@0.5.3) - '@rspack/core': 0.5.0(@swc/helpers@0.5.3) + '@rsbuild/shared': 0.4.3(@swc/helpers@0.5.3) + '@rspack/core': 0.5.4(@swc/helpers@0.5.3) '@swc/helpers': 0.5.3 core-js: 3.32.2 - html-webpack-plugin: /html-rspack-plugin@5.5.7 + html-webpack-plugin: /html-rspack-plugin@5.6.0 postcss: 8.4.33 - /@rsbuild/monorepo-utils@0.3.7(@swc/helpers@0.5.3): - resolution: {integrity: sha512-sLsvvHTbAf3eaYR8wpc+88s0a13RR+WTa2SEML2BS1865BoHpkaURIDaVbLfIO3FWR6uap8WV5Eazl5fxwb3yQ==} + /@rsbuild/monorepo-utils@0.4.3(@swc/helpers@0.5.3): + resolution: {integrity: sha512-GNAfAZdnjKHuTgmvdv9MypjscsT69tO7g7L+g9E/p+RweoBE2Kou/A9IS2VhsH+aBFDwWM6vElVNj1UnnrOgjA==} dependencies: - '@rsbuild/shared': 0.3.7(@swc/helpers@0.5.3) + '@rsbuild/shared': 0.4.3(@swc/helpers@0.5.3) fast-glob: 3.3.2 transitivePeerDependencies: - '@swc/helpers' dev: false - /@rsbuild/plugin-assets-retry@0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3): - resolution: {integrity: sha512-7Gpj6m18XQf+8BdLF0s5QD7DLYyLac8j1EuOzktSjL+UNFmTBrvkP3csEPSFcr2/n28YbC3CR31ZUVhtBwy0YA==} + /@rsbuild/plugin-assets-retry@0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-iOnry9y3Pps/hvXE4NUequacSEOHE8k+rUDnOsUSQc8e8wqO4kCY6+TtKnYH5LGDhFq7RmLDnXAGfR3ZBpiXiw==} peerDependencies: - '@rsbuild/core': ^0.3.7 + '@rsbuild/core': ^0.4.3 dependencies: - '@rsbuild/core': 0.3.7 - '@rsbuild/shared': 0.3.7(@swc/helpers@0.5.3) + '@rsbuild/core': 0.4.3 + '@rsbuild/shared': 0.4.3(@swc/helpers@0.5.3) serialize-javascript: 6.0.1 transitivePeerDependencies: - '@swc/helpers' dev: false - /@rsbuild/plugin-babel@0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3): - resolution: {integrity: sha512-L4ORUCTmy3rv5elWrG04EyaOYea24BnRn5jp9aA0zHgraFVf/YAk430Cxa2qX7G8pWZtAHHRGE06ey3b1eCwBA==} + /@rsbuild/plugin-babel@0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-EhVtR66uvfG5N/TYVucpm7F3CfL9F4NzK2SUVhzqbo7vfru8GZUfKXWCROoI8F5YPBMAugXl2t+skMLagszQDw==} peerDependencies: - '@rsbuild/core': ^0.3.7 + '@rsbuild/core': ^0.4.3 dependencies: '@babel/core': 7.23.6 + '@babel/plugin-proposal-decorators': 7.23.6(@babel/core@7.23.6) '@babel/preset-typescript': 7.23.2(@babel/core@7.23.6) - '@rsbuild/core': 0.3.7 - '@rsbuild/shared': 0.3.7(@swc/helpers@0.5.3) + '@rsbuild/core': 0.4.3 + '@rsbuild/shared': 0.4.3(@swc/helpers@0.5.3) '@types/babel__core': 7.20.3 upath: 2.0.1 transitivePeerDependencies: @@ -14366,28 +14366,28 @@ packages: - supports-color dev: false - /@rsbuild/plugin-check-syntax@0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3): - resolution: {integrity: sha512-jh6b4zU0TjbYb/+n3Hco3rj61kEJ46qyOC3zQo06SO3hqQp6K+mwYAHZC48vWxWarYxknJw6YRk+ndEziW5doQ==} + /@rsbuild/plugin-check-syntax@0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-lOx2ajeGXv1eiYAu6TV86TG6noLm3WdIH4MusjkYIJ9Hr+Q9JL9nkdIpVM49YbYlpaCejJS4bvNkV//JFqjkrg==} peerDependencies: - '@rsbuild/core': ^0.3.7 + '@rsbuild/core': ^0.4.3 dependencies: - '@rsbuild/core': 0.3.7 - '@rsbuild/shared': 0.3.7(@swc/helpers@0.5.3) + '@rsbuild/core': 0.4.3 + '@rsbuild/shared': 0.4.3(@swc/helpers@0.5.3) acorn: 8.11.2 - caniuse-lite: 1.0.30001566 + caniuse-lite: 1.0.30001588 htmlparser2: 9.1.0 source-map: 0.7.4 transitivePeerDependencies: - '@swc/helpers' dev: false - /@rsbuild/plugin-css-minimizer@0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3)(esbuild@0.17.19)(webpack@5.89.0): - resolution: {integrity: sha512-vbc6h3QppxJFBhbDQ9UQ6IT4ilO0kixsIgVUh+xdcHPvnDeA2hGre6Df4sd5ijTdEvnT2mddS4/w/4uYLMsp3w==} + /@rsbuild/plugin-css-minimizer@0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3)(esbuild@0.17.19)(webpack@5.89.0): + resolution: {integrity: sha512-SJRWjOTmNmWTy0HHiQUkQ4wENJArkTZoaFJZTyOzRdP/UopdtqQ1PdfzOM9HdoS6aBEl5MvOOdv9DfKRBEspoA==} peerDependencies: - '@rsbuild/core': ^0.3.7 + '@rsbuild/core': ^0.4.3 dependencies: - '@rsbuild/core': 0.3.7 - '@rsbuild/shared': 0.3.7(@swc/helpers@0.5.3) + '@rsbuild/core': 0.4.3 + '@rsbuild/shared': 0.4.3(@swc/helpers@0.5.3) css-minimizer-webpack-plugin: 5.0.1(esbuild@0.17.19)(webpack@5.89.0) transitivePeerDependencies: - '@parcel/css' @@ -14400,13 +14400,13 @@ packages: - webpack dev: false - /@rsbuild/plugin-esbuild@0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3): - resolution: {integrity: sha512-hQE/Dzp6WV58yCIU/BvjBoZpFMFwZ1kE22BpgHM1vvzv2DT0g++3vyUUoucsLWbsJpxluWnt1wS1sj5h+/dx6g==} + /@rsbuild/plugin-esbuild@0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-e+D3SgKbE0tC5vAXa9CAB/SWDWyw2SQ/AnjbBDK0fH2Z+VzShGzewSXFOZSYwjwJ2wXZhOZjH7/CB/DSWH3sEw==} peerDependencies: - '@rsbuild/core': ^0.3.7 + '@rsbuild/core': ^0.4.3 dependencies: - '@rsbuild/core': 0.3.7 - '@rsbuild/shared': 0.3.7(@swc/helpers@0.5.3) + '@rsbuild/core': 0.4.3 + '@rsbuild/shared': 0.4.3(@swc/helpers@0.5.3) esbuild: 0.17.19 webpack: 5.89.0(esbuild@0.17.19) transitivePeerDependencies: @@ -14416,13 +14416,13 @@ packages: - webpack-cli dev: false - /@rsbuild/plugin-node-polyfill@0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3): - resolution: {integrity: sha512-duck7P6dJPCIiTzzSekieA26skDX5//ECy3UAkZNis78Qh13Wr2+DEHiQ5BrFyptssuDCtjoA5x+791BU5N51Q==} + /@rsbuild/plugin-node-polyfill@0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-abd0Wlp8XWHJ/xXfN2vzQrwZyTVQ9GAk7lWrqorfosKns1zeOfyFZ2g9vN7GrAtyo4HhodgBtaktWbu3Zx5XMQ==} peerDependencies: - '@rsbuild/core': ^0.3.7 + '@rsbuild/core': ^0.4.3 dependencies: - '@rsbuild/core': 0.3.7 - '@rsbuild/shared': 0.3.7(@swc/helpers@0.5.3) + '@rsbuild/core': 0.4.3 + '@rsbuild/shared': 0.4.3(@swc/helpers@0.5.3) assert: 2.1.0 browserify-zlib: 0.2.0 buffer: 5.7.1 @@ -14450,80 +14450,87 @@ packages: - '@swc/helpers' dev: false - /@rsbuild/plugin-pug@0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3): - resolution: {integrity: sha512-58r6gLsWN6SNqSV8+BpqDsOVn9LO0Vq51XMO4Q/ruSLJBdJEAw/o86XA4Ua36nKFJ7mn7rwxQewEbjd65dL1uQ==} + /@rsbuild/plugin-pug@0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-k5WbPrV6C6Mz/1zRGnbSGN83xR3rxc/hB0t6ZULuEWSZA2BrPiQbMDF/SCyJ/EHEIqErXTOoJJMd3U6xIvnv0g==} peerDependencies: - '@rsbuild/core': ^0.3.7 + '@rsbuild/core': ^0.4.3 dependencies: - '@rsbuild/core': 0.3.7 - '@rsbuild/shared': 0.3.7(@swc/helpers@0.5.3) + '@rsbuild/core': 0.4.3 + '@rsbuild/shared': 0.4.3(@swc/helpers@0.5.3) '@types/pug': 2.0.10 pug: 3.0.2 transitivePeerDependencies: - '@swc/helpers' dev: false - /@rsbuild/plugin-react@0.3.1: - resolution: {integrity: sha512-mHkJKIBpXqnlIXg1HWMkZ6LwfQtiqbTTRN8Ag9VlLlDq3AIQLWoiGOAg1PklUon+pdFHQu8/0WG4Yybf3ISMKA==} + /@rsbuild/plugin-react@0.4.0(@rsbuild/core@0.4.0): + resolution: {integrity: sha512-zbvNBLRynsL8u3rORHKU92bSPTb4BsTuX20qJyTV9fQ0OsO8T1PvnQoHkKLVNIrCZdiC8AZc3NU2UqbHzUIY7w==} + peerDependencies: + '@rsbuild/core': ^0.4.0 dependencies: - '@rsbuild/shared': 0.3.1(@swc/helpers@0.5.3) - '@rspack/plugin-react-refresh': 0.5.0(react-refresh@0.14.0) + '@rsbuild/core': 0.4.0 + '@rsbuild/shared': 0.4.0(@swc/helpers@0.5.3) + '@rspack/plugin-react-refresh': 0.5.3(react-refresh@0.14.0) react-refresh: 0.14.0 transitivePeerDependencies: - '@swc/helpers' dev: true - /@rsbuild/plugin-react@0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3): - resolution: {integrity: sha512-vKjVMZBHp1EEodVsPW5E9cOaA7UvnXxK7ACjWRvuRlMK54VUkYE/npzB2QAxXU3bKK2KiYOH78YYpiHyz1mkFQ==} + /@rsbuild/plugin-react@0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-6+ZXSn+gYHJxoYJi81llgNy9nma1HOMsHs87CwAgLrDXuvrr6tb62LZeVPOiQrNjkMC2kOsblgkEtTfsKkmJZQ==} peerDependencies: - '@rsbuild/core': ^0.3.7 + '@rsbuild/core': ^0.4.3 dependencies: - '@rsbuild/core': 0.3.7 - '@rsbuild/shared': 0.3.7(@swc/helpers@0.5.3) - '@rspack/plugin-react-refresh': 0.5.0(react-refresh@0.14.0) + '@rsbuild/core': 0.4.3 + '@rsbuild/shared': 0.4.3(@swc/helpers@0.5.3) + '@rspack/plugin-react-refresh': 0.5.4(react-refresh@0.14.0) react-refresh: 0.14.0 transitivePeerDependencies: - '@swc/helpers' - /@rsbuild/plugin-rem@0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3): - resolution: {integrity: sha512-72QsjLpDaIN4lA4KlgNVy9KLL1wvFEp9CNl69qtYmJLhFqSMlVBM8a+NEditw4gAokmYBL0abgxqkbEZd+pa2A==} + /@rsbuild/plugin-rem@0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-8gIteVzeSbKqi2xObwsOhMFWiWyrZRhAejv1sdSPHYvd0tofnwoImp67pqJnMvYR6SyIHfpBPw/VutS01UbA4g==} peerDependencies: - '@rsbuild/core': ^0.3.7 + '@rsbuild/core': ^0.4.3 dependencies: - '@rsbuild/core': 0.3.7 - '@rsbuild/shared': 0.3.7(@swc/helpers@0.5.3) + '@rsbuild/core': 0.4.3 + '@rsbuild/shared': 0.4.3(@swc/helpers@0.5.3) terser: 5.27.0 transitivePeerDependencies: - '@swc/helpers' dev: false - /@rsbuild/plugin-source-build@0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3): - resolution: {integrity: sha512-WtKgwDjpoxzSyuhwiVao86d/L9mDILfLXmNPQ4pHC3ZlJAwCMpQImyG3mfGR18q+V7svdUpdht8E58JcAeeA6A==} + /@rsbuild/plugin-source-build@0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-kTfzo19uhayiqfPLO1m1I51IqDFe4vTN3UKwIVJciphReh2MTNC69HQjWaBs5UTzhMvO2AzU1M9MRnsSzMw46A==} peerDependencies: - '@rsbuild/core': ^0.3.7 + '@rsbuild/core': ^0.4.3 dependencies: - '@rsbuild/core': 0.3.7 - '@rsbuild/monorepo-utils': 0.3.7(@swc/helpers@0.5.3) - '@rsbuild/shared': 0.3.7(@swc/helpers@0.5.3) + '@rsbuild/core': 0.4.3 + '@rsbuild/monorepo-utils': 0.4.3(@swc/helpers@0.5.3) + '@rsbuild/shared': 0.4.3(@swc/helpers@0.5.3) transitivePeerDependencies: - '@swc/helpers' dev: false - /@rsbuild/plugin-styled-components@0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3): - resolution: {integrity: sha512-HTdiTdHbkC7LOqZDoxpy0UhOWDUX72fYlse+AnaRUKEl+v95XnJaXKjbbFuhF6GKsXzKp/TlEkvoePTO1mz4qw==} + /@rsbuild/plugin-styled-components@0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-y7ufoKqKwT91cdXGGBZUM6rtPgHhwoFYsi1TgSyX+AESIt1aZeaLUFwyGGpilUi5vXnnr20q533g3ct1HCrnWg==} peerDependencies: - '@rsbuild/core': ^0.3.7 + '@rsbuild/core': ^0.4.3 dependencies: - '@rsbuild/core': 0.3.7 - '@rsbuild/shared': 0.3.7(@swc/helpers@0.5.3) + '@rsbuild/core': 0.4.3 + '@rsbuild/shared': 0.4.3(@swc/helpers@0.5.3) transitivePeerDependencies: - '@swc/helpers' dev: false - /@rsbuild/plugin-svgr@0.3.1(typescript@5.3.3): - resolution: {integrity: sha512-uzlfrymQmIXMmZ8PL4OaY83V8TNDSohh+hfGElcbgVSLBZ11+lZ9weQUv/rQqX0sCjQgc9xIt+4w3DEnuus7Yg==} + /@rsbuild/plugin-svgr@0.4.0(@rsbuild/core@0.4.0)(typescript@5.3.3): + resolution: {integrity: sha512-4LxjnzHNnXk3fz4Y5U+QmVY26KX7f8W8n8Pauxw1RHev5Xq9qBwRSPjs10IfA0gyy7xBKocA/O8kON8AeCbkyw==} + peerDependencies: + '@rsbuild/core': ^0.4.0 dependencies: - '@rsbuild/shared': 0.3.1(@swc/helpers@0.5.3) + '@rsbuild/core': 0.4.0 + '@rsbuild/plugin-react': 0.4.0(@rsbuild/core@0.4.0) + '@rsbuild/shared': 0.4.0(@swc/helpers@0.5.3) '@svgr/core': 8.1.0(typescript@5.3.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0) '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0)(typescript@5.3.3) @@ -14533,14 +14540,14 @@ packages: - typescript dev: true - /@rsbuild/plugin-svgr@0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3)(typescript@5.3.3): - resolution: {integrity: sha512-35jIEhV8uWRUmPEIsZn86fkjLrD3eCKniiij0ZpES8+1fC4zpXxz0b60S0S8zNhkVM+K3RtuFYYIyG6xv+hPCQ==} + /@rsbuild/plugin-svgr@0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3)(typescript@5.3.3): + resolution: {integrity: sha512-K0adEC+Fx1VRNaSnjS7C5CYI6vVVO/4aGSuVqhPCUAnSs2DxUzxUIH3NP4D2uTxAB1rNRiUE0Dqzj6YsSVErsA==} peerDependencies: - '@rsbuild/core': ^0.3.7 + '@rsbuild/core': ^0.4.3 dependencies: - '@rsbuild/core': 0.3.7 - '@rsbuild/plugin-react': 0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) - '@rsbuild/shared': 0.3.7(@swc/helpers@0.5.3) + '@rsbuild/core': 0.4.3 + '@rsbuild/plugin-react': 0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3) + '@rsbuild/shared': 0.4.3(@swc/helpers@0.5.3) '@svgr/core': 8.1.0(typescript@5.3.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0) '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0)(typescript@5.3.3) @@ -14550,37 +14557,37 @@ packages: - typescript dev: false - /@rsbuild/plugin-swc@0.3.7(@rsbuild/core@0.3.7): - resolution: {integrity: sha512-i7TNGlwXE0EVwekxcgoMadsejI6hEwoQM86DumsnBhaJ+/KYDmYl1wfH6X16XB0NnVNFG0nj4O3dPJATz9lz8Q==} + /@rsbuild/plugin-swc@0.4.3(@rsbuild/core@0.4.3): + resolution: {integrity: sha512-x+DNDt7IGbb/VUKTFVUSNtfm5iG+tlyN5QsjkFFjNi3YXRDY4exs06S/I2OKzsAJ4UPRLhrJpc7gRCEZmjMl8A==} peerDependencies: - '@rsbuild/core': ^0.3.7 + '@rsbuild/core': ^0.4.3 dependencies: '@modern-js/swc-plugins': 0.6.6(@swc/helpers@0.5.3) - '@rsbuild/core': 0.3.7 - '@rsbuild/plugin-react': 0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3) - '@rsbuild/shared': 0.3.7(@swc/helpers@0.5.3) + '@rsbuild/core': 0.4.3 + '@rsbuild/plugin-react': 0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3) + '@rsbuild/shared': 0.4.3(@swc/helpers@0.5.3) '@swc/helpers': 0.5.3 core-js: 3.32.2 lodash: 4.17.21 - /@rsbuild/plugin-toml@0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3): - resolution: {integrity: sha512-/aCYF2GkBeChvzt0ydsZ4+v1t0TQhOqi8kdu0M0SB+QtOH00qnE2uCkrD44XKgYO9fxpAYW06yJLTGq+gXYoxw==} + /@rsbuild/plugin-toml@0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-PO3pilVsiGrkKHkWqLwHH4lgdwFMEHnPaoZkxapMX0GeUkc0/2qe4Eq7mZrE11zuC5rj8gLw1Y5+4R/qSCXt+w==} peerDependencies: - '@rsbuild/core': ^0.3.7 + '@rsbuild/core': ^0.4.3 dependencies: - '@rsbuild/core': 0.3.7 - '@rsbuild/shared': 0.3.7(@swc/helpers@0.5.3) + '@rsbuild/core': 0.4.3 + '@rsbuild/shared': 0.4.3(@swc/helpers@0.5.3) transitivePeerDependencies: - '@swc/helpers' dev: false - /@rsbuild/plugin-type-check@0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3)(typescript@5.3.3)(webpack@5.89.0): - resolution: {integrity: sha512-8KPu56GTVTuyk9zz7xj23wmTqDltfRzRbhOrV8thaXicLGNd+uVd2Xf453pPnSp6xCNElXM7fU7gpY44HmJu6g==} + /@rsbuild/plugin-type-check@0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3)(typescript@5.3.3)(webpack@5.89.0): + resolution: {integrity: sha512-UzL8WEu7oyWmHMr16GdhpL+YXTLZdZTsiCAef/sqMUG35J4teQvVWXkt+aXgxsMkItEksa9rizm2le4M75bXSQ==} peerDependencies: - '@rsbuild/core': ^0.3.7 + '@rsbuild/core': ^0.4.3 dependencies: - '@rsbuild/core': 0.3.7 - '@rsbuild/shared': 0.3.7(@swc/helpers@0.5.3) + '@rsbuild/core': 0.4.3 + '@rsbuild/shared': 0.4.3(@swc/helpers@0.5.3) fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.3.3)(webpack@5.89.0) transitivePeerDependencies: - '@swc/helpers' @@ -14588,47 +14595,45 @@ packages: - webpack dev: false - /@rsbuild/plugin-yaml@0.3.7(@rsbuild/core@0.3.7)(@swc/helpers@0.5.3): - resolution: {integrity: sha512-/2BL0OfqLhzA6j0Wrowq/4lTXLyBTUHl/C4tkBKj58IV3V85zvfso6KDJa6put0lFH8wLFOMI+00UzrNo71ulA==} + /@rsbuild/plugin-yaml@0.4.3(@rsbuild/core@0.4.3)(@swc/helpers@0.5.3): + resolution: {integrity: sha512-svwTJ2TeG8xBM3PLGCtnJ2+lq/OrO4dYxh3qrMTWihKkuLgtcOzT29/S6NEqXFIaoVbJpmcRmYs0CwZIwZXOKQ==} peerDependencies: - '@rsbuild/core': ^0.3.7 + '@rsbuild/core': ^0.4.3 dependencies: - '@rsbuild/core': 0.3.7 - '@rsbuild/shared': 0.3.7(@swc/helpers@0.5.3) + '@rsbuild/core': 0.4.3 + '@rsbuild/shared': 0.4.3(@swc/helpers@0.5.3) transitivePeerDependencies: - '@swc/helpers' dev: false - /@rsbuild/shared@0.3.1(@swc/helpers@0.5.3): - resolution: {integrity: sha512-KXU9kYRUcZJx37qojQmmmy5XZEplPerITvWe5SU3vKUiTV2QymO+J4gIXYUF+XFyb+OyfdJkCDcSew6EyrLwWg==} + /@rsbuild/shared@0.4.0(@swc/helpers@0.5.3): + resolution: {integrity: sha512-TlElZikaX7GhnP1VtnjPuwpgOHmi+06dNk7mZLfPIEB0ksrKewCSedTFxktEa43rGrrGUz6oBAjuxWO8j/ytCA==} dependencies: - '@rspack/core': 0.5.0(@swc/helpers@0.5.3) - caniuse-lite: 1.0.30001566 - lodash: 4.17.21 - postcss: 8.4.31 + '@rspack/core': 0.5.3(@swc/helpers@0.5.3) + caniuse-lite: 1.0.30001588 + postcss: 8.4.33 transitivePeerDependencies: - '@swc/helpers' dev: true - /@rsbuild/shared@0.3.7(@swc/helpers@0.5.3): - resolution: {integrity: sha512-XY82H5CzymyuUC3zGxTWDgKEXWXiQnt1kmPQS1T1mS6jwo8SSwTcEub+E5vtpAOn6r1tNGGHZre+7EVJtF51nQ==} + /@rsbuild/shared@0.4.3(@swc/helpers@0.5.3): + resolution: {integrity: sha512-0BbYBexpyYUXucA2ML+NCtueMtyMTtU0lmVEBQS/Nagwc1j5mGVAg9H6WvBTADftDjBBQEFUrC4AsLY+s/slEQ==} dependencies: - '@rspack/core': 0.5.0(@swc/helpers@0.5.3) - caniuse-lite: 1.0.30001566 - lodash: 4.17.21 + '@rspack/core': 0.5.4(@swc/helpers@0.5.3) + caniuse-lite: 1.0.30001588 postcss: 8.4.33 transitivePeerDependencies: - '@swc/helpers' - /@rsbuild/webpack@0.3.7(@swc/helpers@0.5.3)(esbuild@0.17.19): - resolution: {integrity: sha512-GP/HSftBrxPI0l3VVZ8ZudD7oUgD8iL0PRtLbowy3fkSm9Ym9z86KuUHMKNqjBNXyigWdCVj2wbjRLULynlOzg==} + /@rsbuild/webpack@0.4.3(@swc/helpers@0.5.3)(esbuild@0.17.19): + resolution: {integrity: sha512-wSlqmOyVdbIlNw8G9F1g0xbJO9hqeWEZDOBSSBeReJ36k0bdUZQbm90+8hW7m23WV3pe3sHa105/a9R72IVJLQ==} dependencies: - '@rsbuild/core': 0.3.7 - '@rsbuild/shared': 0.3.7(@swc/helpers@0.5.3) + '@rsbuild/core': 0.4.3 + '@rsbuild/shared': 0.4.3(@swc/helpers@0.5.3) fast-glob: 3.3.2 globby: 11.1.0 - html-webpack-plugin: /html-rspack-plugin@5.5.7 - mini-css-extract-plugin: 2.7.7(webpack@5.89.0) + html-webpack-plugin: /html-rspack-plugin@5.6.0 + mini-css-extract-plugin: 2.8.0(webpack@5.89.0) postcss: 8.4.33 terser-webpack-plugin: 5.3.10(esbuild@0.17.19)(webpack@5.89.0) tsconfig-paths-webpack-plugin: 4.1.0 @@ -14797,21 +14802,29 @@ packages: dev: false optional: true - /@rspack/binding-darwin-arm64@0.5.0: - resolution: {integrity: sha512-zRx4efhn2eCjdhHt6avhdkKur6FZvYy1TgPhNKpWbTg7fnrvtNGzcVQCAOnPUUPkJjnss3veOhZlWJ3paX0EDQ==} + /@rspack/binding-darwin-arm64@0.5.1: + resolution: {integrity: sha512-Kc0b94ZN1ecUu2Gyj20kGLWzOrdJbeN1JUTMKZx6jlLa3m7uJ+FhRjnsqFmZ5kdK2zx722ejoKr7xkrl7hOkuw==} cpu: [arm64] os: [darwin] requiresBuild: true + dev: true optional: true - /@rspack/binding-darwin-arm64@0.5.1: - resolution: {integrity: sha512-Kc0b94ZN1ecUu2Gyj20kGLWzOrdJbeN1JUTMKZx6jlLa3m7uJ+FhRjnsqFmZ5kdK2zx722ejoKr7xkrl7hOkuw==} + /@rspack/binding-darwin-arm64@0.5.3: + resolution: {integrity: sha512-IgGpPtPwwlWkViTbrGBhywohXoGXwMZGZLPLR3tRZY4oPuSo41cwkPAhf2TZtBIfHGbITrmewsck853A4g7poA==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true + /@rspack/binding-darwin-arm64@0.5.4: + resolution: {integrity: sha512-MWTLMzrgWk5enKGfctVIhbU5WlpJbXpvUnHKzxSr4dclf+IeBIaXBEs1fwogrS87VdfWTOh+lndyzrozBnxMmQ==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + /@rspack/binding-darwin-x64@0.4.5: resolution: {integrity: sha512-K5HgE4nHwVWizCr2pBLA8N3LXfn1lQCSV5sR+6xQQrVdvRJ5zBhPMwjPOzP+AdmGhrD14zz1j9mktzCvA7FUtg==} cpu: [x64] @@ -14820,21 +14833,29 @@ packages: dev: false optional: true - /@rspack/binding-darwin-x64@0.5.0: - resolution: {integrity: sha512-d6SvBURfKow3WcKxTrjJPBkp+NLsuCPoIMaS8/bM4gHwgjVs2zuOsTQ9+l36dypOkjnu6QLkOIykTdiUKJ0eQg==} + /@rspack/binding-darwin-x64@0.5.1: + resolution: {integrity: sha512-iqt+3gKLBwXDsscOrwWTRrr4bTjKvNlOUIeuCIEgpvyvsq/Ez7mZl1hDpPhgqIih2X34zgFdiXuo31IsbXQWGQ==} cpu: [x64] os: [darwin] requiresBuild: true + dev: true optional: true - /@rspack/binding-darwin-x64@0.5.1: - resolution: {integrity: sha512-iqt+3gKLBwXDsscOrwWTRrr4bTjKvNlOUIeuCIEgpvyvsq/Ez7mZl1hDpPhgqIih2X34zgFdiXuo31IsbXQWGQ==} + /@rspack/binding-darwin-x64@0.5.3: + resolution: {integrity: sha512-95lDx4+QTmuGQ3Ilo1BhM22jGHxPAMDvQzBD/4zO1cBtmXrFQuaDVRoM0hwlZDLZwGMP1sSpD5F75kWKhkOTDw==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true + /@rspack/binding-darwin-x64@0.5.4: + resolution: {integrity: sha512-+8kvYjN9IllQSSzTrKp74Cf2efFNJZNMk6PWoOeakk43+Z1BgMgzLJTs/1xIDFhzylvLSMYSLO8AhbMMX48TCw==} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + /@rspack/binding-linux-arm64-gnu@0.4.5: resolution: {integrity: sha512-JvESc3imqKbqwal5WesxlV3ix8eIO/07XCj+pkaZWaf4nj/ui02NGtLaeLVxwc1fxHekdLc+ROQrxpdOLhQ1jw==} cpu: [arm64] @@ -14843,21 +14864,29 @@ packages: dev: false optional: true - /@rspack/binding-linux-arm64-gnu@0.5.0: - resolution: {integrity: sha512-97xFbF7RjJc2VvX+0Hvb7Jzsk+eEE8oEUcc5Dnb7OIwGZulWKk6cLNcRkNfmL/F9kk1QEKlUTNC/VQI7ljf2tA==} + /@rspack/binding-linux-arm64-gnu@0.5.1: + resolution: {integrity: sha512-H7DV7bJat2UVTVA9BkuXTAulmY1Ysn5X7KcfIVi3Vi34C1xJja2iA7MSqozFNvkm7XrJFcTMI0trwSel9mMnNw==} cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true - /@rspack/binding-linux-arm64-gnu@0.5.1: - resolution: {integrity: sha512-H7DV7bJat2UVTVA9BkuXTAulmY1Ysn5X7KcfIVi3Vi34C1xJja2iA7MSqozFNvkm7XrJFcTMI0trwSel9mMnNw==} + /@rspack/binding-linux-arm64-gnu@0.5.3: + resolution: {integrity: sha512-7ZcsDROYK01FWJ9Nv1Oso7gC3b3aP8FLzbZA7ZWFCPEuBoFmIvCIVqs6DSmmpZW3KSw+XoVMELuEJuTjDi869g==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true + /@rspack/binding-linux-arm64-gnu@0.5.4: + resolution: {integrity: sha512-mXtRKCblBT+H1KPWUfeJt6gQFGoMt+lnhk2POcoCeS1AxnxcTFpnci4BC4Ro5zKS2QWSdGdUMtc5GKlBmgwxvg==} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + /@rspack/binding-linux-arm64-musl@0.4.5: resolution: {integrity: sha512-ziYGYEoLsPEyC0pEAj5clU8XOFr3+r7IExm9/sq2gp+M1as/yTzouEuzO3D8kI0xVfub1WmiEktTBlgjS13CSA==} cpu: [arm64] @@ -14866,21 +14895,29 @@ packages: dev: false optional: true - /@rspack/binding-linux-arm64-musl@0.5.0: - resolution: {integrity: sha512-lk0IomCy276EoynmksoBwg0IcHvvVXuZPMeq7OgRPTvs33mdTExSzSTPtrGzx/D00bX1ybUqLQwJhcgGt6erPQ==} + /@rspack/binding-linux-arm64-musl@0.5.1: + resolution: {integrity: sha512-iRyskxvtY5QpBrkcB3nBZaErQQRRP5ActQ0qkmhHx82PUfmGgyE9Q6ww9G+CwZuOuLpd1TFQhg80TV7e2EW1uw==} cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true - /@rspack/binding-linux-arm64-musl@0.5.1: - resolution: {integrity: sha512-iRyskxvtY5QpBrkcB3nBZaErQQRRP5ActQ0qkmhHx82PUfmGgyE9Q6ww9G+CwZuOuLpd1TFQhg80TV7e2EW1uw==} + /@rspack/binding-linux-arm64-musl@0.5.3: + resolution: {integrity: sha512-IBfVGpycRrLbyCWzokzeFIfK+yII68w1WOx2iCoR+tPUKa3M7WAZjrbVB33PHxGKXeF+xX7Lzm50hi4uTK8L6g==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true + /@rspack/binding-linux-arm64-musl@0.5.4: + resolution: {integrity: sha512-P96R8yLT4BKtwYCtomIJE4uIGAh+5I8qLbrTrGamj/6N1D79GgwORW6CllCEnVU9l/Tjkdd+yMJkT9zoACa9gQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + /@rspack/binding-linux-x64-gnu@0.4.5: resolution: {integrity: sha512-9cXOIswpSZYhEXeuIWdsQNrgpjHTD4I3v0NPm75cL6cdBtJMHOa/qejO5mdTLzoDdE7waGZAb4uSMfrJOEkwqQ==} cpu: [x64] @@ -14889,21 +14926,29 @@ packages: dev: false optional: true - /@rspack/binding-linux-x64-gnu@0.5.0: - resolution: {integrity: sha512-r15ddpse0S/8wHtfL85uJrVotvPVIMnQX06KlXyGUSw1jWrjxV+NXFDJ4xXnHCvk/YV6lCFTotAssk4wJEE0Fw==} + /@rspack/binding-linux-x64-gnu@0.5.1: + resolution: {integrity: sha512-P047gkIshhSDNP2HRODJlYilJ+r5rh8G86wUmZmx5tnQMqYZZZYvvH0C+pOP9F23oprwsLIrR6v/nM5U7bMIVQ==} cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true - /@rspack/binding-linux-x64-gnu@0.5.1: - resolution: {integrity: sha512-P047gkIshhSDNP2HRODJlYilJ+r5rh8G86wUmZmx5tnQMqYZZZYvvH0C+pOP9F23oprwsLIrR6v/nM5U7bMIVQ==} + /@rspack/binding-linux-x64-gnu@0.5.3: + resolution: {integrity: sha512-EiVsp0yaGBmnMsS1U6Z5bitl2AjiVqFN3ArdIDZLlxgpVUHaR1ObXIkVqsX/VK5Jgytv1H7iOmtOnkOqyFmxPw==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true + /@rspack/binding-linux-x64-gnu@0.5.4: + resolution: {integrity: sha512-/EjM7CkALS7uUF0laVp+wtOICrX2sR5gy4liIYVHKDLu+b4PGRtEQvubrDxikkzPpOYRvF38R7OBMUOJBuBW7A==} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + /@rspack/binding-linux-x64-musl@0.4.5: resolution: {integrity: sha512-wClTj9mbVKprHIWsLEVJg+ZXT5slF93JsyAALIhAFkNMmn5z0B2NPD7+Oaii62edKMk2nS3dpoHu1JCLDmP0cw==} cpu: [x64] @@ -14912,21 +14957,29 @@ packages: dev: false optional: true - /@rspack/binding-linux-x64-musl@0.5.0: - resolution: {integrity: sha512-lB9Dn1bi4xyzEe6Bf/GQ7Ktlrq4Kmt1LHwN+t0m6iVYH3Vb/3g8uQGDSkwnjP8NmlAtldK1cmvRMhR7flUrgZA==} + /@rspack/binding-linux-x64-musl@0.5.1: + resolution: {integrity: sha512-frFHfBnEjeNNtg7OBvxDeMVtahb+ZreVrXjFp8ZMBCx7Qa9+CT1K8nUzDLQZ3wVc5shikZi1Ddts6h3BathRqA==} cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true - /@rspack/binding-linux-x64-musl@0.5.1: - resolution: {integrity: sha512-frFHfBnEjeNNtg7OBvxDeMVtahb+ZreVrXjFp8ZMBCx7Qa9+CT1K8nUzDLQZ3wVc5shikZi1Ddts6h3BathRqA==} + /@rspack/binding-linux-x64-musl@0.5.3: + resolution: {integrity: sha512-PZbmHZ/sFBC0W2vNNmMgeVORijAxhdkaU0QS95ltacO+bU8npcNb+01QgRzJovuhOfiT7HXDUmH7K0mrUqXpFg==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true + /@rspack/binding-linux-x64-musl@0.5.4: + resolution: {integrity: sha512-dMT9QW4IZ7IGzczsOmzdpGf84IzIecvitSwj7DnulRkxj3++IWLAo80+HDtgn+nPm+1gNVFb11wg5L9x+VjFXw==} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + /@rspack/binding-win32-arm64-msvc@0.4.5: resolution: {integrity: sha512-8LNITZqPMKO69nc8hwdcweBXcAS4yAL5W/kZ6zKeb6Ly+X5SBZk7l0WPL7lPMib/vHFkjJjp1buGhzymLU0bzA==} cpu: [arm64] @@ -14935,21 +14988,29 @@ packages: dev: false optional: true - /@rspack/binding-win32-arm64-msvc@0.5.0: - resolution: {integrity: sha512-aDoF13puU8LxST/qKZndtXzlJbnbnxY2Bxyj0fu7UDh8nHJD4A2HQfWRN6BZFHaVSqM6Bnli410dJrIWeTNhZQ==} + /@rspack/binding-win32-arm64-msvc@0.5.1: + resolution: {integrity: sha512-rGDS2QIPZIYGds1GWWTIBNzvnU72CjKWKKBNQx+skFywVvs50cZ1cB78Vj4wXWzAs2hS6NPTP65mrito//hvIQ==} cpu: [arm64] os: [win32] requiresBuild: true + dev: true optional: true - /@rspack/binding-win32-arm64-msvc@0.5.1: - resolution: {integrity: sha512-rGDS2QIPZIYGds1GWWTIBNzvnU72CjKWKKBNQx+skFywVvs50cZ1cB78Vj4wXWzAs2hS6NPTP65mrito//hvIQ==} + /@rspack/binding-win32-arm64-msvc@0.5.3: + resolution: {integrity: sha512-bP1tgwQuTe0YSVpe73qEPXdt2rZGUpCUG3nFW+Ve27CJtq6btLqdcnnNEx2cAKs12ArN4H36U+BXfwJDp9/DaQ==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true + /@rspack/binding-win32-arm64-msvc@0.5.4: + resolution: {integrity: sha512-SsnOqWRw5VQnbz/63wtKsoyj6lfUpQQZyFWfQAMsNt8suIauWI/kf3QLWL/vmBX5Q24Sq16Kl5cMIjxAIJQfiQ==} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + /@rspack/binding-win32-ia32-msvc@0.4.5: resolution: {integrity: sha512-dndiXygG1ZmSO3unuZ9Mc+7IvqBtFqwvjFZGKUdIcufFr2CjZDL/KR1zJGTmFIzwHKMV2hEH4cZpa2TwisXvGQ==} cpu: [ia32] @@ -14958,21 +15019,29 @@ packages: dev: false optional: true - /@rspack/binding-win32-ia32-msvc@0.5.0: - resolution: {integrity: sha512-EYGeH4YKX5v4gtTL8mBAWnsKSkF+clsKu0z1hgWgSV/vnntNlqJQZUCb5CMdg5VqadNm+lUNDYYHeHNa3+Jp3w==} + /@rspack/binding-win32-ia32-msvc@0.5.1: + resolution: {integrity: sha512-t7Cfz7V8y9DdlVd3XtUJduSXrmjst28+kqprCw9PecpOcdi0nnhmY23FjAGv7yTyhniLc4Kl3YJfk7lIHX8x9g==} cpu: [ia32] os: [win32] requiresBuild: true + dev: true optional: true - /@rspack/binding-win32-ia32-msvc@0.5.1: - resolution: {integrity: sha512-t7Cfz7V8y9DdlVd3XtUJduSXrmjst28+kqprCw9PecpOcdi0nnhmY23FjAGv7yTyhniLc4Kl3YJfk7lIHX8x9g==} + /@rspack/binding-win32-ia32-msvc@0.5.3: + resolution: {integrity: sha512-XKMNgkc5ScDKzt2xFQWD7ELefaEQtm9+1/7xhftDAxAC3AQELC0NqL5qAWpgSXEgVIjCW8r7xiwX5mqEEqqiuw==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true + /@rspack/binding-win32-ia32-msvc@0.5.4: + resolution: {integrity: sha512-xLlUHn712WhnWN40JeljQCiWBIRd/meMRKSEqTJJdZfNwozd4cZUbq5rxexX6HNjZvkwLACpATDotPVfCKPjbQ==} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + /@rspack/binding-win32-x64-msvc@0.4.5: resolution: {integrity: sha512-SEu8+pQsnGP7A0/XX5vawsccR825UCOzK5phJ8INSC7Mse8FKzkZpv2Af3PsHl2+N17M0PRgBxTghXR35PXkiw==} cpu: [x64] @@ -14981,21 +15050,29 @@ packages: dev: false optional: true - /@rspack/binding-win32-x64-msvc@0.5.0: - resolution: {integrity: sha512-RCECFW6otUrFiPbWQyOvLZOMNV/OL6AyAKMDbX9ejjk0TjLMrHjnhmI5X8EoA/SUc1/vEbgsJzDVLKTfn138cg==} + /@rspack/binding-win32-x64-msvc@0.5.1: + resolution: {integrity: sha512-7ruRf8oiK9u6Klwwdtcg96A4+QaJCUBd8qQOD0wcFF77Rr0JndZxngUWAU/MUKmy3VoibzFEyk019AVhCC4cXA==} cpu: [x64] os: [win32] requiresBuild: true + dev: true optional: true - /@rspack/binding-win32-x64-msvc@0.5.1: - resolution: {integrity: sha512-7ruRf8oiK9u6Klwwdtcg96A4+QaJCUBd8qQOD0wcFF77Rr0JndZxngUWAU/MUKmy3VoibzFEyk019AVhCC4cXA==} + /@rspack/binding-win32-x64-msvc@0.5.3: + resolution: {integrity: sha512-B0iosD3cTXErnlqnOawn4DqfrO2QaY135vKqBrbqTfm9Zr4ftbqvp39nL9Qot+1QuixZdYwwF/NqBvRoFd9nig==} cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true + /@rspack/binding-win32-x64-msvc@0.5.4: + resolution: {integrity: sha512-33IBq3yuJTyUKhTGbPwP/kvSf58wpOCBdPvye+ExNSw0uEVwXMs2AqDWDnbBPtZjP8DVN/zu0EoeLhYk9fwkYg==} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + /@rspack/binding@0.4.5: resolution: {integrity: sha512-XmSlt9ucpfebhkWI4guPEym0F+8JZGr8UyBVAtHN2/7SQRI8TL8G1BUQGVgmc7+UKA5RM1Qfps1QmtHYzjARBQ==} optionalDependencies: @@ -15010,19 +15087,6 @@ packages: '@rspack/binding-win32-x64-msvc': 0.4.5 dev: false - /@rspack/binding@0.5.0: - resolution: {integrity: sha512-+v1elZMn6lKBqbXQzhcfeCaPzztFNGEkNDEcQ7weako6yQPsBihGCRzveMMzZkja4RyB9GRHjWRE+THm8V8+3w==} - optionalDependencies: - '@rspack/binding-darwin-arm64': 0.5.0 - '@rspack/binding-darwin-x64': 0.5.0 - '@rspack/binding-linux-arm64-gnu': 0.5.0 - '@rspack/binding-linux-arm64-musl': 0.5.0 - '@rspack/binding-linux-x64-gnu': 0.5.0 - '@rspack/binding-linux-x64-musl': 0.5.0 - '@rspack/binding-win32-arm64-msvc': 0.5.0 - '@rspack/binding-win32-ia32-msvc': 0.5.0 - '@rspack/binding-win32-x64-msvc': 0.5.0 - /@rspack/binding@0.5.1: resolution: {integrity: sha512-2CMZ0oVBEgs+/v2nNzIEDqKS01Al//biWl0aDclh8ypeEIM9tkI/gvhjrovsnyib9oxsO3xCM4tCNCND+nx1CA==} optionalDependencies: @@ -15037,6 +15101,33 @@ packages: '@rspack/binding-win32-x64-msvc': 0.5.1 dev: true + /@rspack/binding@0.5.3: + resolution: {integrity: sha512-bwxjp2mvSGGgVRk1D+dwilwaSEvzhQTlhe3+f2h+cjampJpEa72jle1T4bpXTOOMM0JRq06AzUWlzoMxKn+JKA==} + optionalDependencies: + '@rspack/binding-darwin-arm64': 0.5.3 + '@rspack/binding-darwin-x64': 0.5.3 + '@rspack/binding-linux-arm64-gnu': 0.5.3 + '@rspack/binding-linux-arm64-musl': 0.5.3 + '@rspack/binding-linux-x64-gnu': 0.5.3 + '@rspack/binding-linux-x64-musl': 0.5.3 + '@rspack/binding-win32-arm64-msvc': 0.5.3 + '@rspack/binding-win32-ia32-msvc': 0.5.3 + '@rspack/binding-win32-x64-msvc': 0.5.3 + dev: true + + /@rspack/binding@0.5.4: + resolution: {integrity: sha512-WoAq+pkNAe4jetIwIoUbiqO4cLSvpll90GtpYHqaNS9r9n28l4LBQY/A15W0/XBZeoj0wvMkYEvEZtn64PULLw==} + optionalDependencies: + '@rspack/binding-darwin-arm64': 0.5.4 + '@rspack/binding-darwin-x64': 0.5.4 + '@rspack/binding-linux-arm64-gnu': 0.5.4 + '@rspack/binding-linux-arm64-musl': 0.5.4 + '@rspack/binding-linux-x64-gnu': 0.5.4 + '@rspack/binding-linux-x64-musl': 0.5.4 + '@rspack/binding-win32-arm64-msvc': 0.5.4 + '@rspack/binding-win32-ia32-msvc': 0.5.4 + '@rspack/binding-win32-x64-msvc': 0.5.4 + /@rspack/core@0.4.5: resolution: {integrity: sha512-X29fvCqTJH9OYN5pqa2lYP9hBLGICGVugtpTIAyLtMxC7gqvjvZkG/qisaVsjPyg4p2eB0NvmosnHkRv0GJ4sg==} engines: {node: '>=16.0.0'} @@ -15059,8 +15150,8 @@ packages: zod-validation-error: 1.3.1(zod@3.22.3) dev: false - /@rspack/core@0.5.0(@swc/helpers@0.5.3): - resolution: {integrity: sha512-/Bpujdtx28qYir7AK9VVSbY35GBFEcZ1NTJZBx/WIzZGZWLCxhlVYfjH8cj44y4RvXa0Y26tnj/q7VJ4U3sHug==} + /@rspack/core@0.5.1(@swc/helpers@0.5.3): + resolution: {integrity: sha512-fsUKPhnBCV7UOE31W03GBfqp7lSRZBcRuvLwrUt1bmTAvl9SRrR0HuWhJAs4O8LvrjKgxRzXPM8Fpysqerfo4w==} engines: {node: '>=16.0.0'} peerDependencies: '@swc/helpers': '>=0.5.1' @@ -15069,7 +15160,7 @@ packages: optional: true dependencies: '@module-federation/runtime-tools': 0.0.8 - '@rspack/binding': 0.5.0 + '@rspack/binding': 0.5.1 '@swc/helpers': 0.5.3 browserslist: 4.22.2 enhanced-resolve: 5.12.0 @@ -15082,9 +15173,10 @@ packages: webpack-sources: 3.2.3 zod: 3.22.3 zod-validation-error: 1.3.1(zod@3.22.3) + dev: true - /@rspack/core@0.5.1(@swc/helpers@0.5.3): - resolution: {integrity: sha512-fsUKPhnBCV7UOE31W03GBfqp7lSRZBcRuvLwrUt1bmTAvl9SRrR0HuWhJAs4O8LvrjKgxRzXPM8Fpysqerfo4w==} + /@rspack/core@0.5.3(@swc/helpers@0.5.3): + resolution: {integrity: sha512-/WCMUCwcduSrx0za1kVoN3Fdkf/fDK3v6fgvJeeNc+l7/mGttSROUmlVidmz7eyQuD9itr947NB5U087Y99dag==} engines: {node: '>=16.0.0'} peerDependencies: '@swc/helpers': '>=0.5.1' @@ -15093,10 +15185,11 @@ packages: optional: true dependencies: '@module-federation/runtime-tools': 0.0.8 - '@rspack/binding': 0.5.1 + '@rspack/binding': 0.5.3 '@swc/helpers': 0.5.3 browserslist: 4.22.2 enhanced-resolve: 5.12.0 + events: 3.3.0 graceful-fs: 4.2.10 json-parse-even-better-errors: 3.0.0 neo-async: 2.6.2 @@ -15108,6 +15201,31 @@ packages: zod-validation-error: 1.3.1(zod@3.22.3) dev: true + /@rspack/core@0.5.4(@swc/helpers@0.5.3): + resolution: {integrity: sha512-3yxOllEC93gf4pNiLlgtzE8dPo0QV2naQY24gAPk+EoWlwpmR6p1r7ZdD53etFZPGB4hMm78J/zgwx8jy1TRsw==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@swc/helpers': '>=0.5.1' + peerDependenciesMeta: + '@swc/helpers': + optional: true + dependencies: + '@module-federation/runtime-tools': 0.0.8 + '@rspack/binding': 0.5.4 + '@swc/helpers': 0.5.3 + browserslist: 4.22.2 + enhanced-resolve: 5.12.0 + events: 3.3.0 + graceful-fs: 4.2.10 + json-parse-even-better-errors: 3.0.0 + neo-async: 2.6.2 + tapable: 2.2.1 + terminal-link: 2.1.1 + watchpack: 2.4.0 + webpack-sources: 3.2.3 + zod: 3.22.3 + zod-validation-error: 1.3.1(zod@3.22.3) + /@rspack/plugin-html@0.4.5(@rspack/core@0.4.5): resolution: {integrity: sha512-W+m86gTwfY18Zbx/j1SHnF0qQwcvupcxn1UTCrkygVVmJhEtPXIid4DsNLMp9Igs4LBkWBeC9SU+xzF0BUkjGA==} peerDependencies: @@ -15134,8 +15252,19 @@ packages: react-refresh: 0.14.0 dev: false - /@rspack/plugin-react-refresh@0.5.0(react-refresh@0.14.0): - resolution: {integrity: sha512-Tas91XaFgRmgdLFzgeei/LybMFvnYBicMf4Y7Yt9lZHRHfgONrGbmqSVeS+nWWTW9U8Q31K9uiM2Z2a02hq2Vw==} + /@rspack/plugin-react-refresh@0.5.3(react-refresh@0.14.0): + resolution: {integrity: sha512-YdEtvfLBpbbtqUO5cxM947FjdZhsTBR3Dp8djxGS1jPUZ+gJ0tOmNI5V3MZtDC/lsiSlnnKwOAImOUSQ9yV1Fw==} + peerDependencies: + react-refresh: '>=0.10.0 <1.0.0' + peerDependenciesMeta: + react-refresh: + optional: true + dependencies: + react-refresh: 0.14.0 + dev: true + + /@rspack/plugin-react-refresh@0.5.4(react-refresh@0.14.0): + resolution: {integrity: sha512-neyCo1bBhTUriu2dSCu6FHQuILKDiKRokIy8B4V3hhequvW6F8EZ1rLcLoHfeikRIzC3ehJxOIuAj2sq6AiJMg==} peerDependencies: react-refresh: '>=0.10.0 <1.0.0' peerDependenciesMeta: @@ -15144,8 +15273,8 @@ packages: dependencies: react-refresh: 0.14.0 - /@rspress/core@1.11.1(typescript@5.3.3)(webpack@5.89.0): - resolution: {integrity: sha512-1lY7q1fHonJYgU4LNSJfiCOZbrIGOIjdbRLgCcn1zNDAMa+LOHPqptu5SQutO+WLCuXIeb7jM8gI9MOuxTdunA==} + /@rspress/core@1.11.2(typescript@5.3.3)(webpack@5.89.0): + resolution: {integrity: sha512-EXvc/r2fgYjWZF80EtSZ1Zl1LKB7qwEKeHBO9xU5pwfjonvW+W6zgR6H5jqHFtA7MlqDDCk36zN9h27BC/uF1A==} engines: {node: '>=14.17.6'} dependencies: '@loadable/component': 5.15.2(react@18.2.0) @@ -15153,17 +15282,17 @@ packages: '@mdx-js/mdx': 2.2.1 '@mdx-js/react': 2.2.1(react@18.2.0) '@modern-js/utils': link:packages/toolkit/utils - '@rsbuild/core': 0.3.1 - '@rsbuild/plugin-react': 0.3.1 - '@rsbuild/plugin-svgr': 0.3.1(typescript@5.3.3) + '@rsbuild/core': 0.4.0 + '@rsbuild/plugin-react': 0.4.0(@rsbuild/core@0.4.0) + '@rsbuild/plugin-svgr': 0.4.0(@rsbuild/core@0.4.0)(typescript@5.3.3) '@rspress/mdx-rs': 0.4.3 - '@rspress/plugin-auto-nav-sidebar': 1.11.1 - '@rspress/plugin-container-syntax': 1.11.1 - '@rspress/plugin-last-updated': 1.11.1 - '@rspress/plugin-medium-zoom': 1.11.1(@rspress/runtime@1.11.1) - '@rspress/runtime': 1.11.1 - '@rspress/shared': 1.11.1 - '@rspress/theme-default': 1.11.1(webpack@5.89.0) + '@rspress/plugin-auto-nav-sidebar': 1.11.2 + '@rspress/plugin-container-syntax': 1.11.2 + '@rspress/plugin-last-updated': 1.11.2 + '@rspress/plugin-medium-zoom': 1.11.2(@rspress/runtime@1.11.2) + '@rspress/runtime': 1.11.2 + '@rspress/shared': 1.11.2 + '@rspress/theme-default': 1.11.2(webpack@5.89.0) body-scroll-lock: 4.0.0-beta.0 copy-to-clipboard: 3.3.3 enhanced-resolve: 5.12.0 @@ -15302,52 +15431,52 @@ packages: '@rspress/mdx-rs-win32-x64-msvc': 0.4.3 dev: true - /@rspress/plugin-auto-nav-sidebar@1.11.1: - resolution: {integrity: sha512-6XMPbhz19sNHi7UGZbV2xeLaN9lXM65IEI6ScqVBhnU9nbSuIexe2eme1TB7L48Msr8d3Q3du9wHgopR6IyvsQ==} + /@rspress/plugin-auto-nav-sidebar@1.11.2: + resolution: {integrity: sha512-ymDmpBdRkm5yXuN1aVs6hbSHqhk9xm26WheY8KMIZWmEA5bZRkIkYj7X51Z2l5YDy6F1nSE+Es27ihiO3cpr/A==} engines: {node: '>=14.17.6'} dependencies: - '@rspress/shared': 1.11.1 + '@rspress/shared': 1.11.2 dev: true - /@rspress/plugin-container-syntax@1.11.1: - resolution: {integrity: sha512-n4k2Xtojn3hHpWbAEUmy0n6Ph8Cn55BbZu+2DgA5XrhozDlRZLXE2QWkrcGpdvI0Ux3uixHTTFB8hrp3AaKKBQ==} + /@rspress/plugin-container-syntax@1.11.2: + resolution: {integrity: sha512-mOTR3sscp/pTpiImIp2ZvsU0/oWgIux4r2/jGDe87q3p9PBr0v5XHKmoV8numjyroVUd8RzwOSXR5v1kpCL2vQ==} engines: {node: '>=14.17.6'} dependencies: - '@rspress/shared': 1.11.1 + '@rspress/shared': 1.11.2 dev: true - /@rspress/plugin-last-updated@1.11.1: - resolution: {integrity: sha512-AxtWdCd1+7Dw05gB9f48SyopQLg2MUOZLAN01LdQ85hJMMxbFnJJQRlIEMxWAY3U8x7i7xNw5Km1Jycpoy7Sig==} + /@rspress/plugin-last-updated@1.11.2: + resolution: {integrity: sha512-zzi8iqMoL8Q2w0apM2HGzoa4M2Hhzez9SFYHnkBZYn7ZYyyyFPZXbPgS3Oee/Ysr/UmKocT4j4b038jw2sTpkA==} engines: {node: '>=14.17.6'} dependencies: - '@rspress/shared': 1.11.1 + '@rspress/shared': 1.11.2 dev: true - /@rspress/plugin-medium-zoom@1.11.1(@rspress/runtime@1.11.1): - resolution: {integrity: sha512-IF4BZE78oppsr+jV6x1xWrj8F7bQTd3NzOPRXVSp2EZivdDmTONUJdH4sgd5e32zw7uk9g4P6bM1mN5HKrTqtA==} + /@rspress/plugin-medium-zoom@1.11.2(@rspress/runtime@1.11.2): + resolution: {integrity: sha512-XwpGEvEUlGyCFt8PBwtmed9bjbSdyFcah0RWd978YXQDcMHjuKnLLqJO131cRxyX4JWccVFn8oEru5kn+LH27g==} engines: {node: '>=14.17.6'} peerDependencies: '@rspress/runtime': ^1.0.2 dependencies: - '@rspress/runtime': 1.11.1 + '@rspress/runtime': 1.11.2 medium-zoom: 1.0.8 dev: true - /@rspress/runtime@1.11.1: - resolution: {integrity: sha512-cSYAbdJTUF7cQ1qk0zvDXYcEtev0ztTSlNVL6lX9GMsYbTk5B+/dwlUbfXDO8e+bnecG5aadWC+FDKKVrGOAqg==} + /@rspress/runtime@1.11.2: + resolution: {integrity: sha512-XodcVZtk8maiZko6RAaB5EnHxz3KQLFk2zq2TRL0kVQ4PXaUSr2WEgwLMw7Siz2h5AjQlDUOPipt4AhkLTd1sw==} engines: {node: '>=14.17.6'} dependencies: - '@rspress/shared': 1.11.1 + '@rspress/shared': 1.11.2 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) react-router-dom: 6.17.0(react-dom@18.2.0)(react@18.2.0) dev: true - /@rspress/shared@1.11.1: - resolution: {integrity: sha512-kl48IDNRIDwE4aJDvf8kk6VAzGRpn+WsPpEldTYN9Ov5MkwVHL/ejZr0G2AVXR2hvbp6JgsvmLVloAWWFwpi5Q==} + /@rspress/shared@1.11.2: + resolution: {integrity: sha512-ZWLGx1jDrOYkNGHtH63bTz+9t3IMo4rWvbL+5jp3jvZxB4LaixsE6YKYintGGlY1qsnXn4BYW7aItkwRyhltgg==} dependencies: - '@rsbuild/core': 0.3.1 + '@rsbuild/core': 0.4.0 chalk: 4.1.2 execa: 5.1.1 fs-extra: 11.2.0 @@ -15355,13 +15484,13 @@ packages: unified: 10.1.2 dev: true - /@rspress/theme-default@1.11.1(webpack@5.89.0): - resolution: {integrity: sha512-L4PXzIPxltwlmhdEu3HArxtBz+5NBxU/DfwfFRwVZk7V4MHBljGauhNbORszN0jEaeVYu1mU2DphMyZVAQ+ztw==} + /@rspress/theme-default@1.11.2(webpack@5.89.0): + resolution: {integrity: sha512-jkSs2PXaowadN9cr5TEQQ2IUQehk6HyesAaYrXnikxj0VkxsMLCcTd5E6jM11tzjgan4qRZdJf1T/3zuMJp22g==} engines: {node: '>=14.17.6'} dependencies: '@mdx-js/react': 2.2.1(react@18.2.0) - '@rspress/runtime': 1.11.1 - '@rspress/shared': 1.11.1 + '@rspress/runtime': 1.11.2 + '@rspress/shared': 1.11.2 body-scroll-lock: 4.0.0-beta.0 copy-to-clipboard: 3.3.3 flexsearch: 0.6.32 @@ -18973,6 +19102,9 @@ packages: /caniuse-lite@1.0.30001566: resolution: {integrity: sha512-ggIhCsTxmITBAMmK8yZjEhCO5/47jKXPu6Dha/wuCS4JePVL+3uiDEBuhu2aIoT+bqTOR8L76Ip1ARL9xYsEJA==} + /caniuse-lite@1.0.30001588: + resolution: {integrity: sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ==} + /ccount@1.1.0: resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} dev: false @@ -23190,6 +23322,14 @@ packages: dependencies: lodash: 4.17.21 tapable: 2.2.1 + dev: true + + /html-rspack-plugin@5.6.0: + resolution: {integrity: sha512-4jrAQEEt9JCcGbeP7dFV1d42RF6IA9nYWoqK5i+rncdPPMz6eVHt1scPy9722brams7/SndzJhoIxN0Hw7T4ZA==} + engines: {node: '>=10.13.0'} + dependencies: + lodash: 4.17.21 + tapable: 2.2.1 /html-tags@3.3.1: resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} @@ -26294,13 +26434,14 @@ packages: webpack: 5.89.0(esbuild@0.17.19) dev: false - /mini-css-extract-plugin@2.7.7(webpack@5.89.0): - resolution: {integrity: sha512-+0n11YGyRavUR3IlaOzJ0/4Il1avMvJ1VJfhWfCn24ITQXhRr1gghbhhrda6tgtNcpZaWKdSuwKq20Jb7fnlyw==} + /mini-css-extract-plugin@2.8.0(webpack@5.89.0): + resolution: {integrity: sha512-CxmUYPFcTgET1zImteG/LZOy/4T5rTojesQXkSNBiquhydn78tfbCE9sjIjnJ/UcjNjOC1bphTCCW5rrS7cXAg==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 dependencies: schema-utils: 4.2.0 + tapable: 2.2.1 webpack: 5.89.0(esbuild@0.17.19) dev: false @@ -27559,7 +27700,6 @@ packages: postcss: ^8.1.4 dependencies: postcss: 8.4.31 - dev: true /postcss-font-variant@5.0.0(postcss@8.4.31): resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==} @@ -30421,13 +30561,13 @@ packages: fs-extra: 11.2.0 dev: true - /rspress@1.11.1(typescript@5.3.3)(webpack@5.89.0): - resolution: {integrity: sha512-DqljMUuCGsdJBoPPknInPgYDQIrRQJnNeJdM9kansOl1oWjAPhYfGDKcHqDFEMBDRSqm3UW5EMsVTi6Ta6kKgQ==} + /rspress@1.11.2(typescript@5.3.3)(webpack@5.89.0): + resolution: {integrity: sha512-7vdPQbFdEjytzeGDaQi2g93c1AksgIY9W4qx/FLy+hJm1zgf+72TD36aqirIY350ehjgJFRHp9z+Ldz9e8t6Ng==} hasBin: true dependencies: '@modern-js/node-bundle-require': link:packages/toolkit/node-bundle-require - '@rspress/core': 1.11.1(typescript@5.3.3)(webpack@5.89.0) - '@rspress/shared': 1.11.1 + '@rspress/core': 1.11.2(typescript@5.3.3)(webpack@5.89.0) + '@rspress/shared': 1.11.2 cac: 6.7.14 chalk: 5.3.0 chokidar: 3.5.3 From 21b506c748965a0d171eb8bb9c97de3598ec7fe6 Mon Sep 17 00:00:00 2001 From: Asuka109 Date: Sun, 18 Feb 2024 17:18:45 +0800 Subject: [PATCH 06/11] feat(devtools/doctor): compatible with web doctor implementation (#5378) --- .../src/entries/client/routes/doctor/page.tsx | 44 +++++++++++++------ .../src/entries/client/routes/state.tsx | 6 +++ packages/devtools/plugin/src/rpc/index.ts | 27 ++++++++++++ 3 files changed, 63 insertions(+), 14 deletions(-) diff --git a/packages/devtools/client/src/entries/client/routes/doctor/page.tsx b/packages/devtools/client/src/entries/client/routes/doctor/page.tsx index 3f99f86d24f0..ade8a4b7c5ec 100644 --- a/packages/devtools/client/src/entries/client/routes/doctor/page.tsx +++ b/packages/devtools/client/src/entries/client/routes/doctor/page.tsx @@ -16,10 +16,11 @@ import { HiMiniExclamationCircle, HiMiniInboxStack, HiMiniRectangleStack, - HiMiniScale, } from 'react-icons/hi2'; import _ from 'lodash'; +import { parseURL } from 'ufo'; import clsx from 'clsx'; +import { $dependencies } from '../state'; import logo from './rsdoctor-large.png'; import { $doctor } from './state'; import styles from './page.module.scss'; @@ -41,6 +42,10 @@ const GraphBar: FC<{ cost: SummaryCostsData }> = ({ cost }) => { ? undefined : `${WEBPACK_HOOKS_PREFIX}#${hook.toLowerCase()}`, ); + const formattedCost = + cost.costs > 1_000 + ? `${(cost.costs / 1_000).toFixed(2)}s` + : `${cost.costs}ms`; return ( @@ -50,7 +55,7 @@ const GraphBar: FC<{ cost: SummaryCostsData }> = ({ cost }) => { color="gray" className={clsx(styles.textTruncation, styles.costLabel)} > - {_.startCase(cost.title)}({cost.costs}ms) + {_.startCase(cost.title)}({formattedCost}) @@ -60,7 +65,7 @@ const GraphBar: FC<{ cost: SummaryCostsData }> = ({ cost }) => { {leftHook} - ···{cost.costs}ms··· + ···{formattedCost}··· {rightHook} @@ -72,6 +77,22 @@ const GraphBar: FC<{ cost: SummaryCostsData }> = ({ cost }) => { const Page: FC = () => { const doctor = useSnapshot($doctor); + + const dependencies = useSnapshot($dependencies); + const isWebDoctor = Object.keys(dependencies).find(key => + key.startsWith('@web-doctor/'), + ); + const implementation = isWebDoctor ? 'Web Doctor' : 'Rsdoctor'; + const website = 'https://rsdoctor.dev'; + const version = + dependencies['@web-doctor/webpack-plugin(builder)'] ?? + dependencies['@web-doctor/rspack-plugin(builder)'] ?? + dependencies['@web-doctor/webpack-plugin'] ?? + dependencies['@web-doctor/rspack-plugin'] ?? + dependencies['@rsdoctor/rspack-plugin'] ?? + dependencies['@rsdoctor/webpack-plugin'] ?? + dependencies['@rsdoctor/core']; + const costs: SummaryCostsData[] = _(doctor.summary.costs) .sortBy(['startAt', 'name', 'costs']) .sortedUniqBy('name') @@ -102,10 +123,12 @@ const Page: FC = () => { - Rsdoctor + {implementation} - + Click to open panel with complete features. @@ -118,13 +141,9 @@ const Page: FC = () => { Visit our website - + - rsdoctor.dev + {parseURL(website).host} @@ -133,9 +152,6 @@ const Page: FC = () => { - - 114 MB - {doctor.numModules} modules diff --git a/packages/devtools/client/src/entries/client/routes/state.tsx b/packages/devtools/client/src/entries/client/routes/state.tsx index 8aaed21d0e8c..41b94f99451e 100644 --- a/packages/devtools/client/src/entries/client/routes/state.tsx +++ b/packages/devtools/client/src/entries/client/routes/state.tsx @@ -156,8 +156,14 @@ export const $definition = proxy({ announcement: _definitionTask.then(def => def.announcement), }); +export const _dependenciesTask = $server.then(({ remote }) => + remote.getDependencies(), +); + export const $dependencies = proxy>({}); +_dependenciesTask.then(def => Object.assign($dependencies, def)); + export const $perf = proxy({ compileDuration: $server.then(({ remote }) => remote.getCompileTimeCost()), }); diff --git a/packages/devtools/plugin/src/rpc/index.ts b/packages/devtools/plugin/src/rpc/index.ts index 6724df3ce53c..db1cb7321636 100644 --- a/packages/devtools/plugin/src/rpc/index.ts +++ b/packages/devtools/plugin/src/rpc/index.ts @@ -125,6 +125,33 @@ export const setupClientConnection = async ( '@rsbuild/core', '@rspack/core/package.json', ], + '@rsdoctor/rspack-plugin': [ + ctx.rootPath, + '@rsdoctor/rspack-plugin/package.json', + ], + '@rsdoctor/webpack-plugin': [ + ctx.rootPath, + '@rsdoctor/webpack-plugin/package.json', + ], + '@web-doctor/webpack-plugin': [ + ctx.rootPath, + '@web-doctor/webpack-plugin/package.json', + ], + '@web-doctor/rspack-plugin': [ + ctx.rootPath, + '@web-doctor/rspack-plugin/package.json', + ], + '@web-doctor/webpack-plugin(builder)': [ + ctx.rootPath, + '@edenx/builder-plugin-web-doctor', + '@web-doctor/webpack-plugin/package.json', + ], + '@web-doctor/rspack-plugin(builder)': [ + ctx.rootPath, + '@edenx/builder-plugin-web-doctor', + '@web-doctor/rspack-plugin/package.json', + ], + '@rsdoctor/core': [ctx.rootPath, '@rsdoctor/core/package.json'], }; for (const [name, expr] of Object.entries(resolveExprs)) { From 6f472f4a7e6a14a92e77aad8f4ab55fdfa64e367 Mon Sep 17 00:00:00 2001 From: Asuka109 Date: Tue, 20 Feb 2024 20:26:34 +0800 Subject: [PATCH 07/11] feat(devtools/doctor): improved setup guide (#5415) --- .../ErrorFallback.tsx => Error/Fallback.tsx} | 8 +- .../Error/FeatureDisabled.module.scss | 9 + .../src/components/Error/FeatureDisabled.tsx | 25 ++ .../src/components/ErrorFallback/index.ts | 0 .../entries/client/routes/config/error.tsx | 2 +- .../entries/client/routes/context/error.tsx | 2 +- .../entries/client/routes/doctor/error.tsx | 37 +++ .../src/entries/client/routes/doctor/page.tsx | 5 +- .../src/entries/client/routes/error.tsx | 2 +- .../entries/client/routes/headers/error.tsx | 2 +- .../entries/client/routes/overview/error.tsx | 2 +- .../src/entries/client/routes/pages/error.tsx | 2 +- .../src/entries/client/routes/react/error.tsx | 2 +- .../src/entries/client/routes/state.tsx | 1 + packages/devtools/kit/src/client.ts | 6 + packages/devtools/plugin/package.json | 9 +- packages/devtools/plugin/src/cli.ts | 213 +++++++++--------- packages/devtools/plugin/src/config.ts | 42 ++-- packages/devtools/plugin/src/index.ts | 2 +- packages/devtools/plugin/src/rpc/index.ts | 18 +- 20 files changed, 225 insertions(+), 164 deletions(-) rename packages/devtools/client/src/components/{ErrorFallback/ErrorFallback.tsx => Error/Fallback.tsx} (77%) create mode 100644 packages/devtools/client/src/components/Error/FeatureDisabled.module.scss create mode 100644 packages/devtools/client/src/components/Error/FeatureDisabled.tsx delete mode 100644 packages/devtools/client/src/components/ErrorFallback/index.ts create mode 100644 packages/devtools/client/src/entries/client/routes/doctor/error.tsx diff --git a/packages/devtools/client/src/components/ErrorFallback/ErrorFallback.tsx b/packages/devtools/client/src/components/Error/Fallback.tsx similarity index 77% rename from packages/devtools/client/src/components/ErrorFallback/ErrorFallback.tsx rename to packages/devtools/client/src/components/Error/Fallback.tsx index f0356b35f15b..899cf53e7a89 100644 --- a/packages/devtools/client/src/components/ErrorFallback/ErrorFallback.tsx +++ b/packages/devtools/client/src/components/Error/Fallback.tsx @@ -21,14 +21,12 @@ export const ErrorFallback: React.FC = props => { {title} - +