foldkit-remote 0.20.0 → 0.21.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.
@@ -1,7 +1,7 @@
1
1
  import { Context, Data, Deferred, Duration, Effect, Layer, Match, Option, Predicate, Record, Request, RequestResolver, Result, Schema, SchemaAST, SchemaGetter, Stream } from "effect";
2
2
  import { KeyValueStore } from "effect/persistence";
3
3
  import * as Domain from "foldkit-entity";
4
- import { Entity, Expr, Operators, Query, QueryEvaluateError, ReadFilter, SchemaShape, SelectionTypeId, Write, compareRows, dependenciesOf, evaluate } from "foldkit-entity";
4
+ import { Entity, Expr, Operators, Query, QueryEvaluateError, ReadFilter, SchemaShape, SelectionTypeId, Write, compareRows, dependenciesOf, evaluateEach } from "foldkit-entity";
5
5
  import { mapMessage } from "foldkit/command";
6
6
  import { defineMessageUnion } from "foldkit/message";
7
7
  import * as Subscription from "foldkit/subscription";
@@ -556,16 +556,17 @@ const patchOfWrite = (bound) => ({
556
556
  /**
557
557
  * What a declared write shows before the server answers: an update's or an
558
558
  * insert's row as a patch (an update's only for the keys named, when some
559
- * are), and an update's increments as amounts over the value the store holds. A delete shows nothing, since no operation removes a row from every
560
- * list it is in; its answer does.
559
+ * are), and an update's increments and computed fields, worked out over the
560
+ * row the store holds when it is read. A delete shows nothing, since no
561
+ * operation removes a row from every list it is in; its answer does.
561
562
  */
562
563
  const optimisticOfWrite = (write, input, keys) => Match.value(write).pipe(Match.tagsExhaustive({
563
564
  Update: () => {
564
565
  const bound = Write.bind(write, input, keys);
565
- const patch = patchOfWrite(bound);
566
- return [Object.keys(bound.increments).length === 0 ? patch : {
567
- ...patch,
568
- adds: bound.increments
566
+ return [{
567
+ ...patchOfWrite(bound),
568
+ ...Object.keys(bound.increments).length === 0 ? {} : { adds: bound.increments },
569
+ ...Object.keys(bound.assignments).length === 0 ? {} : { computes: bound.assignments }
569
570
  }];
570
571
  },
571
572
  Insert: () => {
@@ -1392,7 +1393,10 @@ const dedupeConnection = (segments) => {
1392
1393
  /** Adds a page to the connection, joining contiguous or overlapping segments. */
1393
1394
  const merge = (current, page) => {
1394
1395
  const incoming = normalize(page);
1395
- if (incoming.edges.length === 0) return current;
1396
+ if (incoming.edges.length === 0) return incoming.start._tag === "Terminal" && incoming.end._tag === "Terminal" && current.segments.length === 0 ? {
1397
+ ...current,
1398
+ segments: [incoming]
1399
+ } : current;
1396
1400
  const segments = [...current.segments.map(normalize), incoming];
1397
1401
  let joined = true;
1398
1402
  while (joined) {
@@ -1907,9 +1911,11 @@ const matchingEncoded = (store, descriptor, encoded, options = {}) => {
1907
1911
  __key: key
1908
1912
  });
1909
1913
  }
1914
+ const judged = evaluateEach(body, encoded, rows, { operators: options.operators });
1915
+ const keyOf = (row) => row.__key;
1910
1916
  return {
1911
- matched: evaluate(body, encoded, rows, { operators: options.operators }).map((row) => row.__key),
1912
- skipped
1917
+ matched: judged.matched.map(keyOf),
1918
+ skipped: [...skipped, ...judged.refused.map(keyOf)]
1913
1919
  };
1914
1920
  };
1915
1921
  /**
@@ -2190,7 +2196,7 @@ const removeOverlay = (optimistic, id) => {
2190
2196
  * entity only a request holds (a temporary id) is not the server's to age, and
2191
2197
  * is dated `Infinity`, so freshness never plans or times it.
2192
2198
  */
2193
- const visibleStore = (base, optimistic) => writeEntities(base, resolvedPatches(base, optimistic).map((patch) => {
2199
+ const visibleStore = (base, optimistic, operators = Operators.kernel) => writeEntities(base, resolvedPatches(base, optimistic, operators).map((patch) => {
2194
2200
  const key = entityKey(patch.entity, patch.id);
2195
2201
  const under = base[key];
2196
2202
  return {
@@ -2200,32 +2206,56 @@ const visibleStore = (base, optimistic) => writeEntities(base, resolvedPatches(b
2200
2206
  };
2201
2207
  }));
2202
2208
  /**
2203
- * Every pending patch in order, each amount added to the value under it: the
2204
- * store's, or an earlier layer's. A prediction, so only over a number the
2205
- * client holds: a field it has not read, or holds as anything else, keeps
2206
- * what it shows until the server answers with the sum.
2209
+ * Every pending patch in order, each amount added and each computed field
2210
+ * worked out over the row under it (the store's, with earlier layers over
2211
+ * it) by `Write.apply`, with the client's table (the kernel's when not
2212
+ * given). A prediction, so only over
2213
+ * what the client holds: a field it has not read, an amount over anything
2214
+ * but a number, or a computation by an operator its table lacks keeps what
2215
+ * it shows until the server answers.
2207
2216
  */
2208
- const resolvedPatches = (base, optimistic) => {
2217
+ const resolvedPatches = (base, optimistic, operators = Operators.kernel) => {
2209
2218
  const shown = /* @__PURE__ */ new Map();
2210
- return optimistic.layers.flatMap((layer) => layer.patches.map(({ adds, ...patch }) => {
2219
+ const unsure = /* @__PURE__ */ new Map();
2220
+ return optimistic.layers.flatMap((layer) => layer.patches.map(({ adds, computes, ...patch }) => {
2211
2221
  const key = entityKey(patch.entity, patch.id);
2212
2222
  const earlier = shown.get(key) ?? {};
2223
+ const unknown = new Set([...unsure.get(key) ?? []].filter((field) => !Object.hasOwn(patch.values, field)));
2213
2224
  const values = { ...patch.values };
2214
- const under = base[key];
2215
- const valueUnder = (field) => Object.hasOwn(earlier, field) ? Option.some(earlier[field]) : Option.fromUndefinedOr(under?.values[field]);
2216
- for (const [field, amount] of Object.entries(adds ?? {})) Option.map(Option.filter(valueUnder(field), Predicate.isNumber), (current) => {
2217
- values[field] = current + amount;
2218
- });
2225
+ const row = Object.fromEntries(Object.entries({
2226
+ ...base[key]?.values,
2227
+ ...earlier
2228
+ }).filter(([field]) => !unknown.has(field)));
2229
+ const moved = {
2230
+ values: {},
2231
+ increments: adds ?? {},
2232
+ assignments: computes ?? {}
2233
+ };
2234
+ const predicted = predicting(() => Write.apply(row, moved, { operators }));
2235
+ for (const field of [...Object.keys(moved.increments), ...Object.keys(moved.assignments)]) if (predicted !== void 0 && !predicted.unknown.includes(field)) {
2236
+ values[field] = predicted.row[field];
2237
+ unknown.delete(field);
2238
+ } else unknown.add(field);
2219
2239
  shown.set(key, {
2220
2240
  ...earlier,
2221
2241
  ...values
2222
2242
  });
2243
+ unsure.set(key, unknown);
2223
2244
  return {
2224
2245
  ...patch,
2225
2246
  values
2226
2247
  };
2227
2248
  }));
2228
2249
  };
2250
+ /** A prediction, or none where an operator refuses the row it is given: the server will answer. */
2251
+ const predicting = (predict) => {
2252
+ try {
2253
+ return predict();
2254
+ } catch (error) {
2255
+ if (error instanceof QueryEvaluateError) return void 0;
2256
+ throw error;
2257
+ }
2258
+ };
2229
2259
  /**
2230
2260
  * A fresh page is newer than any settled overlay it covers: an edge the page
2231
2261
  * carries no longer needs an insert overlay, and a `remove` overlay hiding it
@@ -4356,8 +4386,8 @@ const placeableReadContract = (contract, body, operators) => {
4356
4386
  }
4357
4387
  };
4358
4388
  };
4359
- const metaOf = (remote, asked) => {
4360
- const visible = visibleStoreOf(remote.entities, remote.optimistic);
4389
+ const metaOf = (remote, asked, operators) => {
4390
+ const visible = visibleStoreOf(remote.entities, remote.optimistic, operators);
4361
4391
  let updatedAt;
4362
4392
  let stale = false;
4363
4393
  let loading = false;
@@ -4407,7 +4437,7 @@ const metaOf = (remote, asked) => {
4407
4437
  */
4408
4438
  const storeOf = (bound, model) => {
4409
4439
  const remote = bound.store.get(model);
4410
- return visibleStoreOf(remote.entities, remote.optimistic);
4440
+ return visibleStoreOf(remote.entities, remote.optimistic, bound.operators);
4411
4441
  };
4412
4442
  /**
4413
4443
  * The Model as it would be with nothing optimistic pending. Every read reaches
@@ -4426,15 +4456,20 @@ const confirmed = (bound, projection) => ({
4426
4456
  read: (root) => projection.read(withoutOptimistic(bound, root))
4427
4457
  });
4428
4458
  const visibleStores = /* @__PURE__ */ new WeakMap();
4429
- const visibleStoreOf = (entities, optimistic) => {
4430
- let byStore = visibleStores.get(optimistic.layers);
4459
+ const visibleStoreOf = (entities, optimistic, operators) => {
4460
+ let byLayers = visibleStores.get(operators);
4461
+ if (byLayers === void 0) {
4462
+ byLayers = /* @__PURE__ */ new WeakMap();
4463
+ visibleStores.set(operators, byLayers);
4464
+ }
4465
+ let byStore = byLayers.get(optimistic.layers);
4431
4466
  if (byStore === void 0) {
4432
4467
  byStore = /* @__PURE__ */ new WeakMap();
4433
- visibleStores.set(optimistic.layers, byStore);
4468
+ byLayers.set(optimistic.layers, byStore);
4434
4469
  }
4435
4470
  let visible = byStore.get(entities);
4436
4471
  if (visible === void 0) {
4437
- visible = visibleStore(entities, optimistic);
4472
+ visible = visibleStore(entities, optimistic, operators);
4438
4473
  byStore.set(entities, visible);
4439
4474
  }
4440
4475
  return visible;
@@ -4543,9 +4578,10 @@ const defineRemote = (config) => {
4543
4578
  };
4544
4579
  };
4545
4580
  /** Binds a Remote domain to its store's location in the application Model. */
4546
- const bindRemote = (definition, store) => ({
4581
+ const bindRemote = (definition, store, operators) => ({
4547
4582
  definition,
4548
4583
  store,
4584
+ operators,
4549
4585
  contract: {
4550
4586
  kind: "remote",
4551
4587
  name: store.dependency.join(".") || "remote",
@@ -4651,7 +4687,7 @@ const missingRows = (known, window, size) => {
4651
4687
  before: to.cursor
4652
4688
  };
4653
4689
  };
4654
- const planAsked = (remote, asked, options) => {
4690
+ const planAsked = (remote, asked, options, operators) => {
4655
4691
  const queries = [];
4656
4692
  const items = [];
4657
4693
  const connections = Requirement.mergeConnections(asked.connections);
@@ -4669,7 +4705,7 @@ const planAsked = (remote, asked, options) => {
4669
4705
  const edges = visibleItems(known, connection.identity, remote.optimistic.overlays, remote.entities);
4670
4706
  items.push(...itemsOf(edges.map((edge) => edge.ref), connection.select));
4671
4707
  }
4672
- const visible = visibleStoreOf(remote.entities, remote.optimistic);
4708
+ const visible = visibleStoreOf(remote.entities, remote.optimistic, operators);
4673
4709
  const read = [...asked.requirements, ...items];
4674
4710
  const planned = plan(visible, read, options);
4675
4711
  return {
@@ -4872,7 +4908,7 @@ const observeEntry = (bound, askedOf, toMessage, options) => {
4872
4908
  let byAsked = planned.get(remote);
4873
4909
  const known = byAsked?.get(askedKey);
4874
4910
  if (known !== void 0 && at < known.until) return known.dependencies;
4875
- const plan = planAsked(remote, asked, RemotePolicy.toPlan(policy, at));
4911
+ const plan = planAsked(remote, asked, RemotePolicy.toPlan(policy, at), bound.operators);
4876
4912
  const dependencies = {
4877
4913
  refresh: refreshedAt(remote.refresh, plan.requirements, plan.queries.map((query) => query.identity)),
4878
4914
  requirements: plan.requirements,
@@ -5116,9 +5152,11 @@ const Remote = {
5116
5152
  /**
5117
5153
  * Binds a Remote domain to its store's location in the application Model. The
5118
5154
  * registered entity names are carried on the returned value, so `Remote.select`
5119
- * rejects a selection for an entity this domain never declared.
5155
+ * rejects a selection for an entity this domain never declared. `operators`
5156
+ * is the client's table, which a pending computed assignment is predicted by
5157
+ * (`Operators.kernel` when not given), as `Remote.make`'s is.
5120
5158
  */
5121
- at: bindRemote,
5159
+ at: (definition, store, options = {}) => bindRemote(definition, store, options.operators ?? Operators.kernel),
5122
5160
  /**
5123
5161
  * The resume part for this domain, for `foldkit-ssr`'s `SSR.plan({ parts })`:
5124
5162
  * a server render sends what the plan's active Surfaces read from the store,
@@ -5203,18 +5241,18 @@ const Remote = {
5203
5241
  * connection marked stale; `loading` is any of them in flight. Optimistic
5204
5242
  * previews do not date: showing only one reads `updatedAt: undefined`.
5205
5243
  */
5206
- meta: (bound, model, projection) => metaOf(bound.store.get(model), askedOf(projection)),
5244
+ meta: (bound, model, projection) => metaOf(bound.store.get(model), askedOf(projection), bound.operators),
5207
5245
  /**
5208
5246
  * The pure plan for a projection against a Model: the requirements its
5209
5247
  * remote store does not satisfy, under `options` (freshness, force). A
5210
5248
  * Surface's projection is `surface.projection(params)`.
5211
5249
  */
5212
- plan: (bound, model, projection, options) => planAsked(bound.store.get(model), askedOf(projection), options ?? {}).requirements,
5250
+ plan: (bound, model, projection, options) => planAsked(bound.store.get(model), askedOf(projection), options ?? {}, bound.operators).requirements,
5213
5251
  /**
5214
5252
  * The queries a projection needs run before its connections read: those the
5215
5253
  * Model does not hold, or holds stale (every one under `force`).
5216
5254
  */
5217
- planQueries: (bound, model, projection, options) => planAsked(bound.store.get(model), askedOf(projection), options ?? {}).queries.flatMap((query) => query.ref === void 0 ? [] : [query.ref]),
5255
+ planQueries: (bound, model, projection, options) => planAsked(bound.store.get(model), askedOf(projection), options ?? {}, bound.operators).queries.flatMap((query) => query.ref === void 0 ? [] : [query.ref]),
5218
5256
  /**
5219
5257
  * The store reads see: the base store under the pending optimistic layers.
5220
5258
  * One store is shared by every read and plan of a Model whose remote state
@@ -5276,7 +5314,7 @@ const Remote = {
5276
5314
  const known = remote.connections[connection.identity];
5277
5315
  return known === void 0 ? [] : itemsOf(visibleItems(known, connection.identity, remote.optimistic.overlays, remote.entities).map((edge) => edge.ref), connection.select);
5278
5316
  });
5279
- const requirements = plan(visibleStoreOf(remote.entities, remote.optimistic), [...asked.requirements, ...items], { force: true });
5317
+ const requirements = plan(visibleStoreOf(remote.entities, remote.optimistic, bound.operators), [...asked.requirements, ...items], { force: true });
5280
5318
  const invalidated = connections.filter((connection) => remote.connections[connection.identity] !== void 0 || connection.identity in remote.failures.connections).map((connection) => connection.identity);
5281
5319
  const marked = [...requirements.length === 0 ? [] : [{
5282
5320
  _tag: "RefreshStarted",
@@ -5469,7 +5507,7 @@ const failedReadWords = (error) => {
5469
5507
  /** The bound domain: the descriptor, the binding, and the operations over them. */
5470
5508
  const bindDomain = (definition, store, options = {}) => {
5471
5509
  const operators = options.operators ?? Operators.kernel;
5472
- const bound = bindRemote(definition, store);
5510
+ const bound = bindRemote(definition, store, operators);
5473
5511
  const readers = /* @__PURE__ */ new Map();
5474
5512
  const keptConnections = /* @__PURE__ */ new Set();
5475
5513
  /**
@@ -5570,7 +5608,7 @@ const bindDomain = (definition, store, options = {}) => {
5570
5608
  pages,
5571
5609
  layers,
5572
5610
  remote.entities
5573
- ], `placed:${identity}`, () => placedHeld(identity, pages, changesOf({ entities: resolvedPatches(remote.entities, remote.optimistic) }, remote.entities), visibleStoreOf(remote.entities, remote.optimistic)));
5611
+ ], `placed:${identity}`, () => placedHeld(identity, pages, changesOf({ entities: resolvedPatches(remote.entities, remote.optimistic, operators) }, remote.entities), visibleStoreOf(remote.entities, remote.optimistic, operators)));
5574
5612
  };
5575
5613
  /**
5576
5614
  * The edges a loaded list shows: its pages with pending edits placed, and
@@ -5590,7 +5628,7 @@ const bindDomain = (definition, store, options = {}) => {
5590
5628
  };
5591
5629
  const insertsPlaced = (remote, identity, pages) => {
5592
5630
  const { overlays } = remote.optimistic;
5593
- const store = visibleStoreOf(remote.entities, remote.optimistic);
5631
+ const store = visibleStoreOf(remote.entities, remote.optimistic, operators);
5594
5632
  return memoRead([
5595
5633
  pages,
5596
5634
  overlays,
@@ -5683,7 +5721,7 @@ const bindDomain = (definition, store, options = {}) => {
5683
5721
  keys.add(change.edge.key);
5684
5722
  named.set(change.connection, keys);
5685
5723
  }
5686
- const visible = visibleStoreOf(remote.entities, remote.optimistic);
5724
+ const visible = visibleStoreOf(remote.entities, remote.optimistic, operators);
5687
5725
  const placed = {};
5688
5726
  const invalidated = [];
5689
5727
  for (const identity of Object.keys(remote.connections)) {
@@ -5770,11 +5808,11 @@ const bindDomain = (definition, store, options = {}) => {
5770
5808
  const client = yield* RemoteClient;
5771
5809
  const planOptions = RemotePolicy.toPlan(policy, now());
5772
5810
  let current = model;
5773
- for (const query of planAsked(store.get(current), askedOf(projection), planOptions).queries) {
5811
+ for (const query of planAsked(store.get(current), askedOf(projection), planOptions, operators).queries) {
5774
5812
  const page = yield* queryRequestOf(query).pipe(Effect.flatMap((request) => client.query(request)));
5775
5813
  current = hear(current, pageMessage(query.identity, page, true, query.window, query.select, now()));
5776
5814
  }
5777
- const requirements = planAsked(store.get(current), askedOf(projection), planOptions).requirements;
5815
+ const requirements = planAsked(store.get(current), askedOf(projection), planOptions, operators).requirements;
5778
5816
  if (requirements.length === 0) return current;
5779
5817
  const at = now();
5780
5818
  const result = yield* client.read({
@@ -5795,7 +5833,7 @@ const bindDomain = (definition, store, options = {}) => {
5795
5833
  entries.forEach(assertOwned);
5796
5834
  const planOptions = RemotePolicy.toPlan(RemotePolicy.cacheFirst, now());
5797
5835
  const plans = (current, projections) => {
5798
- const planned = planAsked(store.get(current), askedUnion(projections), planOptions);
5836
+ const planned = planAsked(store.get(current), askedUnion(projections), planOptions, operators);
5799
5837
  return planned.queries.length > 0 || planned.requirements.length > 0;
5800
5838
  };
5801
5839
  let current = model;
@@ -5907,7 +5945,7 @@ const bindDomain = (definition, store, options = {}) => {
5907
5945
  }
5908
5946
  };
5909
5947
  const readPage = (remote, connection) => {
5910
- const visible = visibleStoreOf(remote.entities, remote.optimistic);
5948
+ const visible = visibleStoreOf(remote.entities, remote.optimistic, operators);
5911
5949
  return memoRead([
5912
5950
  visible,
5913
5951
  connection,
@@ -6095,7 +6133,7 @@ const bindDomain = (definition, store, options = {}) => {
6095
6133
  if (filters !== void 0 && filters !== over.selection.entity) throw new Error(`Remote: query "${by.name}" is over "${filters}", but the list is of "${over.selection.entity}", so it cannot filter it`);
6096
6134
  const remote = store.get(model);
6097
6135
  const connection = remote.connections[over.ref.identity];
6098
- const visible = visibleStoreOf(remote.entities, remote.optimistic);
6136
+ const visible = visibleStoreOf(remote.entities, remote.optimistic, operators);
6099
6137
  const among = (connection === void 0 ? [] : shownEdges(remote, over.ref.identity, connection)).map((edge) => entityKey(edge.ref.entity, edge.ref.id));
6100
6138
  let judged;
6101
6139
  try {
@@ -6341,4 +6379,4 @@ const pickWindow = (window) => ({
6341
6379
  });
6342
6380
  export { emptyOptimistic as $, RelationEntityAnnotation as $n, PageSize as $t, writeRead as A, optimisticOfWrite as An, unknown as At, plan as B, isFieldUnavailable as Bn, requirementKey as Bt, remoteMessageCases as C, stableStringify as Cn, hasNext as Ct, updateRemote as D, emptyMutationState as Dn, merge as Dt, retentionRootsSchema as E, beginMutation as En, items as Et, REMOTE_CACHE_VERSION as F, emptyStore as Fn, mintOperation as Ft, emptyLiveState as G, remove as Gn, LiveRequirement as Gt, applyConnectionEvent as H, markStale as Hn, Live as Ht, RemotePersistence as I, entityKey as In, mutateRemote as It, ConnectionChange as J, tombstone as Jn, Mutate as Jt, liveHasNext as K, setStale as Kn, MAX_FIELDS_PER_REQUEST as Kt, gc as L, entry as Ln, remoteError as Lt, RemoteData as M, reconcileMutation as Mn, coalescedLayer as Mt, remoteDataSchema as N, schemaOf as Nn, connectionChangeOf as Nt, windowGrowthKey as O, failMutation as On, segment as Ot, remoteErrorSchema as P, clearStale as Pn, liveEventOf as Pt, connectionIdentity as Q, RelationAnnotation as Qn, OperationId as Qt, reachable as R, hasField as Rn, coalesceQueries as Rt, refreshedAt as S, Query$1 as Sn, emptyConnection as St, remoteModelSchema as T, Refusal as Tn, isGapped as Tt, applyEntityEvent as U, missingFields as Un, LiveChange as Ut, windowKey as V, isTombstone as Vn, ConnectionChangeSchema as Vt, classifyLive as W, readField as Wn, LiveEdge as Wt, addOverlay as X, writeEntity as Xn, MutationResult as Xt, addLayer as Y, writeEntities as Yn, MutationRequest as Yt, beginOptimistic as Z, RELATION_ALIAS as Zn, NormalizedEntity as Zt, isRemoteMessage as _, RemoteUnauthenticated as _n, pageSchema as _t, RemoteJsonAnswer as a, Read as an, relationShape as ar, settleSuccess as at, overlaysOf as b, WireBoundary as bn, cursor as bt, emptyRefresh as c, ReadRequest as cn, RemoteRequirements as cr, inspectEntity as ct, initialRemoteModel as d, RemoteLiveError as dn, requirementsOf as dr, matching as dt, QueryEdge as en, aliasedField as er, pruneOverlays as et, invalidateConnections as f, RemoteMutationError as fn, RowPlace as ft, isQueryLoading as g, RemoteRpc as gn, assemble as gt, isLoadingThrough as h, RemoteReadError as hn, Selection as ht, liveFetch as i, REMOTE_PROTOCOL_VERSION as in, relationAlias as ir, settleFailure as it, Denied as j, patchOfWrite as jn, RemoteClient as jt, withRefreshRequested as k, mutationStatus as kn, terminal as kt, failureOf as l, RelationRequest as ln, Requirement as lr, inspectRemote as lt, isLoading as m, RemoteQueryError as mn, Entity$1 as mt, RemoteUnsatisfied as n, QueryResult as nn, refParts as nr, removeOverlay as nt, RemoteJsonRequest as o, ReadBatch as on, targetsOf as or, visibleItems as ot, isFieldFailed as p, RemoteProtocolError as pn, placeIn as pt, liveHasPrevious as q, setUnavailable as qn, MAX_RELATION_DEPTH as qt, httpWithLive as r, QueryRpc as rn, refsIn as rr, resolvedPatches as rt, RemotePolicy as s, ReadBatchResult as sn, RemoteConnections as sr, visibleStore as st, Remote as t, QueryRequest as tn, isRefPage as tr, removeLayer as tt, forgetRemote as u, RemoteForbidden as un, connectionsOf as ur, belongsEncoded as ut, noFailures as v, SettledFields as vn, relationOf as vt, remoteMessageSchema as w, Mutation as wn, hasPrevious as wt, refreshIsInFlight as x, IDENTITY_SEPARATOR as xn, edge as xt, onlyOverlaid as y, WindowSchema as yn, unavailableOf as yt, deadlineOf as z, isFieldStale as zn, coalesceReads as zt };
6343
6381
 
6344
- //# sourceMappingURL=src-BDqn7Ocr.mjs.map
6382
+ //# sourceMappingURL=src-lVP_7bf4.mjs.map