Skip to content

Types

Guide: TypeScript

type Capable<TModules, Ctx> =
| CapableBase<Ctx>
| InferRevivables<TModules, Ctx>
| {
[key: string]: Capable<TModules, Ctx>
}
| ReadonlyArray<Capable<TModules, Ctx>>
| Map<Capable<TModules, Ctx>, Capable<TModules, Ctx>>
| Set<Capable<TModules, Ctx>>

Defined in: types.ts:70

TModules extends readonly RevivableModule[] = DefaultRevivableModules

Ctx extends RevivableContext = RevivableContext


Guide: TypeScript

type Jsonable =
| boolean
| null
| number
| string
| {
[key: string]: Jsonable
}
| ReadonlyArray<Jsonable>

Defined in: types.ts:16


type Message<TModules> = MessageBase & MessageVariant<TModules>

Defined in: types.ts:131

TModules extends readonly RevivableModule[] = DefaultRevivableModules


type MessageBase = {
__OSRA_KEY__: string
name?: string
uuid: Uuid
}

Defined in: types.ts:113

__OSRA_KEY__: string

Defined in: types.ts:114

optional name?: string;

Defined in: types.ts:117

uuid: Uuid

Defined in: types.ts:116

UUID of the client that sent the message


type MessageEventMap<TModules> = {
message: CustomEvent<Message<TModules>>
}

Defined in: types.ts:137

TModules extends readonly RevivableModule[] = DefaultRevivableModules

message: CustomEvent<Message<TModules>>

Defined in: types.ts:140


type MessageEventTarget<TModules> = TypedEventTarget<MessageEventMap<TModules>>

Defined in: types.ts:143

TModules extends readonly RevivableModule[] = DefaultRevivableModules


type MessageFields = {
remoteUuid: Uuid
type: string
}

Defined in: types.ts:108

remoteUuid: Uuid

Defined in: types.ts:110

type: string

Defined in: types.ts:109


type MessageVariant<TModules> =
ProtocolMessage | ConnectionMessage<TModules> | InferMessages<TModules>

Defined in: types.ts:124

TModules extends readonly RevivableModule[] = DefaultRevivableModules


type ProtocolMessage =
| {
remoteUuid?: Uuid
type: 'announce'
}
| {
remoteUuid: Uuid
type: 'close'
}

Defined in: types.ts:120


Guide: TypeScript

type Remote<T> = T extends (...args: infer P) => infer R ? (...args: P) => Promise<Remote<Awaited<R>>> : T extends Promise<infer U> ? Promise<Remote<U>> : T extends Map<infer K, infer V> ? Map<Remote<K>, Remote<V>> : T extends Set<infer V> ? Set<Remote<V>> : T extends ReadableStream<infer C> ? ReadableStream<Remote<C>> : T extends
| Date
| Error
| RegExp
| ArrayBuffer
| ArrayBufferView
| Blob
| File
| FileList
| WritableStream
| MessagePort
| AbortSignal
| Request
| Response
| Headers ? T : T extends EventTarget ? EventTarget : T extends AsyncIterable<infer U> ? AsyncIterableIterator<Remote<U>> : T extends ReadonlyArray<unknown> ? { [K in keyof (...)]: Remote<(...)> } : T extends object ? { [K in (...)]: (...) } : T;

Defined in: types.ts:84

What a value looks like from the far side of the connection: functions become async (calls cross the wire), containers map recursively, everything else revives as itself.

T


Guide: TypeScript

type Structurable =
| Jsonable
| void
| undefined
| bigint
| Date
| RegExp
| Blob
| File
| FileList
| ArrayBuffer
| ArrayBufferView
| ImageBitmap
| ImageData
| {
[key: string]: Structurable
}
| ReadonlyArray<Structurable>
| Map<Structurable, Structurable>
| Set<Structurable>

Defined in: types.ts:24


Guide: TypeScript

type StructurableTransferable =
| Structurable
| NonAbsorbing<Transferable>
| {
[key: string]: StructurableTransferable
}
| ReadonlyArray<StructurableTransferable>
| Map<StructurableTransferable, StructurableTransferable>
| Set<StructurableTransferable>

Defined in: types.ts:53


type Uuid = `${string}-${string}-${string}-${string}-${string}`

Defined in: types.ts:13

Guide: Low-level API

const OSRA_BOX: '__OSRA_BOX__'

Defined in: types.ts:11


Guide: Low-level API

const OSRA_DEFAULT_KEY: '__OSRA_DEFAULT_KEY__'

Defined in: types.ts:10


Guide: Low-level API

const OSRA_KEY: '__OSRA_KEY__'

Defined in: types.ts:9