@abloatai/ablo 0.35.0 → 0.37.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.
Files changed (622) hide show
  1. package/AGENTS.md +2 -2
  2. package/CHANGELOG.md +71 -1929
  3. package/NOTICE +2 -2
  4. package/README.md +23 -532
  5. package/assets/banner.png +0 -0
  6. package/dist/auth.d.ts +2 -0
  7. package/dist/auth.d.ts.map +1 -0
  8. package/dist/auth.js +2 -0
  9. package/dist/auth.js.map +1 -0
  10. package/dist/client.d.ts +3 -0
  11. package/dist/client.d.ts.map +1 -0
  12. package/dist/client.js +3 -0
  13. package/dist/client.js.map +1 -0
  14. package/dist/coordination.d.ts +2 -0
  15. package/dist/coordination.d.ts.map +1 -0
  16. package/dist/coordination.js +2 -0
  17. package/dist/coordination.js.map +1 -0
  18. package/dist/index.d.ts +3 -112
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +3 -161
  21. package/dist/index.js.map +1 -0
  22. package/dist/react.d.ts +4 -0
  23. package/dist/react.d.ts.map +1 -0
  24. package/dist/react.js +3 -0
  25. package/dist/react.js.map +1 -0
  26. package/dist/schema.d.ts +2 -0
  27. package/dist/schema.d.ts.map +1 -0
  28. package/dist/schema.js +2 -0
  29. package/dist/schema.js.map +1 -0
  30. package/dist/server.d.ts +2 -0
  31. package/dist/server.d.ts.map +1 -0
  32. package/dist/server.js +2 -0
  33. package/dist/server.js.map +1 -0
  34. package/dist/source-conformance.d.ts +2 -0
  35. package/dist/source-conformance.d.ts.map +1 -0
  36. package/dist/source-conformance.js +2 -0
  37. package/dist/source-conformance.js.map +1 -0
  38. package/dist/source-drizzle.d.ts +2 -0
  39. package/dist/source-drizzle.d.ts.map +1 -0
  40. package/dist/source-drizzle.js +2 -0
  41. package/dist/source-drizzle.js.map +1 -0
  42. package/dist/source-kysely.d.ts +2 -0
  43. package/dist/source-kysely.d.ts.map +1 -0
  44. package/dist/source-kysely.js +2 -0
  45. package/dist/source-kysely.js.map +1 -0
  46. package/dist/source-next.d.ts +2 -0
  47. package/dist/source-next.d.ts.map +1 -0
  48. package/dist/source-next.js +2 -0
  49. package/dist/source-next.js.map +1 -0
  50. package/dist/source.d.ts +2 -0
  51. package/dist/source.d.ts.map +1 -0
  52. package/dist/source.js +2 -0
  53. package/dist/source.js.map +1 -0
  54. package/dist/wire.d.ts +2 -0
  55. package/dist/wire.d.ts.map +1 -0
  56. package/dist/wire.js +2 -0
  57. package/dist/wire.js.map +1 -0
  58. package/docs/agents.md +2 -2
  59. package/docs/api-keys.md +13 -12
  60. package/docs/api.md +15 -53
  61. package/docs/audit.md +4 -3
  62. package/docs/cli.md +11 -11
  63. package/docs/client-behavior.md +9 -9
  64. package/docs/concurrency-convention.md +28 -42
  65. package/docs/coordination.md +228 -86
  66. package/docs/data-sources.md +5 -5
  67. package/docs/debugging.md +34 -12
  68. package/docs/deployment.md +8 -8
  69. package/docs/examples/agent-human.md +4 -4
  70. package/docs/examples/ai-sdk-tool.md +1 -1
  71. package/docs/examples/existing-python-backend.md +15 -4
  72. package/docs/examples/nextjs.md +27 -6
  73. package/docs/examples/scoped-agent.md +3 -3
  74. package/docs/examples/server-agent.md +2 -2
  75. package/docs/groups.md +57 -3
  76. package/docs/guarantees.md +37 -10
  77. package/docs/how-it-works.md +32 -8
  78. package/docs/idempotency.md +6 -6
  79. package/docs/identity.md +24 -24
  80. package/docs/index.md +8 -8
  81. package/docs/integration-guide.md +38 -16
  82. package/docs/internal/README.md +18 -0
  83. package/docs/internal/agent-fleet-coordination-design.md +171 -0
  84. package/docs/internal/agent-orchestration.md +58 -0
  85. package/docs/internal/commit-identifiers.md +91 -0
  86. package/docs/internal/concurrency-open-decisions.md +37 -0
  87. package/docs/internal/data-source-reverse-channel.md +150 -0
  88. package/docs/internal/per-field-conflict-detection.md +165 -0
  89. package/docs/internal/postgres-replication.md +64 -0
  90. package/docs/internal/serializable-schema.md +119 -0
  91. package/docs/internal/structure.md +32 -0
  92. package/docs/mcp.md +9 -9
  93. package/docs/migration.md +37 -18
  94. package/docs/projects.md +1 -1
  95. package/docs/quickstart.md +2 -2
  96. package/docs/react.md +24 -13
  97. package/docs/schema-contract.md +3 -3
  98. package/docs/sessions.md +91 -37
  99. package/docs/webhooks.md +9 -9
  100. package/examples/README.md +2 -2
  101. package/examples/data-source/README.md +1 -1
  102. package/examples/data-source/ablo-driver.ts +1 -1
  103. package/examples/data-source/customer-server.ts +1 -1
  104. package/examples/data-source/run.ts +1 -1
  105. package/examples/data-source/schema.ts +1 -1
  106. package/examples/quickstart.ts +2 -2
  107. package/llms.txt +12 -12
  108. package/package.json +64 -174
  109. package/dist/BaseSyncedStore.d.ts +0 -823
  110. package/dist/BaseSyncedStore.js +0 -1955
  111. package/dist/Database.d.ts +0 -335
  112. package/dist/Database.js +0 -1500
  113. package/dist/InstanceCache.d.ts +0 -233
  114. package/dist/InstanceCache.js +0 -1164
  115. package/dist/LazyReferenceCollection.d.ts +0 -177
  116. package/dist/LazyReferenceCollection.js +0 -461
  117. package/dist/Model.d.ts +0 -444
  118. package/dist/Model.js +0 -909
  119. package/dist/ModelRegistry.d.ts +0 -221
  120. package/dist/ModelRegistry.js +0 -537
  121. package/dist/NetworkMonitor.d.ts +0 -26
  122. package/dist/NetworkMonitor.js +0 -77
  123. package/dist/RuntimeContext.d.ts +0 -52
  124. package/dist/RuntimeContext.js +0 -80
  125. package/dist/SyncClient.d.ts +0 -551
  126. package/dist/SyncClient.js +0 -2199
  127. package/dist/adapters/alwaysOnline.d.ts +0 -14
  128. package/dist/adapters/alwaysOnline.js +0 -17
  129. package/dist/adapters/inMemoryStorage.d.ts +0 -31
  130. package/dist/adapters/inMemoryStorage.js +0 -110
  131. package/dist/ai-sdk/coordinatedTool.d.ts +0 -120
  132. package/dist/ai-sdk/coordinatedTool.js +0 -134
  133. package/dist/ai-sdk/coordinationContext.d.ts +0 -46
  134. package/dist/ai-sdk/coordinationContext.js +0 -106
  135. package/dist/ai-sdk/index.d.ts +0 -121
  136. package/dist/ai-sdk/index.js +0 -121
  137. package/dist/ai-sdk/wrap.d.ts +0 -65
  138. package/dist/ai-sdk/wrap.js +0 -39
  139. package/dist/auth/index.d.ts +0 -1
  140. package/dist/auth/index.js +0 -8
  141. package/dist/batching/index.d.ts +0 -55
  142. package/dist/batching/index.js +0 -147
  143. package/dist/cli.cjs +0 -288600
  144. package/dist/client/Ablo.d.ts +0 -231
  145. package/dist/client/Ablo.js +0 -149
  146. package/dist/client/abloClient.d.ts +0 -309
  147. package/dist/client/abloClient.js +0 -13
  148. package/dist/client/clientPrelude.d.ts +0 -52
  149. package/dist/client/clientPrelude.js +0 -60
  150. package/dist/client/consoleLogger.d.ts +0 -35
  151. package/dist/client/consoleLogger.js +0 -44
  152. package/dist/client/coreClient.d.ts +0 -60
  153. package/dist/client/coreClient.js +0 -118
  154. package/dist/client/createInternalComponents.d.ts +0 -46
  155. package/dist/client/createInternalComponents.js +0 -92
  156. package/dist/client/createModelProxy.d.ts +0 -228
  157. package/dist/client/createModelProxy.js +0 -818
  158. package/dist/client/humans.d.ts +0 -48
  159. package/dist/client/humans.js +0 -52
  160. package/dist/client/modelRegistration.d.ts +0 -10
  161. package/dist/client/modelRegistration.js +0 -312
  162. package/dist/client/options.d.ts +0 -461
  163. package/dist/client/options.js +0 -7
  164. package/dist/client/reactiveEngine.d.ts +0 -48
  165. package/dist/client/reactiveEngine.js +0 -910
  166. package/dist/client/resourceTypes.d.ts +0 -12
  167. package/dist/client/resourceTypes.js +0 -10
  168. package/dist/client/schemaConfig.d.ts +0 -44
  169. package/dist/client/schemaConfig.js +0 -185
  170. package/dist/client/validateAbloOptions.d.ts +0 -42
  171. package/dist/client/validateAbloOptions.js +0 -43
  172. package/dist/client/wsMutationExecutor.d.ts +0 -27
  173. package/dist/client/wsMutationExecutor.js +0 -72
  174. package/dist/context.d.ts +0 -29
  175. package/dist/context.js +0 -58
  176. package/dist/coordination/ClaimLog.d.ts +0 -26
  177. package/dist/coordination/ClaimLog.js +0 -32
  178. package/dist/coordination/index.d.ts +0 -1
  179. package/dist/coordination/index.js +0 -8
  180. package/dist/core/DatabaseManager.d.ts +0 -105
  181. package/dist/core/DatabaseManager.js +0 -387
  182. package/dist/core/QueryProcessor.d.ts +0 -75
  183. package/dist/core/QueryProcessor.js +0 -255
  184. package/dist/core/QueryView.d.ts +0 -79
  185. package/dist/core/QueryView.js +0 -218
  186. package/dist/core/StoreManager.d.ts +0 -112
  187. package/dist/core/StoreManager.js +0 -302
  188. package/dist/core/ViewRegistry.d.ts +0 -20
  189. package/dist/core/ViewRegistry.js +0 -55
  190. package/dist/core/index.d.ts +0 -33
  191. package/dist/core/index.js +0 -48
  192. package/dist/core/openIDBWithTimeout.d.ts +0 -65
  193. package/dist/core/openIDBWithTimeout.js +0 -153
  194. package/dist/core/queryUtils.d.ts +0 -45
  195. package/dist/core/queryUtils.js +0 -69
  196. package/dist/core/storeContract.d.ts +0 -145
  197. package/dist/core/storeContract.js +0 -12
  198. package/dist/docs/catalog.d.ts +0 -72
  199. package/dist/docs/catalog.js +0 -227
  200. package/dist/docs/index.d.ts +0 -10
  201. package/dist/docs/index.js +0 -10
  202. package/dist/environment.d.ts +0 -1
  203. package/dist/environment.js +0 -8
  204. package/dist/interfaces/index.d.ts +0 -311
  205. package/dist/interfaces/index.js +0 -9
  206. package/dist/keys/index.d.ts +0 -1
  207. package/dist/keys/index.js +0 -8
  208. package/dist/mutators/RecordingMutation.d.ts +0 -36
  209. package/dist/mutators/RecordingMutation.js +0 -182
  210. package/dist/mutators/Transaction.d.ts +0 -40
  211. package/dist/mutators/Transaction.js +0 -58
  212. package/dist/mutators/UndoManager.d.ts +0 -258
  213. package/dist/mutators/UndoManager.js +0 -658
  214. package/dist/mutators/defineMutators.d.ts +0 -60
  215. package/dist/mutators/defineMutators.js +0 -18
  216. package/dist/mutators/inverseOp.d.ts +0 -126
  217. package/dist/mutators/inverseOp.js +0 -71
  218. package/dist/mutators/mutateActions.d.ts +0 -45
  219. package/dist/mutators/mutateActions.js +0 -105
  220. package/dist/mutators/readerActions.d.ts +0 -33
  221. package/dist/mutators/readerActions.js +0 -57
  222. package/dist/mutators/undoApply.d.ts +0 -51
  223. package/dist/mutators/undoApply.js +0 -117
  224. package/dist/policy/index.d.ts +0 -21
  225. package/dist/policy/index.js +0 -20
  226. package/dist/query/client.d.ts +0 -61
  227. package/dist/query/client.js +0 -137
  228. package/dist/query/types.d.ts +0 -85
  229. package/dist/query/types.js +0 -16
  230. package/dist/react/AbloProvider.d.ts +0 -230
  231. package/dist/react/AbloProvider.js +0 -455
  232. package/dist/react/ClientSideSuspense.d.ts +0 -36
  233. package/dist/react/ClientSideSuspense.js +0 -17
  234. package/dist/react/DefaultFallback.d.ts +0 -24
  235. package/dist/react/DefaultFallback.js +0 -43
  236. package/dist/react/context.d.ts +0 -55
  237. package/dist/react/context.js +0 -29
  238. package/dist/react/index.d.ts +0 -61
  239. package/dist/react/index.js +0 -66
  240. package/dist/react/internalContext.d.ts +0 -33
  241. package/dist/react/internalContext.js +0 -3
  242. package/dist/react/useAblo.d.ts +0 -75
  243. package/dist/react/useAblo.js +0 -102
  244. package/dist/react/useCurrentUserId.d.ts +0 -22
  245. package/dist/react/useCurrentUserId.js +0 -34
  246. package/dist/react/useErrorListener.d.ts +0 -20
  247. package/dist/react/useErrorListener.js +0 -38
  248. package/dist/react/useMutationFailureListener.d.ts +0 -26
  249. package/dist/react/useMutationFailureListener.js +0 -38
  250. package/dist/react/useMutators.d.ts +0 -56
  251. package/dist/react/useMutators.js +0 -84
  252. package/dist/react/useReactive.d.ts +0 -35
  253. package/dist/react/useReactive.js +0 -123
  254. package/dist/react/useSyncStatus.d.ts +0 -59
  255. package/dist/react/useSyncStatus.js +0 -76
  256. package/dist/react/useUndoScope.d.ts +0 -34
  257. package/dist/react/useUndoScope.js +0 -81
  258. package/dist/schema/coordination.d.ts +0 -112
  259. package/dist/schema/coordination.js +0 -129
  260. package/dist/schema/ddl.d.ts +0 -97
  261. package/dist/schema/ddl.js +0 -491
  262. package/dist/schema/ddlLock.d.ts +0 -35
  263. package/dist/schema/ddlLock.js +0 -46
  264. package/dist/schema/diff.d.ts +0 -225
  265. package/dist/schema/diff.js +0 -289
  266. package/dist/schema/generate.d.ts +0 -19
  267. package/dist/schema/generate.js +0 -86
  268. package/dist/schema/index.d.ts +0 -41
  269. package/dist/schema/index.js +0 -76
  270. package/dist/schema/queries.d.ts +0 -201
  271. package/dist/schema/queries.js +0 -144
  272. package/dist/schema/select.d.ts +0 -40
  273. package/dist/schema/select.js +0 -87
  274. package/dist/schema/serialize.d.ts +0 -115
  275. package/dist/schema/serialize.js +0 -262
  276. package/dist/schema/sugar.d.ts +0 -109
  277. package/dist/schema/sugar.js +0 -83
  278. package/dist/schema/syncDeltaRow.d.ts +0 -6
  279. package/dist/schema/syncDeltaRow.js +0 -6
  280. package/dist/server/adapter.d.ts +0 -173
  281. package/dist/server/adapter.js +0 -18
  282. package/dist/server/commit.d.ts +0 -107
  283. package/dist/server/commit.js +0 -1
  284. package/dist/server/index.d.ts +0 -14
  285. package/dist/server/index.js +0 -2
  286. package/dist/server/readConfig.d.ts +0 -80
  287. package/dist/server/readConfig.js +0 -8
  288. package/dist/server/storageMode.d.ts +0 -23
  289. package/dist/server/storageMode.js +0 -17
  290. package/dist/source/adapter.d.ts +0 -81
  291. package/dist/source/adapter.js +0 -22
  292. package/dist/source/adapters/drizzle.d.ts +0 -48
  293. package/dist/source/adapters/drizzle.js +0 -219
  294. package/dist/source/adapters/kysely.d.ts +0 -42
  295. package/dist/source/adapters/kysely.js +0 -205
  296. package/dist/source/adapters/kyselyMutationCore.d.ts +0 -76
  297. package/dist/source/adapters/kyselyMutationCore.js +0 -125
  298. package/dist/source/adapters/memory.d.ts +0 -13
  299. package/dist/source/adapters/memory.js +0 -130
  300. package/dist/source/adapters/prisma.d.ts +0 -63
  301. package/dist/source/adapters/prisma.js +0 -202
  302. package/dist/source/conformance.d.ts +0 -37
  303. package/dist/source/conformance.js +0 -215
  304. package/dist/source/connector.d.ts +0 -95
  305. package/dist/source/connector.js +0 -266
  306. package/dist/source/connectorProtocol.d.ts +0 -154
  307. package/dist/source/connectorProtocol.js +0 -163
  308. package/dist/source/contract.d.ts +0 -195
  309. package/dist/source/contract.js +0 -164
  310. package/dist/source/factory.d.ts +0 -92
  311. package/dist/source/factory.js +0 -286
  312. package/dist/source/footprint.d.ts +0 -111
  313. package/dist/source/footprint.js +0 -0
  314. package/dist/source/idempotency.d.ts +0 -61
  315. package/dist/source/idempotency.js +0 -144
  316. package/dist/source/index.d.ts +0 -23
  317. package/dist/source/index.js +0 -30
  318. package/dist/source/migrations.d.ts +0 -21
  319. package/dist/source/migrations.js +0 -103
  320. package/dist/source/next.d.ts +0 -32
  321. package/dist/source/next.js +0 -25
  322. package/dist/source/pushQueue.d.ts +0 -134
  323. package/dist/source/pushQueue.js +0 -256
  324. package/dist/source/signing.d.ts +0 -92
  325. package/dist/source/signing.js +0 -162
  326. package/dist/source/types.d.ts +0 -401
  327. package/dist/source/types.js +0 -59
  328. package/dist/stores/ObjectStore.d.ts +0 -115
  329. package/dist/stores/ObjectStore.js +0 -393
  330. package/dist/stores/ObjectStoreContract.d.ts +0 -38
  331. package/dist/stores/ObjectStoreContract.js +0 -1
  332. package/dist/stores/SyncActionStore.d.ts +0 -97
  333. package/dist/stores/SyncActionStore.js +0 -504
  334. package/dist/stores/syncAction.d.ts +0 -26
  335. package/dist/stores/syncAction.js +0 -16
  336. package/dist/surface.d.ts +0 -36
  337. package/dist/surface.js +0 -75
  338. package/dist/sync/BootstrapFetcher.d.ts +0 -280
  339. package/dist/sync/BootstrapFetcher.js +0 -962
  340. package/dist/sync/ConnectionManager.d.ts +0 -8
  341. package/dist/sync/ConnectionManager.js +0 -8
  342. package/dist/sync/OnDemandLoader.d.ts +0 -228
  343. package/dist/sync/OnDemandLoader.js +0 -742
  344. package/dist/sync/SubscriptionManager.d.ts +0 -159
  345. package/dist/sync/SubscriptionManager.js +0 -243
  346. package/dist/sync/SyncWebSocket.d.ts +0 -173
  347. package/dist/sync/SyncWebSocket.js +0 -438
  348. package/dist/sync/awaitClaimGrant.d.ts +0 -6
  349. package/dist/sync/awaitClaimGrant.js +0 -6
  350. package/dist/sync/bootstrapApply.d.ts +0 -70
  351. package/dist/sync/bootstrapApply.js +0 -73
  352. package/dist/sync/commitFrames.d.ts +0 -8
  353. package/dist/sync/commitFrames.js +0 -8
  354. package/dist/sync/contextPorts.d.ts +0 -18
  355. package/dist/sync/contextPorts.js +0 -31
  356. package/dist/sync/createClaimStream.d.ts +0 -7
  357. package/dist/sync/createClaimStream.js +0 -7
  358. package/dist/sync/createPresenceStream.d.ts +0 -69
  359. package/dist/sync/createPresenceStream.js +0 -200
  360. package/dist/sync/createSnapshot.d.ts +0 -29
  361. package/dist/sync/createSnapshot.js +0 -118
  362. package/dist/sync/credentialLifecycle.d.ts +0 -7
  363. package/dist/sync/credentialLifecycle.js +0 -7
  364. package/dist/sync/deltaPipeline.d.ts +0 -113
  365. package/dist/sync/deltaPipeline.js +0 -261
  366. package/dist/sync/groupChange.d.ts +0 -113
  367. package/dist/sync/groupChange.js +0 -242
  368. package/dist/sync/participants.d.ts +0 -115
  369. package/dist/sync/participants.js +0 -344
  370. package/dist/sync/persistedPrefix.d.ts +0 -12
  371. package/dist/sync/persistedPrefix.js +0 -22
  372. package/dist/sync/schemaDrift.d.ts +0 -55
  373. package/dist/sync/schemaDrift.js +0 -53
  374. package/dist/sync/schemas.d.ts +0 -70
  375. package/dist/sync/schemas.js +0 -94
  376. package/dist/sync/syncCursor.d.ts +0 -40
  377. package/dist/sync/syncCursor.js +0 -55
  378. package/dist/sync/syncPlan.d.ts +0 -54
  379. package/dist/sync/syncPlan.js +0 -50
  380. package/dist/sync/wsFrameHandlers.d.ts +0 -8
  381. package/dist/sync/wsFrameHandlers.js +0 -8
  382. package/dist/testing/fixtures/bootstrap.d.ts +0 -49
  383. package/dist/testing/fixtures/bootstrap.js +0 -59
  384. package/dist/testing/fixtures/deltas.d.ts +0 -83
  385. package/dist/testing/fixtures/deltas.js +0 -136
  386. package/dist/testing/fixtures/httpResponses.d.ts +0 -70
  387. package/dist/testing/fixtures/httpResponses.js +0 -90
  388. package/dist/testing/fixtures/models.d.ts +0 -83
  389. package/dist/testing/fixtures/models.js +0 -272
  390. package/dist/testing/helpers/reactWrapper.d.ts +0 -69
  391. package/dist/testing/helpers/reactWrapper.js +0 -67
  392. package/dist/testing/helpers/syncEngineHarness.d.ts +0 -54
  393. package/dist/testing/helpers/syncEngineHarness.js +0 -73
  394. package/dist/testing/helpers/wait.d.ts +0 -30
  395. package/dist/testing/helpers/wait.js +0 -49
  396. package/dist/testing/index.d.ts +0 -23
  397. package/dist/testing/index.js +0 -33
  398. package/dist/testing/mocks/FakeDatabase.d.ts +0 -18
  399. package/dist/testing/mocks/FakeDatabase.js +0 -10
  400. package/dist/testing/mocks/MockMutationExecutor.d.ts +0 -87
  401. package/dist/testing/mocks/MockMutationExecutor.js +0 -186
  402. package/dist/testing/mocks/MockNetworkMonitor.d.ts +0 -20
  403. package/dist/testing/mocks/MockNetworkMonitor.js +0 -46
  404. package/dist/testing/mocks/MockSyncContext.d.ts +0 -51
  405. package/dist/testing/mocks/MockSyncContext.js +0 -72
  406. package/dist/testing/mocks/MockSyncStore.d.ts +0 -88
  407. package/dist/testing/mocks/MockSyncStore.js +0 -171
  408. package/dist/testing/mocks/MockWebSocket.d.ts +0 -71
  409. package/dist/testing/mocks/MockWebSocket.js +0 -118
  410. package/dist/transaction/ablo.d.ts +0 -88
  411. package/dist/transaction/ablo.js +0 -33
  412. package/dist/transaction/auth/apiKey.d.ts +0 -152
  413. package/dist/transaction/auth/apiKey.js +0 -419
  414. package/dist/transaction/auth/bootstrapScope.d.ts +0 -15
  415. package/dist/transaction/auth/bootstrapScope.js +0 -1
  416. package/dist/transaction/auth/capability.d.ts +0 -177
  417. package/dist/transaction/auth/capability.js +0 -199
  418. package/dist/transaction/auth/credentialEndpoint.d.ts +0 -61
  419. package/dist/transaction/auth/credentialEndpoint.js +0 -86
  420. package/dist/transaction/auth/credentialPolicy.d.ts +0 -148
  421. package/dist/transaction/auth/credentialPolicy.js +0 -125
  422. package/dist/transaction/auth/credentialSource.d.ts +0 -30
  423. package/dist/transaction/auth/credentialSource.js +0 -55
  424. package/dist/transaction/auth/hostedEndpoints.d.ts +0 -21
  425. package/dist/transaction/auth/hostedEndpoints.js +0 -21
  426. package/dist/transaction/auth/identity.d.ts +0 -55
  427. package/dist/transaction/auth/identity.js +0 -210
  428. package/dist/transaction/auth/index.d.ts +0 -162
  429. package/dist/transaction/auth/index.js +0 -304
  430. package/dist/transaction/auth/schemas.d.ts +0 -59
  431. package/dist/transaction/auth/schemas.js +0 -85
  432. package/dist/transaction/auth/sessionMint.d.ts +0 -28
  433. package/dist/transaction/auth/sessionMint.js +0 -85
  434. package/dist/transaction/coordination/awaitClaimGrant.d.ts +0 -49
  435. package/dist/transaction/coordination/awaitClaimGrant.js +0 -112
  436. package/dist/transaction/coordination/claimHeartbeatLoop.d.ts +0 -50
  437. package/dist/transaction/coordination/claimHeartbeatLoop.js +0 -88
  438. package/dist/transaction/coordination/claimMeta.d.ts +0 -49
  439. package/dist/transaction/coordination/claimMeta.js +0 -52
  440. package/dist/transaction/coordination/createClaimStream.d.ts +0 -64
  441. package/dist/transaction/coordination/createClaimStream.js +0 -475
  442. package/dist/transaction/coordination/events.d.ts +0 -74
  443. package/dist/transaction/coordination/events.js +0 -7
  444. package/dist/transaction/coordination/index.d.ts +0 -19
  445. package/dist/transaction/coordination/index.js +0 -44
  446. package/dist/transaction/coordination/locator.d.ts +0 -83
  447. package/dist/transaction/coordination/locator.js +0 -82
  448. package/dist/transaction/coordination/schema.d.ts +0 -1473
  449. package/dist/transaction/coordination/schema.js +0 -1013
  450. package/dist/transaction/coordination/targetConflict.d.ts +0 -2
  451. package/dist/transaction/coordination/targetConflict.js +0 -103
  452. package/dist/transaction/coordination/trace.d.ts +0 -78
  453. package/dist/transaction/coordination/trace.js +0 -138
  454. package/dist/transaction/durableWrites.d.ts +0 -62
  455. package/dist/transaction/durableWrites.js +0 -71
  456. package/dist/transaction/environment.d.ts +0 -105
  457. package/dist/transaction/environment.js +0 -108
  458. package/dist/transaction/errorCodes.d.ts +0 -403
  459. package/dist/transaction/errorCodes.js +0 -480
  460. package/dist/transaction/errors.d.ts +0 -428
  461. package/dist/transaction/errors.js +0 -686
  462. package/dist/transaction/index.d.ts +0 -20
  463. package/dist/transaction/index.js +0 -20
  464. package/dist/transaction/keys/index.d.ts +0 -87
  465. package/dist/transaction/keys/index.js +0 -207
  466. package/dist/transaction/log/syncDeltaRow.d.ts +0 -158
  467. package/dist/transaction/log/syncDeltaRow.js +0 -95
  468. package/dist/transaction/logPosition.d.ts +0 -97
  469. package/dist/transaction/logPosition.js +0 -125
  470. package/dist/transaction/logger.d.ts +0 -16
  471. package/dist/transaction/logger.js +0 -7
  472. package/dist/transaction/observability.d.ts +0 -53
  473. package/dist/transaction/observability.js +0 -19
  474. package/dist/transaction/persistence.d.ts +0 -12
  475. package/dist/transaction/persistence.js +0 -11
  476. package/dist/transaction/plugin.d.ts +0 -192
  477. package/dist/transaction/plugin.js +0 -87
  478. package/dist/transaction/policy/types.d.ts +0 -217
  479. package/dist/transaction/policy/types.js +0 -126
  480. package/dist/transaction/resources/functionalUpdate.d.ts +0 -79
  481. package/dist/transaction/resources/functionalUpdate.js +0 -87
  482. package/dist/transaction/resources/httpResources.d.ts +0 -266
  483. package/dist/transaction/resources/httpResources.js +0 -7
  484. package/dist/transaction/resources/modelOperations.d.ts +0 -319
  485. package/dist/transaction/resources/modelOperations.js +0 -12
  486. package/dist/transaction/resources/mutationOptions.d.ts +0 -66
  487. package/dist/transaction/resources/mutationOptions.js +0 -9
  488. package/dist/transaction/resources/where.d.ts +0 -85
  489. package/dist/transaction/resources/where.js +0 -70
  490. package/dist/transaction/resources/writeOptionsSchema.d.ts +0 -47
  491. package/dist/transaction/resources/writeOptionsSchema.js +0 -73
  492. package/dist/transaction/schema/field.d.ts +0 -126
  493. package/dist/transaction/schema/field.js +0 -265
  494. package/dist/transaction/schema/loadStrategy.d.ts +0 -45
  495. package/dist/transaction/schema/loadStrategy.js +0 -46
  496. package/dist/transaction/schema/model.d.ts +0 -379
  497. package/dist/transaction/schema/model.js +0 -123
  498. package/dist/transaction/schema/openapi.d.ts +0 -57
  499. package/dist/transaction/schema/openapi.js +0 -340
  500. package/dist/transaction/schema/relation.d.ts +0 -199
  501. package/dist/transaction/schema/relation.js +0 -104
  502. package/dist/transaction/schema/residency.d.ts +0 -29
  503. package/dist/transaction/schema/residency.js +0 -25
  504. package/dist/transaction/schema/roles.d.ts +0 -249
  505. package/dist/transaction/schema/roles.js +0 -230
  506. package/dist/transaction/schema/schema.d.ts +0 -324
  507. package/dist/transaction/schema/schema.js +0 -305
  508. package/dist/transaction/schema/tenancy.d.ts +0 -139
  509. package/dist/transaction/schema/tenancy.js +0 -190
  510. package/dist/transaction/transactionLayer.d.ts +0 -82
  511. package/dist/transaction/transactionLayer.js +0 -24
  512. package/dist/transaction/transactions/settlement/commitEnvelope.d.ts +0 -143
  513. package/dist/transaction/transactions/settlement/commitEnvelope.js +0 -161
  514. package/dist/transaction/transactions/settlement/httpCommitEnvelope.d.ts +0 -53
  515. package/dist/transaction/transactions/settlement/httpCommitEnvelope.js +0 -207
  516. package/dist/transaction/transactions/settlement/idempotencyKey.d.ts +0 -10
  517. package/dist/transaction/transactions/settlement/idempotencyKey.js +0 -9
  518. package/dist/transaction/transactions/settlement/pendingWrite.d.ts +0 -112
  519. package/dist/transaction/transactions/settlement/pendingWrite.js +0 -20
  520. package/dist/transaction/transport/commitFrames.d.ts +0 -90
  521. package/dist/transaction/transport/commitFrames.js +0 -134
  522. package/dist/transaction/transport/connectionManager.d.ts +0 -215
  523. package/dist/transaction/transport/connectionManager.js +0 -673
  524. package/dist/transaction/transport/credentialLifecycle.d.ts +0 -177
  525. package/dist/transaction/transport/credentialLifecycle.js +0 -324
  526. package/dist/transaction/transport/heartbeat.d.ts +0 -65
  527. package/dist/transaction/transport/heartbeat.js +0 -93
  528. package/dist/transaction/transport/httpClient.d.ts +0 -123
  529. package/dist/transaction/transport/httpClient.js +0 -145
  530. package/dist/transaction/transport/httpOptions.d.ts +0 -33
  531. package/dist/transaction/transport/httpOptions.js +0 -12
  532. package/dist/transaction/transport/httpTransport.d.ts +0 -8
  533. package/dist/transaction/transport/httpTransport.js +0 -1276
  534. package/dist/transaction/transport/networkProbe.d.ts +0 -84
  535. package/dist/transaction/transport/networkProbe.js +0 -207
  536. package/dist/transaction/transport/wsFrameHandlers.d.ts +0 -128
  537. package/dist/transaction/transport/wsFrameHandlers.js +0 -429
  538. package/dist/transaction/transport/wsTransport.d.ts +0 -576
  539. package/dist/transaction/transport/wsTransport.js +0 -1017
  540. package/dist/transaction/types/assertExact.d.ts +0 -17
  541. package/dist/transaction/types/assertExact.js +0 -1
  542. package/dist/transaction/types/global.d.ts +0 -107
  543. package/dist/transaction/types/global.js +0 -40
  544. package/dist/transaction/types/index.d.ts +0 -205
  545. package/dist/transaction/types/index.js +0 -56
  546. package/dist/transaction/types/modelData.d.ts +0 -10
  547. package/dist/transaction/types/modelData.js +0 -9
  548. package/dist/transaction/types/participant.d.ts +0 -20
  549. package/dist/transaction/types/participant.js +0 -10
  550. package/dist/transaction/types/streams.d.ts +0 -540
  551. package/dist/transaction/types/streams.js +0 -11
  552. package/dist/transaction/utils/asyncIterator.d.ts +0 -34
  553. package/dist/transaction/utils/asyncIterator.js +0 -135
  554. package/dist/transaction/utils/duration.d.ts +0 -25
  555. package/dist/transaction/utils/duration.js +0 -45
  556. package/dist/transaction/utils/json.d.ts +0 -57
  557. package/dist/transaction/utils/json.js +0 -276
  558. package/dist/transaction/wire/accountResponses.d.ts +0 -351
  559. package/dist/transaction/wire/accountResponses.js +0 -255
  560. package/dist/transaction/wire/auth.d.ts +0 -49
  561. package/dist/transaction/wire/auth.js +0 -57
  562. package/dist/transaction/wire/bootstrapReason.d.ts +0 -9
  563. package/dist/transaction/wire/bootstrapReason.js +0 -8
  564. package/dist/transaction/wire/claimEvent.d.ts +0 -76
  565. package/dist/transaction/wire/claimEvent.js +0 -73
  566. package/dist/transaction/wire/claims.d.ts +0 -463
  567. package/dist/transaction/wire/claims.js +0 -229
  568. package/dist/transaction/wire/commit.d.ts +0 -603
  569. package/dist/transaction/wire/commit.js +0 -321
  570. package/dist/transaction/wire/delta.d.ts +0 -250
  571. package/dist/transaction/wire/delta.js +0 -147
  572. package/dist/transaction/wire/errorEnvelope.d.ts +0 -72
  573. package/dist/transaction/wire/errorEnvelope.js +0 -123
  574. package/dist/transaction/wire/feedCursor.d.ts +0 -60
  575. package/dist/transaction/wire/feedCursor.js +0 -82
  576. package/dist/transaction/wire/feedEvent.d.ts +0 -177
  577. package/dist/transaction/wire/feedEvent.js +0 -39
  578. package/dist/transaction/wire/frames.d.ts +0 -194
  579. package/dist/transaction/wire/frames.js +0 -50
  580. package/dist/transaction/wire/inboundFrames.d.ts +0 -552
  581. package/dist/transaction/wire/inboundFrames.js +0 -116
  582. package/dist/transaction/wire/index.d.ts +0 -50
  583. package/dist/transaction/wire/index.js +0 -74
  584. package/dist/transaction/wire/listEnvelope.d.ts +0 -37
  585. package/dist/transaction/wire/listEnvelope.js +0 -42
  586. package/dist/transaction/wire/modelResponses.d.ts +0 -85
  587. package/dist/transaction/wire/modelResponses.js +0 -43
  588. package/dist/transaction/wire/protocol.d.ts +0 -38
  589. package/dist/transaction/wire/protocol.js +0 -38
  590. package/dist/transaction/wire/protocolVersion.d.ts +0 -73
  591. package/dist/transaction/wire/protocolVersion.js +0 -83
  592. package/dist/transactions/mutations/MutationQueue.d.ts +0 -655
  593. package/dist/transactions/mutations/MutationQueue.js +0 -2797
  594. package/dist/transactions/mutations/MutationStore.d.ts +0 -20
  595. package/dist/transactions/mutations/MutationStore.js +0 -53
  596. package/dist/transactions/mutations/UnconfirmedWrites.d.ts +0 -82
  597. package/dist/transactions/mutations/UnconfirmedWrites.js +0 -104
  598. package/dist/transactions/mutations/coalesceRules.d.ts +0 -58
  599. package/dist/transactions/mutations/coalesceRules.js +0 -140
  600. package/dist/transactions/mutations/commitLatency.d.ts +0 -52
  601. package/dist/transactions/mutations/commitLatency.js +0 -130
  602. package/dist/transactions/mutations/commitOutboxStore.d.ts +0 -28
  603. package/dist/transactions/mutations/commitOutboxStore.js +0 -26
  604. package/dist/transactions/mutations/commitPayload.d.ts +0 -164
  605. package/dist/transactions/mutations/commitPayload.js +0 -152
  606. package/dist/transactions/mutations/deltaConfirmation.d.ts +0 -59
  607. package/dist/transactions/mutations/deltaConfirmation.js +0 -233
  608. package/dist/transactions/mutations/durableWriteStore.d.ts +0 -14
  609. package/dist/transactions/mutations/durableWriteStore.js +0 -12
  610. package/dist/transactions/mutations/optimisticApply.d.ts +0 -49
  611. package/dist/transactions/mutations/optimisticApply.js +0 -65
  612. package/dist/transactions/mutations/replayValidation.d.ts +0 -186
  613. package/dist/transactions/mutations/replayValidation.js +0 -163
  614. package/dist/utils/mobxSetup.d.ts +0 -53
  615. package/dist/utils/mobxSetup.js +0 -330
  616. package/dist/webhooks/events.d.ts +0 -43
  617. package/dist/webhooks/events.js +0 -42
  618. package/dist/webhooks/index.d.ts +0 -8
  619. package/dist/webhooks/index.js +0 -8
  620. package/dist/wire/index.d.ts +0 -1
  621. package/dist/wire/index.js +0 -8
  622. package/docs/interaction-model.md +0 -99
