1.1.0 • Published 5 years ago

asynciterable-pipeable-chainable-event-hub v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
5 years ago

asyncIterable-pipeable-chainable-event-hub

CI/test

chainable, asyncIterable, pipeable with type infer

It will be useful when work with EventEmitter, rxjs, Socket (Socket extends EventEmitter) or other event driven bussiness.

Example

npm install asyncIterable-pipeable-chainable-event-hub
#or
yarn add asyncIterable-pipeable-chainable-event-hub

Create an instance

create an EventLite instance

import { EventLite } from "asyncIterable-pipeable-chainable-event-hub";

const eventLite = new EventLite();

optional but useful event hub

const someEvent = eventLite.eventHandle("eventName")<[number, string]>();

Emit

emit on anywhere

let i = 0;
setInterval(() => {
  // with type check
  someEvent.handleEmit(++i, i + "");
  // or without type check
  eventLite.emit("eventName", ++i, i + "");
}, 1000);

Add listener

chainable and with type infer

// or
someEvent.handleOn(console.info).handleOnce(console.log).handleRemove();

// or
eventLite
  .on("eventName", (n: number, s: string) => {
    console.log(n, s);
  })
  .handleOn(console.info)
  .handleOnce(console.log)
  .handleRemove(undefined);

// or
eventLite
  .eventHandle("eventName")<[number, string]>()
  .handleOn(console.info)
  .handleOnce(console.log)
  .handleRemove(undefined);

Async Iterable

asyncIterable and with type infer

for await (const { data, cancel } of someEvent.iterable()) {
  console.log(data);
}

Pipeable

pipeable and with type infer

const followEvent = someEvent
  .handlePipe((n, s) => {
    return n;
  })
  .handleOn(console.info)
  .handleOnce(console.log)
  .handleRemove(undefined);

connect and pipe to a another or a new EventLite instance

const followEventLite = someEvent
  .handleConnect()
  .handleOn(console.info)
  .handleOnce(console.log)
  .handleRemove(undefined).eventLite;

Note: about remove

remove function have two arg, first one is event key,secondone is event listener callback, typedRemove just need the second arg of remove.

// just remove eventListener from listeners list of the event for `event key`
eventLite.remove("event key", eventListener);

// remove all eventListener from listeners list of the event for `event key`
eventLite.remove("event key", undefined);

// remove eventListener from listeners list of all event
eventLite.remove(undefined, eventListener);
1.1.0

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago