0.1.0 • Published 2 months ago

@mike.pete/bime v0.1.0

Weekly downloads
-
License
ISC
Repository
github
Last release
2 months ago

Bime

A simple, bi-directional, promise-based postMessage library (RPC for iframes).

Features

  • Full Typescript support
  • Easily expose functions to be called remotely
  • Promise-based
  • Model-driven
  • Bi-directional communication
  • Message acknowledgement and automatic retry when an acknowledgement is not received
  • Zero dependencies
  • Origin validation

Listen for Invocations

Expose a model for other windows to call:

let count = 0
const increment = () => ++count
const decrement = () => --count
const setCount = (newCount: number) => (count = newCount)

// expose functions for other windows to call
const model = { increment, decrement, setCount }

// listen for invocations
const listener = bime.listen(model, "*")

// stop listening when you're done
listener.cleanup()

Call Remote Functions

Call remote functions exposed by another window:

type RemoteModel = {
  increment: () => number
  decrement: () => number
  setCount: (newCount: number) => void
}

// get a reference to the iframe we want to talk to
const remoteWindow = (document.getElementById("iframe") as HTMLIFrameElement)
  .contentWindow as Window

// get ready to call remote functions and listen for responses
const remote = bime.remote<RemoteModel>(remoteWindow, "*")

// call remote function
remote.setCount(5)

// call remote function and get a response
const newCount = await remote.increment()
console.log(newCount) // 6

// stop listening for responses when you're done
remote.cleanup()
0.1.0

2 months ago

0.0.1

4 months ago

0.0.3

4 months ago

0.0.2

4 months ago

0.0.9

2 months ago

0.0.8

2 months ago

0.0.5

3 months ago

0.0.4

3 months ago

0.0.7

3 months ago

0.0.6

3 months ago

1.0.2

8 months ago

1.0.1

10 months ago

1.0.0

10 months ago