@@ -1,49 +0,0 @@
1
- /**
2
- * Local-first apply and rollback bookkeeping for pending mutations.
3
- *
4
- * When a change is written before the server confirms it, these functions
5
- * record it in a ledger and emit an `optimistic:*` event; separate listeners
6
- * apply the change to the in-memory data and, on rollback, restore the value
7
- * it replaced. Each function takes the ledger and a small event emitter rather
8
- * than any larger object, so the rules have no dependencies of their own and
9
- * can be tested in isolation.
10
- */
11
- import type { Model } from '../../Model.js';
12
- import type { MutationInput, QueuedMutation } from './commitPayload.js';
13
- /**
14
- * One tracked optimistic mutation: the live model plus the value it held
15
- * before the change, kept so a rollback can restore it.
16
- */
17
- export interface OptimisticUpdateEntry {
18
- model: Model;
19
- previousState: MutationInput | null | undefined;
20
- transaction: QueuedMutation;
21
- }
22
- /**
23
- * The event emitter these functions use to announce each optimistic change and
24
- * its rollback. You supply the implementation.
25
- */
26
- export interface OptimisticEmitter {
27
- emit(event: string, payload: unknown): void;
28
- }
29
- /**
30
- * Record an optimistic create and announce it. There is no prior value to
31
- * restore, so the rollback pre-image is `null`.
32
- */
33
- export declare function applyOptimisticCreate(optimisticUpdates: Map<string, OptimisticUpdateEntry>, emitter: OptimisticEmitter, model: Model, transaction: QueuedMutation): void;
34
- /**
35
- * Record an optimistic update and announce it, keeping the row's prior value so
36
- * a rollback can put it back.
37
- */
38
- export declare function applyOptimisticUpdate(optimisticUpdates: Map<string, OptimisticUpdateEntry>, emitter: OptimisticEmitter, model: Model, transaction: QueuedMutation): void;
39
- /**
40
- * Record an optimistic delete and announce it, keeping the deleted row so a
41
- * rollback can restore it.
42
- */
43
- export declare function applyOptimisticDelete(optimisticUpdates: Map<string, OptimisticUpdateEntry>, emitter: OptimisticEmitter, model: Model, transaction: QueuedMutation): void;
44
- /**
45
- * Undo an optimistic mutation by its transaction id: emit `optimistic:rollback`
46
- * with the saved pre-image so listeners can restore the prior value, then drop
47
- * the ledger entry. Does nothing if the transaction was never tracked.
48
- */
49
- export declare function rollbackOptimistic(optimisticUpdates: Map<string, OptimisticUpdateEntry>, emitter: OptimisticEmitter, transaction: QueuedMutation, reason?: string, error?: Error): Promise<void>;
@@ -1,65 +0,0 @@
1
- /**
2
- * Local-first apply and rollback bookkeeping for pending mutations.
3
- *
4
- * When a change is written before the server confirms it, these functions
5
- * record it in a ledger and emit an `optimistic:*` event; separate listeners
6
- * apply the change to the in-memory data and, on rollback, restore the value
7
- * it replaced. Each function takes the ledger and a small event emitter rather
8
- * than any larger object, so the rules have no dependencies of their own and
9
- * can be tested in isolation.
10
- */
11
- /**
12
- * Record an optimistic create and announce it. There is no prior value to
13
- * restore, so the rollback pre-image is `null`.
14
- */
15
- export function applyOptimisticCreate(optimisticUpdates, emitter, model, transaction) {
16
- optimisticUpdates.set(transaction.id, {
17
- model,
18
- previousState: null,
19
- transaction,
20
- });
21
- emitter.emit('optimistic:create', { model, transaction });
22
- }
23
- /**
24
- * Record an optimistic update and announce it, keeping the row's prior value so
25
- * a rollback can put it back.
26
- */
27
- export function applyOptimisticUpdate(optimisticUpdates, emitter, model, transaction) {
28
- optimisticUpdates.set(transaction.id, {
29
- model,
30
- previousState: transaction.previousData,
31
- transaction,
32
- });
33
- emitter.emit('optimistic:update', { model, transaction });
34
- }
35
- /**
36
- * Record an optimistic delete and announce it, keeping the deleted row so a
37
- * rollback can restore it.
38
- */
39
- export function applyOptimisticDelete(optimisticUpdates, emitter, model, transaction) {
40
- optimisticUpdates.set(transaction.id, {
41
- model,
42
- previousState: transaction.previousData,
43
- transaction,
44
- });
45
- emitter.emit('optimistic:delete', { model, transaction });
46
- }
47
- /**
48
- * Undo an optimistic mutation by its transaction id: emit `optimistic:rollback`
49
- * with the saved pre-image so listeners can restore the prior value, then drop
50
- * the ledger entry. Does nothing if the transaction was never tracked.
51
- */
52
- export function rollbackOptimistic(optimisticUpdates, emitter, transaction, reason, error) {
53
- const optimistic = optimisticUpdates.get(transaction.id);
54
- if (!optimistic)
55
- return Promise.resolve();
56
- emitter.emit('optimistic:rollback', {
57
- model: optimistic.model,
58
- previousState: optimistic.previousState,
59
- transaction,
60
- reason: reason ?? 'unknown',
61
- error,
62
- });
63
- optimisticUpdates.delete(transaction.id);
64
- return Promise.resolve();
65
- }
@@ -1,186 +0,0 @@
1
- /**
2
- * The validation boundary for replaying persisted transactions after a restart.
3
- *
4
- * Rows read back from the on-disk transaction store may have been written by an
5
- * earlier run — possibly by an older version of this package, possibly
6
- * corrupted. Rather than trust them, the schemas here validate exactly the
7
- * fields the transaction queue and the offline-mutation restore read during
8
- * replay. A row that fails to parse is dropped and reported, never replayed as
9
- * a malformed commit.
10
- *
11
- * The same store also holds two kinds of rows that are not replayable
12
- * transactions — the offline mutation queue (`type: 'queue'`) and delta-await
13
- * markers (`type: 'awaiting_delta'`), each owned by another part of the client.
14
- * {@link isNonReplayablePersistedRow} recognizes them so they are skipped
15
- * quietly rather than flagged as corruption.
16
- */
17
- import { z } from 'zod';
18
- import type { QueuedMutation } from './commitPayload.js';
19
- /**
20
- * The shape of a persisted transaction that can be replayed: the fields the
21
- * transaction queue reads when it re-enqueues the row — its id, operation type,
22
- * model addressing, payload, and identity context. Any remaining bookkeeping is
23
- * filled in with defaults when the row is rehydrated by
24
- * {@link deserializePersistedTransaction}.
25
- */
26
- export declare const persistedTransactionSchema: z.ZodObject<{
27
- id: z.ZodString;
28
- type: z.ZodEnum<{
29
- update: "update";
30
- create: "create";
31
- delete: "delete";
32
- archive: "archive";
33
- unarchive: "unarchive";
34
- }>;
35
- modelName: z.ZodString;
36
- modelId: z.ZodString;
37
- modelKey: z.ZodOptional<z.ZodString>;
38
- data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
39
- previousData: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
40
- context: z.ZodObject<{
41
- userId: z.ZodString;
42
- organizationId: z.ZodString;
43
- role: z.ZodOptional<z.ZodString>;
44
- teamIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
45
- }, z.core.$strip>;
46
- createdAt: z.ZodOptional<z.ZodNumber>;
47
- batchId: z.ZodOptional<z.ZodString>;
48
- commitEnvelope: z.ZodOptional<z.ZodObject<{
49
- idempotencyKey: z.core.$ZodBranded<z.ZodString, "IdempotencyKey", "out">;
50
- operationIndex: z.ZodNumber;
51
- operationCount: z.ZodNumber;
52
- sealedAt: z.ZodOptional<z.ZodNumber>;
53
- sequence: z.ZodOptional<z.ZodNumber>;
54
- }, z.core.$strict>>;
55
- sourceMutationIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
56
- writeOptions: z.ZodOptional<z.ZodObject<{
57
- readAt: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
58
- onStale: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
59
- reject: "reject";
60
- overwrite: "overwrite";
61
- notify: "notify";
62
- }>>>;
63
- idempotencyKey: z.ZodOptional<z.ZodString>;
64
- label: z.ZodOptional<z.ZodString>;
65
- fenceToken: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
66
- }, z.core.$loose>>;
67
- localOnly: z.ZodOptional<z.ZodBoolean>;
68
- }, z.core.$loose>;
69
- export type PersistedReplayableTransaction = z.infer<typeof persistedTransactionSchema>;
70
- /**
71
- * Reports whether a stored row is one of the non-transaction kinds, so callers
72
- * skip it instead of treating it as a corrupt transaction.
73
- */
74
- export declare function isNonReplayablePersistedRow(row: unknown): boolean;
75
- /**
76
- * Validates one stored row and rehydrates it into a {@link QueuedMutation} ready
77
- * to replay, or returns `null` when the row fails validation. Bookkeeping
78
- * fields the stored row lacks — status, attempts, priority, timestamp — are
79
- * re-derived the same way a freshly staged transaction derives them.
80
- */
81
- export declare function deserializePersistedTransaction(row: unknown): QueuedMutation | null;
82
- /**
83
- * The shape of one entry in the persisted offline mutation queue — an item of
84
- * the `'queue'` row's `mutations` array, carrying the fields read when the
85
- * queue is restored on reconnect.
86
- */
87
- export declare const persistedMutationSchema: z.ZodObject<{
88
- mutationId: z.ZodOptional<z.ZodString>;
89
- type: z.ZodEnum<{
90
- update: "update";
91
- create: "create";
92
- delete: "delete";
93
- archive: "archive";
94
- }>;
95
- modelData: z.ZodRecord<z.ZodString, z.ZodUnknown>;
96
- modelName: z.ZodString;
97
- timestamp: z.ZodString;
98
- capturedChanges: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
99
- writeOptions: z.ZodOptional<z.ZodObject<{
100
- readAt: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
101
- onStale: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
102
- reject: "reject";
103
- overwrite: "overwrite";
104
- notify: "notify";
105
- }>>>;
106
- idempotencyKey: z.ZodOptional<z.ZodString>;
107
- label: z.ZodOptional<z.ZodString>;
108
- fenceToken: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
109
- }, z.core.$loose>>;
110
- }, z.core.$loose>;
111
- export type PersistedQueuedMutation = z.infer<typeof persistedMutationSchema>;
112
- export declare const PENDING_MUTATION_RECORD_PREFIX = "pending-mutation:";
113
- /**
114
- * Stay one hour inside the server's 24-hour idempotency retention window.
115
- * A journaled write older than this can no longer be deduplicated by the
116
- * server, so restore holds it for review instead of replaying it.
117
- */
118
- export declare const PENDING_MUTATION_REPLAY_WINDOW_MS: number;
119
- /** Scope-less records written by the first aggregate-journal release. */
120
- export declare const legacyPendingMutationRecordSchema: z.ZodObject<{
121
- storageVersion: z.ZodLiteral<1>;
122
- id: z.ZodString;
123
- type: z.ZodLiteral<"pending_mutation">;
124
- mutation: z.ZodObject<{
125
- type: z.ZodEnum<{
126
- update: "update";
127
- create: "create";
128
- delete: "delete";
129
- archive: "archive";
130
- }>;
131
- modelData: z.ZodRecord<z.ZodString, z.ZodUnknown>;
132
- modelName: z.ZodString;
133
- timestamp: z.ZodString;
134
- capturedChanges: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
135
- writeOptions: z.ZodOptional<z.ZodObject<{
136
- readAt: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
137
- onStale: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
138
- reject: "reject";
139
- overwrite: "overwrite";
140
- notify: "notify";
141
- }>>>;
142
- idempotencyKey: z.ZodOptional<z.ZodString>;
143
- label: z.ZodOptional<z.ZodString>;
144
- fenceToken: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
145
- }, z.core.$loose>>;
146
- mutationId: z.ZodString;
147
- }, z.core.$loose>;
148
- timestamp: z.ZodNumber;
149
- }, z.core.$strict>;
150
- export declare const pendingMutationRecordSchema: z.ZodObject<{
151
- storageVersion: z.ZodLiteral<2>;
152
- scope: z.ZodObject<{
153
- organizationId: z.ZodString;
154
- participantId: z.ZodString;
155
- namespace: z.ZodString;
156
- }, z.core.$strict>;
157
- id: z.ZodString;
158
- type: z.ZodLiteral<"pending_mutation">;
159
- mutation: z.ZodObject<{
160
- type: z.ZodEnum<{
161
- update: "update";
162
- create: "create";
163
- delete: "delete";
164
- archive: "archive";
165
- }>;
166
- modelData: z.ZodRecord<z.ZodString, z.ZodUnknown>;
167
- modelName: z.ZodString;
168
- timestamp: z.ZodString;
169
- capturedChanges: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
170
- writeOptions: z.ZodOptional<z.ZodObject<{
171
- readAt: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
172
- onStale: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
173
- reject: "reject";
174
- overwrite: "overwrite";
175
- notify: "notify";
176
- }>>>;
177
- idempotencyKey: z.ZodOptional<z.ZodString>;
178
- label: z.ZodOptional<z.ZodString>;
179
- fenceToken: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
180
- }, z.core.$loose>>;
181
- mutationId: z.ZodString;
182
- }, z.core.$loose>;
183
- timestamp: z.ZodNumber;
184
- }, z.core.$strict>;
185
- export type PendingMutationRecord = z.infer<typeof pendingMutationRecordSchema>;
186
- export declare function pendingMutationRecordId(mutationId: string): string;
@@ -1,163 +0,0 @@
1
- /**
2
- * The validation boundary for replaying persisted transactions after a restart.
3
- *
4
- * Rows read back from the on-disk transaction store may have been written by an
5
- * earlier run — possibly by an older version of this package, possibly
6
- * corrupted. Rather than trust them, the schemas here validate exactly the
7
- * fields the transaction queue and the offline-mutation restore read during
8
- * replay. A row that fails to parse is dropped and reported, never replayed as
9
- * a malformed commit.
10
- *
11
- * The same store also holds two kinds of rows that are not replayable
12
- * transactions — the offline mutation queue (`type: 'queue'`) and delta-await
13
- * markers (`type: 'awaiting_delta'`), each owned by another part of the client.
14
- * {@link isNonReplayablePersistedRow} recognizes them so they are skipped
15
- * quietly rather than flagged as corruption.
16
- */
17
- import { z } from 'zod';
18
- import { computePriorityScore, normalizeModelKey } from './commitPayload.js';
19
- import { commitEnvelopeMemberSchema, commitOutboxScopeSchema, } from '../../transaction/transactions/settlement/commitEnvelope.js';
20
- import { onStaleModeSchema } from '../../transaction/coordination/schema.js';
21
- /** The subset of a write's options that is stored with each transaction or queued mutation. */
22
- const persistedWriteOptionsSchema = z
23
- .object({
24
- readAt: z.number().nullable().optional(),
25
- onStale: onStaleModeSchema.nullable().optional(),
26
- idempotencyKey: z.string().optional(),
27
- label: z.string().optional(),
28
- // Aligned with the `WriteOptions` type: a claimed write persisted offline
29
- // must replay carrying its fencing token (Option B), or a queued write that
30
- // survives a reload would lose its fence and could land as a stale blind
31
- // write. Declared (not just loose-passthrough) so it is validated as a
32
- // number on rehydration.
33
- fenceToken: z.number().nullable().optional(),
34
- })
35
- .loose();
36
- /**
37
- * The shape of a persisted transaction that can be replayed: the fields the
38
- * transaction queue reads when it re-enqueues the row — its id, operation type,
39
- * model addressing, payload, and identity context. Any remaining bookkeeping is
40
- * filled in with defaults when the row is rehydrated by
41
- * {@link deserializePersistedTransaction}.
42
- */
43
- export const persistedTransactionSchema = z
44
- .object({
45
- id: z.string().min(1),
46
- type: z.enum(['create', 'update', 'delete', 'archive', 'unarchive']),
47
- modelName: z.string().min(1),
48
- modelId: z.string().min(1),
49
- modelKey: z.string().min(1).optional(),
50
- data: z.record(z.string(), z.unknown()).optional(),
51
- previousData: z.record(z.string(), z.unknown()).nullable().optional(),
52
- context: z.object({
53
- userId: z.string().min(1),
54
- organizationId: z.string().min(1),
55
- role: z.string().optional(),
56
- teamIds: z.array(z.string()).optional(),
57
- }),
58
- createdAt: z.number().optional(),
59
- batchId: z.string().optional(),
60
- commitEnvelope: commitEnvelopeMemberSchema.optional(),
61
- sourceMutationIds: z.array(z.string().min(1)).optional(),
62
- writeOptions: persistedWriteOptionsSchema.optional(),
63
- localOnly: z.boolean().optional(),
64
- })
65
- .loose();
66
- /** The `type` values of stored rows that belong to other parts of the client and are not replayable transactions. */
67
- const NON_REPLAYABLE_TYPES = new Set([
68
- 'queue',
69
- 'awaiting_delta',
70
- 'pending_mutation',
71
- 'commit_envelope',
72
- 'http_commit_envelope',
73
- ]);
74
- /**
75
- * Reports whether a stored row is one of the non-transaction kinds, so callers
76
- * skip it instead of treating it as a corrupt transaction.
77
- */
78
- export function isNonReplayablePersistedRow(row) {
79
- return (typeof row === 'object' &&
80
- row !== null &&
81
- typeof row.type === 'string' &&
82
- NON_REPLAYABLE_TYPES.has(row.type));
83
- }
84
- /**
85
- * Validates one stored row and rehydrates it into a {@link QueuedMutation} ready
86
- * to replay, or returns `null` when the row fails validation. Bookkeeping
87
- * fields the stored row lacks — status, attempts, priority, timestamp — are
88
- * re-derived the same way a freshly staged transaction derives them.
89
- */
90
- export function deserializePersistedTransaction(row) {
91
- const parsed = persistedTransactionSchema.safeParse(row);
92
- if (!parsed.success)
93
- return null;
94
- const tx = parsed.data;
95
- return {
96
- id: tx.id,
97
- type: tx.type,
98
- modelName: tx.modelName,
99
- modelId: tx.modelId,
100
- modelKey: tx.modelKey ?? normalizeModelKey(tx.modelName),
101
- ...(tx.data !== undefined ? { data: tx.data } : {}),
102
- ...(tx.previousData !== undefined ? { previousData: tx.previousData } : {}),
103
- context: tx.context,
104
- status: 'pending',
105
- createdAt: tx.createdAt ?? Date.now(),
106
- attempts: 0,
107
- priority: 'normal',
108
- priorityScore: computePriorityScore(tx.type, tx.modelName),
109
- ...(tx.batchId !== undefined ? { batchId: tx.batchId } : {}),
110
- ...(tx.commitEnvelope !== undefined
111
- ? { commitEnvelope: tx.commitEnvelope }
112
- : {}),
113
- ...(tx.sourceMutationIds !== undefined
114
- ? { sourceMutationIds: tx.sourceMutationIds }
115
- : {}),
116
- ...(tx.writeOptions !== undefined ? { writeOptions: tx.writeOptions } : {}),
117
- ...(tx.localOnly !== undefined ? { localOnly: tx.localOnly } : {}),
118
- };
119
- }
120
- /**
121
- * The shape of one entry in the persisted offline mutation queue — an item of
122
- * the `'queue'` row's `mutations` array, carrying the fields read when the
123
- * queue is restored on reconnect.
124
- */
125
- export const persistedMutationSchema = z
126
- .object({
127
- mutationId: z.string().min(1).optional(),
128
- type: z.enum(['create', 'update', 'delete', 'archive']),
129
- modelData: z.record(z.string(), z.unknown()),
130
- modelName: z.string().min(1),
131
- timestamp: z.string(),
132
- capturedChanges: z.record(z.string(), z.unknown()).optional(),
133
- writeOptions: persistedWriteOptionsSchema.optional(),
134
- })
135
- .loose();
136
- export const PENDING_MUTATION_RECORD_PREFIX = 'pending-mutation:';
137
- /**
138
- * Stay one hour inside the server's 24-hour idempotency retention window.
139
- * A journaled write older than this can no longer be deduplicated by the
140
- * server, so restore holds it for review instead of replaying it.
141
- */
142
- export const PENDING_MUTATION_REPLAY_WINDOW_MS = 23 * 60 * 60 * 1000;
143
- const pendingMutationRecordBaseShape = {
144
- id: z.string().startsWith(PENDING_MUTATION_RECORD_PREFIX),
145
- type: z.literal('pending_mutation'),
146
- mutation: persistedMutationSchema.extend({
147
- mutationId: z.string().min(1),
148
- }),
149
- timestamp: z.number().int().nonnegative(),
150
- };
151
- /** Scope-less records written by the first aggregate-journal release. */
152
- export const legacyPendingMutationRecordSchema = z.strictObject({
153
- ...pendingMutationRecordBaseShape,
154
- storageVersion: z.literal(1),
155
- });
156
- export const pendingMutationRecordSchema = z.strictObject({
157
- ...pendingMutationRecordBaseShape,
158
- storageVersion: z.literal(2),
159
- scope: commitOutboxScopeSchema,
160
- });
161
- export function pendingMutationRecordId(mutationId) {
162
- return `${PENDING_MUTATION_RECORD_PREFIX}${mutationId}`;
163
- }
@@ -1,53 +0,0 @@
1
- /**
2
- * Wires a model instance into MobX so its schema-defined fields become
3
- * observable and its mutations are tracked. This module reads the property
4
- * metadata generated from a schema and applies the matching MobX annotation to
5
- * each field, leaving any hand-written getter or setter in place.
6
- */
7
- import { type AnnotationMapEntry } from 'mobx';
8
- import { type PropertyMetadata, type ReferenceMetadata } from '../transaction/types/index.js';
9
- /**
10
- * The subset of a model instance that {@link M1} reads and writes. A model calls
11
- * {@link M1} from its constructor, where these members exist on `this`;
12
- * declaring them here lets {@link M1} reference them without loose casts. Every
13
- * member is optional, so a partial model — such as a test fixture — still
14
- * satisfies the type.
15
- */
16
- interface M1Target {
17
- _hasCustomObservability?: boolean;
18
- _isConstructing?: boolean;
19
- _extraMobxAnnotations?: Record<string, AnnotationMapEntry>;
20
- setupObservability?(): void;
21
- propertyChanged?(name: string, oldValue: unknown, newValue: unknown): void;
22
- }
23
- /**
24
- * Makes a model instance's schema-defined properties observable with MobX. For
25
- * each field it reads the {@link PropertyMetadata} and applies the matching MobX
26
- * annotation — a plain observable for stored values, a computed for derived
27
- * getters, and an action for mutating methods — while leaving any field that
28
- * already declares its own getter and setter untouched. If the model provides
29
- * its own `setupObservability` or sets `_hasCustomObservability`, this function
30
- * defers to it and does nothing.
31
- */
32
- export declare function M1<T extends M1Target>(target: T, propertyMetadata: Map<string, PropertyMetadata>, referenceMetadata?: Map<string, ReferenceMetadata>): void;
33
- /**
34
- * Wraps a model class so every instance is made observable at construction time
35
- * by calling {@link M1}. A class that manages its own observability — one whose
36
- * prototype declares `setupObservability` or `_hasCustomObservability` — is
37
- * returned unchanged. The wrapper preserves the original class name and its
38
- * static members.
39
- */
40
- export declare function makeModelObservable(modelClass: any, propertyMetadata: Map<string, PropertyMetadata>, referenceMetadata?: Map<string, any>): any;
41
- /**
42
- * Reports whether a named property is one that {@link M1} makes observable —
43
- * that is, a stored value, an ephemeral value, a reference collection, or a
44
- * reference array. Returns `false` for an unknown property and for a computed
45
- * reference.
46
- */
47
- export declare function isObservableProperty(target: any, propName: string, propertyMetadata: Map<string, PropertyMetadata>): boolean;
48
- /**
49
- * Returns the names of the properties that {@link M1} treats as computed: the
50
- * referenced-model and back-reference fields derived from a foreign key.
51
- */
52
- export declare function getComputedProperties(propertyMetadata: Map<string, PropertyMetadata>): string[];
53
- export {};