Skip to content

Commit dbf3f69

Browse files
Algorithm5838github-actions[bot]
authored andcommitted
perf: use structuredClone for message deep copies
1 parent 5a8bf79 commit dbf3f69

2 files changed

Lines changed: 5 additions & 5 deletions

File tree

src/lib/components/chat/Messages/MultiResponseMessages.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@
6060
6161
let selectedModelIdx = null;
6262
63-
let message = JSON.parse(JSON.stringify(history.messages[messageId]));
63+
let message = structuredClone(history.messages[messageId]);
6464
$: if (history.messages) {
6565
if (JSON.stringify(message) !== JSON.stringify(history.messages[messageId])) {
66-
message = JSON.parse(JSON.stringify(history.messages[messageId]));
66+
message = structuredClone(history.messages[messageId]);
6767
}
6868
}
6969

src/lib/components/chat/Messages/ResponseMessage.svelte

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,17 +119,17 @@
119119
export let messageId;
120120
export let selectedModels = [];
121121
122-
let message: MessageType = JSON.parse(JSON.stringify(history.messages[messageId]));
122+
let message: MessageType = structuredClone(history.messages[messageId]);
123123
$: if (history.messages) {
124124
const source = history.messages[messageId];
125125
if (source) {
126126
// Fast path: O(1) check on the fields that change most often (content during streaming, done at end)
127127
// Avoids 2x O(n) JSON.stringify calls that are always true during streaming anyway
128128
if (message.content !== source.content || message.done !== source.done) {
129-
message = JSON.parse(JSON.stringify(source));
129+
message = structuredClone(source);
130130
} else if (JSON.stringify(message) !== JSON.stringify(source)) {
131131
// Slow path: full comparison for infrequent changes (sources, annotations, status, etc.)
132-
message = JSON.parse(JSON.stringify(source));
132+
message = structuredClone(source);
133133
}
134134
}
135135
}

0 commit comments

Comments
 (0)