@nkzw/fate 1.5.0 → 1.5.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.
Files changed (179) hide show
  1. package/README.md +5 -7
  2. package/docs/api/classes/FateClient.md +39 -39
  3. package/docs/api/functions/clientRoot.md +1 -1
  4. package/docs/api/functions/createClient.md +1 -1
  5. package/docs/api/functions/createGraphQLTransport.md +1 -1
  6. package/docs/api/functions/createHTTPTransport.md +1 -1
  7. package/docs/api/functions/createTRPCTransport.md +1 -1
  8. package/docs/api/functions/defer.md +1 -1
  9. package/docs/api/functions/getDeferredMetadata.md +1 -1
  10. package/docs/api/functions/getListEntries.md +1 -1
  11. package/docs/api/functions/getSelectionPlan.md +1 -1
  12. package/docs/api/functions/graphqlMutation.md +1 -1
  13. package/docs/api/functions/isDeferred.md +1 -1
  14. package/docs/api/functions/isRecord.md +1 -1
  15. package/docs/api/functions/isViewTag.md +1 -1
  16. package/docs/api/functions/liveConnectionTopic.md +1 -1
  17. package/docs/api/functions/liveEntityTopic.md +1 -1
  18. package/docs/api/functions/liveGlobalConnectionTopic.md +1 -1
  19. package/docs/api/functions/mutation.md +1 -1
  20. package/docs/api/functions/toEntityId.md +1 -1
  21. package/docs/api/functions/view.md +1 -1
  22. package/docs/api/index.md +2 -0
  23. package/docs/api/interfaces/FateThenable.md +3 -3
  24. package/docs/api/interfaces/Persistence.md +1 -19
  25. package/docs/api/interfaces/PersistenceSession.md +10 -10
  26. package/docs/api/interfaces/Transport.md +8 -8
  27. package/docs/api/server/classes/FateRequestError.md +5 -5
  28. package/docs/api/server/drizzle/functions/createDrizzleFate.md +3 -3
  29. package/docs/api/server/drizzle/functions/createDrizzleSourceAdapter.md +1 -1
  30. package/docs/api/server/drizzle/functions/createDrizzleSourceRegistry.md +1 -1
  31. package/docs/api/server/drizzle/type-aliases/DrizzleManyToManyConfig.md +1 -1
  32. package/docs/api/server/drizzle/type-aliases/DrizzleManyToManyInput.md +1 -1
  33. package/docs/api/server/drizzle/type-aliases/DrizzleQueryExtra.md +3 -3
  34. package/docs/api/server/drizzle/type-aliases/DrizzleSourceAdapter.md +9 -9
  35. package/docs/api/server/drizzle/type-aliases/DrizzleViewConfig.md +1 -1
  36. package/docs/api/server/functions/bindSourceProcedures.md +1 -1
  37. package/docs/api/server/functions/computed.md +1 -1
  38. package/docs/api/server/functions/count.md +1 -1
  39. package/docs/api/server/functions/createFateFetchHandler.md +1 -1
  40. package/docs/api/server/functions/createFateServer.md +1 -1
  41. package/docs/api/server/functions/createHonoFateHandler.md +1 -1
  42. package/docs/api/server/functions/createLiveEventBus.md +1 -1
  43. package/docs/api/server/functions/createNestedSourcePlan.md +1 -1
  44. package/docs/api/server/functions/createResolver.md +1 -1
  45. package/docs/api/server/functions/createSourcePlan.md +1 -1
  46. package/docs/api/server/functions/createSourceProcedures.md +1 -1
  47. package/docs/api/server/functions/dataView.md +1 -1
  48. package/docs/api/server/functions/field.md +1 -1
  49. package/docs/api/server/functions/getNestedSelection.md +1 -1
  50. package/docs/api/server/functions/getScopedArgs.md +1 -1
  51. package/docs/api/server/functions/hasNestedSelection.md +1 -1
  52. package/docs/api/server/functions/list.md +1 -1
  53. package/docs/api/server/functions/refetchSourceById.md +1 -1
  54. package/docs/api/server/functions/resolveSourceById.md +1 -1
  55. package/docs/api/server/functions/resolveSourceByIds.md +1 -1
  56. package/docs/api/server/functions/resolveSourceConnection.md +2 -2
  57. package/docs/api/server/functions/resolver.md +1 -1
  58. package/docs/api/server/functions/toPrismaSelect.md +1 -1
  59. package/docs/api/server/functions/withConnection.md +1 -1
  60. package/docs/api/server/prisma/functions/createPrismaFate.md +3 -3
  61. package/docs/api/server/prisma/functions/createPrismaSourceAdapter.md +1 -1
  62. package/docs/api/server/prisma/functions/createPrismaSourceRegistry.md +1 -1
  63. package/docs/api/server/prisma/functions/prismaConnectionArgs.md +2 -2
  64. package/docs/api/server/prisma/type-aliases/PrismaDelegate.md +4 -4
  65. package/docs/api/server/prisma/type-aliases/PrismaQueryExtra.md +1 -1
  66. package/docs/api/server/prisma/type-aliases/PrismaSourceAdapter.md +9 -9
  67. package/docs/api/server/prisma/type-aliases/PrismaViewConfig.md +1 -1
  68. package/docs/api/server/type-aliases/ComputedField.md +5 -5
  69. package/docs/api/server/type-aliases/ComputedSelection.md +1 -1
  70. package/docs/api/server/type-aliases/ConnectionItem.md +3 -3
  71. package/docs/api/server/type-aliases/ConnectionPagination.md +5 -5
  72. package/docs/api/server/type-aliases/ConnectionResult.md +3 -3
  73. package/docs/api/server/type-aliases/CountSelection.md +4 -4
  74. package/docs/api/server/type-aliases/CountWhere.md +1 -1
  75. package/docs/api/server/type-aliases/DataViewListOptions.md +2 -2
  76. package/docs/api/server/type-aliases/DataViewOrderBy.md +1 -1
  77. package/docs/api/server/type-aliases/DataViewOrderDirection.md +1 -1
  78. package/docs/api/server/type-aliases/DataViewResult.md +1 -1
  79. package/docs/api/server/type-aliases/Entity.md +1 -1
  80. package/docs/api/server/type-aliases/FateServer.md +5 -5
  81. package/docs/api/server/type-aliases/FateServerManifest.md +1 -1
  82. package/docs/api/server/type-aliases/FieldSelection.md +3 -3
  83. package/docs/api/server/type-aliases/LiveConnectionEventType.md +1 -1
  84. package/docs/api/server/type-aliases/LiveConnectionSourceEvent.md +1 -1
  85. package/docs/api/server/type-aliases/LiveEventBus.md +1 -1
  86. package/docs/api/server/type-aliases/LiveEventType.md +1 -1
  87. package/docs/api/server/type-aliases/LiveSourceEvent.md +1 -1
  88. package/docs/api/server/type-aliases/NativeFateAPI.md +4 -4
  89. package/docs/api/server/type-aliases/OrderDirection.md +1 -1
  90. package/docs/api/server/type-aliases/SourceConfig.md +6 -6
  91. package/docs/api/server/type-aliases/SourceDefinition.md +6 -6
  92. package/docs/api/server/type-aliases/SourceOrder.md +1 -1
  93. package/docs/api/server/type-aliases/SourceOrderField.md +3 -3
  94. package/docs/api/server/type-aliases/SourcePlan.md +1 -1
  95. package/docs/api/server/type-aliases/SourcePlanNode.md +1 -1
  96. package/docs/api/server/type-aliases/SourceRegistry.md +1 -1
  97. package/docs/api/server/type-aliases/SourceRelation.md +1 -1
  98. package/docs/api/server/type-aliases/SourceRelationConfig.md +1 -1
  99. package/docs/api/server/variables/byIdInput.md +1 -1
  100. package/docs/api/server/variables/connectionArgs.md +1 -1
  101. package/docs/api/type-aliases/ConnectionMetadata.md +1 -1
  102. package/docs/api/type-aliases/ConnectionRef.md +1 -1
  103. package/docs/api/type-aliases/Deferred.md +1 -1
  104. package/docs/api/type-aliases/DeferredMetadata.md +1 -1
  105. package/docs/api/type-aliases/DeferredSelection.md +1 -1
  106. package/docs/api/type-aliases/DeferredSnapshot.md +1 -1
  107. package/docs/api/type-aliases/Entity.md +2 -2
  108. package/docs/api/type-aliases/EntityId.md +1 -1
  109. package/docs/api/type-aliases/FateDehydratedState.md +1 -1
  110. package/docs/api/type-aliases/FateLiveConnectionEvent.md +1 -1
  111. package/docs/api/type-aliases/FateLiveEvent.md +1 -1
  112. package/docs/api/type-aliases/FateMutations.md +1 -1
  113. package/docs/api/type-aliases/FateOperation.md +1 -1
  114. package/docs/api/type-aliases/FateProtocolRequest.md +1 -1
  115. package/docs/api/type-aliases/FateProtocolResponse.md +1 -1
  116. package/docs/api/type-aliases/FateRecord.md +1 -1
  117. package/docs/api/type-aliases/FateRoots.md +1 -1
  118. package/docs/api/type-aliases/GraphQLMutationDefinition.md +1 -1
  119. package/docs/api/type-aliases/GraphQLMutationInput.md +1 -1
  120. package/docs/api/type-aliases/GraphQLMutationMap.md +1 -1
  121. package/docs/api/type-aliases/GraphQLMutationOutput.md +1 -1
  122. package/docs/api/type-aliases/GraphQLTransportOptions.md +12 -12
  123. package/docs/api/type-aliases/HydrateOptions.md +1 -1
  124. package/docs/api/type-aliases/HydrationLimits.md +1 -1
  125. package/docs/api/type-aliases/InferFateAPI.md +1 -1
  126. package/docs/api/type-aliases/List.md +1 -1
  127. package/docs/api/type-aliases/ListEntry.md +1 -1
  128. package/docs/api/type-aliases/ListItem.md +1 -1
  129. package/docs/api/type-aliases/Mask.md +1 -1
  130. package/docs/api/type-aliases/MutationDefinition.md +1 -1
  131. package/docs/api/type-aliases/MutationEntity.md +1 -1
  132. package/docs/api/type-aliases/MutationIdentifier.md +1 -1
  133. package/docs/api/type-aliases/MutationIdentity.md +1 -1
  134. package/docs/api/type-aliases/MutationInput.md +1 -1
  135. package/docs/api/type-aliases/MutationResult.md +1 -1
  136. package/docs/api/type-aliases/NodesItem.md +1 -1
  137. package/docs/api/type-aliases/Pagination.md +5 -5
  138. package/docs/api/type-aliases/PersistedMutationStatus.md +5 -0
  139. package/docs/api/type-aliases/PersistenceSnapshot.md +2 -2
  140. package/docs/api/type-aliases/Request.md +1 -1
  141. package/docs/api/type-aliases/RequestMode.md +1 -1
  142. package/docs/api/type-aliases/RequestOptions.md +2 -2
  143. package/docs/api/type-aliases/RequestPersistenceOptions.md +5 -0
  144. package/docs/api/type-aliases/RequestResult.md +1 -1
  145. package/docs/api/type-aliases/Selection.md +1 -1
  146. package/docs/api/type-aliases/TypeConfig.md +4 -4
  147. package/docs/api/type-aliases/View.md +1 -1
  148. package/docs/api/type-aliases/ViewData.md +1 -1
  149. package/docs/api/type-aliases/ViewEntity.md +1 -1
  150. package/docs/api/type-aliases/ViewEntityName.md +1 -1
  151. package/docs/api/type-aliases/ViewRef.md +1 -1
  152. package/docs/api/type-aliases/ViewSelection.md +1 -1
  153. package/docs/api/type-aliases/ViewSnapshot.md +1 -1
  154. package/docs/api/type-aliases/ViewTag.md +1 -1
  155. package/docs/api/variables/ConnectionTag.md +1 -1
  156. package/docs/api/variables/DeferTag.md +1 -1
  157. package/docs/api/variables/DeferredTag.md +1 -1
  158. package/docs/guide/persistence.md +5 -7
  159. package/lib/clientStub.d.mts +4 -5
  160. package/lib/{executor-DoiTBiVv.d.mts → executor-oPTYqgQV.d.mts} +1 -1
  161. package/lib/{graphqlTransport-DGLYyRxL.d.mts → graphqlTransport-CGYE4NdD.d.mts} +1 -1
  162. package/lib/graphqlTransport.d.mts +1 -1
  163. package/lib/idempotency-types-DuqJ7KSd.d.mts +16 -0
  164. package/lib/idempotency.d.mts +8 -8
  165. package/lib/index.d.mts +12 -12
  166. package/lib/index.mjs +25 -15
  167. package/lib/{list-BRT1VtiT.d.mts → list-5hrTVoiB.d.mts} +1 -1
  168. package/lib/list.d.mts +1 -1
  169. package/lib/persistence.d.mts +21 -19
  170. package/lib/persistence.mjs +553 -352
  171. package/lib/{record-DITM4zb_.d.mts → record-Dxjvpsep.d.mts} +3 -3
  172. package/lib/server/drizzle.d.mts +14 -13
  173. package/lib/server/prisma.d.mts +14 -13
  174. package/lib/server.d.mts +9 -9
  175. package/lib/{store-CeatPJeK.mjs → store-CakBBzWG.mjs} +47 -11
  176. package/lib/{transport-DqjhjLfC.d.mts → transport-DR0fwleU.d.mts} +29 -16
  177. package/lib/vite.d.mts +3 -3
  178. package/package.json +3 -3
  179. package/lib/idempotency-types-CqA-BFpn.d.mts +0 -15
