@rindle/devtools 0.2.0 → 0.4.2
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 +6 -5
- package/dist/core.d.ts +8 -2
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +79 -18
- package/dist/core.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/types.d.ts +11 -7
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/core.ts +80 -18
- package/src/index.ts +3 -1
- package/src/types.ts +31 -8
package/README.md
CHANGED
|
@@ -9,8 +9,8 @@ live read-model of three things ([`DEBUG-TOOLS-BROWSER-DESIGN.md`](../../designs
|
|
|
9
9
|
authoritative server result. This is the thing no refetch-based devtools can show.
|
|
10
10
|
- **Queries inspector** — every live materialized view: its AST, `resultType`, row count + a sample,
|
|
11
11
|
and whether a pending mutation touches its tables (the pending axis).
|
|
12
|
-
- **Delta stream** —
|
|
13
|
-
the per-query
|
|
12
|
+
- **Delta stream** — authoritative server deltas when the backend can expose them, falling back to
|
|
13
|
+
the local per-query view stream for purely local/in-process backends.
|
|
14
14
|
|
|
15
15
|
This package has **no DOM assumptions** — pair it with a panel (`@rindle/react-devtools`) or read the
|
|
16
16
|
model yourself. It surfaces state the client already holds; it adds no hot-path instrumentation.
|
|
@@ -50,9 +50,10 @@ getDevtoolsHub().subscribe(() => {
|
|
|
50
50
|
|
|
51
51
|
## How it stays zero-cost in production
|
|
52
52
|
|
|
53
|
-
The core reads `Store.__inspect()` / `Store.__attachDevtools()
|
|
54
|
-
`__inspect()
|
|
55
|
-
`attachDevtools`, which you do only in a dev build.
|
|
53
|
+
The core reads `Store.__inspect()` / `Store.__attachDevtools()`, the optimistic backend's
|
|
54
|
+
`__inspect()`, and an optional backend server-delta tap — small read-only/additive methods. Nothing
|
|
55
|
+
here runs unless you import this package and call `attachDevtools`, which you do only in a dev build.
|
|
56
|
+
The wasm engine is untouched.
|
|
56
57
|
|
|
57
58
|
See the design doc for the full picture and the deferred phases (normalized-cache view, consistency
|
|
58
59
|
check, engine internals).
|
package/dist/core.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export declare class DevtoolsCore {
|
|
|
3
3
|
private readonly store;
|
|
4
4
|
private readonly backend?;
|
|
5
5
|
private readonly detachStore;
|
|
6
|
+
private readonly detachServerDeltas?;
|
|
7
|
+
private readonly hasServerDeltaTap;
|
|
6
8
|
private readonly timelineCap;
|
|
7
9
|
private readonly deltaCap;
|
|
8
10
|
private readonly sampleRows;
|
|
@@ -40,7 +42,9 @@ export declare class DevtoolsCore {
|
|
|
40
42
|
clearHistory(): void;
|
|
41
43
|
/** Detach from the client: stop the poll, drop the store tap, deregister from the global hub. */
|
|
42
44
|
detach(): void;
|
|
43
|
-
private
|
|
45
|
+
private attachServerDeltas;
|
|
46
|
+
private onStoreDelta;
|
|
47
|
+
private onServerDelta;
|
|
44
48
|
private onResultType;
|
|
45
49
|
private markDirty;
|
|
46
50
|
private flush;
|
|
@@ -51,7 +55,9 @@ export declare class DevtoolsCore {
|
|
|
51
55
|
* counted. */
|
|
52
56
|
private reconcileTimeline;
|
|
53
57
|
private rebuildQueries;
|
|
54
|
-
private
|
|
58
|
+
private pushServerDelta;
|
|
59
|
+
private pushChangeDelta;
|
|
60
|
+
private pushNormalizedDelta;
|
|
55
61
|
private appendDelta;
|
|
56
62
|
private addEntry;
|
|
57
63
|
private renameEntry;
|
package/dist/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAMV,mBAAmB,EACnB,aAAa,EAEb,cAAc,EAQf,MAAM,YAAY,CAAC;AAiBpB,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAa;IACjD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAU;IAE5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAiC;IAG7D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAC7D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,kGAAkG;IAClG,OAAO,CAAC,eAAe,CAAqB;IAG5C,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,QAAQ,CAAK;IACrB;kEAC8D;IAC9D,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,UAAU,CAAC,CAAoB;IAEvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAA8B;IAC9C,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;gBAEV,MAAM,EAAE,cAAc,EAAE,IAAI,GAAE,mBAAwB;IAoClE;+DAC2D;IAC3D,QAAQ,IAAI,aAAa;IAIzB,iGAAiG;IACjG,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAQ3C,qFAAqF;IACrF,OAAO,IAAI,IAAI;IAKf,gEAAgE;IAChE,WAAW,IAAI,IAAI;IAKnB,mGAAmG;IACnG,YAAY,IAAI,IAAI;IAYpB,iGAAiG;IACjG,MAAM,IAAI,IAAI;IAUd,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,KAAK;IASb,OAAO,CAAC,SAAS;IAsBjB;;;mBAGe;IACf,OAAO,CAAC,iBAAiB;IAiFzB,OAAO,CAAC,cAAc;IA6BtB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,WAAW;CASpB"}
|
package/dist/core.js
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
// DevtoolsCore — the framework-agnostic engine (DEBUG-TOOLS-BROWSER-DESIGN.md §6.1). It attaches to
|
|
2
|
-
// a running client through the read-only seams (`Store.
|
|
3
|
-
// optimistic backend's `__inspect`), then maintains the §4 read-model: the
|
|
2
|
+
// a running client through the read-only seams (`Store.subscribeChanges` / `subscribeResultType` /
|
|
3
|
+
// `__inspect`, and the optimistic backend's `__inspect`), then maintains the §4 read-model: the
|
|
4
|
+
// mutation TIMELINE
|
|
4
5
|
// (reconstructed by diffing successive pending-stack snapshots), the QUERIES inspector, and the
|
|
5
|
-
// DELTA stream (off
|
|
6
|
+
// DELTA stream (preferentially off authoritative backend/server frames, with the Store's raw
|
|
7
|
+
// per-query `ChangeEvent` tap as the local fallback). No DOM, no app-code changes, no hot path.
|
|
6
8
|
import { collectTables, summarizeAst } from "./ast.js";
|
|
7
|
-
/** Narrow a candidate backend to the
|
|
8
|
-
function
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
/** Narrow a candidate backend to the optional devtools capability surface (§6.2). */
|
|
10
|
+
function asDevtoolsBackend(backend) {
|
|
11
|
+
if (!backend || typeof backend !== "object")
|
|
12
|
+
return undefined;
|
|
13
|
+
const b = backend;
|
|
14
|
+
return typeof b.__inspect === "function" || typeof b.__attachDevtoolsServerDeltas === "function" ? b : undefined;
|
|
12
15
|
}
|
|
13
16
|
const EMPTY_STATE = {
|
|
14
17
|
timeline: [],
|
|
@@ -21,6 +24,8 @@ export class DevtoolsCore {
|
|
|
21
24
|
store;
|
|
22
25
|
backend;
|
|
23
26
|
detachStore;
|
|
27
|
+
detachServerDeltas;
|
|
28
|
+
hasServerDeltaTap;
|
|
24
29
|
timelineCap;
|
|
25
30
|
deltaCap;
|
|
26
31
|
sampleRows;
|
|
@@ -48,16 +53,23 @@ export class DevtoolsCore {
|
|
|
48
53
|
onDetach;
|
|
49
54
|
constructor(target, opts = {}) {
|
|
50
55
|
this.store = target.store;
|
|
51
|
-
this.backend =
|
|
56
|
+
this.backend = asDevtoolsBackend(target.backend);
|
|
52
57
|
this.timelineCap = opts.timelineCap ?? 200;
|
|
53
58
|
this.deltaCap = opts.deltaCap ?? 500;
|
|
54
59
|
this.sampleRows = opts.sampleRows ?? 25;
|
|
55
60
|
this.autoFlush = opts.autoFlush ?? true;
|
|
56
61
|
this.now = opts.now ?? (() => Date.now());
|
|
57
|
-
this.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
62
|
+
this.detachServerDeltas = this.attachServerDeltas();
|
|
63
|
+
this.hasServerDeltaTap = !!this.detachServerDeltas;
|
|
64
|
+
// The post-fold delta + resultType taps off the Store's supported subscription seams (the same
|
|
65
|
+
// `subscribeChanges` an app narrates off — no private back door). Both fire AFTER the view folds,
|
|
66
|
+
// which is the timing the snap-back/churn heuristics need.
|
|
67
|
+
const detachDeltas = this.store.subscribeChanges((qid, ev) => this.onStoreDelta(qid, ev));
|
|
68
|
+
const detachResultType = this.store.subscribeResultType((qid, rt) => this.onResultType(qid, rt));
|
|
69
|
+
this.detachStore = () => {
|
|
70
|
+
detachDeltas();
|
|
71
|
+
detachResultType();
|
|
72
|
+
};
|
|
61
73
|
const pollMs = opts.pollMs ?? 0;
|
|
62
74
|
if (pollMs > 0) {
|
|
63
75
|
this.pollHandle = setInterval(() => this.refresh(), pollMs);
|
|
@@ -109,17 +121,36 @@ export class DevtoolsCore {
|
|
|
109
121
|
if (this.pollHandle)
|
|
110
122
|
clearInterval(this.pollHandle);
|
|
111
123
|
this.detachStore();
|
|
124
|
+
this.detachServerDeltas?.();
|
|
112
125
|
this.onDetach?.();
|
|
113
126
|
this.listeners.clear();
|
|
114
127
|
}
|
|
115
128
|
// --- event taps --------------------------------------------------------------
|
|
116
|
-
|
|
117
|
-
|
|
129
|
+
attachServerDeltas() {
|
|
130
|
+
try {
|
|
131
|
+
return this.backend?.__attachDevtoolsServerDeltas?.({
|
|
132
|
+
onServerDelta: (qid, ev) => this.onServerDelta(qid, ev),
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return undefined;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
onStoreDelta(qid, ev) {
|
|
140
|
+
// Prefer the authoritative backend/server stream for the visible Deltas pane. The Store tap is
|
|
141
|
+
// still observed for timeline churn: it fires after the view folded the event, which is the
|
|
142
|
+
// signal the snap-back heuristic needs.
|
|
143
|
+
if (!this.hasServerDeltaTap)
|
|
144
|
+
this.pushChangeDelta(qid, ev);
|
|
118
145
|
// A `batch` carrying real changes is view churn — the signal the snap-back heuristic keys on.
|
|
119
146
|
if (ev.type === "batch" && ev.events.length > 0)
|
|
120
147
|
this.churnSeen = true;
|
|
121
148
|
this.markDirty();
|
|
122
149
|
}
|
|
150
|
+
onServerDelta(qid, ev) {
|
|
151
|
+
this.pushServerDelta(qid, ev);
|
|
152
|
+
this.markDirty();
|
|
153
|
+
}
|
|
123
154
|
onResultType(_qid, _rt) {
|
|
124
155
|
this.markDirty();
|
|
125
156
|
}
|
|
@@ -144,7 +175,7 @@ export class DevtoolsCore {
|
|
|
144
175
|
// --- recompute ---------------------------------------------------------------
|
|
145
176
|
recompute() {
|
|
146
177
|
let opt;
|
|
147
|
-
if (this.backend) {
|
|
178
|
+
if (this.backend?.__inspect) {
|
|
148
179
|
try {
|
|
149
180
|
opt = this.backend.__inspect();
|
|
150
181
|
}
|
|
@@ -162,7 +193,7 @@ export class DevtoolsCore {
|
|
|
162
193
|
queries: this.queries,
|
|
163
194
|
deltas: this.deltas.slice(),
|
|
164
195
|
optimistic: opt,
|
|
165
|
-
capabilities: { optimistic:
|
|
196
|
+
capabilities: { optimistic: typeof this.backend?.__inspect === "function" },
|
|
166
197
|
};
|
|
167
198
|
}
|
|
168
199
|
/** Reconstruct the fork/rebase lifecycle by diffing this pending snapshot against the previous
|
|
@@ -276,7 +307,14 @@ export class DevtoolsCore {
|
|
|
276
307
|
}
|
|
277
308
|
}
|
|
278
309
|
// --- delta ring --------------------------------------------------------------
|
|
279
|
-
|
|
310
|
+
pushServerDelta(qid, ev) {
|
|
311
|
+
if (ev.format === "flat") {
|
|
312
|
+
this.pushChangeDelta(qid, ev.event);
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
this.pushNormalizedDelta(qid, ev.event);
|
|
316
|
+
}
|
|
317
|
+
pushChangeDelta(qid, ev) {
|
|
280
318
|
if (ev.type === "hello") {
|
|
281
319
|
this.appendDelta(qid, "hello", 0, `hello · ${ev.schema.columns.length} col${ev.schema.columns.length === 1 ? "" : "s"}`);
|
|
282
320
|
}
|
|
@@ -291,6 +329,19 @@ export class DevtoolsCore {
|
|
|
291
329
|
}
|
|
292
330
|
}
|
|
293
331
|
}
|
|
332
|
+
pushNormalizedDelta(qid, ev) {
|
|
333
|
+
if (ev.type === "hello") {
|
|
334
|
+
this.appendDelta(qid, "hello", 0, `server hello · ${ev.tables.length} table${ev.tables.length === 1 ? "" : "s"}`);
|
|
335
|
+
}
|
|
336
|
+
else if (ev.type === "snapshot") {
|
|
337
|
+
const n = ev.ops.length;
|
|
338
|
+
this.appendDelta(qid, "snapshot", 0, `server snapshot · ${n} op${n === 1 ? "" : "s"}${cvLabel(ev.cv)}`);
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
for (const op of ev.ops)
|
|
342
|
+
this.appendDelta(qid, op.op, 0, describeNormalizedOp(op) + cvLabel(ev.cv));
|
|
343
|
+
}
|
|
344
|
+
}
|
|
294
345
|
appendDelta(qid, kind, depth, label) {
|
|
295
346
|
this.deltas.push({ seq: this.deltaSeq++, at: this.now(), qid, kind, depth, label });
|
|
296
347
|
if (this.deltas.length > this.deltaCap)
|
|
@@ -339,6 +390,16 @@ function describeOp(op) {
|
|
|
339
390
|
return `remove ${rowPreview(op.row)}`;
|
|
340
391
|
return `edit ${rowPreview(op.old)} → ${rowPreview(op.new)}`;
|
|
341
392
|
}
|
|
393
|
+
function describeNormalizedOp(op) {
|
|
394
|
+
if (op.op === "add")
|
|
395
|
+
return `add ${op.table} ${rowPreview(op.row)}`;
|
|
396
|
+
if (op.op === "remove")
|
|
397
|
+
return `remove ${op.table} ${rowPreview(op.row)}`;
|
|
398
|
+
return `edit ${op.table} ${rowPreview(op.old)} → ${rowPreview(op.new)}`;
|
|
399
|
+
}
|
|
400
|
+
function cvLabel(cv) {
|
|
401
|
+
return cv === undefined ? "" : ` · cv ${cv}`;
|
|
402
|
+
}
|
|
342
403
|
function rowPreview(row) {
|
|
343
404
|
const head = row.slice(0, 3).map(cellStr).join(", ");
|
|
344
405
|
return `[${head}${row.length > 3 ? ", …" : ""}]`;
|
package/dist/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,6 @@ export { DevtoolsCore } from "./core.ts";
|
|
|
2
2
|
export { attachDevtools, getDevtoolsCore, getDevtoolsHub } from "./global.ts";
|
|
3
3
|
export type { DevtoolsHub } from "./global.ts";
|
|
4
4
|
export { collectTables, summarizeAst } from "./ast.ts";
|
|
5
|
-
export type { DeltaEntry, DeltaKind, DevtoolsBackend, DevtoolsCoreOptions, DevtoolsState, DevtoolsStore, DevtoolsTarget, FoldInspect, MutationState, OptimisticInspect, PendingInspect, QueryEntry, TimelineEntry, } from "./types.ts";
|
|
6
|
-
export type { Ast, ChangeEvent, QueryId, ResultType,
|
|
5
|
+
export type { BackendDevObserver, BackendServerDelta, DeltaEntry, DeltaKind, DevtoolsBackend, DevtoolsCoreOptions, DevtoolsState, DevtoolsStore, DevtoolsTarget, FoldInspect, MutationState, OptimisticInspect, PendingInspect, QueryEntry, TimelineEntry, } from "./types.ts";
|
|
6
|
+
export type { Ast, ChangeEvent, NormalizedOp, QueryId, ResultType, StoreInspect } from "@rindle/client";
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC9E,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEvD,YAAY,EACV,UAAU,EACV,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,cAAc,EACd,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,aAAa,GACd,MAAM,YAAY,CAAC;AAIpB,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC9E,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEvD,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,cAAc,EACd,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,aAAa,GACd,MAAM,YAAY,CAAC;AAIpB,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Ast,
|
|
2
|
-
export type { Ast, ChangeEvent, FlatChange, FlatOp, QueryId, ResultType,
|
|
1
|
+
import type { Ast, BackendDevObserver, ChangeEvent, QueryId, ResultType, StoreInspect } from "@rindle/client";
|
|
2
|
+
export type { Ast, BackendDevObserver, BackendServerDelta, ChangeEvent, FlatChange, FlatOp, NormalizedOp, QueryId, ResultType, StoreInspect, } from "@rindle/client";
|
|
3
3
|
/** One folded entry's debounce window — mirror of `@rindle/optimistic`'s `FoldInspect`. */
|
|
4
4
|
export interface FoldInspect {
|
|
5
5
|
foldKey: string;
|
|
@@ -26,15 +26,19 @@ export interface OptimisticInspect {
|
|
|
26
26
|
bufferedFrames: number;
|
|
27
27
|
pendingTables: string[];
|
|
28
28
|
}
|
|
29
|
-
/** The Store surface the core reads (a structural subset of `@rindle/client`'s `Store`).
|
|
29
|
+
/** The Store surface the core reads (a structural subset of `@rindle/client`'s `Store`). The delta
|
|
30
|
+
* + resultType taps are the SUPPORTED app-facing seams (no private devtools back door). */
|
|
30
31
|
export interface DevtoolsStore {
|
|
31
|
-
|
|
32
|
+
subscribeChanges(listener: (qid: QueryId, ev: ChangeEvent) => void): () => void;
|
|
33
|
+
subscribeResultType(listener: (qid: QueryId, rt: ResultType) => void): () => void;
|
|
32
34
|
__inspect(sampleRows?: number): StoreInspect;
|
|
33
35
|
}
|
|
34
|
-
/**
|
|
35
|
-
*
|
|
36
|
+
/** Optional backend-side devtools capabilities. `__inspect` is present on `OptimisticBackend`;
|
|
37
|
+
* `__attachDevtoolsServerDeltas` is present on backends that can surface authoritative server
|
|
38
|
+
* frames separately from the Store's post-apply view stream. */
|
|
36
39
|
export interface DevtoolsBackend {
|
|
37
|
-
__inspect(): OptimisticInspect;
|
|
40
|
+
__inspect?(): OptimisticInspect;
|
|
41
|
+
__attachDevtoolsServerDeltas?(observer: BackendDevObserver): () => void;
|
|
38
42
|
}
|
|
39
43
|
/** What {@link attachDevtools} binds to: a `createRindleClient` app, or any `{ store, backend }`. */
|
|
40
44
|
export interface DevtoolsTarget {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,GAAG,EACH,kBAAkB,EAElB,WAAW,EACX,OAAO,EACP,UAAU,EACV,YAAY,EACb,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,GAAG,EACH,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,MAAM,EACN,YAAY,EACZ,OAAO,EACP,UAAU,EACV,YAAY,GACb,MAAM,gBAAgB,CAAC;AAQxB,2FAA2F;AAC3F,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,gGAAgG;AAChG,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;4FAC4F;AAC5F,MAAM,WAAW,aAAa;IAC5B,gBAAgB,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAChF,mBAAmB,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAClF,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;CAC9C;AAED;;iEAEiE;AACjE,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,IAAI,iBAAiB,CAAC;IAChC,4BAA4B,CAAC,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,IAAI,CAAC;CACzE;AAED,qGAAqG;AACrG,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,qGAAqG;IACrG,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAID,yFAAyF;AACzF,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAEhE,2EAA2E;AAC3E,MAAM,WAAW,aAAa;IAC5B;mFAC+E;IAC/E,EAAE,EAAE,MAAM,CAAC;IACX,iEAAiE;IACjE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,+DAA+D;IAC/D,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,qFAAqF;IACrF,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;oFAGgF;IAChF,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oGAAoG;IACpG,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,wFAAwF;AACxF,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,GAAG,CAAC;IACT,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,yFAAyF;IACzF,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC;IAC3B,oFAAoF;IACpF,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;4FAC4F;AAC5F,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEzE,yFAAyF;AACzF,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,SAAS,CAAC;IAChB,+FAA+F;IAC/F,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;CACf;AAED;yGACyG;AACzG,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,oCAAoC;IACpC,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,8CAA8C;IAC9C,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,8FAA8F;IAC9F,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,YAAY,EAAE;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC;CACvC;AAED,qDAAqD;AACrD,MAAM,WAAW,mBAAmB;IAClC,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;uBAEmB;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;kEAC8D;IAC9D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uFAAuF;IACvF,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rindle/devtools",
|
|
3
|
-
"version": "0.2
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"README.md"
|
|
26
26
|
],
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@rindle/client": "0.2
|
|
28
|
+
"@rindle/client": "0.4.2"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@types/node": "^22.10.0",
|
package/src/core.ts
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
// DevtoolsCore — the framework-agnostic engine (DEBUG-TOOLS-BROWSER-DESIGN.md §6.1). It attaches to
|
|
2
|
-
// a running client through the read-only seams (`Store.
|
|
3
|
-
// optimistic backend's `__inspect`), then maintains the §4 read-model: the
|
|
2
|
+
// a running client through the read-only seams (`Store.subscribeChanges` / `subscribeResultType` /
|
|
3
|
+
// `__inspect`, and the optimistic backend's `__inspect`), then maintains the §4 read-model: the
|
|
4
|
+
// mutation TIMELINE
|
|
4
5
|
// (reconstructed by diffing successive pending-stack snapshots), the QUERIES inspector, and the
|
|
5
|
-
// DELTA stream (off
|
|
6
|
+
// DELTA stream (preferentially off authoritative backend/server frames, with the Store's raw
|
|
7
|
+
// per-query `ChangeEvent` tap as the local fallback). No DOM, no app-code changes, no hot path.
|
|
6
8
|
|
|
7
9
|
import { collectTables, summarizeAst } from "./ast.ts";
|
|
8
10
|
import type {
|
|
11
|
+
BackendServerDelta,
|
|
9
12
|
ChangeEvent,
|
|
10
13
|
DeltaEntry,
|
|
11
14
|
DeltaKind,
|
|
@@ -15,6 +18,7 @@ import type {
|
|
|
15
18
|
DevtoolsStore,
|
|
16
19
|
DevtoolsTarget,
|
|
17
20
|
FlatOp,
|
|
21
|
+
NormalizedOp,
|
|
18
22
|
OptimisticInspect,
|
|
19
23
|
QueryEntry,
|
|
20
24
|
QueryId,
|
|
@@ -22,11 +26,11 @@ import type {
|
|
|
22
26
|
TimelineEntry,
|
|
23
27
|
} from "./types.ts";
|
|
24
28
|
|
|
25
|
-
/** Narrow a candidate backend to the
|
|
26
|
-
function
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
/** Narrow a candidate backend to the optional devtools capability surface (§6.2). */
|
|
30
|
+
function asDevtoolsBackend(backend: unknown): DevtoolsBackend | undefined {
|
|
31
|
+
if (!backend || typeof backend !== "object") return undefined;
|
|
32
|
+
const b = backend as DevtoolsBackend;
|
|
33
|
+
return typeof b.__inspect === "function" || typeof b.__attachDevtoolsServerDeltas === "function" ? b : undefined;
|
|
30
34
|
}
|
|
31
35
|
|
|
32
36
|
const EMPTY_STATE: DevtoolsState = {
|
|
@@ -41,6 +45,8 @@ export class DevtoolsCore {
|
|
|
41
45
|
private readonly store: DevtoolsStore;
|
|
42
46
|
private readonly backend?: DevtoolsBackend;
|
|
43
47
|
private readonly detachStore: () => void;
|
|
48
|
+
private readonly detachServerDeltas?: () => void;
|
|
49
|
+
private readonly hasServerDeltaTap: boolean;
|
|
44
50
|
|
|
45
51
|
private readonly timelineCap: number;
|
|
46
52
|
private readonly deltaCap: number;
|
|
@@ -74,17 +80,25 @@ export class DevtoolsCore {
|
|
|
74
80
|
|
|
75
81
|
constructor(target: DevtoolsTarget, opts: DevtoolsCoreOptions = {}) {
|
|
76
82
|
this.store = target.store;
|
|
77
|
-
this.backend =
|
|
83
|
+
this.backend = asDevtoolsBackend(target.backend);
|
|
78
84
|
this.timelineCap = opts.timelineCap ?? 200;
|
|
79
85
|
this.deltaCap = opts.deltaCap ?? 500;
|
|
80
86
|
this.sampleRows = opts.sampleRows ?? 25;
|
|
81
87
|
this.autoFlush = opts.autoFlush ?? true;
|
|
82
88
|
this.now = opts.now ?? (() => Date.now());
|
|
83
89
|
|
|
84
|
-
this.
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
90
|
+
this.detachServerDeltas = this.attachServerDeltas();
|
|
91
|
+
this.hasServerDeltaTap = !!this.detachServerDeltas;
|
|
92
|
+
|
|
93
|
+
// The post-fold delta + resultType taps off the Store's supported subscription seams (the same
|
|
94
|
+
// `subscribeChanges` an app narrates off — no private back door). Both fire AFTER the view folds,
|
|
95
|
+
// which is the timing the snap-back/churn heuristics need.
|
|
96
|
+
const detachDeltas = this.store.subscribeChanges((qid, ev) => this.onStoreDelta(qid, ev));
|
|
97
|
+
const detachResultType = this.store.subscribeResultType((qid, rt) => this.onResultType(qid, rt));
|
|
98
|
+
this.detachStore = () => {
|
|
99
|
+
detachDeltas();
|
|
100
|
+
detachResultType();
|
|
101
|
+
};
|
|
88
102
|
|
|
89
103
|
const pollMs = opts.pollMs ?? 0;
|
|
90
104
|
if (pollMs > 0) {
|
|
@@ -144,19 +158,38 @@ export class DevtoolsCore {
|
|
|
144
158
|
detach(): void {
|
|
145
159
|
if (this.pollHandle) clearInterval(this.pollHandle);
|
|
146
160
|
this.detachStore();
|
|
161
|
+
this.detachServerDeltas?.();
|
|
147
162
|
this.onDetach?.();
|
|
148
163
|
this.listeners.clear();
|
|
149
164
|
}
|
|
150
165
|
|
|
151
166
|
// --- event taps --------------------------------------------------------------
|
|
152
167
|
|
|
153
|
-
private
|
|
154
|
-
|
|
168
|
+
private attachServerDeltas(): (() => void) | undefined {
|
|
169
|
+
try {
|
|
170
|
+
return this.backend?.__attachDevtoolsServerDeltas?.({
|
|
171
|
+
onServerDelta: (qid, ev) => this.onServerDelta(qid, ev),
|
|
172
|
+
});
|
|
173
|
+
} catch {
|
|
174
|
+
return undefined;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
private onStoreDelta(qid: QueryId, ev: ChangeEvent): void {
|
|
179
|
+
// Prefer the authoritative backend/server stream for the visible Deltas pane. The Store tap is
|
|
180
|
+
// still observed for timeline churn: it fires after the view folded the event, which is the
|
|
181
|
+
// signal the snap-back heuristic needs.
|
|
182
|
+
if (!this.hasServerDeltaTap) this.pushChangeDelta(qid, ev);
|
|
155
183
|
// A `batch` carrying real changes is view churn — the signal the snap-back heuristic keys on.
|
|
156
184
|
if (ev.type === "batch" && ev.events.length > 0) this.churnSeen = true;
|
|
157
185
|
this.markDirty();
|
|
158
186
|
}
|
|
159
187
|
|
|
188
|
+
private onServerDelta(qid: QueryId, ev: BackendServerDelta): void {
|
|
189
|
+
this.pushServerDelta(qid, ev);
|
|
190
|
+
this.markDirty();
|
|
191
|
+
}
|
|
192
|
+
|
|
160
193
|
private onResultType(_qid: QueryId, _rt: ResultType): void {
|
|
161
194
|
this.markDirty();
|
|
162
195
|
}
|
|
@@ -183,7 +216,7 @@ export class DevtoolsCore {
|
|
|
183
216
|
|
|
184
217
|
private recompute(): void {
|
|
185
218
|
let opt: OptimisticInspect | undefined;
|
|
186
|
-
if (this.backend) {
|
|
219
|
+
if (this.backend?.__inspect) {
|
|
187
220
|
try {
|
|
188
221
|
opt = this.backend.__inspect();
|
|
189
222
|
} catch {
|
|
@@ -199,7 +232,7 @@ export class DevtoolsCore {
|
|
|
199
232
|
queries: this.queries,
|
|
200
233
|
deltas: this.deltas.slice(),
|
|
201
234
|
optimistic: opt,
|
|
202
|
-
capabilities: { optimistic:
|
|
235
|
+
capabilities: { optimistic: typeof this.backend?.__inspect === "function" },
|
|
203
236
|
};
|
|
204
237
|
}
|
|
205
238
|
|
|
@@ -317,7 +350,15 @@ export class DevtoolsCore {
|
|
|
317
350
|
|
|
318
351
|
// --- delta ring --------------------------------------------------------------
|
|
319
352
|
|
|
320
|
-
private
|
|
353
|
+
private pushServerDelta(qid: QueryId, ev: BackendServerDelta): void {
|
|
354
|
+
if (ev.format === "flat") {
|
|
355
|
+
this.pushChangeDelta(qid, ev.event);
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
358
|
+
this.pushNormalizedDelta(qid, ev.event);
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
private pushChangeDelta(qid: QueryId, ev: ChangeEvent): void {
|
|
321
362
|
if (ev.type === "hello") {
|
|
322
363
|
this.appendDelta(qid, "hello", 0, `hello · ${ev.schema.columns.length} col${ev.schema.columns.length === 1 ? "" : "s"}`);
|
|
323
364
|
} else if (ev.type === "snapshot") {
|
|
@@ -331,6 +372,17 @@ export class DevtoolsCore {
|
|
|
331
372
|
}
|
|
332
373
|
}
|
|
333
374
|
|
|
375
|
+
private pushNormalizedDelta(qid: QueryId, ev: Extract<BackendServerDelta, { format: "normalized" }>["event"]): void {
|
|
376
|
+
if (ev.type === "hello") {
|
|
377
|
+
this.appendDelta(qid, "hello", 0, `server hello · ${ev.tables.length} table${ev.tables.length === 1 ? "" : "s"}`);
|
|
378
|
+
} else if (ev.type === "snapshot") {
|
|
379
|
+
const n = ev.ops.length;
|
|
380
|
+
this.appendDelta(qid, "snapshot", 0, `server snapshot · ${n} op${n === 1 ? "" : "s"}${cvLabel(ev.cv)}`);
|
|
381
|
+
} else {
|
|
382
|
+
for (const op of ev.ops) this.appendDelta(qid, op.op, 0, describeNormalizedOp(op) + cvLabel(ev.cv));
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
|
|
334
386
|
private appendDelta(qid: QueryId, kind: DeltaKind, depth: number, label: string): void {
|
|
335
387
|
this.deltas.push({ seq: this.deltaSeq++, at: this.now(), qid, kind, depth, label });
|
|
336
388
|
if (this.deltas.length > this.deltaCap) this.deltas.splice(0, this.deltas.length - this.deltaCap);
|
|
@@ -377,6 +429,16 @@ function describeOp(op: FlatOp): string {
|
|
|
377
429
|
return `edit ${rowPreview(op.old)} → ${rowPreview(op.new)}`;
|
|
378
430
|
}
|
|
379
431
|
|
|
432
|
+
function describeNormalizedOp(op: NormalizedOp): string {
|
|
433
|
+
if (op.op === "add") return `add ${op.table} ${rowPreview(op.row)}`;
|
|
434
|
+
if (op.op === "remove") return `remove ${op.table} ${rowPreview(op.row)}`;
|
|
435
|
+
return `edit ${op.table} ${rowPreview(op.old)} → ${rowPreview(op.new)}`;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
function cvLabel(cv: number | undefined): string {
|
|
439
|
+
return cv === undefined ? "" : ` · cv ${cv}`;
|
|
440
|
+
}
|
|
441
|
+
|
|
380
442
|
function rowPreview(row: readonly unknown[]): string {
|
|
381
443
|
const head = row.slice(0, 3).map(cellStr).join(", ");
|
|
382
444
|
return `[${head}${row.length > 3 ? ", …" : ""}]`;
|
package/src/index.ts
CHANGED
|
@@ -10,6 +10,8 @@ export type { DevtoolsHub } from "./global.ts";
|
|
|
10
10
|
export { collectTables, summarizeAst } from "./ast.ts";
|
|
11
11
|
|
|
12
12
|
export type {
|
|
13
|
+
BackendDevObserver,
|
|
14
|
+
BackendServerDelta,
|
|
13
15
|
DeltaEntry,
|
|
14
16
|
DeltaKind,
|
|
15
17
|
DevtoolsBackend,
|
|
@@ -27,4 +29,4 @@ export type {
|
|
|
27
29
|
|
|
28
30
|
// Re-export the client types a panel or a custom attach target needs, so it can depend on
|
|
29
31
|
// `@rindle/devtools` alone.
|
|
30
|
-
export type { Ast, ChangeEvent, QueryId, ResultType,
|
|
32
|
+
export type { Ast, ChangeEvent, NormalizedOp, QueryId, ResultType, StoreInspect } from "@rindle/client";
|
package/src/types.ts
CHANGED
|
@@ -2,9 +2,28 @@
|
|
|
2
2
|
// attaches to. Everything here is derived, in dev, from state the client already holds — the core
|
|
3
3
|
// adds no hot-path instrumentation (§1.1 "surface, not instrument").
|
|
4
4
|
|
|
5
|
-
import type {
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
import type {
|
|
6
|
+
Ast,
|
|
7
|
+
BackendDevObserver,
|
|
8
|
+
BackendServerDelta,
|
|
9
|
+
ChangeEvent,
|
|
10
|
+
QueryId,
|
|
11
|
+
ResultType,
|
|
12
|
+
StoreInspect,
|
|
13
|
+
} from "@rindle/client";
|
|
14
|
+
|
|
15
|
+
export type {
|
|
16
|
+
Ast,
|
|
17
|
+
BackendDevObserver,
|
|
18
|
+
BackendServerDelta,
|
|
19
|
+
ChangeEvent,
|
|
20
|
+
FlatChange,
|
|
21
|
+
FlatOp,
|
|
22
|
+
NormalizedOp,
|
|
23
|
+
QueryId,
|
|
24
|
+
ResultType,
|
|
25
|
+
StoreInspect,
|
|
26
|
+
} from "@rindle/client";
|
|
8
27
|
|
|
9
28
|
// --- the attach target (duck-typed) ------------------------------------------------
|
|
10
29
|
// The core binds to a running client by structural type only — it never imports `@rindle/optimistic`
|
|
@@ -41,16 +60,20 @@ export interface OptimisticInspect {
|
|
|
41
60
|
pendingTables: string[];
|
|
42
61
|
}
|
|
43
62
|
|
|
44
|
-
/** The Store surface the core reads (a structural subset of `@rindle/client`'s `Store`).
|
|
63
|
+
/** The Store surface the core reads (a structural subset of `@rindle/client`'s `Store`). The delta
|
|
64
|
+
* + resultType taps are the SUPPORTED app-facing seams (no private devtools back door). */
|
|
45
65
|
export interface DevtoolsStore {
|
|
46
|
-
|
|
66
|
+
subscribeChanges(listener: (qid: QueryId, ev: ChangeEvent) => void): () => void;
|
|
67
|
+
subscribeResultType(listener: (qid: QueryId, rt: ResultType) => void): () => void;
|
|
47
68
|
__inspect(sampleRows?: number): StoreInspect;
|
|
48
69
|
}
|
|
49
70
|
|
|
50
|
-
/**
|
|
51
|
-
*
|
|
71
|
+
/** Optional backend-side devtools capabilities. `__inspect` is present on `OptimisticBackend`;
|
|
72
|
+
* `__attachDevtoolsServerDeltas` is present on backends that can surface authoritative server
|
|
73
|
+
* frames separately from the Store's post-apply view stream. */
|
|
52
74
|
export interface DevtoolsBackend {
|
|
53
|
-
__inspect(): OptimisticInspect;
|
|
75
|
+
__inspect?(): OptimisticInspect;
|
|
76
|
+
__attachDevtoolsServerDeltas?(observer: BackendDevObserver): () => void;
|
|
54
77
|
}
|
|
55
78
|
|
|
56
79
|
/** What {@link attachDevtools} binds to: a `createRindleClient` app, or any `{ store, backend }`. */
|