Files
cameleer-server/ui/src/stores/tracing-store.ts

29 lines
1002 B
TypeScript
Raw Normal View History

import { create } from 'zustand'
type CaptureMode = 'NONE' | 'INPUT' | 'OUTPUT' | 'BOTH'
interface TracingState {
/** Key: applicationName → { processorId: captureMode } */
tracedProcessors: Record<string, Record<string, CaptureMode>>
isTraced: (app: string, processorId: string) => boolean
/** Toggle processor tracing (BOTH on, remove on off). Returns the full map for the app. */
toggleProcessor: (app: string, processorId: string) => Record<string, CaptureMode>
}
export const useTracingStore = create<TracingState>((set, get) => ({
tracedProcessors: {},
isTraced: (app, processorId) =>
processorId in (get().tracedProcessors[app] ?? {}),
toggleProcessor: (app, processorId) => {
const current = { ...(get().tracedProcessors[app] ?? {}) }
if (processorId in current) delete current[processorId]
else current[processorId] = 'BOTH'
set((state) => ({
tracedProcessors: { ...state.tracedProcessors, [app]: current },
}))
return current
},
}))