package/lib/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { t as isRecord } from "./record-B07VwXd-.mjs";
2
2
  import { a as hashArgs, c as scopeArgsPayload, i as filterConnectionArgs, r as combineArgsPayload, s as resolvedArgsFromPlan, t as applyArgsPayloadToPlan } from "./args-CRLIRl_v.mjs";
3
3
  import { _ as isNodesItem, a as createNodeRef, c as ConnectionTag, f as RootKind, g as isNodeItem, i as resolveHydrationLimits, l as DeferTag, m as ViewsTag, o as getNodeRefId, r as encodeHydrationValue, s as isNodeRef, t as decodeClientHydrationState, u as DeferredTag, v as isQueryItem, y as isViewTag } from "./hydration-DPZRJgnu.mjs";
4
- import { C as isDeferredSelection, S as isDeferred, _ as view, a as mutation, b as getDeferredMetadata, c as getDeferredSelectionPlan, d as createRefWithViewNames, f as getRootViewNames, g as getViewPayloads, h as getViewNames, l as getSelectionPlan, m as toEntityId, n as getListKey, p as parseEntityId, r as mergePreservingExisting, s as wrapMutation, t as Store, u as assignViewTag, v as createDeferred, x as getDeferredSelection, y as defer } from "./store-CeatPJeK.mjs";
4
+ import { C as isDeferredSelection, S as isDeferred, _ as view, a as mutation, b as getDeferredMetadata, c as getDeferredSelectionPlan, d as createRefWithViewNames, f as getRootViewNames, g as getViewPayloads, h as getViewNames, l as getSelectionPlan, m as toEntityId, n as getListKey, p as parseEntityId, r as mergePreservingExisting, s as wrapMutation, t as Store, u as assignViewTag, v as createDeferred, x as getDeferredSelection, y as defer } from "./store-CakBBzWG.mjs";
5
5
  import { t as getListEntries } from "./list-_6fXYLtJ.mjs";
