import { logEvent } from '../services/statsig' type SessionState = { modelErrors: Record currentError: string | null } const isDebug = process.argv.includes('--debug') || process.argv.includes('-d') || process.env.DEBUG === 'true' const sessionState: SessionState = { modelErrors: {}, currentError: null, } as const function setSessionState( key: K, value: SessionState[K], ): void function setSessionState(partialState: Partial): void function setSessionState( keyOrState: keyof SessionState | Partial, value?: any, ): void { if (typeof keyOrState === 'string') { logEvent('session_state_set', { key: keyOrState, value: JSON.stringify(value), }) sessionState[keyOrState] = value } else { logEvent('session_state_set', { key: 'partial', value: JSON.stringify(keyOrState), }) Object.assign(sessionState, keyOrState) } } function getSessionState(): SessionState function getSessionState(key: K): SessionState[K] function getSessionState(key?: K) { return key === undefined ? sessionState : sessionState[key] } export type { SessionState } export { setSessionState, getSessionState } export default sessionState