@rindle/api-server 0.4.3 → 0.5.0
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 +31 -60
- package/dist/index.d.ts +326 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +857 -24
- 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 +6 -5
- package/src/index.ts +1216 -25
- package/src/rooms.ts +578 -0
package/README.md
CHANGED
|
@@ -1,73 +1,44 @@
|
|
|
1
1
|
# @rindle/api-server
|
|
2
2
|
|
|
3
|
-
Framework-neutral helpers for
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
- `POST /api/rindle/mutate`
|
|
10
|
-
|
|
11
|
-
`read` is the one-shot read path (`handleReadJson`): it parses a default `{ name, args }` body and
|
|
12
|
-
runs the query once for a server-rendered/SSR read, holding a short-lived lease (`readIdleTtlMs`)
|
|
13
|
-
unless the browser's follow-up `subscribe` lands first. `query` mints the subscription lease and
|
|
14
|
-
`mutate` runs named mutators.
|
|
15
|
-
|
|
16
|
-
The API server remains the application authority. It authenticates requests, optionally runs the
|
|
17
|
-
SDK authorizer hooks, resolves named queries to ASTs, and runs named mutators. The daemon only sees
|
|
18
|
-
approved ASTs and approved write/rejection records.
|
|
19
|
-
|
|
20
|
-
A query is defined **once** with `defineQuery` (in `@rindle/client`), co-located with the component
|
|
21
|
-
that reads it, and the same value is registered here. `registerQueries` turns the list of those
|
|
22
|
-
co-located queries into the server's query surface — it re-runs each query's validator on the
|
|
23
|
-
untrusted wire args and builds the authoritative AST, so client and server resolve a byte-identical
|
|
24
|
-
query:
|
|
3
|
+
Framework-neutral helpers for your app's **authority tier** in a daemon-backed Rindle
|
|
4
|
+
deployment. Stateless and transport-agnostic: it authenticates the caller, resolves
|
|
5
|
+
**named queries** to approved ASTs, and drives the **same isomorphic mutators** the
|
|
6
|
+
browser predicted — rendering their logical ops to SQL against the daemon's private
|
|
7
|
+
control plane. The daemon only ever sees approved ASTs and approved write/rejection
|
|
8
|
+
records.
|
|
25
9
|
|
|
26
10
|
```ts
|
|
27
|
-
import { createRindleApiServer, registerQueries,
|
|
11
|
+
import { createRindleApiServer, registerQueries, sharedApiMutators } from "@rindle/api-server";
|
|
28
12
|
import { HttpRindleDaemonClient } from "@rindle/daemon-client";
|
|
29
|
-
import { issuesPageQuery
|
|
13
|
+
import { issuesPageQuery } from "./src/IssueList.queries.ts";
|
|
14
|
+
import { mutators, schema } from "./shared/app-def.ts";
|
|
15
|
+
|
|
16
|
+
// The authenticated principal a shared mutator body sees as ctx.user (never a client arg):
|
|
17
|
+
const sharedCtx = (ctx) => {
|
|
18
|
+
if (!ctx.user) throw new Error("unauthenticated");
|
|
19
|
+
return { user: ctx.user };
|
|
20
|
+
};
|
|
30
21
|
|
|
31
|
-
const
|
|
32
|
-
daemon: new HttpRindleDaemonClient({
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
createIssue: (tx, args) => {
|
|
36
|
-
tx.exec("INSERT INTO issue (id, title) VALUES (?, ?)", [args.id, args.title]);
|
|
37
|
-
},
|
|
22
|
+
const api = createRindleApiServer({
|
|
23
|
+
daemon: new HttpRindleDaemonClient({
|
|
24
|
+
baseUrl: "http://127.0.0.1:7600",
|
|
25
|
+
headers: { authorization: `Bearer ${process.env.RINDLE_DAEMON_TOKEN}` },
|
|
38
26
|
}),
|
|
27
|
+
schema, // drives the SQL renderer for the yielded ops
|
|
28
|
+
queries: registerQueries([issuesPageQuery]), // the co-located defineQuery values, listed
|
|
29
|
+
mutators: sharedApiMutators(mutators, sharedCtx), // the SAME bodies the browser predicts
|
|
39
30
|
authorizeQuery: ({ user }) => Boolean(user),
|
|
40
31
|
authorizeMutation: ({ user }) => Boolean(user),
|
|
41
32
|
});
|
|
33
|
+
// You own the HTTP: mount api.handleQueryJson / handleReadJson / handleMutateJson
|
|
34
|
+
// on api.routes ({ query: "/api/rindle/query", read: "/api/rindle/read", mutate: "/api/rindle/mutate" }).
|
|
42
35
|
```
|
|
43
36
|
|
|
44
|
-
|
|
45
|
-
context-scoped query's ctx, so a per-principal query (e.g. "my issues") is built from the server's
|
|
46
|
-
trusted identity — never a client-supplied arg.
|
|
47
|
-
|
|
48
|
-
When the server must **diverge** from the client — add a tenancy/auth filter the client can't see —
|
|
49
|
-
use `defineApiQueries`, which maps a name directly to a `(ctx, args)` resolver. Register a
|
|
50
|
-
server-specific query under the same name and it wins (both are plain `{ name → resolver }` maps, so
|
|
51
|
-
spread them together):
|
|
52
|
-
|
|
53
|
-
```ts
|
|
54
|
-
import { defineApiQueries, registerQueries } from "@rindle/api-server";
|
|
55
|
-
|
|
56
|
-
const queries = {
|
|
57
|
-
...registerQueries([issuesPageQuery, myIssuesQuery]),
|
|
58
|
-
...defineApiQueries({
|
|
59
|
-
// SAME name as the client's issuesPage — the later spread wins, so this server-only resolver
|
|
60
|
-
// overrides it and adds a tenancy filter (the `where`) the client's query never carries.
|
|
61
|
-
issuesPage: (ctx, _args) => q.issue.where.tenantId(ctx.user).orderBy("id", "asc"),
|
|
62
|
-
}),
|
|
63
|
-
};
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
There is no scope key. If two requests resolve to the same canonical AST, the daemon may dedupe
|
|
67
|
-
them because the result is the same. If tenant or user visibility matters, encode it into the AST.
|
|
37
|
+
## Docs
|
|
68
38
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
39
|
+
Full docs — named queries & server-only divergence, driving the shared mutators, the
|
|
40
|
+
two rejection shapes, pinned queries & the one-shot read, and bring-your-own-HTTP:
|
|
41
|
+
**[rindle.sh/docs/api-server](https://rindle.sh/docs/api-server)** · markdown mirror:
|
|
42
|
+
[`api-server.md`](https://rindle.sh/docs/api-server.md) · the mutator contract:
|
|
43
|
+
[rindle.sh/docs/mutators](https://rindle.sh/docs/mutators) · for agents:
|
|
44
|
+
[llms.txt](https://rindle.sh/llms.txt)
|
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;
|
|
@@ -86,6 +156,91 @@ export interface QueryLeaseRequest<User> {
|
|
|
86
156
|
* A routing HINT only, never authorization. */
|
|
87
157
|
clientId?: string;
|
|
88
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* The room-serve block on a query lease (RINDLE-REALTIME-QUERY-ENABLEMENT §2.1 step 5 / §2.4,
|
|
161
|
+
* slice G-iv-b): present only when the named query carries a realtime label AND its resolved AST
|
|
162
|
+
* was PROVABLY covered by its room profile's footprint (the daemon's `/cover-check`). The G-v
|
|
163
|
+
* client uses it to open the room transport for THIS query beside — never instead of — its daemon
|
|
164
|
+
* session.
|
|
165
|
+
*
|
|
166
|
+
* It is a NEW dedicated block on purpose: the TOP-LEVEL `wsEndpoint` is the read-router's
|
|
167
|
+
* whole-session migration signal (`packages/remote/src/optimistic-source.ts` — a lease whose
|
|
168
|
+
* `wsEndpoint` differs migrates the client's ENTIRE ws session), so the room endpoint must never
|
|
169
|
+
* ride that field. A room-served lease's top-level fields are byte-identical to the daemon-served
|
|
170
|
+
* ones.
|
|
171
|
+
*/
|
|
172
|
+
export interface QueryLeaseRealtime {
|
|
173
|
+
/** The client store's gate/domain key for this room source (`connectSource`) AND the string the
|
|
174
|
+
* wasm engine's `parse_source_key` accepts: any string other than the reserved `"daemon"`
|
|
175
|
+
* parses as a room source, and the established convention is `"room:" + doc`
|
|
176
|
+
* (e.g. `room:document/doc:d1`). */
|
|
177
|
+
sourceKey: string;
|
|
178
|
+
/** Where the client opens the ROOM ws for this query (from `realtime.locateRoom`) — a separate
|
|
179
|
+
* field from the top-level `wsEndpoint` (see above: no whole-session migration). */
|
|
180
|
+
wsEndpoint: string;
|
|
181
|
+
/** The room's self-authorizing signed lease (`@rindle/room/token`): the APPROVED query AST +
|
|
182
|
+
* doc + subject, HMAC-signed with `realtime.roomTokenKey` so the room shell's
|
|
183
|
+
* `downstream.tokenKeys` ring verifies it. The room materializes on first presentation. */
|
|
184
|
+
roomToken: string;
|
|
185
|
+
/** Token expiry (ms epoch) — the client's renewal clock (renewal = a fresh lease). */
|
|
186
|
+
exp: number;
|
|
187
|
+
/** The wire room doc (`"<profile>/<key>"`, minted server-side — never client-derived). */
|
|
188
|
+
doc: string;
|
|
189
|
+
/** Per-footprint-table specs: the §2.2 owned/followed split + §3.2 routing metadata. Since
|
|
190
|
+
* H-iii each spec also carries `footprintWhere` — the same exact membership predicate the boot
|
|
191
|
+
* wire ships the room gate (one compiler, `compileRoomScopeSpecs`) — feeding the client's §3
|
|
192
|
+
* prove-or-slow-path router. Advisory routing metadata, never a credential (§3.2). */
|
|
193
|
+
tables: RoomTableSpec[];
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* One minted SYSTEM-STREAM lease on a query lease's `lifecycle` block (RINDLE-REALTIME-QUERY-
|
|
197
|
+
* ENABLEMENT §4, Slice I-iii): an ordinary daemon materialization over one of the four
|
|
198
|
+
* `_rindle_*` lifecycle system tables (registered by the daemon's `enable_realtime_lifecycle` —
|
|
199
|
+
* `rust/rindle-replica/src/mutations.rs`), attachable by the EXISTING client subscribe path
|
|
200
|
+
* (present `leaseToken` on a `subscribe` frame, exactly like the primary lease). The identity
|
|
201
|
+
* fields (`scope`/`doc`/`clientId`) document the minted AST's predicate — the client keys its
|
|
202
|
+
* retains and its release-time row filters on them.
|
|
203
|
+
*/
|
|
204
|
+
export interface QueryLeaseLifecycleLease {
|
|
205
|
+
/** Which system table this lease's subscription serves. */
|
|
206
|
+
table: string;
|
|
207
|
+
leaseToken: string;
|
|
208
|
+
/** The follower this system materialization lives on (routed deploys; mirrors the top-level
|
|
209
|
+
* `wsEndpoint` semantics). Absent ⇒ single-daemon. */
|
|
210
|
+
wsEndpoint?: string;
|
|
211
|
+
/** DOORBELL only: the §4.1 occupancy scope — the wire room doc (`"<profile>/<key>"`). */
|
|
212
|
+
scope?: string;
|
|
213
|
+
/** FENCE entries only: the room doc the predicate is scoped to. */
|
|
214
|
+
doc?: string;
|
|
215
|
+
/** FENCE ledger/outcome entries: present iff the predicate was ALSO client-scoped (the lease
|
|
216
|
+
* request carried `clientId`). Absent ⇒ doc-only predicate — the client filters to its own
|
|
217
|
+
* rows regardless (defense in depth). */
|
|
218
|
+
clientId?: string;
|
|
219
|
+
}
|
|
220
|
+
/** The §4 lifecycle block on a query lease (Slice I-iii): present only when BOTH the realtime
|
|
221
|
+
* `lifecycle` config is on AND the query is realtime-labeled. `doorbell` rides EVERY labeled
|
|
222
|
+
* lease (occupancy is counted whether or not the query is room-served — the 1→2 upgrade trigger
|
|
223
|
+
* needs solo watchers subscribed BEFORE any room exists, §4.1); `fence` rides only a ROOM-SERVED
|
|
224
|
+
* lease (the §4.2/§7.1/§3.3 downgrade surfaces are meaningful only where a room domain exists).
|
|
225
|
+
* The §4.2 fence VALUE (`finalFlushSeq`) is deliberately NOT here — it arrives with the I-v
|
|
226
|
+
* downgrade response; I-iii only stands up the streams. */
|
|
227
|
+
export interface QueryLeaseLifecycle {
|
|
228
|
+
doorbell: QueryLeaseLifecycleLease;
|
|
229
|
+
fence?: QueryLeaseLifecycleLease[];
|
|
230
|
+
}
|
|
231
|
+
/** The §4.2 downgrade fence on a query lease (Slice I-v): rides a labeled reply whose §4.1
|
|
232
|
+
* occupancy gate CLOSED (so there is NO `realtime` block) when the server could drain the room.
|
|
233
|
+
* A SIBLING of `realtime`, never nested inside it — block-ABSENCE is the downgrade signal, and
|
|
234
|
+
* the fence rides alongside that absence. Its `finalFlushSeq` is the room's last COMMITTED flush
|
|
235
|
+
* seq; the client's frozen room ghost holds visible until the daemon plane has provably absorbed
|
|
236
|
+
* it (`_rindle_room_watermark(doc) ≥ finalFlushSeq`). Absent from every non-downgrade reply. */
|
|
237
|
+
export interface QueryLeaseRealtimeFence {
|
|
238
|
+
/** The retiring room source's gate/domain key — `"room:" + doc`, matching what the room-served
|
|
239
|
+
* lease's {@link QueryLeaseRealtime.sourceKey} carried. */
|
|
240
|
+
sourceKey: string;
|
|
241
|
+
doc: string;
|
|
242
|
+
finalFlushSeq: number;
|
|
243
|
+
}
|
|
89
244
|
export interface QueryLeaseResponse {
|
|
90
245
|
leaseToken: string;
|
|
91
246
|
materializationId: string;
|
|
@@ -94,6 +249,17 @@ export interface QueryLeaseResponse {
|
|
|
94
249
|
/** The follower this lease lives on (READ-ROUTER-DESIGN.md §2.3) — the browser opens its
|
|
95
250
|
* subscription ws here. Absent ⇒ single-daemon (the client uses its static `wsUrl`). */
|
|
96
251
|
wsEndpoint?: string;
|
|
252
|
+
/** The room-serve block (G-iv-b) — see {@link QueryLeaseRealtime}. Absent ⇒ the lease is
|
|
253
|
+
* byte-identical to the legacy daemon-served shape. */
|
|
254
|
+
realtime?: QueryLeaseRealtime;
|
|
255
|
+
/** The §4.2 downgrade fence (Slice I-v) — see {@link QueryLeaseRealtimeFence}. Present only on a
|
|
256
|
+
* labeled reply whose occupancy gate closed AND `realtime.lifecycle.drainRoom` could drain the
|
|
257
|
+
* room; absent otherwise (including on every room-served reply). */
|
|
258
|
+
realtimeFence?: QueryLeaseRealtimeFence;
|
|
259
|
+
/** The §4 lifecycle system-stream block (Slice I-iii) — see {@link QueryLeaseLifecycle}.
|
|
260
|
+
* Minted ONLY under the opt-in `realtime.lifecycle` config; absent ⇒ byte-identical to the
|
|
261
|
+
* pre-lifecycle response. */
|
|
262
|
+
lifecycle?: QueryLeaseLifecycle;
|
|
97
263
|
}
|
|
98
264
|
/** A one-shot SSR read of a named query (SSR-DESIGN.md §6): same `(name, args)` surface as a lease,
|
|
99
265
|
* but the daemon serializes the current view ONCE and registers no subscriber. */
|
|
@@ -236,6 +402,12 @@ export interface RoomBootResponse {
|
|
|
236
402
|
/** Where the room opens its upstream subscription (a routed deploy's follower). Absent ⇒ the
|
|
237
403
|
* shell's statically configured rindled ws endpoint. */
|
|
238
404
|
upstreamWsEndpoint?: string;
|
|
405
|
+
/** Per-footprint-table scope specs (H-iv-b), compiled from the resolved footprint AST + the
|
|
406
|
+
* profile's context set (the legacy anonymous profile compiles with an empty context set):
|
|
407
|
+
* what the shell hands the wasm room's `enableWritesV2` — the §3.3 commit gate. Optional
|
|
408
|
+
* only for wire compatibility with pre-H-iv-b servers; a shell that doesn't receive them
|
|
409
|
+
* enables the v1 table-granular write plane exactly as before. */
|
|
410
|
+
scopes?: RoomScopeSpec[];
|
|
239
411
|
flush: RoomBootFlush;
|
|
240
412
|
}
|
|
241
413
|
export interface RindleRealtimeOptions<User> {
|
|
@@ -243,11 +415,22 @@ export interface RindleRealtimeOptions<User> {
|
|
|
243
415
|
* room's `Authorization: Bearer` on `/room-boot` (the default {@link authorizeBoot}) and keys
|
|
244
416
|
* the DEFAULT epoch-bound flush credential. */
|
|
245
417
|
shellSecret: string;
|
|
418
|
+
/** NAMED room profiles (RINDLE-REALTIME-QUERY-ENABLEMENT-DESIGN.md §2.1): profile name → key
|
|
419
|
+
* derivation + canonical unwindowed footprint + read-only context tables. The wire room key
|
|
420
|
+
* for a named profile is `"<profile>/<key>"`; `/room-boot` splits it and resolves the
|
|
421
|
+
* profile's footprint with the bare key. Compiled + validated LOUDLY at construction (§2.3):
|
|
422
|
+
* a windowed footprint, a context table missing from the schema/footprint, or a registered
|
|
423
|
+
* query whose realtime label names a missing profile all throw from `createRindleApiServer`. */
|
|
424
|
+
rooms?: Record<string, RoomProfile<User>>;
|
|
246
425
|
/** doc → the room's approved upstream footprint (§3.1) — an `Ast` or fluent `Query`. MAY
|
|
247
426
|
* delegate to the named-query registry internally; throw `RindleApiError("not-found", …, 404)`
|
|
248
427
|
* for a doc that shouldn't exist. The §9 footprint budget belongs here — it runs once per
|
|
249
|
-
* placement, at lease mint.
|
|
250
|
-
|
|
428
|
+
* placement, at lease mint.
|
|
429
|
+
* @deprecated Prefer named {@link rooms} profiles (RINDLE-REALTIME-QUERY-ENABLEMENT §2.1).
|
|
430
|
+
* This bare form remains as the single-profile LEGACY alias — the anonymous/default profile:
|
|
431
|
+
* a doc with no known `"<profile>/"` prefix resolves here, byte-identically to before named
|
|
432
|
+
* profiles existed (and with none of their construction/boot-time validation). */
|
|
433
|
+
resolveFootprint?: (doc: string, ctx: ApiContext<User>) => MaybePromise<ApiQueryResult>;
|
|
251
434
|
/** Gates the flush trio — `authorizeRoom`, relocated. Default: verify the default flush
|
|
252
435
|
* credential from the {@link ROOM_FLUSH_CREDENTIAL_HEADER} request header — which requires the
|
|
253
436
|
* transport to pass its incoming request as `context.request` (Fetch `Request` and node
|
|
@@ -269,6 +452,78 @@ export interface RindleRealtimeOptions<User> {
|
|
|
269
452
|
/** Static override for where rooms open their upstream subscription; default is the
|
|
270
453
|
* `wsEndpoint` the materialize returns (set in routed deploys), else absent. */
|
|
271
454
|
upstreamWsEndpoint?: string;
|
|
455
|
+
/** Locate (or place) the room serving `doc` and return the ROOM ws endpoint a room-served
|
|
456
|
+
* lease's client should open (G-iv-b; on the DO shell this is the Worker's room URL). The
|
|
457
|
+
* endpoint rides the lease's dedicated `realtime.wsEndpoint` — NEVER the top-level
|
|
458
|
+
* `wsEndpoint` (that field migrates the client's whole daemon session). Absent ⇒ room-serving
|
|
459
|
+
* is OFF: labeled queries serve from the daemon exactly as today (fail-open). */
|
|
460
|
+
locateRoom?: (doc: string) => MaybePromise<{
|
|
461
|
+
wsEndpoint: string;
|
|
462
|
+
}>;
|
|
463
|
+
/** The room lease token signing key (`@rindle/room/token`): `kid` + secret, matching an entry
|
|
464
|
+
* in the room shell's `downstream.tokenKeys` ring. Required for room-serving (without it a
|
|
465
|
+
* labeled query fail-opens to the daemon with a one-time warning). A separate secret from
|
|
466
|
+
* `shellSecret` on purpose — the shell's ring is the client-token trust domain, the shell
|
|
467
|
+
* secret is the boot/flush trust domain. */
|
|
468
|
+
roomTokenKey?: {
|
|
469
|
+
kid: string;
|
|
470
|
+
secret: string;
|
|
471
|
+
};
|
|
472
|
+
/** Room lease token TTL, ms (default 5 minutes — the §4.1 short-TTL backstop; renewal is a
|
|
473
|
+
* fresh lease through this server, never an extension). */
|
|
474
|
+
roomTokenTtlMs?: number;
|
|
475
|
+
/** Loud-diagnostics sink for the realtime layer (profile compilation warnings + the one-time
|
|
476
|
+
* per-(query, profile) "not room-served" serve-decision warnings). Defaults to
|
|
477
|
+
* `console.warn`; injectable for tests. */
|
|
478
|
+
warn?: (message: string) => void;
|
|
479
|
+
/** The §4 upgrade/downgrade lifecycle plane (RINDLE-REALTIME-QUERY-ENABLEMENT §4, Slice
|
|
480
|
+
* I-iii): PRESENCE of this block is the opt-in — every realtime-labeled lease then
|
|
481
|
+
* additionally mints the doorbell system lease (occupancy, §4.1) and every ROOM-SERVED lease
|
|
482
|
+
* the fence bundle (watermark + ledger + outcomes, §4.2/§7.1/§3.3) — see
|
|
483
|
+
* {@link QueryLeaseLifecycle}. Requires the daemon to have run `enable_realtime_lifecycle`
|
|
484
|
+
* (the four `_rindle_*` system tables must be registered or the minted materializations fail
|
|
485
|
+
* — which fail-opens with a one-time warning, never blocking the lease). Absent ⇒ the lease
|
|
486
|
+
* response is byte-identical to pre-lifecycle. */
|
|
487
|
+
lifecycle?: RindleRealtimeLifecycleOptions;
|
|
488
|
+
}
|
|
489
|
+
/** {@link RindleRealtimeOptions.lifecycle}. PRESENCE of the block is the opt-in switch (I-iii);
|
|
490
|
+
* the fields below are the Slice I-iv occupancy knobs (§4.1, decisions D4/D6/D7). All optional —
|
|
491
|
+
* `lifecycle: {}` gets the designed defaults. */
|
|
492
|
+
export interface RindleRealtimeLifecycleOptions {
|
|
493
|
+
/** D6 (§4.1): the occupancy threshold for room-serving. A labeled lease whose scope counts
|
|
494
|
+
* FEWER than this many distinct unexpired sessions (the caller's own included) ships WITHOUT
|
|
495
|
+
* the realtime block — served from the daemon, indistinguishable from an uncovered query —
|
|
496
|
+
* but WITH the doorbell, so the 1→2 transition wakes it (that is the point: solo docs never
|
|
497
|
+
* cost room infrastructure). Default **2** (the design's 1→2 trigger). Set `1` to room-serve
|
|
498
|
+
* solo viewers (the pre-I-iv behavior under lifecycle config). */
|
|
499
|
+
minSessions?: number;
|
|
500
|
+
/** The §9.1 hysteresis window, ms (default **120_000**). Two consumers: (a) the lazy sweep
|
|
501
|
+
* (D4) keeps expired session rows lingering at least this long past expiry — Slice I-v's
|
|
502
|
+
* downgrade decision ("no other unexpired row AND the newest other row expired > graceMs
|
|
503
|
+
* ago") is read FROM those rows, so they must survive to be read; (b) this slice's gate
|
|
504
|
+
* applies the same hysteresis upward: a scope with an other-session row expired ≤ graceMs
|
|
505
|
+
* ago keeps room-serving through the window (see `lifecycleOccupancy` — no flap on one
|
|
506
|
+
* client's brief lapse). §9.1-tunable: raise it for docs where collaborators churn slowly. */
|
|
507
|
+
graceMs?: number;
|
|
508
|
+
/** TTL of an occupancy session row, ms — `expires_at = now + sessionTtlMs` on every labeled
|
|
509
|
+
* lease mint/renewal (D7: session identity = the request's `clientId`; two tabs are two
|
|
510
|
+
* sessions iff their clientIds differ). Default = the server's `leaseTtlMs`, else 5 minutes —
|
|
511
|
+
* matching the room-token renewal cadence (`roomTokenTtlMs`, renewed 30s early), so a
|
|
512
|
+
* room-attached client's renewals keep its row unexpired; a daemon-attached solo client's row
|
|
513
|
+
* MAY lapse (it has no renewal timer) and is refreshed by its next doorbell-triggered
|
|
514
|
+
* re-lease — occupancy converges through the doorbell itself. */
|
|
515
|
+
sessionTtlMs?: number;
|
|
516
|
+
/** The §4.2 downgrade drain hook (Slice I-v). When the occupancy gate CLOSES for a labeled
|
|
517
|
+
* lease whose scope PLAUSIBLY hosted a room (an other-session row still lingers — never a
|
|
518
|
+
* never-shared solo doc), the api-server calls this to drain the room's pending write-behind
|
|
519
|
+
* and learn its last COMMITTED `flush_seq`, then rides the value back on the lease as the
|
|
520
|
+
* {@link QueryLeaseRealtimeFence}. The deployment wires it to the room shell's / DO's `/drain`
|
|
521
|
+
* control. Absent ⇒ no fence is attached (the client hits its loud legacy downgrade path);
|
|
522
|
+
* a throw fails OPEN to the same (a downgrade never blocks the lease). Concurrent drains across
|
|
523
|
+
* api-server instances are fine — `/drain` is idempotent. */
|
|
524
|
+
drainRoom?: (doc: string) => Promise<{
|
|
525
|
+
finalFlushSeq: number;
|
|
526
|
+
}>;
|
|
272
527
|
}
|
|
273
528
|
export declare const ROOM_FLUSH_CREDENTIAL_HEADER = "x-rindle-room-credential";
|
|
274
529
|
export interface RoomFlushCredentialPayload {
|
|
@@ -351,6 +606,15 @@ export interface RindleApiServerOptions<User> {
|
|
|
351
606
|
/** The user context pins resolve under (pins are shared, so they should not depend on a
|
|
352
607
|
* per-viewer identity). Defaults to `undefined`. */
|
|
353
608
|
pinUser?: User;
|
|
609
|
+
/** Surfaced when a SCOPED mutator ({@link scoped}) throws from code that runs AFTER `scope.transact`
|
|
610
|
+
* has already sealed the protocol outcome — a post-commit effect, or a compensation handler running
|
|
611
|
+
* after a business rejection. The outcome is fixed (this callback CANNOT change the client's
|
|
612
|
+
* response or the `lmid` advance), but the throw must not vanish: a failed refund is real money.
|
|
613
|
+
* Absent ⇒ the error is logged to `console.error`. */
|
|
614
|
+
onScopeError?: (err: unknown, info: {
|
|
615
|
+
phase: "committed" | "rejected";
|
|
616
|
+
envelope: MutationEnvelope;
|
|
617
|
+
}) => void;
|
|
354
618
|
}
|
|
355
619
|
export interface RindleApiServer<User> {
|
|
356
620
|
readonly routes: RindleApiRoutes;
|
|
@@ -360,6 +624,18 @@ export interface RindleApiServer<User> {
|
|
|
360
624
|
* startup and whenever the daemon restarts (e.g. from the daemon-client `onBootId` hook), since
|
|
361
625
|
* the daemon holds no durable materialization state. No-op when `pinnedQueries` is empty. */
|
|
362
626
|
assertPins(): Promise<void>;
|
|
627
|
+
/** The room-serving coverage DIAGNOSTIC (G-iv-b; the `assertPins`-style explicit check): for
|
|
628
|
+
* every realtime-labeled query, resolve it (under `pinUser`, per exemplar args), resolve its
|
|
629
|
+
* profile's footprint, and run the REAL daemon coverage check — the same verdict the lease
|
|
630
|
+
* path serves by. Returns every verdict; `strict` throws when any labeled query is not
|
|
631
|
+
* provably covered (deploy-gate mode). Deliberately ignores `locateRoom`/`roomTokenKey` — it
|
|
632
|
+
* answers "would this query be coverable", not "is serving fully wired". */
|
|
633
|
+
validateRealtime(opts?: {
|
|
634
|
+
/** Per-query exemplar args (a query is checked once per exemplar; default: one `null`). */
|
|
635
|
+
exemplars?: Partial<Record<string, readonly unknown[]>>;
|
|
636
|
+
/** Throw when any labeled query is uncovered (instead of just reporting). */
|
|
637
|
+
strict?: boolean;
|
|
638
|
+
}): Promise<ValidateRealtimeReport>;
|
|
363
639
|
pushMutation(input: PushMutationRequest<User>): Promise<PushMutationResponse>;
|
|
364
640
|
/** Apply an in-order batch (the client mutation queue's flush). Envelopes run strictly
|
|
365
641
|
* sequentially; a rejection still advances the daemon's lmid, so later envelopes in the
|
|
@@ -391,6 +667,22 @@ export interface RindleApiServer<User> {
|
|
|
391
667
|
* lease and the flush leg. 403 until {@link RindleApiServerOptions.realtime} is set. */
|
|
392
668
|
handleRoomBootJson(body: unknown, context: ApiContext<User>): Promise<RoomHostResponse>;
|
|
393
669
|
}
|
|
670
|
+
/** One {@link RindleApiServer.validateRealtime} verdict: a labeled query × exemplar args. */
|
|
671
|
+
export interface ValidateRealtimeVerdict {
|
|
672
|
+
query: string;
|
|
673
|
+
profile: string;
|
|
674
|
+
args: unknown;
|
|
675
|
+
covered: boolean;
|
|
676
|
+
/** Why it is not covered (uncovered verdicts only) — the daemon's reason strings, the
|
|
677
|
+
* aggregate refusal, or a resolve/footprint error message. */
|
|
678
|
+
reasons?: string[];
|
|
679
|
+
}
|
|
680
|
+
/** The {@link RindleApiServer.validateRealtime} report. */
|
|
681
|
+
export interface ValidateRealtimeReport {
|
|
682
|
+
verdicts: ValidateRealtimeVerdict[];
|
|
683
|
+
/** The uncovered subset of `verdicts` (what `strict` throws on). */
|
|
684
|
+
uncovered: ValidateRealtimeVerdict[];
|
|
685
|
+
}
|
|
394
686
|
export type RindleApiErrorCode = "bad-request" | "forbidden" | "not-found" | "rejected";
|
|
395
687
|
export declare class RindleApiError extends Error {
|
|
396
688
|
readonly code: RindleApiErrorCode;
|
|
@@ -429,6 +721,7 @@ export declare class SplitDaemonClient implements RindleDaemonClient {
|
|
|
429
721
|
applyRowChangeTxn(input: RowChangeTxn): Promise<RowChangeTxnOutput>;
|
|
430
722
|
claimRoomEpoch(input: ClaimRoomEpochInput): Promise<ClaimRoomEpochOutput>;
|
|
431
723
|
roomLmids(input: RoomLmidsInput): Promise<RoomLmidsOutput>;
|
|
724
|
+
coverQuery(input: CoverQueryInput): Promise<CoverQueryOutput>;
|
|
432
725
|
migrate(input: MigrateInput): Promise<MigrateOutput>;
|
|
433
726
|
materialize(input: MaterializeInput): Promise<MaterializeOutput>;
|
|
434
727
|
query(input: QueryOnceInput): Promise<QueryOnceOutput>;
|
|
@@ -575,7 +868,36 @@ export declare function defineApiMutators<User, M extends ApiMutators<User>>(mut
|
|
|
575
868
|
* ```
|
|
576
869
|
*/
|
|
577
870
|
export declare function sharedApiMutators<User>(registry: Record<string, SharedMutatorWithArgs<any>>, principal: (ctx: MutationContext<User>) => MutatorCtx): ApiMutators<User>;
|
|
578
|
-
|
|
871
|
+
/**
|
|
872
|
+
* Wrap a SHARED (generator) mutator with a row-level ACCESS GUARD — the multi-tenant authz twin of
|
|
873
|
+
* {@link sharedApiMutators}. It parses the untrusted wire args, derives the {@link MutatorCtx}
|
|
874
|
+
* principal (the SAME mapping you pass to `sharedApiMutators`), evaluates `predicate` against the OPEN
|
|
875
|
+
* mutation txn (so it can READ the rows the write depends on), and throws `forbidden` (403 — the
|
|
876
|
+
* client's optimistic write snaps back) when access is denied; otherwise it drives the SAME body the
|
|
877
|
+
* client predicts ({@link runSharedMutation}). Use it for the entries that need server-only authority
|
|
878
|
+
* the client cannot predict, OVERRIDING the auto-wrapped default (spread `sharedApiMutators(...)`
|
|
879
|
+
* first, then the guarded overrides win by key):
|
|
880
|
+
*
|
|
881
|
+
* ```ts
|
|
882
|
+
* const principal = (ctx) => ({ user: requireUser(ctx.user) });
|
|
883
|
+
* mutators: defineApiMutators({
|
|
884
|
+
* ...sharedApiMutators(sharedMutators, principal),
|
|
885
|
+
* updateSlide: guardMutator(sharedMutators.updateSlide, principal,
|
|
886
|
+
* async (tx, a, { user }) =>
|
|
887
|
+
* (await tx.query(q.slide.where.id(a.slideId).where(editableBy(user)).one())) != null,
|
|
888
|
+
* { message: "not permitted to edit this slide" }),
|
|
889
|
+
* }),
|
|
890
|
+
* ```
|
|
891
|
+
*
|
|
892
|
+
* The predicate keeps the shared body READ-FREE, so the client's `.folded` hot paths (drag/keystroke)
|
|
893
|
+
* still fold — the read is server-side only. Return `false` to deny (→ the default or `opts.message`
|
|
894
|
+
* forbidden); return `true`/nothing to allow. To reject with a different status/message (a business
|
|
895
|
+
* rejection, a not-found), throw a {@link RindleApiError} from inside the predicate instead. `principal`
|
|
896
|
+
* runs before the predicate, so it too may throw `forbidden` for an anonymous caller.
|
|
897
|
+
*/
|
|
898
|
+
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?: {
|
|
899
|
+
message?: string;
|
|
900
|
+
}): ApiMutator<User, unknown>;
|
|
579
901
|
/** One exemplar invocation for {@link dumpQueryShapes} — the `args`/`user` a query is built with.
|
|
580
902
|
* Literal values never matter to the dump (shapes are deduped with literals stripped); what an
|
|
581
903
|
* 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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"}
|