6
6
  import { n as errorCodeFromStatus, t as FateRequestError } from "./protocol-DS5sf6sd.mjs";
7
7
  import { n as graphqlMutation, t as createGraphQLTransport } from "./graphqlTransport-DmheG3AO.mjs";
@@ -478,7 +478,7 @@ var FateClient = class {
478
478
  this.store = new Store((ids) => {
479
479
  for (const id of ids) this.viewDataCache.invalidate(id);
480
480
  this.runPendingGarbageCollection();
481
- }, (kind, key, paths, previousList) => this.persistence?.changed(kind, key, paths, previousList));
481
+ }, (change) => this.persistenceRuntime?.changed(change));
482
482
  this.viewDataCache = new ViewDataCache(() => !this.store.isRebasing);
483
483
  this.liveConnectionInvalidationToken = 0;
484
484
  this.persistenceDisposal = options.persistence ? new AbortController() : void 0;
@@ -508,7 +508,8 @@ var FateClient = class {
508
508
  setNestedValue(this.actions, key, async (_previousState, data) => data === "reset" ? null : await this.mutationMap[key](data));
509
509
  }
510
510
  this.initializeParentLists();
511
- this.persistence = options.persistence?.attach(this);
511
+ this.persistenceRuntime = options.persistence?.attach(this);
512
+ this.persistence = this.persistenceRuntime;
512
513
  }
