Socket
Socket
Sign inDemoInstall

bind-event-listener

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

bind-event-listener - npm Package Compare versions

Comparing version 2.1.0-beta.0 to 2.1.0

12

dist/types.d.ts
export declare type UnbindFn = () => void;
declare type ExtractEventTypeFromHandler<MaybeFn extends unknown> = MaybeFn extends (this: any, event: infer MaybeEvent) => any ? MaybeEvent extends Event ? MaybeEvent : Event : never;
declare type GetEventType<Target extends EventTarget, EventName extends string> = `on${EventName}` extends keyof Target ? ExtractEventTypeFromHandler<Target[`on${EventName}`]> : Event;
declare type ListenerObject<TEvent extends Event> = {
handleEvent(this: ListenerObject<TEvent>, e: TEvent): void;
};
export declare type Listener<Target extends EventTarget, EventName extends string> = ListenerObject<GetEventType<Target, EventName>> | {
(this: Target, e: GetEventType<Target, EventName>): void;
};
export declare type Binding<Target extends EventTarget = EventTarget, EventName extends string = string> = {

@@ -9,8 +15,2 @@ type: EventName;

};
export declare type Listener<Target extends EventTarget, EventName extends string> = ListenerObject<GetEventType<Target, EventName>> | {
(this: Target, e: GetEventType<Target, EventName>): void;
};
export declare type ListenerObject<TEvent extends Event> = {
handleEvent(this: ListenerObject<TEvent>, e: TEvent): void;
};
export {};
{
"name": "bind-event-listener",
"version": "2.1.0-beta.0",
"version": "2.1.0",
"private": false,

@@ -5,0 +5,0 @@ "description": "Making binding and unbinding DOM events easier",

@@ -12,14 +12,19 @@ export type UnbindFn = () => void;

type GetEventType<Target extends EventTarget, EventName extends string> =
// Does the target have a on${eventName} property?
`on${EventName}` extends keyof Target
? ExtractEventTypeFromHandler<Target[`on${EventName}`]>
: Event;
// Given an EventTarget and an EventName - return the event type (eg `MouseEvent`)
// Rather than switching on every time of EventTarget and looking up the appropriate `EventMap`
// We are being sneaky an pulling the type out of any `on${EventName}` property
// This is surprisingly robust
type GetEventType<
Target extends EventTarget,
EventName extends string,
> = `on${EventName}` extends keyof Target
? ExtractEventTypeFromHandler<Target[`on${EventName}`]>
: Event;
export type Binding<Target extends EventTarget = EventTarget, EventName extends string = string> = {
type: EventName;
listener: Listener<Target, EventName>;
options?: boolean | AddEventListenerOptions;
// For listener objects, the handleEvent function has the object as the `this` binding
type ListenerObject<TEvent extends Event> = {
handleEvent(this: ListenerObject<TEvent>, e: TEvent): void;
};
// event listeners can be an object or a function
export type Listener<Target extends EventTarget, EventName extends string> =

@@ -29,5 +34,6 @@ | ListenerObject<GetEventType<Target, EventName>>

export type ListenerObject<TEvent extends Event> = {
// For listener objects, the handleEvent function has the object as the `this` binding
handleEvent(this: ListenerObject<TEvent>, e: TEvent): void;
export type Binding<Target extends EventTarget = EventTarget, EventName extends string = string> = {
type: EventName;
listener: Listener<Target, EventName>;
options?: boolean | AddEventListenerOptions;
};
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc