@markless/runtime 0.3.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.
@@ -65,7 +65,7 @@ function isObject(value) {
65
65
  }
66
66
  //#endregion
67
67
  //#region src/graph-async.ts
68
- const ASYNC_SNAPSHOT_META_KEYS = new Set([
68
+ const ASYNC_SNAPSHOT_META_KEYS = /* @__PURE__ */ new Set([
69
69
  "status",
70
70
  "version",
71
71
  "key",
@@ -103,7 +103,7 @@ function invalidateAsyncComputed(input) {
103
103
  advanceAsyncComputed(input);
104
104
  }
105
105
  function advanceAsyncComputed(input) {
106
- const visited = new Set([input.node.graphNodeId]);
106
+ const visited = /* @__PURE__ */ new Set([input.node.graphNodeId]);
107
107
  let blocked;
108
108
  const visit = (graphNodeId) => {
109
109
  if (visited.has(graphNodeId)) return;
@@ -1,5 +1,4 @@
1
1
  import { ProtocolStatePayload } from "@markless/serializer";
2
-
3
2
  //#region src/graph.d.ts
4
3
  type RuntimeGraphCell = {
5
4
  readonly graphNodeId: string;
@@ -14,7 +13,8 @@ type RuntimeGraphComputedDependency = {
14
13
  type RuntimeGraphComputed = {
15
14
  readonly graphNodeId: string;
16
15
  readonly dependencies: ReadonlyArray<RuntimeGraphComputedDependency>;
17
- readonly compute: (read: RuntimeGraphRead) => unknown; /** How re-derived values reconcile against the node's previous value. */
16
+ readonly compute: (read: RuntimeGraphRead) => unknown;
17
+ /** How re-derived values reconcile against the node's previous value. */
18
18
  readonly reconcile?: RuntimeGraphReconcileOptions;
19
19
  };
20
20
  type RuntimeGraphComputedDependencyNode = Omit<RuntimeGraphComputed, 'compute'> & {
@@ -43,7 +43,8 @@ type RuntimeGraphAsyncComputed = {
43
43
  readonly graphNodeId: string;
44
44
  readonly dependencies: ReadonlyArray<RuntimeGraphComputedDependency>;
45
45
  readonly initialSnapshot?: RuntimeGraphAsyncSnapshot;
46
- readonly key: (read: RuntimeGraphRead) => unknown; /** How a fulfilled value reconciles against the previously published one. */
46
+ readonly key: (read: RuntimeGraphRead) => unknown;
47
+ /** How a fulfilled value reconciles against the previously published one. */
47
48
  readonly reconcile?: RuntimeGraphReconcileOptions;
48
49
  readonly run: (input: {
49
50
  readonly key: unknown;
@@ -55,6 +56,8 @@ type DomJournalEntry = {
55
56
  readonly type: 'setText';
56
57
  readonly locator: string;
57
58
  readonly value: unknown;
59
+ /** The one child text node this write owns, when its element holds other children too. */
60
+ readonly node?: (host: unknown) => unknown;
58
61
  } | {
59
62
  readonly type: 'setAttr' | 'setProp';
60
63
  readonly locator: string;
@@ -129,8 +132,40 @@ type RuntimeGraphSubscription = {
129
132
  readonly path?: ReadonlyArray<string>;
130
133
  readonly run: (value: unknown) => DomJournalResult | void | Promise<DomJournalResult | void>;
131
134
  };
135
+ /**
136
+ * Told about a write the moment it lands, before the flush that write schedules.
137
+ *
138
+ * The flush is a microtask behind the statement that wrote, so a handler reading
139
+ * back what its own write produced - a keyed repeat's rows most of all - reads
140
+ * the pre-write answer. An observer runs synchronously inside the write instead,
141
+ * so the next statement of the same handler sees the result.
142
+ *
143
+ * It runs for a write to `graphNodeId` under an intersecting path, and for a
144
+ * write to anything `graphNodeId` derives from, so a computed-backed collection
145
+ * is reached through the state write behind it. It never runs during a flush -
146
+ * the flush's own subscription pass is the single answer there - and never
147
+ * re-enters: a write made from inside an observer notifies nobody.
148
+ *
149
+ * `run` is handed no value and answers with none: it is a place to react, not a
150
+ * second subscription channel, and reads whatever it needs off the graph. The
151
+ * graph does not catch what it throws.
152
+ */
153
+ type RuntimeGraphWriteObserver = {
154
+ readonly graphNodeId: string;
155
+ readonly path?: ReadonlyArray<string>;
156
+ /**
157
+ * Work ALREADY in flight that this observer needs settled before it can
158
+ * answer a write synchronously - a demand-loaded module, above all. It starts
159
+ * nothing, so a caller awaiting it adds no fetch to the gesture; it only
160
+ * stops the gesture racing a load its own wiring began. `undefined` is
161
+ * nothing to wait for, and costs no microtask.
162
+ */
163
+ readonly settle?: () => Promise<void> | undefined;
164
+ readonly run: () => void;
165
+ };
132
166
  type RuntimeGraph = {
133
- readonly read: (graphNodeId: string, path?: ReadonlyArray<string>) => unknown; /** Available only in debug-enabled builds (`__MARKLESS_DEBUG_ENABLED__`). */
167
+ readonly read: (graphNodeId: string, path?: ReadonlyArray<string>) => unknown;
168
+ /** Available only in debug-enabled builds (`__MARKLESS_DEBUG_ENABLED__`). */
134
169
  readonly peekAsyncSnapshot?: (graphNodeId: string) => RuntimeGraphAsyncSnapshot | undefined;
135
170
  readonly readShared: (definitionId: string, propertyName: string, path?: ReadonlyArray<string>) => unknown;
136
171
  readonly writeShared: (write: RuntimeGraphSharedWrite) => boolean;
@@ -143,6 +178,18 @@ type RuntimeGraph = {
143
178
  readonly call: (call: RuntimeGraphCall) => unknown;
144
179
  readonly delete: (deletion: RuntimeGraphDelete) => boolean;
145
180
  readonly subscribe: (subscription: RuntimeGraphSubscription) => () => void;
181
+ /**
182
+ * Optional so a facade over a subset of this contract stays a `RuntimeGraph`;
183
+ * a caller without it gets the flush-time answer it always had.
184
+ */
185
+ readonly subscribeWrite?: (observer: RuntimeGraphWriteObserver) => () => void;
186
+ /**
187
+ * Settles what the write observers are already loading, so a write made after
188
+ * it is answered synchronously. `undefined` when nothing is in flight.
189
+ */
190
+ readonly settleWriteObservers?: () => Promise<void> | undefined;
191
+ /** Whether a write is waiting on a flush that has not yet reached the journal. */
192
+ readonly hasPendingFlush?: () => boolean;
146
193
  readonly subscribeJournal: (listener: DomJournalListener) => () => void;
147
194
  readonly flush: () => Promise<void>;
148
195
  readonly takeJournal: () => DomJournalEntry[];
@@ -260,15 +307,22 @@ type DerivedReconcileInternals = {
260
307
  * they did before reconciliation existed.
261
308
  */
262
309
  type DerivedReconcilePlane = {
263
- /** Records the objects a state write mutated in place during this flush. */readonly recordWrite: (graphNodeId: string, path: ReadonlyArray<string>) => void; /** A dependency write invalidated this computed; its paths are not known yet. */
264
- readonly invalidateComputed: (computed: RuntimeComputedNode) => void; /** Reports the paths a just-recomputed value moved, and wakes their subscribers. */
265
- readonly reconcileComputed: (computed: RuntimeComputedNode, previous: unknown) => void; /** Commits a whole derived value onto a cell-backed computed node. */
266
- readonly commitDerived: (write: RuntimeGraphWrite, path: ReadonlyArray<string>) => boolean; /** Dirties the paths an async snapshot commit changed. */
267
- readonly publishAsync: (node: RuntimeAsyncComputedNode, previous: RuntimeGraphAsyncSnapshot) => void; /** Flush-pass start: recompute the dirty computeds something is subscribed to. */
268
- readonly recomputeSubscribed: () => void; /** Flush end: drop the per-flush record and mark the baselines it leaves stale. */
310
+ /** Records the objects a state write mutated in place during this flush. */
311
+ readonly recordWrite: (graphNodeId: string, path: ReadonlyArray<string>) => void;
312
+ /** A dependency write invalidated this computed; its paths are not known yet. */
313
+ readonly invalidateComputed: (computed: RuntimeComputedNode) => void;
314
+ /** Reports the paths a just-recomputed value moved, and wakes their subscribers. */
315
+ readonly reconcileComputed: (computed: RuntimeComputedNode, previous: unknown) => void;
316
+ /** Commits a whole derived value onto a cell-backed computed node. */
317
+ readonly commitDerived: (write: RuntimeGraphWrite, path: ReadonlyArray<string>) => boolean;
318
+ /** Dirties the paths an async snapshot commit changed. */
319
+ readonly publishAsync: (node: RuntimeAsyncComputedNode, previous: RuntimeGraphAsyncSnapshot) => void;
320
+ /** Flush-pass start: recompute the dirty computeds something is subscribed to. */
321
+ readonly recomputeSubscribed: () => void;
322
+ /** Flush end: drop the per-flush record and mark the baselines it leaves stale. */
269
323
  readonly settleBaselines: () => void;
270
324
  };
271
325
  type DerivedReconcilePlaneFactory = (internals: DerivedReconcileInternals) => DerivedReconcilePlane;
272
326
  declare const createDerivedReconcilePlane: DerivedReconcilePlaneFactory;
273
327
  //#endregion
274
- export { RuntimeGraphUpdate as A, RuntimeGraphDelete as C, RuntimeGraphSharedPatchOperation as D, RuntimeGraphSharedPatch as E, createRuntimeGraph as M, RuntimeGraphSharedWrite as O, RuntimeGraphComputedDependencyNode as S, RuntimeGraphRead as T, RuntimeGraphAsyncSnapshot as _, RuntimeGraphReconcileKey as a, RuntimeGraphComputed as b, createDerivedReconcilePlane as c, samePath as d, DomJournalEntry as f, RuntimeGraphAsyncComputed as g, RuntimeGraph as h, DiffDerivedValueInput as i, RuntimeGraphWrite as j, RuntimeGraphSubscription as k, diffDerivedValue as l, DomJournalResult as m, DerivedReconcilePlane as n, RuntimeGraphReconcileOptions as o, DomJournalListener as p, DerivedReconcilePlaneFactory as r, WriteTouchedRecord as s, DerivedReconcileInternals as t, isDiffableContainer as u, RuntimeGraphCall as v, RuntimeGraphInput as w, RuntimeGraphComputedDependency as x, RuntimeGraphCell as y };
328
+ export { RuntimeGraphUpdate as A, RuntimeGraphDelete as C, RuntimeGraphSharedPatchOperation as D, RuntimeGraphSharedPatch as E, RuntimeGraphWriteObserver as M, createRuntimeGraph as N, RuntimeGraphSharedWrite as O, RuntimeGraphComputedDependencyNode as S, RuntimeGraphRead as T, RuntimeGraphAsyncSnapshot as _, RuntimeGraphReconcileKey as a, RuntimeGraphComputed as b, createDerivedReconcilePlane as c, samePath as d, DomJournalEntry as f, RuntimeGraphAsyncComputed as g, RuntimeGraph as h, DiffDerivedValueInput as i, RuntimeGraphWrite as j, RuntimeGraphSubscription as k, diffDerivedValue as l, DomJournalResult as m, DerivedReconcilePlane as n, RuntimeGraphReconcileOptions as o, DomJournalListener as p, DerivedReconcilePlaneFactory as r, WriteTouchedRecord as s, DerivedReconcileInternals as t, isDiffableContainer as u, RuntimeGraphCall as v, RuntimeGraphInput as w, RuntimeGraphComputedDependency as x, RuntimeGraphCell as y };
@@ -1,2 +1,2 @@
1
- import { a as RuntimeGraphReconcileKey, c as createDerivedReconcilePlane, d as samePath, i as DiffDerivedValueInput, l as diffDerivedValue, n as DerivedReconcilePlane, o as RuntimeGraphReconcileOptions, r as DerivedReconcilePlaneFactory, s as WriteTouchedRecord, t as DerivedReconcileInternals, u as isDiffableContainer } from "./graph-reconcile-DoBBfYsT.js";
1
+ import { a as RuntimeGraphReconcileKey, c as createDerivedReconcilePlane, d as samePath, i as DiffDerivedValueInput, l as diffDerivedValue, n as DerivedReconcilePlane, o as RuntimeGraphReconcileOptions, r as DerivedReconcilePlaneFactory, s as WriteTouchedRecord, t as DerivedReconcileInternals, u as isDiffableContainer } from "./graph-reconcile-Cdf3iTu3.js";
2
2
  export { DerivedReconcileInternals, DerivedReconcilePlane, DerivedReconcilePlaneFactory, DiffDerivedValueInput, RuntimeGraphReconcileKey, RuntimeGraphReconcileOptions, WriteTouchedRecord, createDerivedReconcilePlane, diffDerivedValue, isDiffableContainer, samePath };
@@ -1,4 +1,4 @@
1
- import { t as ASYNC_SNAPSHOT_META_KEYS, u as readPath } from "./graph-async-Db6SqB5x.js";
1
+ import { t as ASYNC_SNAPSHOT_META_KEYS, u as readPath } from "./graph-async-BOuUUffx.js";
2
2
  //#region src/graph-reconcile.ts
3
3
  const WHOLE_NODE = Object.freeze([Object.freeze([])]);
4
4
  /**
@@ -102,7 +102,7 @@ function diffDerivedValue(input) {
102
102
  }
103
103
  }
104
104
  function walkObject(previous, next, path) {
105
- for (const key of new Set([...Object.keys(previous), ...Object.keys(next)])) {
105
+ for (const key of /* @__PURE__ */ new Set([...Object.keys(previous), ...Object.keys(next)])) {
106
106
  const keyPath = [...path, key];
107
107
  const inPrevious = Object.prototype.hasOwnProperty.call(previous, key);
108
108
  const inNext = Object.prototype.hasOwnProperty.call(next, key);
@@ -1,4 +1,4 @@
1
- import { a as readAsyncComputedNode, c as findLastSharedReturnProperty, d as writePath, i as invalidateAsyncComputed, l as pathsIntersect, n as createRuntimeAsyncComputedNodes, o as deletePath, r as demandAsyncComputed, s as dirtyPathForGraphWrite, u as readPath } from "./graph-async-Db6SqB5x.js";
1
+ import { a as readAsyncComputedNode, c as findLastSharedReturnProperty, d as writePath, i as invalidateAsyncComputed, l as pathsIntersect, n as createRuntimeAsyncComputedNodes, o as deletePath, r as demandAsyncComputed, s as dirtyPathForGraphWrite, u as readPath } from "./graph-async-BOuUUffx.js";
2
2
  //#region src/graph-collections.ts
3
3
  function applyCollectionCall(target, method, args) {
4
4
  if (!isSupportedCollectionTarget(target)) throw new TypeError(`Cannot call collection method "${method}" because the graph path is not an Array, Map, Set, or Date.`);
@@ -110,18 +110,24 @@ function markComputedDirty(input) {
110
110
  graphNodeId: input.graphNodeId,
111
111
  path: []
112
112
  });
113
- for (const dependent of input.computedNodes.values()) if (dependent.dependencies.some((dependency) => dependency.graphNodeId === input.graphNodeId) && dependent.compute) markComputedDirty({
114
- ...input,
115
- graphNodeId: dependent.graphNodeId
116
- });
113
+ for (const dependent of input.computedNodes.values()) {
114
+ if (!dependent.compute) continue;
115
+ if (dependent.dependencies.some((dependency) => dependency.graphNodeId === input.graphNodeId)) markComputedDirty({
116
+ ...input,
117
+ graphNodeId: dependent.graphNodeId
118
+ });
119
+ }
117
120
  for (const dependent of input.asyncComputedNodes.values()) if (dependent.dependencies.some((dependency) => dependency.graphNodeId === input.graphNodeId)) input.invalidateAsyncComputed(dependent);
118
121
  }
119
122
  function markDirtyComputedDependencies(input) {
120
- for (const computed of input.computedNodes.values()) if (computed.dependencies.some((dependency) => dependency.graphNodeId === input.graphNodeId && pathsIntersect(input.path, dependency.path ?? [])) && computed.compute) markComputedDirty({
121
- ...input,
122
- graphNodeId: computed.graphNodeId,
123
- visited: /* @__PURE__ */ new Set()
124
- });
123
+ for (const computed of input.computedNodes.values()) {
124
+ if (!computed.compute) continue;
125
+ if (computed.dependencies.some((dependency) => dependency.graphNodeId === input.graphNodeId && pathsIntersect(input.path, dependency.path ?? []))) markComputedDirty({
126
+ ...input,
127
+ graphNodeId: computed.graphNodeId,
128
+ visited: /* @__PURE__ */ new Set()
129
+ });
130
+ }
125
131
  for (const asyncComputed of input.asyncComputedNodes.values()) if (asyncComputed.dependencies.some((dependency) => dependency.graphNodeId === input.graphNodeId && pathsIntersect(input.path, dependency.path ?? []))) input.invalidateAsyncComputed(asyncComputed);
126
132
  }
127
133
  //#endregion
@@ -245,11 +251,13 @@ function createRuntimeGraph(input) {
245
251
  const computedNodes = createRuntimeComputedNodes(input.computed);
246
252
  const asyncComputedNodes = createRuntimeAsyncComputedNodes(input.asyncComputed);
247
253
  const subscriptions = [];
254
+ const writeObservers = [];
248
255
  const journalListeners = [];
249
256
  const dirtyPaths = [];
250
257
  const journal = [];
251
258
  let flushScheduled = false;
252
259
  let flushing = false;
260
+ let notifyingWrite = false;
253
261
  let activeFlush;
254
262
  for (const cell of input.cells) {
255
263
  cells.set(cell.graphNodeId, cell.value);
@@ -290,6 +298,39 @@ function createRuntimeGraph(input) {
290
298
  reconcile: plane,
291
299
  invalidateAsyncComputed: invalidateAsyncComputed$1
292
300
  });
301
+ notifyWriteObservers(graphNodeId, path);
302
+ };
303
+ /**
304
+ * Whether `graphNodeId` is derived, however deeply, from the written path.
305
+ *
306
+ * A computed collection carries no dependency of its own on the state a
307
+ * handler writes; the chain of `dependencies` is the only thing that says so,
308
+ * and with a reconcile plane installed the write dirties no path under the
309
+ * computed for a path test to find.
310
+ */
311
+ const derivesFromWrite = (graphNodeId, write, seen) => {
312
+ if (seen.has(graphNodeId)) return false;
313
+ seen.add(graphNodeId);
314
+ const computed = computedNodes.get(graphNodeId);
315
+ if (!computed) return false;
316
+ for (const dependency of computed.dependencies) {
317
+ if (dependency.graphNodeId === write.graphNodeId && pathsIntersect(write.path, dependency.path ?? [])) return true;
318
+ if (derivesFromWrite(dependency.graphNodeId, write, seen)) return true;
319
+ }
320
+ return false;
321
+ };
322
+ const notifyWriteObservers = (graphNodeId, path) => {
323
+ if (writeObservers.length === 0 || flushing || notifyingWrite) return;
324
+ const write = {
325
+ graphNodeId,
326
+ path
327
+ };
328
+ notifyingWrite = true;
329
+ try {
330
+ for (const observer of writeObservers.slice()) if (observer.graphNodeId === graphNodeId ? pathsIntersect(path, observer.path ?? []) : derivesFromWrite(observer.graphNodeId, write, /* @__PURE__ */ new Set())) observer.run();
331
+ } finally {
332
+ notifyingWrite = false;
333
+ }
293
334
  };
294
335
  const scheduleFlush = () => {
295
336
  if (flushScheduled || flushing) return;
@@ -349,7 +390,8 @@ function createRuntimeGraph(input) {
349
390
  const subscriptionPath = subscription.path ?? [];
350
391
  if (!pending.some((path) => path.graphNodeId === subscription.graphNodeId && pathsIntersect(path.path, subscriptionPath)) || ranSubscriptions.has(subscription.id)) continue;
351
392
  ranSubscriptions.add(subscription.id);
352
- appendJournalResult(journal, await subscription.run(readGraph(subscription.graphNodeId, subscriptionPath)));
393
+ const entries = await subscription.run(readGraph(subscription.graphNodeId, subscriptionPath));
394
+ appendJournalResult(journal, entries);
353
395
  }
354
396
  }
355
397
  } finally {
@@ -359,6 +401,7 @@ function createRuntimeGraph(input) {
359
401
  await notifyJournalListeners();
360
402
  } finally {
361
403
  activeFlush = void 0;
404
+ flushScheduled = false;
362
405
  if (dirtyPaths.length > 0) scheduleFlush();
363
406
  }
364
407
  };
@@ -379,8 +422,9 @@ function createRuntimeGraph(input) {
379
422
  write(write) {
380
423
  const path = write.path ?? [];
381
424
  const current = cells.get(write.graphNodeId);
382
- if (plane?.commitDerived(write, path)) return;
383
- if (Object.is(readPath(current, path), write.value)) return;
425
+ const seeded = cells.has(write.graphNodeId);
426
+ if (seeded && plane?.commitDerived(write, path)) return;
427
+ if (seeded && Object.is(readPath(current, path), write.value)) return;
384
428
  cells.set(write.graphNodeId, writePath(current, path, write.value));
385
429
  markDirtyPath(write.graphNodeId, dirtyPathForGraphWrite(current, path));
386
430
  scheduleFlush();
@@ -424,6 +468,22 @@ function createRuntimeGraph(input) {
424
468
  if (index >= 0) subscriptions.splice(index, 1);
425
469
  };
426
470
  },
471
+ subscribeWrite(observer) {
472
+ writeObservers.push(observer);
473
+ return () => {
474
+ const index = writeObservers.indexOf(observer);
475
+ if (index >= 0) writeObservers.splice(index, 1);
476
+ };
477
+ },
478
+ hasPendingFlush: () => flushScheduled || dirtyPaths.length > 0 || activeFlush !== void 0,
479
+ settleWriteObservers() {
480
+ let pending;
481
+ for (const observer of writeObservers) {
482
+ const settling = observer.settle?.();
483
+ if (settling) (pending ??= []).push(settling.catch(() => void 0));
484
+ }
485
+ return pending && Promise.all(pending).then(() => void 0);
486
+ },
427
487
  subscribeJournal(listener) {
428
488
  journalListeners.push(listener);
429
489
  return () => {
package/dist/graph.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { A as RuntimeGraphUpdate, C as RuntimeGraphDelete, D as RuntimeGraphSharedPatchOperation, E as RuntimeGraphSharedPatch, M as createRuntimeGraph, O as RuntimeGraphSharedWrite, S as RuntimeGraphComputedDependencyNode, T as RuntimeGraphRead, _ as RuntimeGraphAsyncSnapshot, a as RuntimeGraphReconcileKey, b as RuntimeGraphComputed, f as DomJournalEntry, g as RuntimeGraphAsyncComputed, h as RuntimeGraph, i as DiffDerivedValueInput, j as RuntimeGraphWrite, k as RuntimeGraphSubscription, m as DomJournalResult, n as DerivedReconcilePlane, o as RuntimeGraphReconcileOptions, p as DomJournalListener, r as DerivedReconcilePlaneFactory, s as WriteTouchedRecord, t as DerivedReconcileInternals, v as RuntimeGraphCall, w as RuntimeGraphInput, x as RuntimeGraphComputedDependency, y as RuntimeGraphCell } from "./graph-reconcile-DoBBfYsT.js";
2
- export { DerivedReconcileInternals, DerivedReconcilePlane, DerivedReconcilePlaneFactory, DiffDerivedValueInput, DomJournalEntry, DomJournalListener, DomJournalResult, RuntimeGraph, RuntimeGraphAsyncComputed, RuntimeGraphAsyncSnapshot, RuntimeGraphCall, RuntimeGraphCell, RuntimeGraphComputed, RuntimeGraphComputedDependency, RuntimeGraphComputedDependencyNode, RuntimeGraphDelete, RuntimeGraphInput, RuntimeGraphRead, RuntimeGraphReconcileKey, RuntimeGraphReconcileOptions, RuntimeGraphSharedPatch, RuntimeGraphSharedPatchOperation, RuntimeGraphSharedWrite, RuntimeGraphSubscription, RuntimeGraphUpdate, RuntimeGraphWrite, WriteTouchedRecord, createRuntimeGraph };
1
+ import { A as RuntimeGraphUpdate, C as RuntimeGraphDelete, D as RuntimeGraphSharedPatchOperation, E as RuntimeGraphSharedPatch, M as RuntimeGraphWriteObserver, N as createRuntimeGraph, O as RuntimeGraphSharedWrite, S as RuntimeGraphComputedDependencyNode, T as RuntimeGraphRead, _ as RuntimeGraphAsyncSnapshot, a as RuntimeGraphReconcileKey, b as RuntimeGraphComputed, f as DomJournalEntry, g as RuntimeGraphAsyncComputed, h as RuntimeGraph, i as DiffDerivedValueInput, j as RuntimeGraphWrite, k as RuntimeGraphSubscription, m as DomJournalResult, n as DerivedReconcilePlane, o as RuntimeGraphReconcileOptions, p as DomJournalListener, r as DerivedReconcilePlaneFactory, s as WriteTouchedRecord, t as DerivedReconcileInternals, v as RuntimeGraphCall, w as RuntimeGraphInput, x as RuntimeGraphComputedDependency, y as RuntimeGraphCell } from "./graph-reconcile-Cdf3iTu3.js";
2
+ export { type DerivedReconcileInternals, type DerivedReconcilePlane, type DerivedReconcilePlaneFactory, type DiffDerivedValueInput, DomJournalEntry, DomJournalListener, DomJournalResult, RuntimeGraph, RuntimeGraphAsyncComputed, RuntimeGraphAsyncSnapshot, RuntimeGraphCall, RuntimeGraphCell, RuntimeGraphComputed, RuntimeGraphComputedDependency, RuntimeGraphComputedDependencyNode, RuntimeGraphDelete, RuntimeGraphInput, RuntimeGraphRead, type RuntimeGraphReconcileKey, type RuntimeGraphReconcileOptions, RuntimeGraphSharedPatch, RuntimeGraphSharedPatchOperation, RuntimeGraphSharedWrite, RuntimeGraphSubscription, RuntimeGraphUpdate, RuntimeGraphWrite, RuntimeGraphWriteObserver, type WriteTouchedRecord, createRuntimeGraph };
package/dist/graph.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as createRuntimeGraph } from "./graph-B77v_FUC.js";
1
+ import { t as createRuntimeGraph } from "./graph-rhGwAXyl.js";
2
2
  export { createRuntimeGraph };
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { A as RuntimeGraphUpdate, C as RuntimeGraphDelete, D as RuntimeGraphSharedPatchOperation, E as RuntimeGraphSharedPatch, M as createRuntimeGraph, O as RuntimeGraphSharedWrite, S as RuntimeGraphComputedDependencyNode, T as RuntimeGraphRead, _ as RuntimeGraphAsyncSnapshot, a as RuntimeGraphReconcileKey, b as RuntimeGraphComputed, f as DomJournalEntry, g as RuntimeGraphAsyncComputed, h as RuntimeGraph, i as DiffDerivedValueInput, j as RuntimeGraphWrite, k as RuntimeGraphSubscription, m as DomJournalResult, n as DerivedReconcilePlane, o as RuntimeGraphReconcileOptions, p as DomJournalListener, r as DerivedReconcilePlaneFactory, s as WriteTouchedRecord, t as DerivedReconcileInternals, v as RuntimeGraphCall, w as RuntimeGraphInput, x as RuntimeGraphComputedDependency, y as RuntimeGraphCell } from "./graph-reconcile-DoBBfYsT.js";
2
- export { DerivedReconcileInternals, DerivedReconcilePlane, DerivedReconcilePlaneFactory, DiffDerivedValueInput, DomJournalEntry, DomJournalListener, DomJournalResult, RuntimeGraph, RuntimeGraphAsyncComputed, RuntimeGraphAsyncSnapshot, RuntimeGraphCall, RuntimeGraphCell, RuntimeGraphComputed, RuntimeGraphComputedDependency, RuntimeGraphComputedDependencyNode, RuntimeGraphDelete, RuntimeGraphInput, RuntimeGraphRead, RuntimeGraphReconcileKey, RuntimeGraphReconcileOptions, RuntimeGraphSharedPatch, RuntimeGraphSharedPatchOperation, RuntimeGraphSharedWrite, RuntimeGraphSubscription, RuntimeGraphUpdate, RuntimeGraphWrite, WriteTouchedRecord, createRuntimeGraph };
1
+ import { A as RuntimeGraphUpdate, C as RuntimeGraphDelete, D as RuntimeGraphSharedPatchOperation, E as RuntimeGraphSharedPatch, M as RuntimeGraphWriteObserver, N as createRuntimeGraph, O as RuntimeGraphSharedWrite, S as RuntimeGraphComputedDependencyNode, T as RuntimeGraphRead, _ as RuntimeGraphAsyncSnapshot, a as RuntimeGraphReconcileKey, b as RuntimeGraphComputed, f as DomJournalEntry, g as RuntimeGraphAsyncComputed, h as RuntimeGraph, i as DiffDerivedValueInput, j as RuntimeGraphWrite, k as RuntimeGraphSubscription, m as DomJournalResult, n as DerivedReconcilePlane, o as RuntimeGraphReconcileOptions, p as DomJournalListener, r as DerivedReconcilePlaneFactory, s as WriteTouchedRecord, t as DerivedReconcileInternals, v as RuntimeGraphCall, w as RuntimeGraphInput, x as RuntimeGraphComputedDependency, y as RuntimeGraphCell } from "./graph-reconcile-Cdf3iTu3.js";
2
+ export { type DerivedReconcileInternals, type DerivedReconcilePlane, type DerivedReconcilePlaneFactory, type DiffDerivedValueInput, DomJournalEntry, DomJournalListener, DomJournalResult, RuntimeGraph, RuntimeGraphAsyncComputed, RuntimeGraphAsyncSnapshot, RuntimeGraphCall, RuntimeGraphCell, RuntimeGraphComputed, RuntimeGraphComputedDependency, RuntimeGraphComputedDependencyNode, RuntimeGraphDelete, RuntimeGraphInput, RuntimeGraphRead, type RuntimeGraphReconcileKey, type RuntimeGraphReconcileOptions, RuntimeGraphSharedPatch, RuntimeGraphSharedPatchOperation, RuntimeGraphSharedWrite, RuntimeGraphSubscription, RuntimeGraphUpdate, RuntimeGraphWrite, RuntimeGraphWriteObserver, type WriteTouchedRecord, createRuntimeGraph };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as createRuntimeGraph } from "./graph-B77v_FUC.js";
1
+ import { t as createRuntimeGraph } from "./graph-rhGwAXyl.js";
2
2
  export { createRuntimeGraph };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@markless/runtime",
3
- "version": "0.3.3",
3
+ "version": "0.5.0",
4
4
  "description": "Markless state graph runtime: reads, writes, computed invalidation, flush journal.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -29,7 +29,7 @@
29
29
  }
30
30
  },
31
31
  "dependencies": {
32
- "@markless/serializer": "0.3.3"
32
+ "@markless/serializer": "0.5.0"
33
33
  },
34
34
  "files": [
35
35
  "dist"