import { writable } from "svelte/store"; export interface ConsoleMessage { id: string; type: "log" | "warn" | "error" | "info"; message: string; timestamp: number; } interface ConsoleState { messages: ConsoleMessage[]; maxMessages: number; } function createConsoleStore() { const { subscribe, update, set } = writable({ messages: [], maxMessages: 100, }); return { subscribe, addMessage: (type: ConsoleMessage["type"], message: string) => { update((state) => { const timestamp = Date.now(); const newMessage: ConsoleMessage = { id: `${timestamp}_${Math.random().toString(36).substr(2, 9)}`, type, message, timestamp, }; const messages = state.messages.length >= state.maxMessages ? [...state.messages.slice(1), newMessage] : [...state.messages, newMessage]; return { ...state, messages }; }); }, clear: () => { update((state) => { const timestamp = Date.now(); return { ...state, messages: [ { id: `${timestamp}_${Math.random().toString(36).substr(2, 9)}`, type: "info", message: "Console cleared", timestamp, }, ], }; }); }, reset: () => set({ messages: [], maxMessages: 100 }), }; } export const consoleStore = createConsoleStore();