| import type { ChatAttachment } from "../chat-attachments.js"; | |
| export type RpcAttachmentInput = { | |
| type?: unknown; | |
| mimeType?: unknown; | |
| fileName?: unknown; | |
| content?: unknown; | |
| }; | |
| export function normalizeRpcAttachmentsToChatAttachments( | |
| attachments: RpcAttachmentInput[] | undefined, | |
| ): ChatAttachment[] { | |
| return ( | |
| attachments | |
| ?.map((a) => ({ | |
| type: typeof a?.type === "string" ? a.type : undefined, | |
| mimeType: typeof a?.mimeType === "string" ? a.mimeType : undefined, | |
| fileName: typeof a?.fileName === "string" ? a.fileName : undefined, | |
| content: | |
| typeof a?.content === "string" | |
| ? a.content | |
| : ArrayBuffer.isView(a?.content) | |
| ? Buffer.from(a.content.buffer, a.content.byteOffset, a.content.byteLength).toString( | |
| "base64", | |
| ) | |
| : a?.content instanceof ArrayBuffer | |
| ? Buffer.from(a.content).toString("base64") | |
| : undefined, | |
| })) | |
| .filter((a) => a.content) ?? [] | |
| ); | |
| } | |