Skip to content

Transports

function checkOsraMessageKey(message: any, key: string): message is Message

Defined in: utils/transport.ts:118

any

string

message is Message


function getWebExtensionGlobal(): WebExtGlobal | undefined

Defined in: utils/transport.ts:114

WebExtGlobal | undefined


function getWebExtensionRuntime(): WebExtRuntime | undefined

Defined in: utils/transport.ts:116

WebExtRuntime | undefined


Guide: Low-level API

function registerOsraMessageListener(__namedParameters: {
key?: string
listener: (message: Message, messageContext: MessageContext) => void
origin?: string
remoteName?: string
transport: ReceiveTransport
unregisterSignal?: AbortSignal
}): void

Defined in: utils/transport.ts:131

string = OSRA_DEFAULT_KEY

(message: Message, messageContext: MessageContext) => void

string = '*'

string

ReceiveTransport

AbortSignal

void


Guide: Low-level API

function sendOsraMessage(
transport: EmitTransport,
message: Message,
origin?: string,
transferables?: Transferable[],
): void

Defined in: utils/transport.ts:221

EmitTransport

Message

string = '*'

Transferable[] = []

void

type Context = {
abort?: () => void
origin?: string
port?: MessagePort | WebExtPort
sender?: WebExtSender
source?: MessageEventSource | null
}

Defined in: utils/transport.ts:21

What the local side knows about the realm on the other end of a connection.

origin and source are only OBSERVABLE on window transports. A MessagePort message carries origin “” and source null, so for a port the identity has to be declared by whoever created the transport, which is the side that received the port over a trustworthy window message. That is why expose takes a context option rather than only reporting what it can see: without it, every port-based consumer would rebuild the same out-of-band handshake to learn who it is talking to.

optional abort?: () => void;

Defined in: utils/transport.ts:25

Tears down THIS connection and nothing else: the peer is sent a close, its revivables are torn down, and it stops being tracked. unregisterSignal is the whole-expose equivalent; this is the one a server reaches for when a single realm misbehaves or is finished with.

void

optional origin?: string;

Defined in: utils/transport.ts:26

optional port?: MessagePort | WebExtPort;

Defined in: utils/transport.ts:28

optional sender?: WebExtSender;

Defined in: utils/transport.ts:29

optional source?: MessageEventSource | null;

Defined in: utils/transport.ts:27


Guide: Custom transports

type CustomEmitTransport = Extract<
CustomTransport,
{
emit: any
}
>

Defined in: utils/transport.ts:54


Guide: Custom transports

type CustomReceiveTransport = Extract<
CustomTransport,
{
receive: any
}
>

Defined in: utils/transport.ts:55


Guide: Custom transports

type CustomTransport = {
isJson?: boolean;
} &
| {
emit: CustomEmit;
receive: CustomReceive;
}
| {
receive: CustomReceive;
}
| {
emit: CustomEmit;
};

Defined in: utils/transport.ts:46

optional isJson?: boolean;

Guide: Custom transports

type EmitHandler = (message: Message, transferables?: Transferable[]) => void

Defined in: utils/transport.ts:41

Message

Transferable[]

void


type EmitJsonPlatformTransport = WebSocket | WebExtPort | WebExtRuntime

Defined in: utils/transport.ts:57


type EmitPlatformTransport =
| EmitJsonPlatformTransport
| Window
| ServiceWorker
| Worker
| SharedWorker
| MessagePort
| WorkerSelf

Defined in: utils/transport.ts:81


type EmitTransport = EmitPlatformTransport | CustomEmitTransport

Defined in: utils/transport.ts:103


type JsonPlatformTransport =
| {
isJson: true
}
| EmitJsonPlatformTransport
| ReceiveJsonPlatformTransport

Defined in: utils/transport.ts:69


Guide: Low-level API

type MessageContext = {
origin?: string
port?: MessagePort | WebExtPort
receiveTransport?: ReceivePlatformTransport
sender?: WebExtSender
source?: MessageEventSource | null
}

Defined in: utils/transport.ts:32

optional origin?: string;

Defined in: utils/transport.ts:37

optional port?: MessagePort | WebExtPort;

Defined in: utils/transport.ts:33

optional receiveTransport?: ReceivePlatformTransport;

Defined in: utils/transport.ts:35

optional sender?: WebExtSender;

Defined in: utils/transport.ts:34

optional source?: MessageEventSource | null;

Defined in: utils/transport.ts:36


Guide: Transports

type PlatformTransport = EmitPlatformTransport | ReceivePlatformTransport

Defined in: utils/transport.ts:99


Guide: Custom transports

type ReceiveHandler = (
listener: (event: Message, messageContext: MessageContext) => void,
) => void | (() => void)

Defined in: utils/transport.ts:40

(event: Message, messageContext: MessageContext) => void

void | (() => void)


type ReceiveJsonPlatformTransport =
WebSocket | WebExtPort | WebExtOnConnect | WebExtOnMessage | WebExtRuntime

Defined in: utils/transport.ts:62


type ReceivePlatformTransport =
| ReceiveJsonPlatformTransport
| Window
| ServiceWorkerContainer
| Worker
| SharedWorker
| MessagePort
| WorkerSelf

Defined in: utils/transport.ts:90


type ReceiveTransport = ReceivePlatformTransport | CustomReceiveTransport

Defined in: utils/transport.ts:104


Guide: Transports

type Transport = PlatformTransport | CustomTransport

Defined in: utils/transport.ts:106


type WorkerSelf = {
addEventListener: void
postMessage: void
removeEventListener: void
}

Defined in: utils/transport.ts:75

addEventListener(type: string, listener: (event: any) => void): void;

Defined in: utils/transport.ts:77

string

(event: any) => void

void

postMessage(...args: any[]): void;

Defined in: utils/transport.ts:76

any[]

void

removeEventListener(type: string, listener: (event: any) => void): void;

Defined in: utils/transport.ts:78

string

(event: any) => void

void