513
514
  initializeParentLists() {
514
515
  for (const config of this.types.values()) {
@@ -704,6 +705,11 @@ var FateClient = class {
704
705
  if (this.mutationEntities?.size) this.requireDurableMutationTransport();
705
706
  }
706
707
  /** @internal */
708
+ persistMutation(command) {
709
+ if (!this.persistenceRuntime) throw new Error("fate: Persistence is not configured.");
710
+ return this.persistenceRuntime.mutate(command);
711
+ }
712
+ /** @internal */
707
713
  assertPersistenceActive() {
708
714
  if (this.persistenceDisposal?.signal.aborted || this.persistence?.getSnapshot().status === "disposed") throw new Error("fate: Persistence was disposed.");
709
715
  }
@@ -828,7 +834,8 @@ var FateClient = class {
828
834
  const pendingPromise = this.pending.get(key) || null;
829
835
  if (pendingPromise) return pendingPromise;
830
836
  const promise = this.trackPendingRequest(async () => {
831
- if (this.persistence) {
837
+ const persistence = this.persistenceRuntime;
838
+ if (persistence) {
832
839
  const persistedRequest = {
833
840
  items: [{
834
841
  ids: [id],
@@ -841,11 +848,11 @@ var FateClient = class {
841
848
  }],
842
849
  key: `view:${key}`
843
850
  };
844
- await this.persistence.restoreRequest(persistedRequest);
851
+ await persistence.restoreRequest(persistedRequest);
845
852
  const remaining = this.store.missingForSelection(entityId, selectedPaths);
846
853
  if (remaining.size) {
847
854
  await this.fetchByIdAndNormalize(type, [id], remaining, plan);
848
- this.persistence.fetched({
855
+ persistence.fetched({
849
856
  ...persistedRequest,
850
857
  items: persistedRequest.items.map((item) => ({
851
858
  ...item,
@@ -1433,15 +1440,16 @@ var FateClient = class {
1433
1440
  }
1434
1441
  requestWithDescriptor(descriptor, mode, { revalidateExisting }, options) {
1435
1442
  this.assertPersistenceActive();
1436
- if (this.persistence && options?.persist && (!Number.isSafeInteger(options.persist.maxAge) || options.persist.maxAge < 0 || options.persist.maxAge > Number.MAX_SAFE_INTEGER - Date.now())) throw new Error("fate: Persistence maxAge must be a non-negative finite duration.");
1443
+ const persistence = this.persistenceRuntime;
1444
+ if (persistence && options?.persist && (!Number.isSafeInteger(options.persist.maxAge) || options.persist.maxAge < 0 || options.persist.maxAge > Number.MAX_SAFE_INTEGER - Date.now())) throw new Error("fate: Persistence maxAge must be a non-negative finite duration.");
1437
1445
  const requestKey = descriptor.key;
1438
1446
  const existingRequest = this.requests.get(requestKey)?.get(mode);
1439
1447
  if (existingRequest) {
1440
- if (this.persistence && options?.persist) {
1448
+ if (persistence && options?.persist) {
1441
1449
  const executionOptions = this.requestExecutionOptions.get(existingRequest.descriptor);
1442
1450
  if (executionOptions) executionOptions.persist = { ...options.persist };
1443
1451
  }
1444
- if (this.persistence && options?.persist && existingRequest.status === "fulfilled") this.persistence.used(existingRequest.descriptor, options.persist);
1452
+ if (persistence && options?.persist && existingRequest.status === "fulfilled") persistence.used(existingRequest.descriptor, options.persist);
1445
1453
  const isFulfilledCacheFirstWithMissingData = mode === "cache-first" && existingRequest.status === "fulfilled" && !this.hasRequestData(existingRequest.descriptor);
1446
1454
  if (existingRequest.status !== "pending" && (isFulfilledCacheFirstWithMissingData || revalidateExisting && (mode === "network-only" || mode === "stale-while-revalidate" || mode === "cache-first" && existingRequest.status === "rejected"))) this.executeRequestHandle(existingRequest, mode, options);
1447
1455
  return existingRequest;
@@ -1562,17 +1570,18 @@ var FateClient = class {
1562
1570
  }
1563
1571
  }
1564
1572
  executeRequestHandle(handle, mode, options) {
1573
+ const persistence = this.persistenceRuntime;
1565
1574
  const executionOptions = {
1566
1575
  fetchAll: mode !== "cache-first",
1567
1576
  persist: options?.persist ? { ...options.persist } : void 0
1568
1577
  };
1569
- if (this.persistence) this.requestExecutionOptions.set(handle.descriptor, executionOptions);
1578
+ if (persistence) this.requestExecutionOptions.set(handle.descriptor, executionOptions);
1570
1579
  const execute = () => {
1571
1580
  this.assertPersistenceActive();
1572
1581
  if (mode === "stale-while-revalidate") return this.handleStoreAndNetworkRequest(handle.descriptor, executionOptions);
1573
1582
  return this.executeRequest(handle.descriptor, executionOptions).then(() => this.getRequestResultFromDescriptor(handle.descriptor));
1574
1583
  };
1575
- handle.start(this.persistence ? this.withPersistenceLifecycle(() => this.persistence.ready.then(() => mode === "network-only" ? void 0 : this.persistence.restoreRequest(handle.descriptor)).then(execute)) : execute());
1584
+ handle.start(persistence ? this.withPersistenceLifecycle(() => persistence.ready.then(() => mode === "network-only" ? void 0 : persistence.restoreRequest(handle.descriptor)).then(execute)) : execute());
1576
1585
  }
1577
1586
  markRecordReferences(record, markRecord) {
1578
1587
  const seen = /* @__PURE__ */ new Set();
@@ -1625,7 +1634,7 @@ var FateClient = class {
1625
1634
  return await this.withPersistenceLifecycle(request);
1626
1635
  } finally {
1627
1636
  this.pendingNetworkRequests -= 1;
1628
- this.persistence?.changed();
1637
+ this.persistenceRuntime?.changed();
1629
1638
  }
1630
1639
  });
1631
1640
  }
@@ -1714,12 +1723,13 @@ var FateClient = class {
1714
1723
  fetchedItems.push(item);
1715
1724
  }
1716
1725
  await Promise.all([...promises, ...Array.from(groups.values()).map((group) => group.ids.length ? this.fetchByIdAndNormalize(group.type, group.ids, group.fields, group.plan) : Promise.resolve())]);
1717
- if (this.persistence) {
1718
- if (fetchedItems.length) this.persistence.fetched(fetchedAll ? request : {
1726
+ const persistence = this.persistenceRuntime;
1727
+ if (persistence) {
1728
+ if (fetchedItems.length) persistence.fetched(fetchedAll ? request : {
1719
1729
  items: fetchedItems,
1720
1730
  key: `partial:${JSON.stringify([request.key, fetchedItems.map((item) => [item.name, "ids" in item ? item.ids : null])])}`
1721
1731
  }, options.persist);
1722
- if (!fetchedItems.length || !fetchedAll) this.persistence.used(request, options.persist);
1732
+ if (!fetchedItems.length || !fetchedAll) persistence.used(request, options.persist);
1723
1733
  }
1724
1734
  }
1725
1735
  hasRequestData(request) {
@@ -1,4 +1,4 @@
1
- import { O as EntityId, g as List } from "./transport-DqjhjLfC.mjs";
1
+ import { A as EntityId, v as List } from "./transport-DR0fwleU.mjs";
2
2
  //#region src/list.d.ts
3
3
  type ListEntry = Readonly<{
4
4
  cursor?: string;
package/lib/list.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { n as getListEntries, t as ListEntry } from "./list-BRT1VtiT.mjs";
1
+ import { n as getListEntries, t as ListEntry } from "./list-5hrTVoiB.mjs";
2
2
  export { ListEntry, getListEntries };
@@ -1,29 +1,25 @@
1
- import { a as PersistenceSession, i as Persistence, o as PersistenceSnapshot } from "./transport-DqjhjLfC.mjs";
1
+ import { a as Persistence, c as RequestPersistenceOptions, i as PersistedMutationStatus, o as PersistenceSession, s as PersistenceSnapshot } from "./transport-DR0fwleU.mjs";
2
2
  //#region src/persistence.d.ts
3
3
  /**
4
- * Backend-neutral durable storage. Writes replace one value atomically and resolve
5
- * only after commit. Exclusive sections must coordinate ALL instances using this
6
- * key (including other tabs/processes). Use distinct lock names independently.
4
+ * Backend-neutral durable storage. Batches apply atomically and resolve only after
5
+ * commit. Exclusive sections must coordinate ALL instances using this key
6
+ * (including other tabs/processes). Use distinct lock names independently.
7
7
  */
8
- interface PersistenceStorage {
8
+ export type PersistenceStorageEntry = Readonly<{
9
+ key: string;
10
+ value: unknown;
11
+ }>;
12
+ export type PersistenceStorageWrite = readonly [key: string, value: unknown];
13
+ export interface PersistenceStorage {
9
14
  exclusive<T>(key: string, run: () => Promise<T>): Promise<T>;
10
15
  read(key: string): Promise<unknown>;
11
16
  /** Ordered, bounded scan. Return keys strictly after `after`, under `prefix`. */
12
- scan(prefix: string, after?: string, limit?: number): Promise<Array<{
13
- key: string;
14
- value: unknown;
15
- }>>;
17
+ scan(prefix: string, after?: string, limit?: number): Promise<Array<PersistenceStorageEntry>>;
16
18
  subscribe?(key: string, listener: () => void): () => void;
17
- write(key: string, value: unknown): Promise<void>;
18
19
  /** Atomically apply a batch. Undefined deletes the key. */
19
- writeBatch(entries: ReadonlyArray<readonly [string, unknown]>): Promise<void>;
20
+ writeBatch(entries: ReadonlyArray<PersistenceStorageWrite>): Promise<void>;
20
21
  }
21
- /**
22
- * Enables cache persistence and durable delivery through the existing mutation API.
23
- * Import this entry point only in applications using persistence. Storage keys must
24
- * isolate authenticated accounts/workspaces and match the server's identity scope.
25
- */
26
- declare function createPersistence({ key, maxAge, maxBytes, online, retryDelay, storage }: {
22
+ export type PersistenceOptions = Readonly<{
27
23
  key: string;
28
24
  /** Maximum disk retention since a successful fetch, in milliseconds. Defaults to one day. */
29
25
  maxAge?: number;
@@ -33,6 +29,12 @@ declare function createPersistence({ key, maxAge, maxBytes, online, retryDelay,
33
29
  online?: () => boolean;
34
30
  retryDelay?: number;
35
31
  storage: PersistenceStorage;
36
- }): Persistence;
32
+ }>;
33
+ /**
34
+ * Enables cache persistence and durable delivery through the existing mutation API.
35
+ * Import this entry point only in applications using persistence. Storage keys must
36
+ * isolate authenticated accounts/workspaces and match the server's identity scope.
37
+ */
38
+ export declare function createPersistence({ key, maxAge, maxBytes, online, retryDelay, storage }: PersistenceOptions): Persistence;
37
39
  //#endregion
38
- export { type Persistence, type PersistenceSession, type PersistenceSnapshot, PersistenceStorage, createPersistence };
40
+ export type { PersistedMutationStatus, Persistence, PersistenceSession, PersistenceSnapshot, RequestPersistenceOptions };