@clerk/shared
Version:
Internal package utils used by the Clerk SDKs
1 lines • 2.74 kB
Source Map (JSON)
{"version":3,"file":"localStorageBroadcastChannel.mjs","names":[],"sources":["../src/localStorageBroadcastChannel.ts"],"sourcesContent":["import { deprecated } from './deprecated';\n\ntype Listener<T> = (e: MessageEvent<T>) => void;\n\nconst KEY_PREFIX = '__lsbc__';\n\n/**\n * @deprecated This class will be completely removed in the next major version.\n * Use the native BroadcastChannel API directly instead.\n */\nexport class LocalStorageBroadcastChannel<E> {\n private readonly eventTarget = window;\n private readonly channelKey: string;\n\n constructor(name: string) {\n deprecated('LocalStorageBroadcastChannel', 'Use the native BroadcastChannel API directly instead.');\n this.channelKey = KEY_PREFIX + name;\n this.setupLocalStorageListener();\n }\n\n public postMessage = (data: E): void => {\n if (typeof window === 'undefined') {\n // Silently do nothing\n return;\n }\n\n try {\n window.localStorage.setItem(this.channelKey, JSON.stringify(data));\n window.localStorage.removeItem(this.channelKey);\n } catch {\n // Silently do nothing\n }\n };\n\n public addEventListener = (eventName: 'message', listener: Listener<E>): void => {\n this.eventTarget.addEventListener(this.prefixEventName(eventName), e => {\n listener(e as MessageEvent);\n });\n };\n\n private setupLocalStorageListener = () => {\n const notifyListeners = (e: StorageEvent) => {\n if (e.key !== this.channelKey || !e.newValue) {\n return;\n }\n\n try {\n const data = JSON.parse(e.newValue || '');\n const event = new MessageEvent(this.prefixEventName('message'), {\n data,\n });\n this.eventTarget.dispatchEvent(event);\n } catch {\n //\n }\n };\n\n window.addEventListener('storage', notifyListeners);\n };\n\n private prefixEventName(eventName: string): string {\n return this.channelKey + eventName;\n }\n}\n"],"mappings":";;;AAIA,MAAM,aAAa;;;;;AAMnB,IAAa,+BAAb,MAA6C;CAC3C,AAAiB,cAAc;CAC/B,AAAiB;CAEjB,YAAY,MAAc;EACxB,WAAW,gCAAgC,uDAAuD;EAClG,KAAK,aAAa,aAAa;EAC/B,KAAK,0BAA0B;CACjC;CAEA,AAAO,eAAe,SAAkB;EACtC,IAAI,OAAO,WAAW,aAEpB;EAGF,IAAI;GACF,OAAO,aAAa,QAAQ,KAAK,YAAY,KAAK,UAAU,IAAI,CAAC;GACjE,OAAO,aAAa,WAAW,KAAK,UAAU;EAChD,QAAQ,CAER;CACF;CAEA,AAAO,oBAAoB,WAAsB,aAAgC;EAC/E,KAAK,YAAY,iBAAiB,KAAK,gBAAgB,SAAS,IAAG,MAAK;GACtE,SAAS,CAAiB;EAC5B,CAAC;CACH;CAEA,AAAQ,kCAAkC;EACxC,MAAM,mBAAmB,MAAoB;GAC3C,IAAI,EAAE,QAAQ,KAAK,cAAc,CAAC,EAAE,UAClC;GAGF,IAAI;IACF,MAAM,OAAO,KAAK,MAAM,EAAE,YAAY,EAAE;IACxC,MAAM,QAAQ,IAAI,aAAa,KAAK,gBAAgB,SAAS,GAAG,EAC9D,KACF,CAAC;IACD,KAAK,YAAY,cAAc,KAAK;GACtC,QAAQ,CAER;EACF;EAEA,OAAO,iBAAiB,WAAW,eAAe;CACpD;CAEA,AAAQ,gBAAgB,WAA2B;EACjD,OAAO,KAAK,aAAa;CAC3B;AACF"}