From 5c1975e7728df2d065495f6952cdb837d13d0188 Mon Sep 17 00:00:00 2001 From: "duck.__index" <138041510+NormalDuck@users.noreply.github.com> Date: Sun, 18 May 2025 16:34:28 -0700 Subject: [PATCH 1/2] feat: support functions for connection --- src/use-event-listener/use-event-listener.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/use-event-listener/use-event-listener.ts b/src/use-event-listener/use-event-listener.ts index 1b89422..8a3cdae 100644 --- a/src/use-event-listener/use-event-listener.ts +++ b/src/use-event-listener/use-event-listener.ts @@ -16,7 +16,8 @@ interface EventListenerOptions { type EventLike = | { Connect(callback: T): ConnectionLike } | { connect(callback: T): ConnectionLike } - | { subscribe(callback: T): ConnectionLike }; + | { subscribe(callback: T): ConnectionLike } + | ((callback: T) => ConnectionLike); type ConnectionLike = { Disconnect(): void } | { disconnect(): void } | (() => void); @@ -38,6 +39,8 @@ const connect = (event: EventLike, callback: Callback): ConnectionLike => { return event.connect(callback); } else if ("subscribe" in event) { return event.subscribe(callback); + } else if (typeOf(event) === "function") { + return event(callback); } else { throw "Event-like object does not have a supported connect method."; } From ef2a6a7db2cd9ca0eb75bd39767a53e846f192c8 Mon Sep 17 00:00:00 2001 From: "duck.__index" <138041510+NormalDuck@users.noreply.github.com> Date: Sun, 18 May 2025 16:57:56 -0700 Subject: [PATCH 2/2] fix: run function check before prop checks --- src/use-event-listener/use-event-listener.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/use-event-listener/use-event-listener.ts b/src/use-event-listener/use-event-listener.ts index 8a3cdae..a72256a 100644 --- a/src/use-event-listener/use-event-listener.ts +++ b/src/use-event-listener/use-event-listener.ts @@ -33,14 +33,14 @@ const connect = (event: EventLike, callback: Callback): ConnectionLike => { } }); return connection; + } else if (typeIs(event, "function")) { + return event(callback); } else if ("Connect" in event) { return event.Connect(callback); } else if ("connect" in event) { return event.connect(callback); } else if ("subscribe" in event) { return event.subscribe(callback); - } else if (typeOf(event) === "function") { - return event(callback); } else { throw "Event-like object does not have a supported connect method."; }