jimpex
    Preparing search index...

    Type Alias Events

    The events service Jimpex uses. This is an alternative declaration of the EventsHub class that uses the interfaces and types from this project.

    type Events = {
        emit: <EventName extends JimpexEventName>(
            event: JimpexEventName,
            payload: JimpexEventPayload<EventName>,
        ) => void;
        on: <EventName extends JimpexEventNameLike>(
            eventName: EventName,
            listener: JimpexEventListener<EventName>,
        ) => () => boolean;
        once: <EventName extends JimpexEventNameLike>(
            eventName: EventName,
            listener: JimpexEventListener<EventName>,
        ) => () => boolean;
        reduce: <EventName extends JimpexReducerEventName>(
            event: JimpexReducerEventName,
            target: JimpexReducerEventTarget<EventName>,
            payload: JimpexReducerEventPayload<EventName>,
        ) => Promise<JimpexReducerEventTarget<EventName>>;
        reduceSync: <EventName extends JimpexReducerEventName>(
            event: JimpexReducerEventName,
            target: JimpexReducerEventTarget<EventName>,
            payload: JimpexReducerEventPayload<EventName>,
        ) => JimpexReducerEventTarget<EventName>;
    }
    Index

    Properties

    emit: <EventName extends JimpexEventName>(
        event: JimpexEventName,
        payload: JimpexEventPayload<EventName>,
    ) => void

    Emits an event and call all its listeners.

    Type Declaration

    // Extend the interface to type the payload.
    interface JimpexEvents {
    myEvent: { message: string };
    }
    // Add the listener.
    events.on('myEvent', ({ message }) => {
    console.log('Event received:', message);
    });
    // Trigger the event.
    events.emit('myEvent', { message: 'Hello' });
    // prints "Event received: Hello"
    on: <EventName extends JimpexEventNameLike>(
        eventName: EventName,
        listener: JimpexEventListener<EventName>,
    ) => () => boolean

    Adds a new event listener.

    Type Declaration

      • <EventName extends JimpexEventNameLike>(
            eventName: EventName,
            listener: JimpexEventListener<EventName>,
        ): () => boolean
      • Type Parameters

        • EventName extends JimpexEventNameLike

          The literal type of the event, to generate the type of the listener.

        Parameters

        Returns () => boolean

        An unsubscribe function to remove the listener.

    const unsubscribe = events.on('afterStart', ({ app }) => {
    app.getLogger().info('Hello world!');
    unsubscribe();
    });
    once: <EventName extends JimpexEventNameLike>(
        eventName: EventName,
        listener: JimpexEventListener<EventName>,
    ) => () => boolean

    Adds an event listener that will only be executed once.

    Type Declaration

      • <EventName extends JimpexEventNameLike>(
            eventName: EventName,
            listener: JimpexEventListener<EventName>,
        ): () => boolean
      • Type Parameters

        • EventName extends JimpexEventNameLike

          The literal type of the event, to generate the type of the listener.

        Parameters

        Returns () => boolean

        An unsubscribe function to remove the listener.

    events.once('afterStart', ({ app }) => {
    app.getLogger().info('Hello world!');
    unsubscribe();
    });
    reduce: <EventName extends JimpexReducerEventName>(
        event: JimpexReducerEventName,
        target: JimpexReducerEventTarget<EventName>,
        payload: JimpexReducerEventPayload<EventName>,
    ) => Promise<JimpexReducerEventTarget<EventName>>

    Asynchronously reduces a target using an event. It's like emit, but the event listeners return a modified (or not) version of the target.

    Type Declaration

    // Extend the interface to type the target.
    interface JimpexReducerEventTargets {
    myReducer: unknown[];
    }
    // Extend the interface to type the payload.
    interface JimpexReducerEventPayloads {
    myReducer: {
    message: string;
    };
    }
    // Add the reducer.
    events.on('myReducer', async (target, { message }) => {
    const data = await fetch('https://api.example.com/' + message);
    target.push(data);
    return target;
    });
    // Trigger the event.
    const result = await events.reduce('myReducer', [], { message: 'Hello' });
    // result would be a list of data fetched from the API.
    reduceSync: <EventName extends JimpexReducerEventName>(
        event: JimpexReducerEventName,
        target: JimpexReducerEventTarget<EventName>,
        payload: JimpexReducerEventPayload<EventName>,
    ) => JimpexReducerEventTarget<EventName>

    Synchronously reduces a target using an event. It's like emit, but the events listener return a modified (or not) version of the target.

    Type Declaration

    // Extend the interface to type the target.
    interface JimpexReducerEventTargets {
    myReducer: string[];
    }
    // Extend the interface to type the payload.
    interface JimpexReducerEventPayloads {
    myReducer: {
    message: string;
    };
    }
    // Add the reducer.
    events.on('myReducer', (target, { message }) => {
    target.push(message);
    return target;
    });
    // Trigger the event.
    events.reduce('event', [], 'Hello');
    // returns ['Hello']