From 91073d2727a9cc35ec38fa338fa45e3ccd96be14 Mon Sep 17 00:00:00 2001 From: arlo Date: Fri, 8 May 2026 23:13:01 +0800 Subject: [PATCH 1/3] perf(rolldown): reduce memory use for large sessions --- .../app/components/data/RawEventsTable.vue | 87 ------- .../app/components/panel/SessionSelector.vue | 24 +- .../src/app/pages/session/[session]/raw.vue | 41 --- .../rolldown/__tests__/events-reader.test.ts | 2 +- .../src/node/rolldown/events-manager.ts | 184 ++++++++++--- .../src/node/rolldown/events-reader.ts | 244 +++++++++++++++++- .../src/node/rolldown/logs-manager.ts | 4 +- .../rpc/functions/rolldown-get-module-info.ts | 8 +- .../rolldown-get-module-raw-events.ts | 20 -- .../rolldown-get-module-transforms.ts | 6 +- .../rpc/functions/rolldown-get-raw-events.ts | 17 -- packages/rolldown/src/node/rpc/index.ts | 4 - packages/rolldown/src/node/utils/format.ts | 4 +- .../src/node/utils/json-parse-stream.ts | 13 +- 14 files changed, 424 insertions(+), 234 deletions(-) delete mode 100644 packages/rolldown/src/app/components/data/RawEventsTable.vue delete mode 100644 packages/rolldown/src/app/pages/session/[session]/raw.vue delete mode 100644 packages/rolldown/src/node/rpc/functions/rolldown-get-module-raw-events.ts delete mode 100644 packages/rolldown/src/node/rpc/functions/rolldown-get-raw-events.ts diff --git a/packages/rolldown/src/app/components/data/RawEventsTable.vue b/packages/rolldown/src/app/components/data/RawEventsTable.vue deleted file mode 100644 index 4f59380d..00000000 --- a/packages/rolldown/src/app/components/data/RawEventsTable.vue +++ /dev/null @@ -1,87 +0,0 @@ - - - diff --git a/packages/rolldown/src/app/components/panel/SessionSelector.vue b/packages/rolldown/src/app/components/panel/SessionSelector.vue index 2bd21568..e210ffa8 100644 --- a/packages/rolldown/src/app/components/panel/SessionSelector.vue +++ b/packages/rolldown/src/app/components/panel/SessionSelector.vue @@ -17,7 +17,8 @@ const emit = defineEmits<{ }>() function parseEntryPath(session: BuildInfo) { - return parseReadablePath(session.meta.inputs[0]?.filename ?? '', session.meta.cwd).path + const input = session.meta.inputs?.[0] + return input ? parseReadablePath(input.filename, session.meta.cwd).path : '' } const selectedSessionEntry = computed(() => { @@ -25,6 +26,15 @@ const selectedSessionEntry = computed(() => { return session ? parseEntryPath(session) : '' }) +const sessionItems = computed(() => props.sessions.map((session) => { + const inputs = session.meta.inputs ?? [] + return { + session, + primaryInput: inputs[0], + additionalInputCount: Math.max(inputs.length - 1, 0), + } +})) + function checkIsDifferentEntry(session: BuildInfo) { return selectedSessionEntry.value && selectedSessionEntry.value !== parseEntryPath(session) } @@ -38,7 +48,7 @@ function select(session: BuildInfo) {