MindSpark / utils /sanitize.ts
TheK3R1M's picture
Initial secure upload
fd4dc0d verified
import { Note, Project, NoteType, GenerationStatus } from '../types';
export const sanitizeProject = (p: any, userId: string): Project & { userId: string } => ({
id: String(p.id || crypto.randomUUID()),
userId: String(userId),
title: String(p.title || 'İsimsiz Proje').substring(0, 100),
rootNoteId: String(p.rootNoteId || crypto.randomUUID()),
createdAt: typeof p.createdAt === 'number' ? p.createdAt : Date.now(),
creatorId: String(p.creatorId || userId),
creatorEmail: String(p.creatorEmail || ''),
collaborators: Array.isArray(p.collaborators) ? p.collaborators.map(String) : [],
...(p.summary ? { summary: String(p.summary).substring(0, 1000) } : {}),
...(p.originalPrompt ? { originalPrompt: String(p.originalPrompt).substring(0, 5000) } : {}),
...(p.categoryId ? { categoryId: String(p.categoryId) } : {})
});
export const sanitizeNote = (n: any, userId: string): Note & { userId: string } => ({
id: String(n.id || crypto.randomUUID()),
userId: String(userId),
projectId: String(n.projectId || crypto.randomUUID()),
...(n.parentId ? { parentId: String(n.parentId) } : { parentId: null }),
title: String(n.title || 'İsimsiz Not').substring(0, 200),
content: String(n.content || '').substring(0, 1000000),
type: ['ROOT', 'TEXT', 'CODE', 'IMAGE'].includes(n.type) ? n.type : NoteType.TEXT,
status: ['IDLE', 'PLANNING', 'GENERATING', 'COMPLETED', 'ERROR'].includes(n.status) ? n.status : GenerationStatus.IDLE,
children: Array.isArray(n.children) ? n.children.map(String).slice(0, 1000) : [],
timestamp: typeof n.timestamp === 'number' ? n.timestamp : Date.now(),
lastEditedBy: String(n.lastEditedBy || userId),
lastEditedAt: typeof n.lastEditedAt === 'number' ? n.lastEditedAt : Date.now(),
...(Array.isArray(n.attachments) ? { attachments: n.attachments.slice(0, 100) } : {}),
...(Array.isArray(n.tags) ? { tags: n.tags.map(String).slice(0, 50) } : {}),
...(Array.isArray(n.linkedNoteIds) ? { linkedNoteIds: n.linkedNoteIds.map(String).slice(0, 100) } : {}),
...(n.agentRole ? { agentRole: String(n.agentRole).substring(0, 100) } : {}),
...(n.assignedAgent ? { assignedAgent: String(n.assignedAgent).substring(0, 50) } : {})
});
export const sanitizeCategory = (c: any, userId: string) => ({
id: String(c.id || crypto.randomUUID()),
userId: String(userId),
name: String(c.name || 'İsimsiz Kategori').substring(0, 50),
color: String(c.color || '#6366f1').substring(0, 20)
});