diff --git a/src-node/polyfills.ts b/src-node/polyfills.ts index b342602..6b7b470 100644 --- a/src-node/polyfills.ts +++ b/src-node/polyfills.ts @@ -5,18 +5,29 @@ import { EventEmitter } from 'events'; import { Blob } from 'buffer'; import fetch from 'node-fetch'; -global.Blob = Blob; - -global.fetch = fetch; +if (!('Blob' in global)) { + global.Blob = Blob; +} +if (!('fetch' in global)) { + global.fetch = fetch; +} // mimic window events const emitter = new EventEmitter(); -global.addEventListener = emitter.addListener.bind(emitter); -global.removeEventListener = emitter.removeListener.bind(emitter); -global.dispatchEvent = (event) => emitter.emit(event.type, event); -global.CustomEvent = class { - constructor(type, payload) { - this.type = type; - Object.assign(this, payload); - } -}; +if ( + !('addEventListener' in global) && + !('removeEventListener' in global) && + !('dispatchEvent' in global) +) { + global.addEventListener = emitter.addListener.bind(emitter); + global.removeEventListener = emitter.removeListener.bind(emitter); + global.dispatchEvent = emitter.emit.bind(emitter); +} +if (!('CustomEvent' in global)) { + global.CustomEvent = class { + constructor(type, payload) { + this.type = type; + Object.assign(this, payload); + } + }; +}