mirror of
https://github.com/codeaashu/claude-code.git
synced 2026-04-08 22:28:48 +03:00
claude-code
This commit is contained in:
45
web/lib/export/json.ts
Normal file
45
web/lib/export/json.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
import type { Conversation, Message, ExportOptions, ContentBlock } from "../types";
|
||||
|
||||
function filterContent(
|
||||
content: ContentBlock[] | string,
|
||||
options: ExportOptions
|
||||
): ContentBlock[] | string {
|
||||
if (typeof content === "string") return content;
|
||||
|
||||
return content.filter((block) => {
|
||||
if (block.type === "tool_use" || block.type === "tool_result") {
|
||||
return options.includeToolUse;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
function filterMessage(msg: Message, options: ExportOptions): Message {
|
||||
return {
|
||||
...msg,
|
||||
content: filterContent(msg.content, options),
|
||||
createdAt: options.includeTimestamps ? msg.createdAt : 0,
|
||||
};
|
||||
}
|
||||
|
||||
export function toJSON(conv: Conversation, options: ExportOptions): string {
|
||||
let messages = conv.messages;
|
||||
|
||||
if (options.dateRange) {
|
||||
const { start, end } = options.dateRange;
|
||||
messages = messages.filter((m) => m.createdAt >= start && m.createdAt <= end);
|
||||
}
|
||||
|
||||
const output = {
|
||||
id: conv.id,
|
||||
title: conv.title,
|
||||
model: conv.model,
|
||||
createdAt: options.includeTimestamps ? conv.createdAt : undefined,
|
||||
updatedAt: options.includeTimestamps ? conv.updatedAt : undefined,
|
||||
messageCount: messages.length,
|
||||
messages: messages.map((m) => filterMessage(m, options)),
|
||||
exportedAt: new Date().toISOString(),
|
||||
};
|
||||
|
||||
return JSON.stringify(output, null, 2);
|
||||
}
|
||||
Reference in New Issue
Block a user