JSPM

@ceramicnetwork/transport-postmessage

0.1.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 547
  • Score
    100M100P100Q107802F
  • License (Apache-2.0 OR MIT)

Package Exports

  • @ceramicnetwork/transport-postmessage

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@ceramicnetwork/transport-postmessage) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

postMessage transport

Transport using postMessage

Installation

npm install @ceramicnetwork/transport-postmessage

Usage

Same origin with a Web Worker

import { PostMessageTransport } from '@ceramicnetwork/transport-postmessage'

const worker = new Worker('worker.js')
const transport = new PostMessageTransport<string>(worker)

transport.subscribe((msg) => {
  console.log(msg)
})
transport.next('test')

Cross-origin between Window and frame

import { PostMessageTransport } from '@ceramicnetwork/transport-postmessage'

const iframe = document.getElementById('iframe')
const transport = new PostMessageTransport<string>(window, iframe, {
  allowedOrigin: 'http://iframe.localhost', // Origin of the iframe messages are received from
  postMessageArguments: ['http://window.localhost'], // Origin of the window sending messages
})

transport.subscribe((msg) => {
  console.log(msg)
})
transport.next('test')

Types and interfaces

PostMessageEventMap

interface PostMessageEventMap {
  message: MessageEvent
  messageerror: MessageEvent
}

PostMessageTarget

interface PostMessageTarget extends EventTarget {
  onmessage: ((this: any, ev: MessageEvent) => any) | null
  onmessageerror: ((this: any, ev: MessageEvent) => any) | null
  postMessage(...args: Array<any>): void
  addEventListener<K extends keyof PostMessageEventMap>(
    type: K,
    listener: (this: any, ev: PostMessageEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions
  ): void
  addEventListener(
    type: string,
    listener: EventListenerOrEventListenerObject,
    options?: boolean | AddEventListenerOptions
  ): void
  removeEventListener<K extends keyof PostMessageEventMap>(
    type: K,
    listener: (this: any, ev: PostMessageEventMap[K]) => any,
    options?: boolean | EventListenerOptions
  ): void
  removeEventListener(
    type: string,
    listener: EventListenerOrEventListenerObject,
    options?: boolean | EventListenerOptions
  ): void
}

PostMessageTransportOptions

type PostMessageTransportOptions = {
  allowedOrigin?: string | Array<string>
  postMessageArguments?: Array<any>
}

API

createOriginFilter()

Type parameters

  1. Event extends MessageEvent

Arguments

  1. allowedOrigin: string | Array<string>

Returns (event: Event) => boolean

createMessageObservable()

Arguments

  1. target: PostMessageTarget
  2. allowedOrigin?: string | Array<string>

Returns Observable<MessageEvent>

createPostMessageObserver()

Type parameters

  1. MessageData

Arguments

  1. target: PostMessageTarget
  2. ...args: Array<any>

Returns Observer<MessageData>

PostMessageTransport class

Extends TransportSubject class

Type parameters

  1. MsgIn: the type of the messages coming in from the from target
  2. MsgOut = MsgIn: the type of the messages going out to the to target

new PostMessageTransport()

Arguments

  1. from: PostMessageTarget
  2. to: PostMessageTarget = from
  3. PostMessageTransportOptions = {}

License

Apache-2.0 OR MIT