@rindle/api-server 0.4.4 → 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -11
- package/dist/index.d.ts +343 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +937 -67
- package/dist/index.js.map +1 -1
- package/dist/rooms.d.ts +194 -0
- package/dist/rooms.d.ts.map +1 -0
- package/dist/rooms.js +393 -0
- package/dist/rooms.js.map +1 -0
- package/package.json +7 -4
- package/src/index.ts +1309 -75
- package/src/rooms.ts +578 -0
package/README.md
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# @rindle/api-server
|
|
2
2
|
|
|
3
|
-
Framework-neutral helpers for your app's **authority tier** in a
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
records.
|
|
3
|
+
Framework-neutral helpers for your app's **authority tier** in a Rindle deployment.
|
|
4
|
+
Stateless and transport-agnostic: it authenticates the caller, resolves **named queries**
|
|
5
|
+
to approved ASTs, and drives the **same isomorphic mutators** the browser predicted —
|
|
6
|
+
rendering their logical ops to SQL and sending them to the `rindle-replicator`
|
|
7
|
+
write-master, while reads go to a `rindled` follower (a `SplitDaemonClient` routes each
|
|
8
|
+
leg). The write-master only ever sees approved ASTs and approved write/rejection records.
|
|
9
9
|
|
|
10
10
|
```ts
|
|
11
|
-
import { createRindleApiServer, registerQueries, sharedApiMutators } from "@rindle/api-server";
|
|
11
|
+
import { createRindleApiServer, registerQueries, sharedApiMutators, SplitDaemonClient } from "@rindle/api-server";
|
|
12
12
|
import { HttpRindleDaemonClient } from "@rindle/daemon-client";
|
|
13
13
|
import { issuesPageQuery } from "./src/IssueList.queries.ts";
|
|
14
14
|
import { mutators, schema } from "./shared/app-def.ts";
|
|
@@ -19,11 +19,13 @@ const sharedCtx = (ctx) => {
|
|
|
19
19
|
return { user: ctx.user };
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
+
const authz = { authorization: `Bearer ${process.env.RINDLE_DAEMON_TOKEN}` };
|
|
22
23
|
const api = createRindleApiServer({
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
// One topology: writes → the replicator write-master, reads → the follower.
|
|
25
|
+
daemon: new SplitDaemonClient(
|
|
26
|
+
new HttpRindleDaemonClient({ baseUrl: process.env.RINDLE_REPLICATOR_URL ?? "http://127.0.0.1:7611", headers: authz }),
|
|
27
|
+
new HttpRindleDaemonClient({ baseUrl: process.env.RINDLE_DAEMON_URL ?? "http://127.0.0.1:7600", headers: authz }),
|
|
28
|
+
),
|
|
27
29
|
schema, // drives the SQL renderer for the yielded ops
|
|
28
30
|
queries: registerQueries([issuesPageQuery]), // the co-located defineQuery values, listed
|
|
29
31
|
mutators: sharedApiMutators(mutators, sharedCtx), // the SAME bodies the browser predicts
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import type { Ast, ColType, KeyedRow, MutationEnvelope, MutationOp, MutatorCtx, NamedQuery, Query, Schema, SharedMutator, SharedMutatorWithArgs, ServerWriteTx } from "@rindle/client";
|
|
2
|
-
import type { ClaimRoomEpochInput, ClaimRoomEpochOutput, DematerializeInput, DematerializeOutput, MaterializationPolicy, MaterializeInput, MaterializeOutput, MigrateInput, MigrateOutput, MutationRejection, MutationRejectionOutput, MutationSessionBegin, MutationSessionBeginOutput, MutationSessionExec, MutationSessionQuery, MutationSessionRef, QueryOnceInput, QueryOnceOutput, RindleDaemonClient, RoomLmidsInput, RoomLmidsOutput, RowChangeTxn, RowChangeTxnOutput, SqlRead, SqlReadOutput, SqlStatement, SqlTxn, SqlTxnOutput, StreamMode, WireValue } from "@rindle/daemon-client";
|
|
2
|
+
import type { ClaimRoomEpochInput, ClaimRoomEpochOutput, CoverQueryInput, CoverQueryOutput, DematerializeInput, DematerializeOutput, MaterializationPolicy, MaterializeInput, MaterializeOutput, MigrateInput, MigrateOutput, MutationRejection, MutationRejectionOutput, MutationSessionBegin, MutationSessionBeginOutput, MutationSessionExec, MutationSessionQuery, MutationSessionRef, QueryOnceInput, QueryOnceOutput, RindleDaemonClient, RoomLmidsInput, RoomLmidsOutput, RowChangeTxn, RowChangeTxnOutput, SqlRead, SqlReadOutput, SqlStatement, SqlTxn, SqlTxnOutput, StreamMode, WireValue } from "@rindle/daemon-client";
|
|
3
|
+
import type { RoomProfile, RoomScopeSpec, RoomTableSpec } from "./rooms.ts";
|
|
3
4
|
export { isoTx, shared } from "@rindle/client";
|
|
4
5
|
export type { ArgSchema, IsoTx, MutationGen, MutatorCtx, SharedMutator, SharedMutatorWithArgs } from "@rindle/client";
|
|
6
|
+
export { queryRealtimeLabel, queryResultToAst } from "./rooms.ts";
|
|
7
|
+
export type { RoomProfile, RoomScopeSpec, RoomTableSpec } from "./rooms.ts";
|
|
8
|
+
export type { RealtimeQueryLabel } from "@rindle/client";
|
|
5
9
|
export declare const DEFAULT_RINDLE_API_ROUTES: {
|
|
6
10
|
readonly query: "/api/rindle/query";
|
|
7
11
|
readonly read: "/api/rindle/read";
|
|
@@ -75,6 +79,72 @@ export type ApiMutatorResult = void | SqlStatement[] | SqlTxn;
|
|
|
75
79
|
* (the SAME body the client predicts) via {@link runSharedMutation}, keeping only the server-only
|
|
76
80
|
* authority (arg parse, principal, policy) in the wrapper. */
|
|
77
81
|
export type ApiMutator<User, Args> = (tx: ServerMutationTx, args: Args, ctx: MutationContext<User>) => MaybePromise<ApiMutatorResult>;
|
|
82
|
+
/** Thrown by {@link MutationScope.transact} when the transacted body BUSINESS-rejects: the data
|
|
83
|
+
* rolled back and `lmid` advanced alone (§2.4). Catch it to COMPENSATE an outside-tx side effect
|
|
84
|
+
* (refund the charge), then rethrow or return — the mutation's protocol outcome is already sealed
|
|
85
|
+
* as rejected, so a post-reject throw can't change it. A DB/infra failure is NOT this — it
|
|
86
|
+
* propagates as the raw driver error (the client retries; `lmid` did not advance). */
|
|
87
|
+
export declare class MutationRejected extends Error {
|
|
88
|
+
readonly reason: string;
|
|
89
|
+
constructor(reason: string);
|
|
90
|
+
}
|
|
91
|
+
/** The per-mutation server handle a {@link ScopedMutator} runs against. Code before {@link transact}
|
|
92
|
+
* runs OUTSIDE the transaction; code after a clean `transact` runs AFTER the commit. The
|
|
93
|
+
* `lmid`-always-advances invariant is the HARNESS's, not the author's: {@link RindleApiServer.pushMutation}
|
|
94
|
+
* seals the response from this handle's recorded outcome, so an early return, a never-called
|
|
95
|
+
* `transact`, or a swallowed {@link MutationRejected} still advances `lmid` and never wedges the
|
|
96
|
+
* client's pending queue. */
|
|
97
|
+
export interface MutationScope {
|
|
98
|
+
/** Open the ONE atomic write transaction and drive `body` inside it, committing (stamping `lmid`
|
|
99
|
+
* co-transactionally) on a clean return. MAY be called at most once — a second call throws.
|
|
100
|
+
*
|
|
101
|
+
* Two forms:
|
|
102
|
+
* - `transact(sharedMutator, args, ctx)` — drive a SHARED (generator) mutator (the same body the
|
|
103
|
+
* client predicts); pass the already-parsed `args` and the server `ctx` (fold server-only
|
|
104
|
+
* values like a charge id into `ctx` here).
|
|
105
|
+
* - `transact(run)` — a raw callback receiving the live {@link ServerMutationTx} (the escape
|
|
106
|
+
* hatch: `tx.exec`, logical writes, read-your-writes reads).
|
|
107
|
+
*
|
|
108
|
+
* A THROW from the body that is not a {@link BackendError} is a BUSINESS rejection: the data rolls
|
|
109
|
+
* back, `lmid` advances alone, and this method throws {@link MutationRejected} (so surrounding
|
|
110
|
+
* code can compensate). A {@link BackendError} is INFRA: it propagates (the client retries). */
|
|
111
|
+
transact(run: (tx: ServerMutationTx) => void | Promise<void>): Promise<void>;
|
|
112
|
+
transact<A, C extends MutatorCtx>(mutator: SharedMutator<A, C>, args: A, ctx: C): Promise<void>;
|
|
113
|
+
}
|
|
114
|
+
/** A SCOPED server mutator (WORK-OUTSIDE-TX): server-only code, ONE `scope.transact`, optional
|
|
115
|
+
* post-commit code. Register it by wrapping in {@link scoped} — the tag the api-server routes on to
|
|
116
|
+
* hand it a {@link MutationScope} instead of running its whole body inside the transaction. */
|
|
117
|
+
export type ScopedMutator<User, Args> = (scope: MutationScope, args: Args, ctx: MutationContext<User>) => void | Promise<void>;
|
|
118
|
+
/** A {@link ScopedMutator} tagged by {@link scoped} so the harness invokes it with a
|
|
119
|
+
* {@link MutationScope}. Typed as a BRANDED tx-form {@link ApiMutator} purely so it registers in the
|
|
120
|
+
* `mutators` record without widening it to a union (which would break contextual inference for every
|
|
121
|
+
* plain tx-form entry). Its true runtime shape is `(scope, args, ctx)`; the tag — not the type —
|
|
122
|
+
* routes it, and it is never actually called as a tx-form mutator. */
|
|
123
|
+
export type ScopedApiMutator<User, Args> = ApiMutator<User, Args> & {
|
|
124
|
+
readonly __rindleScoped: true;
|
|
125
|
+
};
|
|
126
|
+
/** Mark a mutator as SCOPED so the api-server gives it a {@link MutationScope} (author-controlled tx
|
|
127
|
+
* boundary via `scope.transact`) rather than running its whole body inside the transaction. Register
|
|
128
|
+
* it alongside the tx-form mutators — it wins by key like any override:
|
|
129
|
+
*
|
|
130
|
+
* ```ts
|
|
131
|
+
* mutators: defineApiMutators({
|
|
132
|
+
* ...sharedApiMutators(sharedMutators, sharedCtx), // tx-form (common case)
|
|
133
|
+
* createOrder: scoped(async (scope, raw, ctx) => { // needs outside-tx work
|
|
134
|
+
* const args = createOrder.args.parse(raw);
|
|
135
|
+
* const chargeId = await stripe.charge(args.amount, { idempotencyKey: ctx.envelope.mid }); // outside tx
|
|
136
|
+
* try {
|
|
137
|
+
* await scope.transact(createOrder, args, { ...sharedCtx(ctx), chargeId }); // inside tx
|
|
138
|
+
* } catch (e) {
|
|
139
|
+
* await stripe.refund(chargeId); // compensate — the write rejected
|
|
140
|
+
* throw e;
|
|
141
|
+
* }
|
|
142
|
+
* await sendReceipt(ctx.user); // after commit
|
|
143
|
+
* }),
|
|
144
|
+
* }),
|
|
145
|
+
* ```
|
|
146
|
+
*/
|
|
147
|
+
export declare function scoped<User, Args>(fn: ScopedMutator<User, Args>): ScopedApiMutator<User, Args>;
|
|
78
148
|
export type ApiMutators<User> = Record<string, ApiMutator<User, any>>;
|
|
79
149
|
export interface QueryLeaseRequest<User> {
|
|
80
150
|
user: User;
|
|
@@ -85,15 +155,109 @@ export interface QueryLeaseRequest<User> {
|
|
|
85
155
|
* when there is no authenticated subject and no session cookie (READ-ROUTER-DESIGN.md §1.5/§2.2).
|
|
86
156
|
* A routing HINT only, never authorization. */
|
|
87
157
|
clientId?: string;
|
|
158
|
+
/** The browser's opaque follower-affinity ticket (FOLLOWER-AFFINITY-DESIGN.md §3), read off the
|
|
159
|
+
* query POST and forwarded OPAQUELY on `materialize` so the fleet `fly-replay`s to the follower
|
|
160
|
+
* the browser's ws is pinned to (§2, §4) — both legs co-locate. The api-server does NOT verify
|
|
161
|
+
* it (the fleet does); it holds no signing key. Absent ⇒ single daemon / affinity off. */
|
|
162
|
+
affinity?: string;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* The room-serve block on a query lease (RINDLE-REALTIME-QUERY-ENABLEMENT §2.1 step 5 / §2.4,
|
|
166
|
+
* slice G-iv-b): present only when the named query carries a realtime label AND its resolved AST
|
|
167
|
+
* was PROVABLY covered by its room profile's footprint (the daemon's `/cover-check`). The G-v
|
|
168
|
+
* client uses it to open the room transport for THIS query beside — never instead of — its daemon
|
|
169
|
+
* session.
|
|
170
|
+
*
|
|
171
|
+
* It is a dedicated block on purpose: the ROOM ws is a SEPARATE connection this query opens beside
|
|
172
|
+
* its daemon session (never a migration of the daemon session — the daemon ws host is fixed and
|
|
173
|
+
* placed by the affinity ticket). A room-served lease's top-level fields are byte-identical to the
|
|
174
|
+
* daemon-served ones.
|
|
175
|
+
*/
|
|
176
|
+
export interface QueryLeaseRealtime {
|
|
177
|
+
/** The client store's gate/domain key for this room source (`connectSource`) AND the string the
|
|
178
|
+
* wasm engine's `parse_source_key` accepts: any string other than the reserved `"daemon"`
|
|
179
|
+
* parses as a room source, and the established convention is `"room:" + doc`
|
|
180
|
+
* (e.g. `room:document/doc:d1`). */
|
|
181
|
+
sourceKey: string;
|
|
182
|
+
/** Where the client opens the ROOM ws for this query (from `realtime.locateRoom`) — its OWN
|
|
183
|
+
* connection, distinct from the daemon session's fixed ws host. */
|
|
184
|
+
wsEndpoint: string;
|
|
185
|
+
/** The room's self-authorizing signed lease (`@rindle/room/token`): the APPROVED query AST +
|
|
186
|
+
* doc + subject, HMAC-signed with `realtime.roomTokenKey` so the room shell's
|
|
187
|
+
* `downstream.tokenKeys` ring verifies it. The room materializes on first presentation. */
|
|
188
|
+
roomToken: string;
|
|
189
|
+
/** Token expiry (ms epoch) — the client's renewal clock (renewal = a fresh lease). */
|
|
190
|
+
exp: number;
|
|
191
|
+
/** The wire room doc (`"<profile>/<key>"`, minted server-side — never client-derived). */
|
|
192
|
+
doc: string;
|
|
193
|
+
/** Per-footprint-table specs: the §2.2 owned/followed split + §3.2 routing metadata. Since
|
|
194
|
+
* H-iii each spec also carries `footprintWhere` — the same exact membership predicate the boot
|
|
195
|
+
* wire ships the room gate (one compiler, `compileRoomScopeSpecs`) — feeding the client's §3
|
|
196
|
+
* prove-or-slow-path router. Advisory routing metadata, never a credential (§3.2). */
|
|
197
|
+
tables: RoomTableSpec[];
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* One minted SYSTEM-STREAM lease on a query lease's `lifecycle` block (RINDLE-REALTIME-QUERY-
|
|
201
|
+
* ENABLEMENT §4, Slice I-iii): an ordinary daemon materialization over one of the four
|
|
202
|
+
* `_rindle_*` lifecycle system tables (registered by the daemon's `enable_realtime_lifecycle` —
|
|
203
|
+
* `rust/rindle-replica/src/mutations.rs`), attachable by the EXISTING client subscribe path
|
|
204
|
+
* (present `leaseToken` on a `subscribe` frame, exactly like the primary lease). The identity
|
|
205
|
+
* fields (`scope`/`doc`/`clientId`) document the minted AST's predicate — the client keys its
|
|
206
|
+
* retains and its release-time row filters on them.
|
|
207
|
+
*/
|
|
208
|
+
export interface QueryLeaseLifecycleLease {
|
|
209
|
+
/** Which system table this lease's subscription serves. */
|
|
210
|
+
table: string;
|
|
211
|
+
leaseToken: string;
|
|
212
|
+
/** DOORBELL only: the §4.1 occupancy scope — the wire room doc (`"<profile>/<key>"`). */
|
|
213
|
+
scope?: string;
|
|
214
|
+
/** FENCE entries only: the room doc the predicate is scoped to. */
|
|
215
|
+
doc?: string;
|
|
216
|
+
/** FENCE ledger/outcome entries: present iff the predicate was ALSO client-scoped (the lease
|
|
217
|
+
* request carried `clientId`). Absent ⇒ doc-only predicate — the client filters to its own
|
|
218
|
+
* rows regardless (defense in depth). */
|
|
219
|
+
clientId?: string;
|
|
220
|
+
}
|
|
221
|
+
/** The §4 lifecycle block on a query lease (Slice I-iii): present only when BOTH the realtime
|
|
222
|
+
* `lifecycle` config is on AND the query is realtime-labeled. `doorbell` rides EVERY labeled
|
|
223
|
+
* lease (occupancy is counted whether or not the query is room-served — the 1→2 upgrade trigger
|
|
224
|
+
* needs solo watchers subscribed BEFORE any room exists, §4.1); `fence` rides only a ROOM-SERVED
|
|
225
|
+
* lease (the §4.2/§7.1/§3.3 downgrade surfaces are meaningful only where a room domain exists).
|
|
226
|
+
* The §4.2 fence VALUE (`finalFlushSeq`) is deliberately NOT here — it arrives with the I-v
|
|
227
|
+
* downgrade response; I-iii only stands up the streams. */
|
|
228
|
+
export interface QueryLeaseLifecycle {
|
|
229
|
+
doorbell: QueryLeaseLifecycleLease;
|
|
230
|
+
fence?: QueryLeaseLifecycleLease[];
|
|
231
|
+
}
|
|
232
|
+
/** The §4.2 downgrade fence on a query lease (Slice I-v): rides a labeled reply whose §4.1
|
|
233
|
+
* occupancy gate CLOSED (so there is NO `realtime` block) when the server could drain the room.
|
|
234
|
+
* A SIBLING of `realtime`, never nested inside it — block-ABSENCE is the downgrade signal, and
|
|
235
|
+
* the fence rides alongside that absence. Its `finalFlushSeq` is the room's last COMMITTED flush
|
|
236
|
+
* seq; the client's frozen room ghost holds visible until the daemon plane has provably absorbed
|
|
237
|
+
* it (`_rindle_room_watermark(doc) ≥ finalFlushSeq`). Absent from every non-downgrade reply. */
|
|
238
|
+
export interface QueryLeaseRealtimeFence {
|
|
239
|
+
/** The retiring room source's gate/domain key — `"room:" + doc`, matching what the room-served
|
|
240
|
+
* lease's {@link QueryLeaseRealtime.sourceKey} carried. */
|
|
241
|
+
sourceKey: string;
|
|
242
|
+
doc: string;
|
|
243
|
+
finalFlushSeq: number;
|
|
88
244
|
}
|
|
89
245
|
export interface QueryLeaseResponse {
|
|
90
246
|
leaseToken: string;
|
|
91
247
|
materializationId: string;
|
|
92
248
|
queryKey?: string;
|
|
93
249
|
reused?: boolean;
|
|
94
|
-
/** The
|
|
95
|
-
*
|
|
96
|
-
|
|
250
|
+
/** The room-serve block (G-iv-b) — see {@link QueryLeaseRealtime}. Absent ⇒ the lease is
|
|
251
|
+
* byte-identical to the legacy daemon-served shape. */
|
|
252
|
+
realtime?: QueryLeaseRealtime;
|
|
253
|
+
/** The §4.2 downgrade fence (Slice I-v) — see {@link QueryLeaseRealtimeFence}. Present only on a
|
|
254
|
+
* labeled reply whose occupancy gate closed AND `realtime.lifecycle.drainRoom` could drain the
|
|
255
|
+
* room; absent otherwise (including on every room-served reply). */
|
|
256
|
+
realtimeFence?: QueryLeaseRealtimeFence;
|
|
257
|
+
/** The §4 lifecycle system-stream block (Slice I-iii) — see {@link QueryLeaseLifecycle}.
|
|
258
|
+
* Minted ONLY under the opt-in `realtime.lifecycle` config; absent ⇒ byte-identical to the
|
|
259
|
+
* pre-lifecycle response. */
|
|
260
|
+
lifecycle?: QueryLeaseLifecycle;
|
|
97
261
|
}
|
|
98
262
|
/** A one-shot SSR read of a named query (SSR-DESIGN.md §6): same `(name, args)` surface as a lease,
|
|
99
263
|
* but the daemon serializes the current view ONCE and registers no subscriber. */
|
|
@@ -106,6 +270,9 @@ export interface QueryReadRequest<User> {
|
|
|
106
270
|
* {@link QueryLeaseRequest.clientId}). Lets the SSR read co-locate on the follower the booting
|
|
107
271
|
* client's first subscribe will hit (READ-ROUTER-DESIGN.md §2.4). */
|
|
108
272
|
clientId?: string;
|
|
273
|
+
/** The browser's opaque follower-affinity ticket — see {@link QueryLeaseRequest.affinity}.
|
|
274
|
+
* Forwarded on the one-shot `query` so an SSR read lands on the same pinned follower. */
|
|
275
|
+
affinity?: string;
|
|
109
276
|
}
|
|
110
277
|
/** The assembled (nested-by-name) first-paint snapshot the server-side Store seeds + dehydrates
|
|
111
278
|
* (SSR-DESIGN.md §3.3). `rows` hydrate without an engine; `cvMin` is their watermark baseline. */
|
|
@@ -116,9 +283,6 @@ export interface QueryReadResponse {
|
|
|
116
283
|
}>;
|
|
117
284
|
cvMin?: number;
|
|
118
285
|
queryKey?: string;
|
|
119
|
-
/** The follower this read warmed (READ-ROUTER-DESIGN.md §2.4) — inject it into the SSR bootstrap
|
|
120
|
-
* so the booting client opens its ws to the same warm follower. Absent ⇒ single-daemon. */
|
|
121
|
-
wsEndpoint?: string;
|
|
122
286
|
}
|
|
123
287
|
/** The context a {@link MutationBackend} needs to run one mutation inside its transaction. */
|
|
124
288
|
export interface MutationRunInput {
|
|
@@ -236,6 +400,16 @@ export interface RoomBootResponse {
|
|
|
236
400
|
/** Where the room opens its upstream subscription (a routed deploy's follower). Absent ⇒ the
|
|
237
401
|
* shell's statically configured rindled ws endpoint. */
|
|
238
402
|
upstreamWsEndpoint?: string;
|
|
403
|
+
/** Fresh opaque follower-placement ticket minted alongside `upstreamLeaseToken`. The DO offers
|
|
404
|
+
* it with `rindle.v1` on the separate upstream ws so a static fleet endpoint replays to the
|
|
405
|
+
* exact follower holding that local lease. Absent when daemon affinity is off. */
|
|
406
|
+
upstreamAffinity?: string;
|
|
407
|
+
/** Per-footprint-table scope specs (H-iv-b), compiled from the resolved footprint AST + the
|
|
408
|
+
* profile's context set (the legacy anonymous profile compiles with an empty context set):
|
|
409
|
+
* what the shell hands the wasm room's `enableWritesV2` — the §3.3 commit gate. Optional
|
|
410
|
+
* only for wire compatibility with pre-H-iv-b servers; a shell that doesn't receive them
|
|
411
|
+
* enables the v1 table-granular write plane exactly as before. */
|
|
412
|
+
scopes?: RoomScopeSpec[];
|
|
239
413
|
flush: RoomBootFlush;
|
|
240
414
|
}
|
|
241
415
|
export interface RindleRealtimeOptions<User> {
|
|
@@ -243,11 +417,22 @@ export interface RindleRealtimeOptions<User> {
|
|
|
243
417
|
* room's `Authorization: Bearer` on `/room-boot` (the default {@link authorizeBoot}) and keys
|
|
244
418
|
* the DEFAULT epoch-bound flush credential. */
|
|
245
419
|
shellSecret: string;
|
|
420
|
+
/** NAMED room profiles (RINDLE-REALTIME-QUERY-ENABLEMENT-DESIGN.md §2.1): profile name → key
|
|
421
|
+
* derivation + canonical unwindowed footprint + read-only context tables. The wire room key
|
|
422
|
+
* for a named profile is `"<profile>/<key>"`; `/room-boot` splits it and resolves the
|
|
423
|
+
* profile's footprint with the bare key. Compiled + validated LOUDLY at construction (§2.3):
|
|
424
|
+
* a windowed footprint, a context table missing from the schema/footprint, or a registered
|
|
425
|
+
* query whose realtime label names a missing profile all throw from `createRindleApiServer`. */
|
|
426
|
+
rooms?: Record<string, RoomProfile<User>>;
|
|
246
427
|
/** doc → the room's approved upstream footprint (§3.1) — an `Ast` or fluent `Query`. MAY
|
|
247
428
|
* delegate to the named-query registry internally; throw `RindleApiError("not-found", …, 404)`
|
|
248
429
|
* for a doc that shouldn't exist. The §9 footprint budget belongs here — it runs once per
|
|
249
|
-
* placement, at lease mint.
|
|
250
|
-
|
|
430
|
+
* placement, at lease mint.
|
|
431
|
+
* @deprecated Prefer named {@link rooms} profiles (RINDLE-REALTIME-QUERY-ENABLEMENT §2.1).
|
|
432
|
+
* This bare form remains as the single-profile LEGACY alias — the anonymous/default profile:
|
|
433
|
+
* a doc with no known `"<profile>/"` prefix resolves here, byte-identically to before named
|
|
434
|
+
* profiles existed (and with none of their construction/boot-time validation). */
|
|
435
|
+
resolveFootprint?: (doc: string, ctx: ApiContext<User>) => MaybePromise<ApiQueryResult>;
|
|
251
436
|
/** Gates the flush trio — `authorizeRoom`, relocated. Default: verify the default flush
|
|
252
437
|
* credential from the {@link ROOM_FLUSH_CREDENTIAL_HEADER} request header — which requires the
|
|
253
438
|
* transport to pass its incoming request as `context.request` (Fetch `Request` and node
|
|
@@ -266,9 +451,83 @@ export interface RindleRealtimeOptions<User> {
|
|
|
266
451
|
/** Lease TTL for the room's upstream footprint materialization (defaults to the server-wide
|
|
267
452
|
* `leaseTtlMs`, else the daemon's default). */
|
|
268
453
|
upstreamLeaseTtlMs?: number;
|
|
269
|
-
/** Static
|
|
270
|
-
* `
|
|
454
|
+
/** Static endpoint where rooms open their upstream subscription. In a follower fleet this is the
|
|
455
|
+
* fleet ws URL; `/room-boot` pairs it with the materialization's fresh placement ticket so the
|
|
456
|
+
* room lands on the exact follower holding its lease. Absent ⇒ no explicit upstream (the Node
|
|
457
|
+
* room shell may use its own default; the shipped DO shell requires this endpoint). */
|
|
271
458
|
upstreamWsEndpoint?: string;
|
|
459
|
+
/** Locate (or place) the room serving `doc` and return the ROOM ws endpoint a room-served
|
|
460
|
+
* lease's client should open (G-iv-b; on the DO shell this is the Worker's room URL). The
|
|
461
|
+
* endpoint rides the lease's dedicated `realtime.wsEndpoint` — its OWN connection, distinct from
|
|
462
|
+
* the daemon session's fixed ws host. Absent ⇒ room-serving is OFF: labeled queries serve from
|
|
463
|
+
* the daemon exactly as today (fail-open). */
|
|
464
|
+
locateRoom?: (doc: string) => MaybePromise<{
|
|
465
|
+
wsEndpoint: string;
|
|
466
|
+
}>;
|
|
467
|
+
/** The room lease token signing key (`@rindle/room/token`): `kid` + secret, matching an entry
|
|
468
|
+
* in the room shell's `downstream.tokenKeys` ring. Required for room-serving (without it a
|
|
469
|
+
* labeled query fail-opens to the daemon with a one-time warning). A separate secret from
|
|
470
|
+
* `shellSecret` on purpose — the shell's ring is the client-token trust domain, the shell
|
|
471
|
+
* secret is the boot/flush trust domain. */
|
|
472
|
+
roomTokenKey?: {
|
|
473
|
+
kid: string;
|
|
474
|
+
secret: string;
|
|
475
|
+
};
|
|
476
|
+
/** Room lease token TTL, ms (default 5 minutes — the §4.1 short-TTL backstop; renewal is a
|
|
477
|
+
* fresh lease through this server, never an extension). */
|
|
478
|
+
roomTokenTtlMs?: number;
|
|
479
|
+
/** Loud-diagnostics sink for the realtime layer (profile compilation warnings + the one-time
|
|
480
|
+
* per-(query, profile) "not room-served" serve-decision warnings). Defaults to
|
|
481
|
+
* `console.warn`; injectable for tests. */
|
|
482
|
+
warn?: (message: string) => void;
|
|
483
|
+
/** The §4 upgrade/downgrade lifecycle plane (RINDLE-REALTIME-QUERY-ENABLEMENT §4, Slice
|
|
484
|
+
* I-iii): PRESENCE of this block is the opt-in — every realtime-labeled lease then
|
|
485
|
+
* additionally mints the doorbell system lease (occupancy, §4.1) and every ROOM-SERVED lease
|
|
486
|
+
* the fence bundle (watermark + ledger + outcomes, §4.2/§7.1/§3.3) — see
|
|
487
|
+
* {@link QueryLeaseLifecycle}. Requires the daemon to have run `enable_realtime_lifecycle`
|
|
488
|
+
* (the four `_rindle_*` system tables must be registered or the minted materializations fail
|
|
489
|
+
* — which fail-opens with a one-time warning, never blocking the lease). Absent ⇒ the lease
|
|
490
|
+
* response is byte-identical to pre-lifecycle. */
|
|
491
|
+
lifecycle?: RindleRealtimeLifecycleOptions;
|
|
492
|
+
}
|
|
493
|
+
/** {@link RindleRealtimeOptions.lifecycle}. PRESENCE of the block is the opt-in switch (I-iii);
|
|
494
|
+
* the fields below are the Slice I-iv occupancy knobs (§4.1, decisions D4/D6/D7). All optional —
|
|
495
|
+
* `lifecycle: {}` gets the designed defaults. */
|
|
496
|
+
export interface RindleRealtimeLifecycleOptions {
|
|
497
|
+
/** D6 (§4.1): the occupancy threshold for room-serving. A labeled lease whose scope counts
|
|
498
|
+
* FEWER than this many distinct unexpired sessions (the caller's own included) ships WITHOUT
|
|
499
|
+
* the realtime block — served from the daemon, indistinguishable from an uncovered query —
|
|
500
|
+
* but WITH the doorbell, so the 1→2 transition wakes it (that is the point: solo docs never
|
|
501
|
+
* cost room infrastructure). Default **2** (the design's 1→2 trigger). Set `1` to room-serve
|
|
502
|
+
* solo viewers (the pre-I-iv behavior under lifecycle config). */
|
|
503
|
+
minSessions?: number;
|
|
504
|
+
/** The §9.1 hysteresis window, ms (default **120_000**). Two consumers: (a) the lazy sweep
|
|
505
|
+
* (D4) keeps expired session rows lingering at least this long past expiry — Slice I-v's
|
|
506
|
+
* downgrade decision ("no other unexpired row AND the newest other row expired > graceMs
|
|
507
|
+
* ago") is read FROM those rows, so they must survive to be read; (b) this slice's gate
|
|
508
|
+
* applies the same hysteresis upward: a scope with an other-session row expired ≤ graceMs
|
|
509
|
+
* ago keeps room-serving through the window (see `lifecycleOccupancy` — no flap on one
|
|
510
|
+
* client's brief lapse). §9.1-tunable: raise it for docs where collaborators churn slowly. */
|
|
511
|
+
graceMs?: number;
|
|
512
|
+
/** TTL of an occupancy session row, ms — `expires_at = now + sessionTtlMs` on every labeled
|
|
513
|
+
* lease mint/renewal (D7: session identity = the request's `clientId`; two tabs are two
|
|
514
|
+
* sessions iff their clientIds differ). Default = the server's `leaseTtlMs`, else 5 minutes —
|
|
515
|
+
* matching the room-token renewal cadence (`roomTokenTtlMs`, renewed 30s early), so a
|
|
516
|
+
* room-attached client's renewals keep its row unexpired; a daemon-attached solo client's row
|
|
517
|
+
* MAY lapse (it has no renewal timer) and is refreshed by its next doorbell-triggered
|
|
518
|
+
* re-lease — occupancy converges through the doorbell itself. */
|
|
519
|
+
sessionTtlMs?: number;
|
|
520
|
+
/** The §4.2 downgrade drain hook (Slice I-v). When the occupancy gate CLOSES for a labeled
|
|
521
|
+
* lease whose scope PLAUSIBLY hosted a room (an other-session row still lingers — never a
|
|
522
|
+
* never-shared solo doc), the api-server calls this to drain the room's pending write-behind
|
|
523
|
+
* and learn its last COMMITTED `flush_seq`, then rides the value back on the lease as the
|
|
524
|
+
* {@link QueryLeaseRealtimeFence}. The deployment wires it to the room shell's / DO's `/drain`
|
|
525
|
+
* control. Absent ⇒ no fence is attached (the client hits its loud legacy downgrade path);
|
|
526
|
+
* a throw fails OPEN to the same (a downgrade never blocks the lease). Concurrent drains across
|
|
527
|
+
* api-server instances are fine — `/drain` is idempotent. */
|
|
528
|
+
drainRoom?: (doc: string) => Promise<{
|
|
529
|
+
finalFlushSeq: number;
|
|
530
|
+
}>;
|
|
272
531
|
}
|
|
273
532
|
export declare const ROOM_FLUSH_CREDENTIAL_HEADER = "x-rindle-room-credential";
|
|
274
533
|
export interface RoomFlushCredentialPayload {
|
|
@@ -337,12 +596,11 @@ export interface RindleApiServerOptions<User> {
|
|
|
337
596
|
* HINT only — never authorization. Ignored by a single (unrouted) daemon, which has nothing to
|
|
338
597
|
* route. */
|
|
339
598
|
routingKey?: string | ((input: QueryLeaseRequest<User>) => MaybePromise<string | undefined>);
|
|
340
|
-
/** The EXPLICIT fleet pin fan-out
|
|
341
|
-
*
|
|
342
|
-
*
|
|
343
|
-
*
|
|
344
|
-
*
|
|
345
|
-
* pin). */
|
|
599
|
+
/** The EXPLICIT fleet pin fan-out — when set, {@link RindleApiServer.assertPins} fans each
|
|
600
|
+
* resolved pin across ALL live followers through it (a fleet control action over the machine
|
|
601
|
+
* list — FOLLOWER-AFFINITY-DESIGN.md §11) instead of materializing each pin once on the (single)
|
|
602
|
+
* daemon. A per-viewer `materialize` always routes ONE; a pin-assert always fans ALL — never
|
|
603
|
+
* inferred from `policy.kind`. Absent ⇒ single-daemon behavior (one materialize per pin). */
|
|
346
604
|
pinFanout?: PinFanout;
|
|
347
605
|
/** Named queries to keep permanently materialized via {@link RindleApiServer.assertPins}.
|
|
348
606
|
* Each is materialized with a `pinned` policy (survives zero subscribers) so late joiners
|
|
@@ -351,6 +609,15 @@ export interface RindleApiServerOptions<User> {
|
|
|
351
609
|
/** The user context pins resolve under (pins are shared, so they should not depend on a
|
|
352
610
|
* per-viewer identity). Defaults to `undefined`. */
|
|
353
611
|
pinUser?: User;
|
|
612
|
+
/** Surfaced when a SCOPED mutator ({@link scoped}) throws from code that runs AFTER `scope.transact`
|
|
613
|
+
* has already sealed the protocol outcome — a post-commit effect, or a compensation handler running
|
|
614
|
+
* after a business rejection. The outcome is fixed (this callback CANNOT change the client's
|
|
615
|
+
* response or the `lmid` advance), but the throw must not vanish: a failed refund is real money.
|
|
616
|
+
* Absent ⇒ the error is logged to `console.error`. */
|
|
617
|
+
onScopeError?: (err: unknown, info: {
|
|
618
|
+
phase: "committed" | "rejected";
|
|
619
|
+
envelope: MutationEnvelope;
|
|
620
|
+
}) => void;
|
|
354
621
|
}
|
|
355
622
|
export interface RindleApiServer<User> {
|
|
356
623
|
readonly routes: RindleApiRoutes;
|
|
@@ -360,6 +627,18 @@ export interface RindleApiServer<User> {
|
|
|
360
627
|
* startup and whenever the daemon restarts (e.g. from the daemon-client `onBootId` hook), since
|
|
361
628
|
* the daemon holds no durable materialization state. No-op when `pinnedQueries` is empty. */
|
|
362
629
|
assertPins(): Promise<void>;
|
|
630
|
+
/** The room-serving coverage DIAGNOSTIC (G-iv-b; the `assertPins`-style explicit check): for
|
|
631
|
+
* every realtime-labeled query, resolve it (under `pinUser`, per exemplar args), resolve its
|
|
632
|
+
* profile's footprint, and run the REAL daemon coverage check — the same verdict the lease
|
|
633
|
+
* path serves by. Returns every verdict; `strict` throws when any labeled query is not
|
|
634
|
+
* provably covered (deploy-gate mode). Deliberately ignores `locateRoom`/`roomTokenKey` — it
|
|
635
|
+
* answers "would this query be coverable", not "is serving fully wired". */
|
|
636
|
+
validateRealtime(opts?: {
|
|
637
|
+
/** Per-query exemplar args (a query is checked once per exemplar; default: one `null`). */
|
|
638
|
+
exemplars?: Partial<Record<string, readonly unknown[]>>;
|
|
639
|
+
/** Throw when any labeled query is uncovered (instead of just reporting). */
|
|
640
|
+
strict?: boolean;
|
|
641
|
+
}): Promise<ValidateRealtimeReport>;
|
|
363
642
|
pushMutation(input: PushMutationRequest<User>): Promise<PushMutationResponse>;
|
|
364
643
|
/** Apply an in-order batch (the client mutation queue's flush). Envelopes run strictly
|
|
365
644
|
* sequentially; a rejection still advances the daemon's lmid, so later envelopes in the
|
|
@@ -391,6 +670,22 @@ export interface RindleApiServer<User> {
|
|
|
391
670
|
* lease and the flush leg. 403 until {@link RindleApiServerOptions.realtime} is set. */
|
|
392
671
|
handleRoomBootJson(body: unknown, context: ApiContext<User>): Promise<RoomHostResponse>;
|
|
393
672
|
}
|
|
673
|
+
/** One {@link RindleApiServer.validateRealtime} verdict: a labeled query × exemplar args. */
|
|
674
|
+
export interface ValidateRealtimeVerdict {
|
|
675
|
+
query: string;
|
|
676
|
+
profile: string;
|
|
677
|
+
args: unknown;
|
|
678
|
+
covered: boolean;
|
|
679
|
+
/** Why it is not covered (uncovered verdicts only) — the daemon's reason strings, the
|
|
680
|
+
* aggregate refusal, or a resolve/footprint error message. */
|
|
681
|
+
reasons?: string[];
|
|
682
|
+
}
|
|
683
|
+
/** The {@link RindleApiServer.validateRealtime} report. */
|
|
684
|
+
export interface ValidateRealtimeReport {
|
|
685
|
+
verdicts: ValidateRealtimeVerdict[];
|
|
686
|
+
/** The uncovered subset of `verdicts` (what `strict` throws on). */
|
|
687
|
+
uncovered: ValidateRealtimeVerdict[];
|
|
688
|
+
}
|
|
394
689
|
export type RindleApiErrorCode = "bad-request" | "forbidden" | "not-found" | "rejected";
|
|
395
690
|
export declare class RindleApiError extends Error {
|
|
396
691
|
readonly code: RindleApiErrorCode;
|
|
@@ -429,6 +724,7 @@ export declare class SplitDaemonClient implements RindleDaemonClient {
|
|
|
429
724
|
applyRowChangeTxn(input: RowChangeTxn): Promise<RowChangeTxnOutput>;
|
|
430
725
|
claimRoomEpoch(input: ClaimRoomEpochInput): Promise<ClaimRoomEpochOutput>;
|
|
431
726
|
roomLmids(input: RoomLmidsInput): Promise<RoomLmidsOutput>;
|
|
727
|
+
coverQuery(input: CoverQueryInput): Promise<CoverQueryOutput>;
|
|
432
728
|
migrate(input: MigrateInput): Promise<MigrateOutput>;
|
|
433
729
|
materialize(input: MaterializeInput): Promise<MaterializeOutput>;
|
|
434
730
|
query(input: QueryOnceInput): Promise<QueryOnceOutput>;
|
|
@@ -575,7 +871,36 @@ export declare function defineApiMutators<User, M extends ApiMutators<User>>(mut
|
|
|
575
871
|
* ```
|
|
576
872
|
*/
|
|
577
873
|
export declare function sharedApiMutators<User>(registry: Record<string, SharedMutatorWithArgs<any>>, principal: (ctx: MutationContext<User>) => MutatorCtx): ApiMutators<User>;
|
|
578
|
-
|
|
874
|
+
/**
|
|
875
|
+
* Wrap a SHARED (generator) mutator with a row-level ACCESS GUARD — the multi-tenant authz twin of
|
|
876
|
+
* {@link sharedApiMutators}. It parses the untrusted wire args, derives the {@link MutatorCtx}
|
|
877
|
+
* principal (the SAME mapping you pass to `sharedApiMutators`), evaluates `predicate` against the OPEN
|
|
878
|
+
* mutation txn (so it can READ the rows the write depends on), and throws `forbidden` (403 — the
|
|
879
|
+
* client's optimistic write snaps back) when access is denied; otherwise it drives the SAME body the
|
|
880
|
+
* client predicts ({@link runSharedMutation}). Use it for the entries that need server-only authority
|
|
881
|
+
* the client cannot predict, OVERRIDING the auto-wrapped default (spread `sharedApiMutators(...)`
|
|
882
|
+
* first, then the guarded overrides win by key):
|
|
883
|
+
*
|
|
884
|
+
* ```ts
|
|
885
|
+
* const principal = (ctx) => ({ user: requireUser(ctx.user) });
|
|
886
|
+
* mutators: defineApiMutators({
|
|
887
|
+
* ...sharedApiMutators(sharedMutators, principal),
|
|
888
|
+
* updateSlide: guardMutator(sharedMutators.updateSlide, principal,
|
|
889
|
+
* async (tx, a, { user }) =>
|
|
890
|
+
* (await tx.query(q.slide.where.id(a.slideId).where(editableBy(user)).one())) != null,
|
|
891
|
+
* { message: "not permitted to edit this slide" }),
|
|
892
|
+
* }),
|
|
893
|
+
* ```
|
|
894
|
+
*
|
|
895
|
+
* The predicate keeps the shared body READ-FREE, so the client's `.folded` hot paths (drag/keystroke)
|
|
896
|
+
* still fold — the read is server-side only. Return `false` to deny (→ the default or `opts.message`
|
|
897
|
+
* forbidden); return `true`/nothing to allow. To reject with a different status/message (a business
|
|
898
|
+
* rejection, a not-found), throw a {@link RindleApiError} from inside the predicate instead. `principal`
|
|
899
|
+
* runs before the predicate, so it too may throw `forbidden` for an anonymous caller.
|
|
900
|
+
*/
|
|
901
|
+
export declare function guardMutator<User, Args>(gen: SharedMutatorWithArgs<Args>, principal: (ctx: MutationContext<User>) => MutatorCtx, predicate: (tx: ServerMutationTx, args: Args, ctx: MutatorCtx) => boolean | void | Promise<boolean | void>, opts?: {
|
|
902
|
+
message?: string;
|
|
903
|
+
}): ApiMutator<User, unknown>;
|
|
579
904
|
/** One exemplar invocation for {@link dumpQueryShapes} — the `args`/`user` a query is built with.
|
|
580
905
|
* Literal values never matter to the dump (shapes are deduped with literals stripped); what an
|
|
581
906
|
* exemplar buys is BRANCH coverage, so supply one per code path a query function can take
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|