mirror of
https://github.com/binaricat/Netcatty.git
synced 2026-11-11 00:30:57 +00:00
19 lines
874 B
TypeScript
19 lines
874 B
TypeScript
/** Install isolated browser storage for hook tests, including Node without Web Storage. */
|
|
export function installTestLocalStorage(): () => void {
|
|
const previous = Object.getOwnPropertyDescriptor(globalThis, 'localStorage');
|
|
const values = new Map<string, string>();
|
|
const storage: Storage = {
|
|
get length() { return values.size; },
|
|
clear: () => values.clear(),
|
|
getItem: key => values.get(String(key)) ?? null,
|
|
key: index => [...values.keys()][index] ?? null,
|
|
removeItem: key => { values.delete(String(key)); },
|
|
setItem: (key, value) => { values.set(String(key), String(value)); },
|
|
};
|
|
Object.defineProperty(globalThis, 'localStorage', { configurable: true, value: storage });
|
|
return () => {
|
|
if (previous) Object.defineProperty(globalThis, 'localStorage', previous);
|
|
else Reflect.deleteProperty(globalThis, 'localStorage');
|
|
};
|
|
}
|