Skip to content

Documentation / @super-line/server / SuperLinePlugin

Interface: SuperLinePlugin<S> ​

Defined in: index.ts:320

A named, declarative bundle of runtime contributions registered on plugins: [...]. All fields are optional; a plugin ships as a pair (this server half + an optional client half). See ADR-0005. The optional type param S is the plugin's paired surface — its handlers compile against S, and S's clientToServer keys are subtracted from the host's implement() obligation at compile time.

Type Parameters ​

S ​

S extends Directional = { }

Properties ​

connection? ​

optional connection?: PluginConnection

Defined in: index.ts:361

A plugin-owned (reserved) connection class — its own role, handshake negotiation, and parallel contract, served over observer-invisible connections. See PluginConnection. (Phase 2.)


handlers? ​

optional handlers?: (ctx) => HandlersFor<S>

Defined in: index.ts:345

Request handlers for the plugin's paired surface S, built lazily with the PluginContext. Merged into dispatch under their method names; the host merges S into a role and these keys are subtracted from its implement() obligation. A key already handled by the host (or another plugin) throws at construction.

Parameters ​

ctx ​

PluginContext

Returns ​

HandlersFor<S>


name ​

name: string

Defined in: index.ts:322

Unique among the server's plugins; a duplicate name throws at construction.


onConnection? ​

optional onConnection?: (conn, ctx) => void

Defined in: index.ts:332

Called once per accepted connection (multiplexed after the host's onConnection).

Parameters ​

conn ​

Conn

ctx ​

unknown

Returns ​

void


onDisconnect? ​

optional onDisconnect?: (conn, ctx, code) => Awaitable<void>

Defined in: index.ts:334

Called when a connection closes (multiplexed after the host's onDisconnect).

Parameters ​

conn ​

Conn

ctx ​

unknown

code ​

number

Returns ​

Awaitable<void>


onError? ​

optional onError?: (error, info) => void

Defined in: index.ts:338

Receives any error thrown in middleware/handlers/hooks (multiplexed with the host's onError).

Parameters ​

error ​

unknown

info ​

MiddlewareInfo

Returns ​

void


onEvent? ​

optional onEvent?: (event) => void

Defined in: index.ts:328

Node-local tap fired synchronously at each emit site with LIVE payload references (an observer must not mutate them). Reuses the TapEvent taxonomy; zero cost when no plugin taps. A throwing tap is isolated and routed to onError — it never fails the underlying operation.

Parameters ​

event ​

InspectorEvent

Returns ​

void


onHeartbeat? ​

optional onHeartbeat?: (conn, ctx, at) => Awaitable<void>

Defined in: index.ts:336

Called after a connection confirms a heartbeat ping with a pong.

Parameters ​

conn ​

Conn

ctx ​

unknown

at ​

number

Returns ​

Awaitable<void>


policies? ​

optional policies?: Record<string, CrdtCollectionPolicy<unknown, unknown> | CollectionPolicy<unknown, unknown>>

Defined in: index.ts:356

Access policies for contract collections, keyed by collection name. LWW row collections take an RLS-style CollectionPolicy (read → filter); CRDT document collections take a guard-shaped CrdtCollectionPolicy (read → bool) — same one-map-two-shapes rule as the host option. Merged into the host's policies; a collection already policied by the host or another plugin throws at construction, and a policy for a collection no fragment declared throws too. Deny-by-default still holds — a collection nobody policies is server-only. A plugin may policy a collection it did NOT declare (e.g. chat's kind registry contributing membership gates onto host-declared CRDT collections) — the collision-throw is what keeps that unambiguous: whoever policies a collection owns its access story.


setup? ​

optional setup?: (ctx) => void | (() => void | Promise<void>)

Defined in: index.ts:367

Imperative escape hatch, run once at construction with the plugin's PluginContext. Return an optional dispose function, called on server.close(). Use for wiring cluster-wide views from local taps + a plugin channel (the inspector's pattern), timers, or background subscriptions.

Parameters ​

ctx ​

PluginContext

Returns ​

void | (() => void | Promise<void>)


use? ​

optional use?: PluginMiddleware[]

Defined in: index.ts:330

Middleware run before request/subscribe handlers, after the host chain, in plugin array order.

Released under the MIT License.