From ff42bcb381c4335484a887cee679eefadd97cf5b Mon Sep 17 00:00:00 2001 From: Joel Gallant Date: Tue, 11 Mar 2025 00:40:45 -0600 Subject: [PATCH] fix(web-worker): ensure `removeEventListener` is bound to worker (#7631) --- packages/web-worker/src/shared-worker.ts | 4 +++- packages/web-worker/src/worker.ts | 4 +++- test/core/src/web-worker/eventListenerWorker.ts | 7 +++++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/web-worker/src/shared-worker.ts b/packages/web-worker/src/shared-worker.ts index d890d4196..cb15a89af 100644 --- a/packages/web-worker/src/shared-worker.ts +++ b/packages/web-worker/src/shared-worker.ts @@ -97,7 +97,9 @@ export function createSharedWorkerConstructor(): typeof SharedWorker { addEventListener: (...args: any[]) => { return this._vw_workerTarget.addEventListener(...args as [any, any]) }, - removeEventListener: this._vw_workerTarget.removeEventListener, + removeEventListener: (...args: any[]) => { + return this._vw_workerTarget.removeEventListener(...args as [any, any]) + }, get self() { return selfProxy }, diff --git a/packages/web-worker/src/worker.ts b/packages/web-worker/src/worker.ts index 821c5cc1e..e8862cc20 100644 --- a/packages/web-worker/src/worker.ts +++ b/packages/web-worker/src/worker.ts @@ -75,7 +75,9 @@ export function createWorkerConstructor( } return this._vw_workerTarget.addEventListener(...args as [any, any]) }, - removeEventListener: this._vw_workerTarget.removeEventListener, + removeEventListener: (...args: any[]) => { + return this._vw_workerTarget.removeEventListener(...args as [any, any]) + }, postMessage: (...args: any[]) => { if (!args.length) { throw new SyntaxError( diff --git a/test/core/src/web-worker/eventListenerWorker.ts b/test/core/src/web-worker/eventListenerWorker.ts index 8fb8afde7..acae3731f 100644 --- a/test/core/src/web-worker/eventListenerWorker.ts +++ b/test/core/src/web-worker/eventListenerWorker.ts @@ -1,3 +1,6 @@ -self.addEventListener('message', (e) => { +function callback(e: MessageEvent) { self.postMessage(`${e.data} world`) -}) + self.removeEventListener('message', callback) +} + +self.addEventListener('message', callback)