diff --git a/packages/provider/src/utils.ts b/packages/provider/src/utils.ts index 9fd209ff1..88ac23681 100644 --- a/packages/provider/src/utils.ts +++ b/packages/provider/src/utils.ts @@ -145,11 +145,23 @@ export class LocalStorage { private constructor() {} static getInstance(): ItemStore { - if (!LocalStorage._instance) { - LocalStorage._instance = { - getItem: (key: string) => Promise.resolve(window.localStorage.getItem(key)), - setItem: (key: string, value: string) => Promise.resolve(window.localStorage.setItem(key, value)), - removeItem: (key: string) => Promise.resolve(window.localStorage.removeItem(key)) + if (typeof window === 'object') { + if (!LocalStorage._instance) { + LocalStorage._instance = { + getItem: (key: string) => Promise.resolve(window.localStorage.getItem(key)), + setItem: (key: string, value: string) => Promise.resolve(window.localStorage.setItem(key, value)), + removeItem: (key: string) => Promise.resolve(window.localStorage.removeItem(key)) + } + } + } else { + // noop local storage if window is not defined + // TODO: perhaps add an in-memory local storage if we need? + if (!LocalStorage._instance) { + LocalStorage._instance = { + getItem: (key: string) => Promise.resolve(null), + setItem: (key: string, value: string) => Promise.resolve(), + removeItem: (key: string) => Promise.resolve() + } } } return this._instance diff --git a/packages/provider/src/wallet.ts b/packages/provider/src/wallet.ts index f2a108268..46918154a 100644 --- a/packages/provider/src/wallet.ts +++ b/packages/provider/src/wallet.ts @@ -133,7 +133,7 @@ export class Wallet implements WalletProvider { this.transport.messageProvider = new MuxMessageProvider() // multiple message provider setup, first one to connect will be the main transport - if (this.config.transports?.windowTransport?.enabled) { + if (this.config.transports?.windowTransport?.enabled && typeof window === 'object') { this.transport.windowMessageProvider = new WindowMessageProvider(this.config.walletAppURL) this.transport.messageProvider.add(this.transport.windowMessageProvider) }