| 112 | } |
| 113 | } |
| 114 | private getGlobalTarget() { |
| 115 | // server one is the global event target |
| 116 | if ( |
| 117 | typeof globalThis !== 'undefined' && |
| 118 | globalThis.__TANSTACK_EVENT_TARGET__ |
| 119 | ) { |
| 120 | this.debugLog('Using global event target') |
| 121 | return globalThis.__TANSTACK_EVENT_TARGET__ |
| 122 | } |
| 123 | // CLient event target is the browser window object |
| 124 | if ( |
| 125 | typeof window !== 'undefined' && |
| 126 | typeof window.addEventListener !== 'undefined' |
| 127 | ) { |
| 128 | this.debugLog('Using window as event target') |
| 129 | |
| 130 | return window |
| 131 | } |
| 132 | // Protect against non-web environments like react-native |
| 133 | const eventTarget = |
| 134 | typeof EventTarget !== 'undefined' ? new EventTarget() : undefined |
| 135 | |
| 136 | // For non-web environments like react-native |
| 137 | if ( |
| 138 | typeof eventTarget === 'undefined' || |
| 139 | typeof eventTarget.addEventListener === 'undefined' |
| 140 | ) { |
| 141 | this.debugLog( |
| 142 | 'No event mechanism available, running in non-web environment', |
| 143 | ) |
| 144 | return { |
| 145 | addEventListener: () => {}, |
| 146 | removeEventListener: () => {}, |
| 147 | dispatchEvent: () => false, |
| 148 | } |
| 149 | } |
| 150 | |
| 151 | this.debugLog('Using new EventTarget as fallback') |
| 152 | return eventTarget |
| 153 | } |
| 154 | |
| 155 | getPluginId() { |
| 156 | return this.#pluginId |