callem
TypeScript icon, indicating that this package has built-in type declarations

0.0.2 • Public • Published

Callem

Callem is a Typescript-first micro event library based on a convenient observer pattern often found in React and similar tools.

Installation

npm i callem

Usage

Create an event

import {callem} from 'callem'
const [onMyEvent, emitMyEvent] = callem<{id:number}>()

const unsubscribe = onMyEvent( e => {
    console.log(`Event is ${e.id}`)
})

emitMyEvent({id: 42})

Advanced Usage

Suppose you want to await an event with a timeout. Let's see it in action.

type MyEventData = {id:number}
const [onMyEvent, emitMyEvent] = callem<MyEventdata>()

export const awaitEventWithTimeout = () => {
  return new Promise<MyEventData>((resolve, reject) => {
    let tid: ReturnType<typeof setTimeout>
    const unsub = onMyEvent((eventData) => {
      clearTimeout(tid)
      unsub()
      resolve(eventData)
    })
    tid = setTimeout(() => {
      unsub()
      reject(new Error(`Timed out waiting for event data`))
    }, 5000)
  })
}

const myEventData = await awaitEventWithTimeout()

Package Sidebar

Install

npm i callem

Weekly Downloads

2

Version

0.0.2

License

MIT

Unpacked Size

3.95 kB

Total Files

5

Last publish

Collaborators

  • benallfree