Documentation / @super-line/server / CollectionHost
Interface: CollectionHost
Defined in: collections/types.ts:67
What the server provides to the Collection runtime. Each entry is a capability, not a raw handle: the runtime never learns that publishing needs encoding, that echo-break is spelled nd, or that observation has a cost. That is the difference between this module having an interface and merely having a file.
Properties
channels
channels:
object
Defined in: collections/types.ts:83
The channel registry rooms and topics already share. Only CRDT documents use it; rows never do.
join()
join(
conn,channel):Awaitable<void>
Sync when the node already holds the channel, async when it must subscribe the Adapter first.
Parameters
conn
channel
string
Returns
Awaitable<void>
leave()
leave(
conn,channel):void
Parameters
conn
channel
string
Returns
void
membersOf()
membersOf(
channel):Set<CollectionConn> |undefined
Parameters
channel
string
Returns
Set<CollectionConn> | undefined
cluster
cluster:
Cluster
Defined in: collections/types.ts:81
Node identity on the wire. Owns stamping + detection; the delivery policy stays here (see Cluster).
Methods
dispatch()
dispatch(
conn,id,info,terminal,onError?):Promise<void>
Defined in: collections/types.ts:73
The shared op spine: run host + plugin middleware, then terminal; on a throw, route to onError, send the client an err frame, and fire the host's error hook. Collections pass their own onError so the failure surfaces as a collection.* tap rather than a generic msg.response.
Parameters
conn
id
number
info
conn
kind
"subscribe" | "request"
name
string
terminal
() => Promise<void>
onError?
(error) => void
Returns
Promise<void>
encode()
encode(
frame):string|Uint8Array<ArrayBufferLike>
Defined in: collections/types.ts:100
Encode a frame for sendRaw. Needed only by the self CRDT path, which fans out to local subscribers without a node hop: it encodes once and passes one buffer to N connections. Everything that does cross a node boundary goes through Cluster.broadcast, which encodes and stamps for itself — so a frame encoded here deliberately carries no node id, because it was never published.
Parameters
frame
object
Returns
string | Uint8Array<ArrayBufferLike>
tap()
tap(
event):void
Defined in: collections/types.ts:93
Emit an inspector/plugin tap. Takes a thunk, not an event: building a tap payload costs a snapshot, and with no plugin tapping, the thunk is never called. Collections therefore never guard their own emits.
Parameters
event
() => InspectorEvent
Returns
void