Skip to content

@fkn/lib/rooms

type Room = object;

A joined room. The same object survives a broker replacement, so it is safe to hold for as long as the chat lasts.

block: (id) => Promise<void>;

string

Promise<void>

readonly closed: Promise<RoomEnd>;

Settles once, when the room ends for this app. Never rejects.

defaults: () => RoomDefaults;

RoomDefaults

grant: (id, permission) => Promise<void>;

string

RoomPermission

Promise<void>

readonly id: string;

the room’s uuid

readonly invite: string;

id and key as one string, the thing to put in a link

readonly key: string;

the room key, base64url. The server never sees it. Anyone holding it and the id can join.

leave: () => Promise<void>;

Promise<void>

members: () => Promise<RoomMember[]>;

Promise<RoomMember[]>

on: (listener) => Promise<() => void>;

Await the returned unsubscribe in cleanup, the account.onChange shape.

(event) => void

Promise<() => void>

readonly owner: string;
remove: (id) => Promise<void>;

string

Promise<void>

revoke: (id, permission) => Promise<void>;

string

RoomPermission

Promise<void>

readonly self: RoomMember;

this app’s member record, as this room sees it. The id is fresh in every room.

send: (text) => Promise<void>;

at most 4,096 bytes of UTF-8, sealed before it leaves the browser. Rejects too-large, never truncates.

string

Promise<void>

setDefault: (permission, value) => Promise<void>;

"send" | "receive"

boolean

Promise<void>

unblock: (id) => Promise<void>;

string

Promise<void>


type RoomsError = Error & object;

Thrown by every member of this namespace. Match on code, never on the message.

code: RoomsErrorCode;
function available(): Promise<boolean>;

Whether this realm can join a room: false in Node, false in a worker nothing bridged, false against a shell older than rooms. Answers rather than rejecting.

Promise<boolean>


function create(options?): Promise<Room>;

Open a room and become its owner. Share room.invite to let anyone else in.

RoomCreateOptions

Promise<Room>


function join(invite, options?): Promise<Room>;

invite is room.invite, or an id and a key joined by a dot.

string

RoomJoinOptions

Promise<Room>

Renames and re-exports RoomCreateOptions


Renames and re-exports RoomJoinOptions


Re-exports RoomDefaults


Re-exports RoomEnd


Re-exports RoomEvent


Re-exports RoomMember


Re-exports RoomMessage


Re-exports RoomPermission


Re-exports RoomPermissions


Re-exports RoomsErrorCode