diff --git a/web/instrumentation-client.ts b/web/instrumentation-client.ts index 2b949879ce..502b39e8be 100644 --- a/web/instrumentation-client.ts +++ b/web/instrumentation-client.ts @@ -32,48 +32,50 @@ async function main() { } } - class StorageMock { - data: Record + if (!('localStorage' in globalThis) || !('sessionStorage' in globalThis)) { + class StorageMock { + data: Record - constructor() { - this.data = {} as Record + constructor() { + this.data = {} as Record + } + + setItem(name: string, value: string) { + this.data[name] = value + } + + getItem(name: string) { + return this.data[name] || null + } + + removeItem(name: string) { + delete this.data[name] + } + + clear() { + this.data = {} + } } - setItem(name: string, value: string) { - this.data[name] = value + let localStorage, sessionStorage + + try { + localStorage = globalThis.localStorage + sessionStorage = globalThis.sessionStorage + } + catch { + localStorage = new StorageMock() + sessionStorage = new StorageMock() } - getItem(name: string) { - return this.data[name] || null - } + Object.defineProperty(globalThis, 'localStorage', { + value: localStorage, + }) - removeItem(name: string) { - delete this.data[name] - } - - clear() { - this.data = {} - } + Object.defineProperty(globalThis, 'sessionStorage', { + value: sessionStorage, + }) } - - let localStorage, sessionStorage - - try { - localStorage = globalThis.localStorage - sessionStorage = globalThis.sessionStorage - } - catch { - localStorage = new StorageMock() - sessionStorage = new StorageMock() - } - - Object.defineProperty(globalThis, 'localStorage', { - value: localStorage, - }) - - Object.defineProperty(globalThis, 'sessionStorage', { - value: sessionStorage, - }) } main()