mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-21 15:01:03 +00:00
26 lines
812 B
TypeScript
26 lines
812 B
TypeScript
function isStorage(value: unknown): value is Storage {
|
|
return (
|
|
Boolean(value) &&
|
|
typeof (value as Storage).getItem === "function" &&
|
|
typeof (value as Storage).setItem === "function"
|
|
);
|
|
}
|
|
|
|
export function getSafeLocalStorage(): Storage | null {
|
|
const descriptor = Object.getOwnPropertyDescriptor(globalThis, "localStorage");
|
|
|
|
if (typeof process !== "undefined" && process.env?.VITEST) {
|
|
return descriptor && !descriptor.get && isStorage(descriptor.value) ? descriptor.value : null;
|
|
}
|
|
|
|
if (typeof window !== "undefined" && typeof document !== "undefined") {
|
|
try {
|
|
return isStorage(window.localStorage) ? window.localStorage : null;
|
|
} catch {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
return descriptor && !descriptor.get && isStorage(descriptor.value) ? descriptor.value : null;
|
|
}
|