Skip to content

StreamGateOptions

Defined in: packages/server/src/circuits/edge.ts:64

durableStreamsUrl: string

Defined in: packages/server/src/circuits/edge.ts:90

Base URL of the durable-streams server, with whatever stream prefix it is mounted under — the same value the engine is given as CIRCUITS_DS_URL, since both address the same paths.


optional entitlements?: EntitlementSet

Defined in: packages/server/src/circuits/edge.ts:85

The live entitlement set backing the shared tier. Optional for the same reason it is optional on the control plane: a deployment whose registry declares no shared shape has nothing to ask it. Absent, a shared-tier grant is DENIED rather than waved through — the two sides then agree that an unconfigured entitlement set can never permit.


optional fetch?: (input, init?) => Promise<Response>

Defined in: packages/server/src/circuits/edge.ts:99

Injected for tests; defaults to the ambient fetch.

string | Request | URL

RequestInit

Promise<Response>


key: CryptoKey

Defined in: packages/server/src/circuits/edge.ts:66

Verifies the stream token. Minted by the control plane in the same process.


optional params?: Record<string, unknown>

Defined in: packages/server/src/circuits/edge.ts:97

Deployment-supplied runtime params, handed to an egress rowTransform as its context’s params — the same values SubscribeOptions.params hands to rowFilter.customPredicate. A deployment that configures them on one side and not the other gives its registry two different runtime environments for one shape, so mount both from the same source.


registry: SyncTableRegistry

Defined in: packages/server/src/circuits/edge.ts:78

The registry the granted shapes are declared in — REQUIRED, unlike every other option here.

The gate needs it to answer one question per read: does this shape declare a serverProjection.rowTransform, and must its bytes therefore be rewritten before they reach the client (ADR-0055 decision 5)? A gate that cannot see the registry cannot know, so it would proxy a transform shape’s raw rows — including the serverOnlyColumns fetched solely for the transform — with nothing anywhere reporting a discrepancy. Making it required is what makes that mount impossible to write, which is why it is not optional “for deployments with no transform shape”: the leak arrives on the day someone adds the first one, in a file nobody was editing.