/** * Vitest stub for `@vicinae/api`. * * The real package talks to the Vicinae runtime over JSON-RPC, which does not * exist under test. `vitest.config.ts` aliases the package here. * * `LocalStorage` is backed by a real in-memory map rather than being a set of * no-op spies, so the session store's read-after-write behaviour is actually * exercised instead of being mocked into false confidence. */ type StorageValue = string | number | boolean; const memory = new Map(); export const LocalStorage = { async getItem(key: string): Promise { return memory.get(key) as T | undefined; }, async setItem(key: string, value: StorageValue): Promise { memory.set(key, value); }, async removeItem(key: string): Promise { memory.delete(key); }, async allItems(): Promise> { return Object.fromEntries(memory); }, async clear(): Promise { memory.clear(); }, }; /** Test-only helper: wipes the fake store between cases. */ export function __resetLocalStorage(): void { memory.clear(); } /** Returns whatever the test sets on the override, otherwise an empty object. */ let preferenceOverride: Record = {}; export function __setPreferenceValues(values: Record): void { preferenceOverride = values; } export function getPreferenceValues>(): T { return preferenceOverride as T; }