From 34d13a7f31ec9e090b775a99abd2bedef176bb8d Mon Sep 17 00:00:00 2001 From: Federico Brigante Date: Sat, 16 Mar 2024 20:06:27 +0800 Subject: [PATCH] `onExtensionStart` - Add `removeListener` --- source/on-extension-start.test.ts | 17 +++++++++++++++++ source/on-extension-start.ts | 3 +++ 2 files changed, 20 insertions(+) diff --git a/source/on-extension-start.test.ts b/source/on-extension-start.test.ts index b019d46..0ded565 100644 --- a/source/on-extension-start.test.ts +++ b/source/on-extension-start.test.ts @@ -55,4 +55,21 @@ describe('onExtensionStart', () => { expect(listenerSpy).toHaveBeenCalledTimes(0); expect(listenerSpy2).toHaveBeenCalledTimes(0); }); + + it('should not run the listeners if they are removed', async () => { + const {onExtensionStart} = await import('./on-extension-start.js'); + + const listenerSpy = vi.fn(); + const listenerSpy2 = vi.fn(); + + onExtensionStart.addListener(listenerSpy); + onExtensionStart.addListener(listenerSpy2); + + onExtensionStart.removeListener(listenerSpy); + + await sleep(100); + + expect(listenerSpy).toHaveBeenCalledTimes(0); + expect(listenerSpy2).toHaveBeenCalledTimes(1); + }); }); diff --git a/source/on-extension-start.ts b/source/on-extension-start.ts index c530695..4584c2d 100644 --- a/source/on-extension-start.ts +++ b/source/on-extension-start.ts @@ -50,6 +50,9 @@ export const onExtensionStart = Object.freeze({ event.addEventListener('extension-start', callback); } }, + removeListener(callback: VoidCallback) { + event.removeEventListener('extension-start', callback); + } }); // Automatically register the runner