From 9f84c67cf93ecb382a7c21f95f1c7ffb6ea72ae2 Mon Sep 17 00:00:00 2001 From: Jerry_Wu <409187100@qq.com> Date: Thu, 4 Dec 2025 17:22:12 +0800 Subject: [PATCH 1/4] chore: update dependencies to version 2.0.0-beta.15 and refactor RenderTree component for improved performance --- package.json | 1 - packages/devtools/package.json | 4 +- packages/kit/package.json | 2 +- packages/playgrounds/package.json | 6 +- packages/plugin/package.json | 2 +- packages/ui/package.json | 4 +- .../ui/src/components/Tree/filterVnode.ts | 4 +- .../ui/src/features/CodeBreack/HtmlParser.tsx | 9 +- .../src/features/CodeBreack/StateParser.tsx | 9 +- .../src/features/RenderTree/HookDataStore.ts | 290 +++++++++ .../ui/src/features/RenderTree/RenderTree.tsx | 48 +- .../ui/src/features/RenderTree/TreeBuilder.ts | 245 ++++++++ packages/ui/src/features/RenderTree/data.ts | 101 ++-- .../src/features/RenderTree/formatTreeData.ts | 558 +++++++++--------- packages/ui/src/features/RenderTree/index.ts | 45 ++ .../src/features/RenderTree/transfromqseq.ts | 142 +---- packages/ui/src/features/RenderTree/types.ts | 216 +++++++ packages/ui/src/utils/shiki.ts | 14 + pnpm-lock.yaml | 247 ++++---- 19 files changed, 1320 insertions(+), 627 deletions(-) create mode 100644 packages/ui/src/features/RenderTree/HookDataStore.ts create mode 100644 packages/ui/src/features/RenderTree/TreeBuilder.ts create mode 100644 packages/ui/src/features/RenderTree/index.ts create mode 100644 packages/ui/src/features/RenderTree/types.ts create mode 100644 packages/ui/src/utils/shiki.ts diff --git a/package.json b/package.json index ac498e6..58224c3 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,6 @@ "license": "MIT", "description": "Qwik devtools monorepo", "scripts": { - "dev": "pnpm --filter plugin build && MODE=dev pnpm --parallel dev", "playground": "MODE=dev DEBUG=qwik:devtools:* pnpm --filter playground dev", "build": "tsx scripts/build-devtools.ts", "change": "changeset", diff --git a/packages/devtools/package.json b/packages/devtools/package.json index 30a05d9..673a48b 100644 --- a/packages/devtools/package.json +++ b/packages/devtools/package.json @@ -24,8 +24,8 @@ "README.md" ], "peerDependencies": { - "@qwik.dev/core": "2.0.0-beta.11", - "@qwik.dev/router": "2.0.0-beta.11", + "@qwik.dev/core": "2.0.0-beta.15", + "@qwik.dev/router": "2.0.0-beta.15", "vite": "7.1.3", "@tailwindcss/postcss": "^4.1.14", "@tailwindcss/vite": "^4.1.14", diff --git a/packages/kit/package.json b/packages/kit/package.json index 4c9c6b7..57fece7 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -31,7 +31,7 @@ "@typescript-eslint/parser": "7.16.1", "cpy-cli": "^5.0.0", "eslint": "8.57.0", - "eslint-plugin-qwik": "2.0.0-beta.11", + "eslint-plugin-qwik": "2.0.0-beta.15", "np": "^8.0.4", "prettier": "3.3.3", "typescript": "5.4.5", diff --git a/packages/playgrounds/package.json b/packages/playgrounds/package.json index fa4d337..06dad7a 100644 --- a/packages/playgrounds/package.json +++ b/packages/playgrounds/package.json @@ -29,14 +29,14 @@ "devDependencies": { "@devtools/plugin": "workspace:*", "@devtools/ui": "workspace:*", - "@qwik.dev/core": "2.0.0-beta.11", - "@qwik.dev/router": "2.0.0-beta.11", + "@qwik.dev/core": "2.0.0-beta.15", + "@qwik.dev/router": "2.0.0-beta.15", "@types/eslint": "8.56.10", "@types/node": "20.14.11", "@typescript-eslint/eslint-plugin": "7.16.1", "@typescript-eslint/parser": "7.16.1", "eslint": "8.57.0", - "eslint-plugin-qwik": "2.0.0-beta.11", + "eslint-plugin-qwik": "2.0.0-beta.15", "prettier": "3.3.3", "typescript": "5.4.5", "vite": "7.1.3", diff --git a/packages/plugin/package.json b/packages/plugin/package.json index 3de2118..21330bd 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -24,7 +24,7 @@ "devDependencies": { "@babel/types": "^7.26.7", "@devtools/kit": "workspace:*", - "@qwik.dev/core": "2.0.0-beta.11", + "@qwik.dev/core": "2.0.0-beta.15", "@types/eslint": "8.56.10", "@types/node": "20.14.11", "@typescript-eslint/eslint-plugin": "7.16.1", diff --git a/packages/ui/package.json b/packages/ui/package.json index 85c7a37..11c2349 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -34,7 +34,7 @@ }, "peerDependencies": { "@devtools/plugin": "workspace:*", - "@qwik.dev/core": "2.0.0-beta.11", + "@qwik.dev/core": "2.0.0-beta.15", "@tailwindcss/postcss": "^4.1.14", "@tailwindcss/vite": "^4.1.14", "tailwindcss": "^4.1.14" @@ -53,7 +53,7 @@ "cpy-cli": "^5.0.0", "dree": "^5.1.5", "eslint": "8.57.0", - "eslint-plugin-qwik": "2.0.0-alpha.9", + "eslint-plugin-qwik": "2.0.0-beta.15", "nodemon": "^3.1.9", "np": "^8.0.4", "postcss": "^8.4.39", diff --git a/packages/ui/src/components/Tree/filterVnode.ts b/packages/ui/src/components/Tree/filterVnode.ts index d81dae5..82f11db 100644 --- a/packages/ui/src/components/Tree/filterVnode.ts +++ b/packages/ui/src/components/Tree/filterVnode.ts @@ -6,12 +6,12 @@ import { _vnode_getFirstChild, _vnode_isMaterialized, _vnode_isVirtualVNode, - QRL, } from '@qwik.dev/core/internal'; import { normalizeName } from './vnode'; import { htmlContainer } from '../../utils/location'; import { TreeNode } from './Tree'; import { QRENDERFN, QTYPE } from '@devtools/kit'; +import { QRLInternal } from '../../features/RenderTree/types'; let index = 0; @@ -65,7 +65,7 @@ function buildTreeRecursive( // We skip the QTYPE prop as it's for internal use. if (key === QTYPE) return; - const value = container.getHostProp(currentVNode!, key) as QRL; + const value = container.getHostProp(currentVNode!, key) as QRLInternal; // Update the underlying VNode props array and the new object's props. currentVNode?.setProp(key, value); vnodeObject.props![key] = currentVNode?.getAttr(key); diff --git a/packages/ui/src/features/CodeBreack/HtmlParser.tsx b/packages/ui/src/features/CodeBreack/HtmlParser.tsx index 11462f0..2aa4788 100644 --- a/packages/ui/src/features/CodeBreack/HtmlParser.tsx +++ b/packages/ui/src/features/CodeBreack/HtmlParser.tsx @@ -6,7 +6,7 @@ import { useStyles$, } from '@qwik.dev/core'; import { _getDomContainer, _vnode_toString } from '@qwik.dev/core/internal'; -import { createHighlighter } from 'shiki'; +import { getHighlighter } from '../../utils/shiki'; export const HtmlParser = component$(() => { useStyles$(` @@ -73,10 +73,7 @@ export const HtmlParser = component$(() => { return; } if (!shikiRef.value) { - shikiRef.value = await createHighlighter({ - themes: ['nord'], - langs: ['html'], - }); + shikiRef.value = await getHighlighter(); } highlightedHtml.value = shikiRef.value.codeToHtml(htmlResult.value, { lang: 'html', @@ -98,7 +95,7 @@ export const HtmlParser = component$(() => {