@abloatai/ablo 0.36.0 → 0.37.1

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 (597) hide show
  1. package/AGENTS.md +2 -2
  2. package/CHANGELOG.md +55 -2014
  3. package/NOTICE +2 -2
  4. package/README.md +45 -63
  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 -114
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +3 -163
  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 +1 -1
  59. package/docs/api-keys.md +7 -6
  60. package/docs/api.md +10 -10
  61. package/docs/client-behavior.md +5 -5
  62. package/docs/coordination.md +52 -62
  63. package/docs/data-sources.md +1 -1
  64. package/docs/examples/agent-human.md +4 -4
  65. package/docs/examples/ai-sdk-tool.md +1 -1
  66. package/docs/examples/existing-python-backend.md +15 -4
  67. package/docs/examples/nextjs.md +27 -6
  68. package/docs/examples/server-agent.md +2 -2
  69. package/docs/how-it-works.md +4 -4
  70. package/docs/identity.md +2 -1
  71. package/docs/integration-guide.md +24 -13
  72. package/docs/internal/README.md +18 -0
  73. package/docs/internal/agent-fleet-coordination-design.md +171 -0
  74. package/docs/internal/agent-orchestration.md +58 -0
  75. package/docs/internal/commit-identifiers.md +91 -0
  76. package/docs/internal/concurrency-open-decisions.md +37 -0
  77. package/docs/internal/data-source-reverse-channel.md +150 -0
  78. package/docs/internal/per-field-conflict-detection.md +165 -0
  79. package/docs/internal/postgres-replication.md +64 -0
  80. package/docs/internal/serializable-schema.md +119 -0
  81. package/docs/internal/structure.md +32 -0
  82. package/docs/mcp.md +2 -2
  83. package/docs/migration.md +3 -3
  84. package/docs/quickstart.md +2 -2
  85. package/docs/react.md +5 -5
  86. package/docs/schema-contract.md +3 -3
  87. package/docs/sessions.md +91 -37
  88. package/examples/README.md +2 -2
  89. package/examples/data-source/README.md +1 -1
  90. package/examples/data-source/ablo-driver.ts +1 -1
  91. package/examples/data-source/customer-server.ts +1 -1
  92. package/examples/data-source/run.ts +1 -1
  93. package/examples/data-source/schema.ts +1 -1
  94. package/examples/quickstart.ts +2 -2
  95. package/llms.txt +8 -8
  96. package/package.json +63 -166
  97. package/bin/ablo.cjs +0 -39
  98. package/dist/BaseSyncedStore.d.ts +0 -843
  99. package/dist/BaseSyncedStore.js +0 -1971
  100. package/dist/Database.d.ts +0 -323
  101. package/dist/Database.js +0 -1502
  102. package/dist/InstanceCache.d.ts +0 -237
  103. package/dist/InstanceCache.js +0 -1166
  104. package/dist/LazyReferenceCollection.d.ts +0 -177
  105. package/dist/LazyReferenceCollection.js +0 -461
  106. package/dist/Model.d.ts +0 -454
  107. package/dist/Model.js +0 -919
  108. package/dist/ModelRegistry.d.ts +0 -225
  109. package/dist/ModelRegistry.js +0 -539
  110. package/dist/NetworkMonitor.d.ts +0 -28
  111. package/dist/NetworkMonitor.js +0 -79
  112. package/dist/RuntimeContext.d.ts +0 -52
  113. package/dist/RuntimeContext.js +0 -80
  114. package/dist/SyncClient.d.ts +0 -541
  115. package/dist/SyncClient.js +0 -2202
  116. package/dist/adapters/alwaysOnline.d.ts +0 -14
  117. package/dist/adapters/alwaysOnline.js +0 -17
  118. package/dist/adapters/inMemoryStorage.d.ts +0 -31
  119. package/dist/adapters/inMemoryStorage.js +0 -110
  120. package/dist/ai-sdk/coordinatedTool.d.ts +0 -120
  121. package/dist/ai-sdk/coordinatedTool.js +0 -134
  122. package/dist/ai-sdk/coordinationContext.d.ts +0 -46
  123. package/dist/ai-sdk/coordinationContext.js +0 -106
  124. package/dist/ai-sdk/index.d.ts +0 -121
  125. package/dist/ai-sdk/index.js +0 -121
  126. package/dist/ai-sdk/wrap.d.ts +0 -65
  127. package/dist/ai-sdk/wrap.js +0 -39
  128. package/dist/auth/index.d.ts +0 -1
  129. package/dist/auth/index.js +0 -8
  130. package/dist/batching/index.d.ts +0 -55
  131. package/dist/batching/index.js +0 -147
  132. package/dist/client/Ablo.d.ts +0 -231
  133. package/dist/client/Ablo.js +0 -160
  134. package/dist/client/abloClient.d.ts +0 -309
  135. package/dist/client/abloClient.js +0 -13
  136. package/dist/client/clientPrelude.d.ts +0 -52
  137. package/dist/client/clientPrelude.js +0 -60
  138. package/dist/client/consoleLogger.d.ts +0 -35
  139. package/dist/client/consoleLogger.js +0 -44
  140. package/dist/client/coreClient.d.ts +0 -60
  141. package/dist/client/coreClient.js +0 -118
  142. package/dist/client/createInternalComponents.d.ts +0 -50
  143. package/dist/client/createInternalComponents.js +0 -98
  144. package/dist/client/createModelProxy.d.ts +0 -248
  145. package/dist/client/createModelProxy.js +0 -884
  146. package/dist/client/humans.d.ts +0 -69
  147. package/dist/client/humans.js +0 -78
  148. package/dist/client/modelRegistration.d.ts +0 -10
  149. package/dist/client/modelRegistration.js +0 -312
  150. package/dist/client/options.d.ts +0 -461
  151. package/dist/client/options.js +0 -7
  152. package/dist/client/reactiveEngine.d.ts +0 -53
  153. package/dist/client/reactiveEngine.js +0 -688
  154. package/dist/client/resourceTypes.d.ts +0 -12
  155. package/dist/client/resourceTypes.js +0 -10
  156. package/dist/client/schemaConfig.d.ts +0 -44
  157. package/dist/client/schemaConfig.js +0 -185
  158. package/dist/client/storeCluster.d.ts +0 -47
  159. package/dist/client/storeCluster.js +0 -118
  160. package/dist/client/storeLifecycle.d.ts +0 -61
  161. package/dist/client/storeLifecycle.js +0 -231
  162. package/dist/client/validateAbloOptions.d.ts +0 -42
  163. package/dist/client/validateAbloOptions.js +0 -43
  164. package/dist/client/wsMutationExecutor.d.ts +0 -27
  165. package/dist/client/wsMutationExecutor.js +0 -72
  166. package/dist/context.d.ts +0 -42
  167. package/dist/context.js +0 -81
  168. package/dist/coordination/ClaimLog.d.ts +0 -26
  169. package/dist/coordination/ClaimLog.js +0 -32
  170. package/dist/coordination/index.d.ts +0 -1
  171. package/dist/coordination/index.js +0 -8
  172. package/dist/core/index.d.ts +0 -33
  173. package/dist/core/index.js +0 -48
  174. package/dist/docs/catalog.d.ts +0 -72
  175. package/dist/docs/catalog.js +0 -230
  176. package/dist/docs/index.d.ts +0 -10
  177. package/dist/docs/index.js +0 -10
  178. package/dist/environment.d.ts +0 -1
  179. package/dist/environment.js +0 -8
  180. package/dist/interfaces/index.d.ts +0 -311
  181. package/dist/interfaces/index.js +0 -9
  182. package/dist/keys/index.d.ts +0 -1
  183. package/dist/keys/index.js +0 -8
  184. package/dist/mutators/RecordingMutation.d.ts +0 -36
  185. package/dist/mutators/RecordingMutation.js +0 -182
  186. package/dist/mutators/Transaction.d.ts +0 -40
  187. package/dist/mutators/Transaction.js +0 -58
  188. package/dist/mutators/UndoManager.d.ts +0 -258
  189. package/dist/mutators/UndoManager.js +0 -658
  190. package/dist/mutators/defineMutators.d.ts +0 -60
  191. package/dist/mutators/defineMutators.js +0 -18
  192. package/dist/mutators/inverseOp.d.ts +0 -126
  193. package/dist/mutators/inverseOp.js +0 -71
  194. package/dist/mutators/mutateActions.d.ts +0 -45
  195. package/dist/mutators/mutateActions.js +0 -105
  196. package/dist/mutators/readerActions.d.ts +0 -33
  197. package/dist/mutators/readerActions.js +0 -57
  198. package/dist/mutators/undoApply.d.ts +0 -51
  199. package/dist/mutators/undoApply.js +0 -117
  200. package/dist/policy/index.d.ts +0 -21
  201. package/dist/policy/index.js +0 -20
  202. package/dist/query/QueryProcessor.d.ts +0 -75
  203. package/dist/query/QueryProcessor.js +0 -255
  204. package/dist/query/client.d.ts +0 -64
  205. package/dist/query/client.js +0 -138
  206. package/dist/query/types.d.ts +0 -85
  207. package/dist/query/types.js +0 -16
  208. package/dist/react/AbloProvider.d.ts +0 -242
  209. package/dist/react/AbloProvider.js +0 -458
  210. package/dist/react/ClientSideSuspense.d.ts +0 -36
  211. package/dist/react/ClientSideSuspense.js +0 -17
  212. package/dist/react/DefaultFallback.d.ts +0 -24
  213. package/dist/react/DefaultFallback.js +0 -43
  214. package/dist/react/context.d.ts +0 -55
  215. package/dist/react/context.js +0 -29
  216. package/dist/react/createAbloReact.d.ts +0 -56
  217. package/dist/react/createAbloReact.js +0 -51
  218. package/dist/react/index.d.ts +0 -62
  219. package/dist/react/index.js +0 -69
  220. package/dist/react/internalContext.d.ts +0 -33
  221. package/dist/react/internalContext.js +0 -3
  222. package/dist/react/useAblo.d.ts +0 -82
  223. package/dist/react/useAblo.js +0 -120
  224. package/dist/react/useCurrentUserId.d.ts +0 -22
  225. package/dist/react/useCurrentUserId.js +0 -34
  226. package/dist/react/useErrorListener.d.ts +0 -20
  227. package/dist/react/useErrorListener.js +0 -38
  228. package/dist/react/useMutationFailureListener.d.ts +0 -26
  229. package/dist/react/useMutationFailureListener.js +0 -38
  230. package/dist/react/useMutators.d.ts +0 -56
  231. package/dist/react/useMutators.js +0 -84
  232. package/dist/react/useReactive.d.ts +0 -35
  233. package/dist/react/useReactive.js +0 -123
  234. package/dist/react/useSyncStatus.d.ts +0 -59
  235. package/dist/react/useSyncStatus.js +0 -76
  236. package/dist/react/useUndoScope.d.ts +0 -34
  237. package/dist/react/useUndoScope.js +0 -81
  238. package/dist/schema/coordination.d.ts +0 -112
  239. package/dist/schema/coordination.js +0 -133
  240. package/dist/schema/ddl.d.ts +0 -97
  241. package/dist/schema/ddl.js +0 -491
  242. package/dist/schema/ddlLock.d.ts +0 -35
  243. package/dist/schema/ddlLock.js +0 -46
  244. package/dist/schema/diff.d.ts +0 -225
  245. package/dist/schema/diff.js +0 -289
  246. package/dist/schema/generate.d.ts +0 -19
  247. package/dist/schema/generate.js +0 -86
  248. package/dist/schema/index.d.ts +0 -42
  249. package/dist/schema/index.js +0 -80
  250. package/dist/schema/queries.d.ts +0 -201
  251. package/dist/schema/queries.js +0 -144
  252. package/dist/schema/select.d.ts +0 -40
  253. package/dist/schema/select.js +0 -90
  254. package/dist/schema/serialize.d.ts +0 -115
  255. package/dist/schema/serialize.js +0 -265
  256. package/dist/schema/sugar.d.ts +0 -109
  257. package/dist/schema/sugar.js +0 -83
  258. package/dist/schema/syncDeltaRow.d.ts +0 -6
  259. package/dist/schema/syncDeltaRow.js +0 -6
  260. package/dist/server/adapter.d.ts +0 -173
  261. package/dist/server/adapter.js +0 -18
  262. package/dist/server/commit.d.ts +0 -107
  263. package/dist/server/commit.js +0 -1
  264. package/dist/server/index.d.ts +0 -14
  265. package/dist/server/index.js +0 -2
  266. package/dist/server/readConfig.d.ts +0 -80
  267. package/dist/server/readConfig.js +0 -8
  268. package/dist/server/storageMode.d.ts +0 -23
  269. package/dist/server/storageMode.js +0 -17
  270. package/dist/source/adapter.d.ts +0 -83
  271. package/dist/source/adapter.js +0 -24
  272. package/dist/source/adapters/drizzle.d.ts +0 -48
  273. package/dist/source/adapters/drizzle.js +0 -219
  274. package/dist/source/adapters/kysely.d.ts +0 -42
  275. package/dist/source/adapters/kysely.js +0 -205
  276. package/dist/source/adapters/kyselyMutationCore.d.ts +0 -76
  277. package/dist/source/adapters/kyselyMutationCore.js +0 -125
  278. package/dist/source/adapters/memory.d.ts +0 -13
  279. package/dist/source/adapters/memory.js +0 -130
  280. package/dist/source/adapters/prisma.d.ts +0 -63
  281. package/dist/source/adapters/prisma.js +0 -202
  282. package/dist/source/conformance.d.ts +0 -37
  283. package/dist/source/conformance.js +0 -215
  284. package/dist/source/connector.d.ts +0 -95
  285. package/dist/source/connector.js +0 -266
  286. package/dist/source/connectorProtocol.d.ts +0 -154
  287. package/dist/source/connectorProtocol.js +0 -163
  288. package/dist/source/contract.d.ts +0 -195
  289. package/dist/source/contract.js +0 -164
  290. package/dist/source/factory.d.ts +0 -92
  291. package/dist/source/factory.js +0 -286
  292. package/dist/source/idempotency.d.ts +0 -61
  293. package/dist/source/idempotency.js +0 -144
  294. package/dist/source/index.d.ts +0 -23
  295. package/dist/source/index.js +0 -30
  296. package/dist/source/migrations.d.ts +0 -21
  297. package/dist/source/migrations.js +0 -103
  298. package/dist/source/next.d.ts +0 -32
  299. package/dist/source/next.js +0 -25
  300. package/dist/source/pushQueue.d.ts +0 -134
  301. package/dist/source/pushQueue.js +0 -256
  302. package/dist/source/signing.d.ts +0 -92
  303. package/dist/source/signing.js +0 -162
  304. package/dist/source/types.d.ts +0 -401
  305. package/dist/source/types.js +0 -59
  306. package/dist/storeContract.d.ts +0 -145
  307. package/dist/storeContract.js +0 -12
  308. package/dist/stores/DatabaseManager.d.ts +0 -107
  309. package/dist/stores/DatabaseManager.js +0 -388
  310. package/dist/stores/ObjectStore.d.ts +0 -115
  311. package/dist/stores/ObjectStore.js +0 -393
  312. package/dist/stores/ObjectStoreContract.d.ts +0 -38
  313. package/dist/stores/ObjectStoreContract.js +0 -1
  314. package/dist/stores/StoreManager.d.ts +0 -114
  315. package/dist/stores/StoreManager.js +0 -304
  316. package/dist/stores/SyncActionStore.d.ts +0 -99
  317. package/dist/stores/SyncActionStore.js +0 -506
  318. package/dist/stores/openIDBWithTimeout.d.ts +0 -65
  319. package/dist/stores/openIDBWithTimeout.js +0 -153
  320. package/dist/stores/syncAction.d.ts +0 -26
  321. package/dist/stores/syncAction.js +0 -16
  322. package/dist/surface.d.ts +0 -36
  323. package/dist/surface.js +0 -75
  324. package/dist/sync/BootstrapFetcher.d.ts +0 -284
  325. package/dist/sync/BootstrapFetcher.js +0 -964
  326. package/dist/sync/ConnectionManager.d.ts +0 -8
  327. package/dist/sync/ConnectionManager.js +0 -8
  328. package/dist/sync/OnDemandLoader.d.ts +0 -231
  329. package/dist/sync/OnDemandLoader.js +0 -743
  330. package/dist/sync/SubscriptionManager.d.ts +0 -159
  331. package/dist/sync/SubscriptionManager.js +0 -243
  332. package/dist/sync/SyncWebSocket.d.ts +0 -173
  333. package/dist/sync/SyncWebSocket.js +0 -438
  334. package/dist/sync/awaitClaimGrant.d.ts +0 -6
  335. package/dist/sync/awaitClaimGrant.js +0 -6
  336. package/dist/sync/bootstrapApply.d.ts +0 -73
  337. package/dist/sync/bootstrapApply.js +0 -73
  338. package/dist/sync/commitFrames.d.ts +0 -8
  339. package/dist/sync/commitFrames.js +0 -8
  340. package/dist/sync/contextPorts.d.ts +0 -18
  341. package/dist/sync/contextPorts.js +0 -31
  342. package/dist/sync/createClaimStream.d.ts +0 -7
  343. package/dist/sync/createClaimStream.js +0 -7
  344. package/dist/sync/createPresenceStream.d.ts +0 -69
  345. package/dist/sync/createPresenceStream.js +0 -200
  346. package/dist/sync/createSnapshot.d.ts +0 -29
  347. package/dist/sync/createSnapshot.js +0 -118
  348. package/dist/sync/credentialLifecycle.d.ts +0 -7
  349. package/dist/sync/credentialLifecycle.js +0 -7
  350. package/dist/sync/deltaPipeline.d.ts +0 -114
  351. package/dist/sync/deltaPipeline.js +0 -278
  352. package/dist/sync/groupChange.d.ts +0 -116
  353. package/dist/sync/groupChange.js +0 -244
  354. package/dist/sync/participants.d.ts +0 -132
  355. package/dist/sync/participants.js +0 -346
  356. package/dist/sync/persistedPrefix.d.ts +0 -12
  357. package/dist/sync/persistedPrefix.js +0 -22
  358. package/dist/sync/schemaDrift.d.ts +0 -55
  359. package/dist/sync/schemaDrift.js +0 -53
  360. package/dist/sync/schemas.d.ts +0 -71
  361. package/dist/sync/schemas.js +0 -94
  362. package/dist/sync/syncCursor.d.ts +0 -40
  363. package/dist/sync/syncCursor.js +0 -55
  364. package/dist/sync/syncPlan.d.ts +0 -54
  365. package/dist/sync/syncPlan.js +0 -50
  366. package/dist/sync/wsFrameHandlers.d.ts +0 -8
  367. package/dist/sync/wsFrameHandlers.js +0 -8
  368. package/dist/syncLog/contract.d.ts +0 -20
  369. package/dist/syncLog/contract.js +0 -19
  370. package/dist/syncLog/index.d.ts +0 -1
  371. package/dist/syncLog/index.js +0 -1
  372. package/dist/transaction/ablo.d.ts +0 -88
  373. package/dist/transaction/ablo.js +0 -33
  374. package/dist/transaction/auth/apiKey.d.ts +0 -152
  375. package/dist/transaction/auth/apiKey.js +0 -419
  376. package/dist/transaction/auth/bootstrapScope.d.ts +0 -15
  377. package/dist/transaction/auth/bootstrapScope.js +0 -1
  378. package/dist/transaction/auth/capability.d.ts +0 -212
  379. package/dist/transaction/auth/capability.js +0 -224
  380. package/dist/transaction/auth/credentialEndpoint.d.ts +0 -61
  381. package/dist/transaction/auth/credentialEndpoint.js +0 -86
  382. package/dist/transaction/auth/credentialPolicy.d.ts +0 -148
  383. package/dist/transaction/auth/credentialPolicy.js +0 -125
  384. package/dist/transaction/auth/credentialSource.d.ts +0 -30
  385. package/dist/transaction/auth/credentialSource.js +0 -55
  386. package/dist/transaction/auth/hostedEndpoints.d.ts +0 -21
  387. package/dist/transaction/auth/hostedEndpoints.js +0 -21
  388. package/dist/transaction/auth/identity.d.ts +0 -55
  389. package/dist/transaction/auth/identity.js +0 -210
  390. package/dist/transaction/auth/index.d.ts +0 -162
  391. package/dist/transaction/auth/index.js +0 -304
  392. package/dist/transaction/auth/schemas.d.ts +0 -59
  393. package/dist/transaction/auth/schemas.js +0 -85
  394. package/dist/transaction/auth/sessionMint.d.ts +0 -28
  395. package/dist/transaction/auth/sessionMint.js +0 -85
  396. package/dist/transaction/coordination/awaitClaimGrant.d.ts +0 -56
  397. package/dist/transaction/coordination/awaitClaimGrant.js +0 -124
  398. package/dist/transaction/coordination/claimHeartbeatLoop.d.ts +0 -84
  399. package/dist/transaction/coordination/claimHeartbeatLoop.js +0 -108
  400. package/dist/transaction/coordination/claimMeta.d.ts +0 -49
  401. package/dist/transaction/coordination/claimMeta.js +0 -52
  402. package/dist/transaction/coordination/createClaimStream.d.ts +0 -64
  403. package/dist/transaction/coordination/createClaimStream.js +0 -475
  404. package/dist/transaction/coordination/events.d.ts +0 -74
  405. package/dist/transaction/coordination/events.js +0 -7
  406. package/dist/transaction/coordination/index.d.ts +0 -19
  407. package/dist/transaction/coordination/index.js +0 -45
  408. package/dist/transaction/coordination/locator.d.ts +0 -104
  409. package/dist/transaction/coordination/locator.js +0 -102
  410. package/dist/transaction/coordination/schema.d.ts +0 -1536
  411. package/dist/transaction/coordination/schema.js +0 -1177
  412. package/dist/transaction/coordination/targetConflict.d.ts +0 -2
  413. package/dist/transaction/coordination/targetConflict.js +0 -107
  414. package/dist/transaction/coordination/trace.d.ts +0 -78
  415. package/dist/transaction/coordination/trace.js +0 -138
  416. package/dist/transaction/durableWrites.d.ts +0 -62
  417. package/dist/transaction/durableWrites.js +0 -71
  418. package/dist/transaction/environment.d.ts +0 -105
  419. package/dist/transaction/environment.js +0 -108
  420. package/dist/transaction/errorCodes.d.ts +0 -403
  421. package/dist/transaction/errorCodes.js +0 -484
  422. package/dist/transaction/errors.d.ts +0 -428
  423. package/dist/transaction/errors.js +0 -686
  424. package/dist/transaction/footprint.d.ts +0 -111
  425. package/dist/transaction/footprint.js +0 -0
  426. package/dist/transaction/index.d.ts +0 -20
  427. package/dist/transaction/index.js +0 -20
  428. package/dist/transaction/keys/index.d.ts +0 -87
  429. package/dist/transaction/keys/index.js +0 -207
  430. package/dist/transaction/log/syncDeltaRow.d.ts +0 -158
  431. package/dist/transaction/log/syncDeltaRow.js +0 -95
  432. package/dist/transaction/logPosition.d.ts +0 -97
  433. package/dist/transaction/logPosition.js +0 -125
  434. package/dist/transaction/logger.d.ts +0 -16
  435. package/dist/transaction/logger.js +0 -7
  436. package/dist/transaction/observability.d.ts +0 -53
  437. package/dist/transaction/observability.js +0 -19
  438. package/dist/transaction/persistence.d.ts +0 -12
  439. package/dist/transaction/persistence.js +0 -11
  440. package/dist/transaction/plugin.d.ts +0 -285
  441. package/dist/transaction/plugin.js +0 -106
  442. package/dist/transaction/policy/types.d.ts +0 -217
  443. package/dist/transaction/policy/types.js +0 -126
  444. package/dist/transaction/resources/functionalUpdate.d.ts +0 -79
  445. package/dist/transaction/resources/functionalUpdate.js +0 -87
  446. package/dist/transaction/resources/httpResources.d.ts +0 -321
  447. package/dist/transaction/resources/httpResources.js +0 -7
  448. package/dist/transaction/resources/modelOperations.d.ts +0 -427
  449. package/dist/transaction/resources/modelOperations.js +0 -12
  450. package/dist/transaction/resources/mutationOptions.d.ts +0 -66
  451. package/dist/transaction/resources/mutationOptions.js +0 -9
  452. package/dist/transaction/resources/where.d.ts +0 -101
  453. package/dist/transaction/resources/where.js +0 -115
  454. package/dist/transaction/resources/writeOptionsSchema.d.ts +0 -47
  455. package/dist/transaction/resources/writeOptionsSchema.js +0 -73
  456. package/dist/transaction/schema/field.d.ts +0 -120
  457. package/dist/transaction/schema/field.js +0 -265
  458. package/dist/transaction/schema/fieldRef.d.ts +0 -38
  459. package/dist/transaction/schema/fieldRef.js +0 -11
  460. package/dist/transaction/schema/loadStrategy.d.ts +0 -45
  461. package/dist/transaction/schema/loadStrategy.js +0 -46
  462. package/dist/transaction/schema/model.d.ts +0 -379
  463. package/dist/transaction/schema/model.js +0 -123
  464. package/dist/transaction/schema/openapi.d.ts +0 -58
  465. package/dist/transaction/schema/openapi.js +0 -501
  466. package/dist/transaction/schema/relation.d.ts +0 -204
  467. package/dist/transaction/schema/relation.js +0 -104
  468. package/dist/transaction/schema/residency.d.ts +0 -29
  469. package/dist/transaction/schema/residency.js +0 -25
  470. package/dist/transaction/schema/roles.d.ts +0 -249
  471. package/dist/transaction/schema/roles.js +0 -230
  472. package/dist/transaction/schema/schema.d.ts +0 -351
  473. package/dist/transaction/schema/schema.js +0 -325
  474. package/dist/transaction/schema/tenancy.d.ts +0 -139
  475. package/dist/transaction/schema/tenancy.js +0 -190
  476. package/dist/transaction/transactionLayer.d.ts +0 -82
  477. package/dist/transaction/transactionLayer.js +0 -24
  478. package/dist/transaction/transactions/settlement/commitEnvelope.d.ts +0 -143
  479. package/dist/transaction/transactions/settlement/commitEnvelope.js +0 -161
  480. package/dist/transaction/transactions/settlement/httpCommitEnvelope.d.ts +0 -53
  481. package/dist/transaction/transactions/settlement/httpCommitEnvelope.js +0 -207
  482. package/dist/transaction/transactions/settlement/idempotencyKey.d.ts +0 -10
  483. package/dist/transaction/transactions/settlement/idempotencyKey.js +0 -9
  484. package/dist/transaction/transactions/settlement/pendingWrite.d.ts +0 -112
  485. package/dist/transaction/transactions/settlement/pendingWrite.js +0 -20
  486. package/dist/transaction/transport/commitFrames.d.ts +0 -90
  487. package/dist/transaction/transport/commitFrames.js +0 -134
  488. package/dist/transaction/transport/connectionManager.d.ts +0 -215
  489. package/dist/transaction/transport/connectionManager.js +0 -673
  490. package/dist/transaction/transport/credentialLifecycle.d.ts +0 -177
  491. package/dist/transaction/transport/credentialLifecycle.js +0 -324
  492. package/dist/transaction/transport/heartbeat.d.ts +0 -65
  493. package/dist/transaction/transport/heartbeat.js +0 -93
  494. package/dist/transaction/transport/httpClient.d.ts +0 -131
  495. package/dist/transaction/transport/httpClient.js +0 -146
  496. package/dist/transaction/transport/httpOptions.d.ts +0 -33
  497. package/dist/transaction/transport/httpOptions.js +0 -12
  498. package/dist/transaction/transport/httpTransport.d.ts +0 -8
  499. package/dist/transaction/transport/httpTransport.js +0 -1388
  500. package/dist/transaction/transport/networkProbe.d.ts +0 -84
  501. package/dist/transaction/transport/networkProbe.js +0 -207
  502. package/dist/transaction/transport/wsFrameHandlers.d.ts +0 -128
  503. package/dist/transaction/transport/wsFrameHandlers.js +0 -429
  504. package/dist/transaction/transport/wsTransport.d.ts +0 -574
  505. package/dist/transaction/transport/wsTransport.js +0 -1023
  506. package/dist/transaction/types/assertExact.d.ts +0 -17
  507. package/dist/transaction/types/assertExact.js +0 -1
  508. package/dist/transaction/types/global.d.ts +0 -107
  509. package/dist/transaction/types/global.js +0 -40
  510. package/dist/transaction/types/index.d.ts +0 -205
  511. package/dist/transaction/types/index.js +0 -56
  512. package/dist/transaction/types/modelData.d.ts +0 -10
  513. package/dist/transaction/types/modelData.js +0 -9
  514. package/dist/transaction/types/participant.d.ts +0 -20
  515. package/dist/transaction/types/participant.js +0 -10
  516. package/dist/transaction/types/streams.d.ts +0 -550
  517. package/dist/transaction/types/streams.js +0 -11
  518. package/dist/transaction/utils/asyncIterator.d.ts +0 -34
  519. package/dist/transaction/utils/asyncIterator.js +0 -135
  520. package/dist/transaction/utils/duration.d.ts +0 -50
  521. package/dist/transaction/utils/duration.js +0 -77
  522. package/dist/transaction/utils/json.d.ts +0 -57
  523. package/dist/transaction/utils/json.js +0 -276
  524. package/dist/transaction/wire/accountResponses.d.ts +0 -420
  525. package/dist/transaction/wire/accountResponses.js +0 -290
  526. package/dist/transaction/wire/auth.d.ts +0 -56
  527. package/dist/transaction/wire/auth.js +0 -63
  528. package/dist/transaction/wire/bootstrapReason.d.ts +0 -9
  529. package/dist/transaction/wire/bootstrapReason.js +0 -8
  530. package/dist/transaction/wire/claimEvent.d.ts +0 -76
  531. package/dist/transaction/wire/claimEvent.js +0 -73
  532. package/dist/transaction/wire/claims.d.ts +0 -530
  533. package/dist/transaction/wire/claims.js +0 -327
  534. package/dist/transaction/wire/commit.d.ts +0 -603
  535. package/dist/transaction/wire/commit.js +0 -321
  536. package/dist/transaction/wire/delta.d.ts +0 -250
  537. package/dist/transaction/wire/delta.js +0 -147
  538. package/dist/transaction/wire/errorEnvelope.d.ts +0 -72
  539. package/dist/transaction/wire/errorEnvelope.js +0 -123
  540. package/dist/transaction/wire/feedCursor.d.ts +0 -60
  541. package/dist/transaction/wire/feedCursor.js +0 -82
  542. package/dist/transaction/wire/feedEvent.d.ts +0 -204
  543. package/dist/transaction/wire/feedEvent.js +0 -65
  544. package/dist/transaction/wire/frames.d.ts +0 -194
  545. package/dist/transaction/wire/frames.js +0 -50
  546. package/dist/transaction/wire/inboundFrames.d.ts +0 -562
  547. package/dist/transaction/wire/inboundFrames.js +0 -116
  548. package/dist/transaction/wire/index.d.ts +0 -54
  549. package/dist/transaction/wire/index.js +0 -83
  550. package/dist/transaction/wire/listEnvelope.d.ts +0 -37
  551. package/dist/transaction/wire/listEnvelope.js +0 -42
  552. package/dist/transaction/wire/modelMutations.d.ts +0 -31
  553. package/dist/transaction/wire/modelMutations.js +0 -52
  554. package/dist/transaction/wire/modelResponses.d.ts +0 -85
  555. package/dist/transaction/wire/modelResponses.js +0 -43
  556. package/dist/transaction/wire/modelShape.d.ts +0 -78
  557. package/dist/transaction/wire/modelShape.js +0 -74
  558. package/dist/transaction/wire/protocol.d.ts +0 -38
  559. package/dist/transaction/wire/protocol.js +0 -38
  560. package/dist/transaction/wire/protocolVersion.d.ts +0 -73
  561. package/dist/transaction/wire/protocolVersion.js +0 -83
  562. package/dist/transactions/mutations/MutationQueue.d.ts +0 -661
  563. package/dist/transactions/mutations/MutationQueue.js +0 -2807
  564. package/dist/transactions/mutations/MutationStore.d.ts +0 -20
  565. package/dist/transactions/mutations/MutationStore.js +0 -53
  566. package/dist/transactions/mutations/UnconfirmedWrites.d.ts +0 -82
  567. package/dist/transactions/mutations/UnconfirmedWrites.js +0 -104
  568. package/dist/transactions/mutations/coalesceRules.d.ts +0 -58
  569. package/dist/transactions/mutations/coalesceRules.js +0 -140
  570. package/dist/transactions/mutations/commitLatency.d.ts +0 -52
  571. package/dist/transactions/mutations/commitLatency.js +0 -130
  572. package/dist/transactions/mutations/commitOutboxStore.d.ts +0 -28
  573. package/dist/transactions/mutations/commitOutboxStore.js +0 -26
  574. package/dist/transactions/mutations/commitPayload.d.ts +0 -165
  575. package/dist/transactions/mutations/commitPayload.js +0 -152
  576. package/dist/transactions/mutations/deltaConfirmation.d.ts +0 -63
  577. package/dist/transactions/mutations/deltaConfirmation.js +0 -235
  578. package/dist/transactions/mutations/durableWriteStore.d.ts +0 -14
  579. package/dist/transactions/mutations/durableWriteStore.js +0 -12
  580. package/dist/transactions/mutations/optimisticApply.d.ts +0 -49
  581. package/dist/transactions/mutations/optimisticApply.js +0 -65
  582. package/dist/transactions/mutations/replayValidation.d.ts +0 -187
  583. package/dist/transactions/mutations/replayValidation.js +0 -164
  584. package/dist/utils/mobxSetup.d.ts +0 -53
  585. package/dist/utils/mobxSetup.js +0 -330
  586. package/dist/views/QueryView.d.ts +0 -79
  587. package/dist/views/QueryView.js +0 -218
  588. package/dist/views/ViewRegistry.d.ts +0 -20
  589. package/dist/views/ViewRegistry.js +0 -55
  590. package/dist/views/incrementalView.d.ts +0 -45
  591. package/dist/views/incrementalView.js +0 -69
  592. package/dist/webhooks/events.d.ts +0 -43
  593. package/dist/webhooks/events.js +0 -42
  594. package/dist/webhooks/index.d.ts +0 -8
  595. package/dist/webhooks/index.js +0 -8
  596. package/dist/wire/index.d.ts +0 -1
  597. package/dist/wire/index.js +0 -8
@@ -1,153 +0,0 @@
1
- /**
2
- * The error raised when opening an IndexedDB database does not complete in a
3
- * bounded time. {@link openIDBWithTimeout} throws it in two situations: another
4
- * browser tab is holding an older version of the database open and blocking the
5
- * upgrade (`reason: 'blocked'`), or the open request produced no result at all
6
- * within the timeout (`reason: 'timeout'`).
7
- *
8
- * The native open request can otherwise hang indefinitely — when a blocking tab
9
- * never closes its connection, neither the success nor the error callback fires,
10
- * and any code awaiting the open waits forever. Turning that into a thrown error
11
- * lets the surrounding application show a recoverable failure instead of an
12
- * unbreakable spinner.
13
- */
14
- export class IDBOpenTimeoutError extends Error {
15
- dbName;
16
- reason;
17
- /**
18
- * A stable identifier for this failure, independent of the message text. When
19
- * this error is wrapped into an {@link AbloError} by `toAbloError`, the string
20
- * code is preserved, so error handlers can recognize a wedged-storage failure
21
- * and offer a recovery path rather than matching on the message.
22
- */
23
- code = 'storage_open_timeout';
24
- constructor(dbName, reason, message) {
25
- super(message);
26
- this.dbName = dbName;
27
- this.reason = reason;
28
- this.name = 'IDBOpenTimeoutError';
29
- }
30
- }
31
- /**
32
- * Returns true when a caught value is the storage-open-timeout failure. It
33
- * detects the failure by its stable `code`, so it still matches after the error
34
- * has been wrapped into an {@link AbloError} or another error type.
35
- */
36
- export function isStorageOpenTimeout(err) {
37
- return (typeof err === 'object' &&
38
- err !== null &&
39
- err.code === 'storage_open_timeout');
40
- }
41
- export function openIDBWithTimeout(name, version, options = {}) {
42
- const timeoutMs = options.timeoutMs ?? 10_000;
43
- return new Promise((resolve, reject) => {
44
- const request = version === undefined
45
- ? indexedDB.open(name)
46
- : indexedDB.open(name, version);
47
- let settled = false;
48
- const settle = (fn) => {
49
- if (settled)
50
- return;
51
- settled = true;
52
- clearTimeout(timer);
53
- fn();
54
- };
55
- if (options.onUpgrade) {
56
- request.onupgradeneeded = (event) => {
57
- options.onUpgrade(request, event);
58
- };
59
- }
60
- request.onsuccess = () => {
61
- // If we already timed out or were blocked and rejected, this is a late
62
- // success: the native open eventually completed after we gave up. The
63
- // resulting connection is orphaned — nothing up the stack holds it, so
64
- // nothing will close it. A leaked open connection holds an IndexedDB lock
65
- // that wedges every later open or delete of this database name, so close
66
- // it here to keep a timed-out attempt from poisoning the store.
67
- if (settled) {
68
- try {
69
- request.result.close();
70
- }
71
- catch {
72
- // Best-effort — a half-open connection may already be unusable.
73
- }
74
- return;
75
- }
76
- const db = request.result;
77
- // Required resilience handler per the IndexedDB specification: close this
78
- // connection as soon as any other context wants to upgrade or delete the
79
- // database. Without it, a connection that ignores `versionchange` blocks
80
- // the other context's request indefinitely — a common cause of a database
81
- // that stays wedged across reloads. Closing here makes the store release
82
- // itself.
83
- db.onversionchange = () => {
84
- try {
85
- db.close();
86
- }
87
- catch {
88
- // Already closing/closed — nothing to do.
89
- }
90
- try {
91
- options.onVersionChange?.();
92
- }
93
- catch {
94
- // A consumer reaction must never break the close.
95
- }
96
- };
97
- settle(() => { resolve(db); });
98
- };
99
- request.onerror = () => { settle(() => { reject(request.error); }); };
100
- // The critical handler: another tab is blocking us. Native API leaves
101
- // the request pending indefinitely; we fail fast with a clear error so
102
- // the UI can tell the user to close other tabs.
103
- request.onblocked = () => {
104
- settle(() => {
105
- reject(new IDBOpenTimeoutError(name, 'blocked', `IndexedDB \"${name}\" open blocked — another tab is holding an ` +
106
- `older version. Close other Ablo tabs and reload.`));
107
- });
108
- };
109
- // Catch-all timeout: even without `onblocked`, some browsers in some
110
- // storage states hang without firing any event. Bounded wait →
111
- // deterministic error.
112
- const timer = setTimeout(() => {
113
- settle(() => {
114
- reject(new IDBOpenTimeoutError(name, 'timeout', `IndexedDB \"${name}\" open did not resolve within ${timeoutMs}ms. ` +
115
- `Storage may be in a bad state — clearing site data and reloading ` +
116
- `usually fixes this.`));
117
- });
118
- }, timeoutMs);
119
- });
120
- }
121
- /**
122
- * Deletes an IndexedDB database within a bounded time — the delete counterpart
123
- * to {@link openIDBWithTimeout}. It is used to recover from a wedged backing
124
- * store: when opening a database times out, the caller can delete it and start
125
- * fresh, which is safe for any database whose contents can be rebuilt on the
126
- * next load.
127
- *
128
- * Like an open request, a native delete can hang indefinitely — it fires a
129
- * blocked event and waits when another connection still holds the database, and
130
- * on a truly stuck store it fires no event at all. Both cases become a bounded,
131
- * resolved result here, so the caller never spins.
132
- *
133
- * Resolves to `true` on a clean delete and `false` when the delete was blocked
134
- * or timed out. Either way the caller can decide whether to retry the open; a
135
- * delete that did nothing leaves the store no worse off.
136
- */
137
- export function deleteIDBWithTimeout(name, timeoutMs = 5_000) {
138
- return new Promise((resolve) => {
139
- let settled = false;
140
- const settle = (value) => {
141
- if (settled)
142
- return;
143
- settled = true;
144
- clearTimeout(timer);
145
- resolve(value);
146
- };
147
- const request = indexedDB.deleteDatabase(name);
148
- request.onsuccess = () => { settle(true); };
149
- request.onerror = () => { settle(false); };
150
- request.onblocked = () => { settle(false); };
151
- const timer = setTimeout(() => { settle(false); }, timeoutMs);
152
- });
153
- }
@@ -1,26 +0,0 @@
1
- /**
2
- * The persisted local action record consumed by `SyncActionStore`. It is a
3
- * client materialization artifact, not a transaction-layer wire shape: the
4
- * authoritative broadcast vocabulary is the settlement core's delta wire
5
- * schema, while this one adds the local `__class` discriminator IndexedDB uses.
6
- */
7
- import { z } from 'zod';
8
- export declare const syncActionSchema: z.ZodObject<{
9
- id: z.ZodNumber;
10
- modelName: z.ZodString;
11
- modelId: z.ZodString;
12
- action: z.ZodEnum<{
13
- I: "I";
14
- U: "U";
15
- D: "D";
16
- A: "A";
17
- V: "V";
18
- C: "C";
19
- G: "G";
20
- S: "S";
21
- }>;
22
- data: z.ZodUnknown;
23
- __class: z.ZodDefault<z.ZodLiteral<"SyncAction">>;
24
- }, z.core.$strip>;
25
- export type SyncAction = z.infer<typeof syncActionSchema>;
26
- export type SyncActionType = SyncAction['action'];
@@ -1,16 +0,0 @@
1
- /**
2
- * The persisted local action record consumed by `SyncActionStore`. It is a
3
- * client materialization artifact, not a transaction-layer wire shape: the
4
- * authoritative broadcast vocabulary is the settlement core's delta wire
5
- * schema, while this one adds the local `__class` discriminator IndexedDB uses.
6
- */
7
- import { z } from 'zod';
8
- import { syncDeltaActionSchema } from '../transaction/wire/delta.js';
9
- export const syncActionSchema = z.object({
10
- id: z.number(),
11
- modelName: z.string(),
12
- modelId: z.string(),
13
- action: syncDeltaActionSchema,
14
- data: z.unknown(),
15
- __class: z.literal('SyncAction').default('SyncAction'),
16
- });
package/dist/surface.d.ts DELETED
@@ -1,36 +0,0 @@
1
- /**
2
- * A machine-checked manifest of this package's public API surface. It lists,
3
- * as string tuples, the method names on `ablo.<model>`, the keys accepted by
4
- * the list-style read options, and the keys of the client constructor
5
- * options. Each tuple is proven equal to the keys of its source interface at
6
- * compile time, so the lists cannot drift from the real types: add or remove
7
- * a name on either side without updating the matching tuple and this file
8
- * fails to compile, in both directions — no name the interface lacks, and no
9
- * interface key the tuple omits.
10
- *
11
- * Documentation tooling reads these tuples to describe the surface, which
12
- * guarantees a generated summary never names a method or option that does
13
- * not exist. The names are verified here; their prose descriptions are
14
- * written by hand, since prose cannot be type-checked.
15
- */
16
- /**
17
- * The names of every method available on `ablo.<model>`, matching the keys of
18
- * the {@link ModelOperations} interface. Documentation tooling reads this
19
- * tuple, so it is the one list of model-verb names a generated summary can
20
- * describe.
21
- */
22
- export declare const PUBLIC_MODEL_VERBS: readonly ["retrieve", "list", "local", "create", "update", "delete", "claim", "track", "join", "onChange"];
23
- /**
24
- * The option keys accepted by `local.list` and `onChange`, matching the
25
- * keys of {@link LocalReadOptions}. Note that the lifecycle filter is named
26
- * `state`, not `scope`.
27
- */
28
- export declare const PUBLIC_LIST_OPTION_KEYS: readonly ["where", "filter", "orderBy", "limit", "offset", "state"];
29
- /**
30
- * The keys of the client constructor options, {@link AbloOptions}. Only
31
- * `schema` is required; every other key is optional.
32
- */
33
- export declare const PUBLIC_ABLO_OPTION_KEYS: readonly ["schema", "apiKey", "authEndpoint", "persistence", "durableWrites", "commitOutbox", "commitOutboxScope", "transport", "debug", "logLevel", "logger", "authToken", "baseURL", "fetch", "defaultHeaders", "defaultQuery", "dangerouslyAllowBrowser", "collaborationEvents", "plugins", "wait"];
34
- export type ModelVerb = (typeof PUBLIC_MODEL_VERBS)[number];
35
- export type ListOptionKey = (typeof PUBLIC_LIST_OPTION_KEYS)[number];
36
- export type AbloOptionKey = (typeof PUBLIC_ABLO_OPTION_KEYS)[number];
package/dist/surface.js DELETED
@@ -1,75 +0,0 @@
1
- /**
2
- * A machine-checked manifest of this package's public API surface. It lists,
3
- * as string tuples, the method names on `ablo.<model>`, the keys accepted by
4
- * the list-style read options, and the keys of the client constructor
5
- * options. Each tuple is proven equal to the keys of its source interface at
6
- * compile time, so the lists cannot drift from the real types: add or remove
7
- * a name on either side without updating the matching tuple and this file
8
- * fails to compile, in both directions — no name the interface lacks, and no
9
- * interface key the tuple omits.
10
- *
11
- * Documentation tooling reads these tuples to describe the surface, which
12
- * guarantees a generated summary never names a method or option that does
13
- * not exist. The names are verified here; their prose descriptions are
14
- * written by hand, since prose cannot be type-checked.
15
- */
16
- // ── the per-`ablo.<model>` verb surface ────────────────────────────────────
17
- /**
18
- * The names of every method available on `ablo.<model>`, matching the keys of
19
- * the {@link ModelOperations} interface. Documentation tooling reads this
20
- * tuple, so it is the one list of model-verb names a generated summary can
21
- * describe.
22
- */
23
- export const PUBLIC_MODEL_VERBS = [
24
- 'retrieve',
25
- 'list',
26
- 'local',
27
- 'create',
28
- 'update',
29
- 'delete',
30
- 'claim',
31
- 'track',
32
- 'join',
33
- 'onChange',
34
- ];
35
- // ── the read/list query option surface ─────────────────────────────────────
36
- /**
37
- * The option keys accepted by `local.list` and `onChange`, matching the
38
- * keys of {@link LocalReadOptions}. Note that the lifecycle filter is named
39
- * `state`, not `scope`.
40
- */
41
- export const PUBLIC_LIST_OPTION_KEYS = [
42
- 'where',
43
- 'filter',
44
- 'orderBy',
45
- 'limit',
46
- 'offset',
47
- 'state',
48
- ];
49
- // ── the `Ablo({ … })` constructor option surface ───────────────────────────
50
- /**
51
- * The keys of the client constructor options, {@link AbloOptions}. Only
52
- * `schema` is required; every other key is optional.
53
- */
54
- export const PUBLIC_ABLO_OPTION_KEYS = [
55
- 'schema',
56
- 'apiKey',
57
- 'authEndpoint',
58
- 'persistence',
59
- 'durableWrites',
60
- 'commitOutbox',
61
- 'commitOutboxScope',
62
- 'transport',
63
- 'debug',
64
- 'logLevel',
65
- 'logger',
66
- 'authToken',
67
- 'baseURL',
68
- 'fetch',
69
- 'defaultHeaders',
70
- 'defaultQuery',
71
- 'dangerouslyAllowBrowser',
72
- 'collaborationEvents',
73
- 'plugins',
74
- 'wait',
75
- ];
@@ -1,284 +0,0 @@
1
- /**
2
- * Fetches the initial snapshot the sync engine needs before it can go live: the
3
- * current rows for the requested models plus the sync position from which to
4
- * resume live updates. It calls the sync server's `/sync/bootstrap` HTTP
5
- * endpoint, retries transient failures with backoff, and can fall back to a
6
- * cached snapshot when the device is offline. {@link BootstrapData} is the
7
- * shape it returns; {@link BootstrapOptions} configures it.
8
- */
9
- export interface BootstrapData {
10
- type: 'full' | 'partial';
11
- lastSyncId: number;
12
- /**
13
- * Model rows keyed by type name. Each row is opaque at this boundary; the
14
- * engine asserts the per-model shape against the registered schema when it
15
- * reduces the rows and writes them to local storage.
16
- */
17
- models?: Record<string, unknown[]>;
18
- deltas?: ValidatedServerDelta[];
19
- deltaCount?: number;
20
- /** Model types whose server-side query failed (timeout, RLS error, and the like). */
21
- failedModels?: string[];
22
- timestamp: number;
23
- /**
24
- * The content hash of the schema the server currently has active for this
25
- * tenant — the same hash `ablo push` computes. Present once a schema has been
26
- * pushed. The client compares it against its own `expectedSchemaHash` to warn
27
- * when the app's schema and the deployed schema have drifted apart.
28
- */
29
- schemaHash?: string;
30
- /**
31
- * Present when a paged single-model request stopped at its row limit with
32
- * rows remaining: pass it back as the next page's `cursor`. Absent on the
33
- * final page, on unpaged responses, and from servers that predate paging.
34
- */
35
- nextCursor?: string;
36
- }
37
- export interface BootstrapFetchResult {
38
- notModified: boolean;
39
- data?: BootstrapData;
40
- etag?: string | null;
41
- }
42
- export interface BootstrapOptions {
43
- /**
44
- * Full base URL of the sync server's HTTP API, **including the `/api`
45
- * prefix**. The bootstrap endpoint is appended as `/sync/bootstrap`, so
46
- * the final request hits `${baseUrl}/sync/bootstrap`.
47
- *
48
- * Example: `'http://localhost:8080/api'` → `http://localhost:8080/api/sync/bootstrap`
49
- *
50
- * Default: `'http://localhost:8080/api'`.
51
- */
52
- baseUrl?: string;
53
- /**
54
- * Namespace for the offline bootstrap cache. Most callers leave this unset;
55
- * the SDK fills it in once authentication has resolved the account scope, so
56
- * the fallback cache is partitioned per account.
57
- */
58
- cacheScope?: string | null;
59
- /**
60
- * @deprecated Use `cacheScope`. Retained so code that constructs
61
- * {@link BootstrapFetcher} directly keeps its cache namespace.
62
- */
63
- organizationId?: string;
64
- syncGroups?: string[];
65
- maxRetries?: number;
66
- retryDelay?: number;
67
- /**
68
- * How long to wait for the server to START responding (response headers), in
69
- * milliseconds. Default 20000 (20 seconds).
70
- *
71
- * Deliberately NOT a bound on the whole download: a cold-start snapshot can
72
- * be tens of megabytes, and its transfer time depends on the connection. A
73
- * healthy download that is actively delivering bytes is never aborted, no
74
- * matter how long it takes — {@link stallTimeout} guards the body instead.
75
- */
76
- fetchTimeout?: number;
77
- /**
78
- * The longest quiet gap allowed between body chunks while downloading, in
79
- * milliseconds. Default 15000 (15 seconds). This is the progress watchdog:
80
- * it aborts a download whose stream has gone silent (dead connection,
81
- * hung proxy) without ever penalizing a slow-but-moving transfer.
82
- */
83
- stallTimeout?: number;
84
- /**
85
- * The model names to request. When set, the server returns only these models
86
- * and skips the rest. This is derived from each model's `load` strategy: only
87
- * models loaded instantly (the default) are included. When unset, the server
88
- * returns every model.
89
- */
90
- instantModels?: string[];
91
- /**
92
- * Getter for the current credential, read at request time so a refreshed
93
- * token takes effect without recreating the helper. Preferred over
94
- * {@link BootstrapFetcher.setAuthToken}.
95
- */
96
- getAuthToken?: AuthTokenGetter;
97
- /** The owning client's runtime. Defaults to the module-global bridge. */
98
- runtime?: RuntimeContext;
99
- }
100
- import type { RuntimeContext } from '../RuntimeContext.js';
101
- import { type AuthTokenGetter } from '../transaction/auth/credentialSource.js';
102
- import { type ValidatedServerDelta } from './schemas.js';
103
- export declare class BootstrapFetcher {
104
- private options;
105
- private readonly runtime;
106
- /**
107
- * Every in-flight request's controller, tagged with the lane it belongs to. A
108
- * registry rather than a single field because a chunked cold start runs
109
- * several model fetches concurrently — aborting one request (its own
110
- * TTFB/stall watchdog) must never take its siblings down, while
111
- * {@link abort} takes down all of them.
112
- */
113
- private readonly activeControllers;
114
- /**
115
- * Non-scoped bootstraps currently running, keyed by request identity. A
116
- * second call for the same snapshot joins the one already in flight rather
117
- * than cancelling and restarting it — see {@link fetchBootstrap}.
118
- */
119
- private readonly flights;
120
- /** Warn about schema drift at most once per helper. */
121
- private schemaDriftWarned;
122
- /**
123
- * Abort every in-flight request in `lane` — or in every lane when none is
124
- * given — with an explicit reason.
125
- *
126
- * The reason is load-bearing, not decoration. `fetch` rejects with the exact
127
- * value handed to `abort()`, so passing a typed error is what lets the retry
128
- * loop below tell a deliberate cancellation apart from a dead connection. A
129
- * bare `abort()` produces an `AbortError` indistinguishable from the one the
130
- * browser's stop button produces, and a retry loop that cannot tell them
131
- * apart re-issues the requests it just killed.
132
- */
133
- private cancelActive;
134
- /**
135
- * The longest a single bootstrap can run before every watchdog below has
136
- * necessarily fired, derived from those watchdogs rather than guessed. A
137
- * caller wanting an outer deadline reads this instead of picking a number,
138
- * so it cannot set one shorter than the work it wraps. A cold start pages
139
- * through its models {@link CHUNK_CONCURRENCY} at a time; each request may
140
- * spend `fetchTimeout` waiting for response headers and `stallTimeout`
141
- * waiting for the next body chunk, and may be retried `maxRetries` times.
142
- */
143
- get budgetMs(): number;
144
- get baseUrl(): string;
145
- /**
146
- * Advisory schema-drift check: compare the server's active schema hash (on the
147
- * bootstrap response) against the hash this client was built with. A mismatch
148
- * means the app's schema and the deployed schema have diverged — reads/writes
149
- * relying on undeployed changes will later fail with an opaque DB constraint
150
- * error. Warn once, actionably; never throws or blocks the bootstrap.
151
- *
152
- * The message names the SERVER it connected to, and spans all three real
153
- * causes rather than assuming "you forgot to push". Drift most often means the
154
- * schema was pushed to a different server, project, or environment than this
155
- * client points at (a bare `ablo push` targets the hosted default; a local app
156
- * usually reads a local server) — so the first, load-bearing pointer is `ablo
157
- * status`, which names the exact org/project/environment the key resolves to
158
- * and the deployed hash, turning "which of these is it?" into one glance. The
159
- * older "Run `ablo push`" copy sent everyone down one path and confused the
160
- * common wrong-target and version-skew cases.
161
- */
162
- private warnOnSchemaDrift;
163
- /** Fetch the server's per-model schema surface and warn precisely — or stay
164
- * silent when every model this client declares matches (additive lead). */
165
- private resolveSemanticDrift;
166
- private warnWholeHashDrift;
167
- constructor(options: BootstrapOptions);
168
- /**
169
- * Update the offline-cache namespace once auth has resolved the server-side
170
- * account scope. This is intentionally not a public organizationId input.
171
- */
172
- setCacheScope(cacheScope: string): void;
173
- setSyncGroups(syncGroups: readonly string[] | undefined): void;
174
- /**
175
- * Sets a fixed credential for callers that construct the helper directly.
176
- * The SDK instead supplies `getAuthToken` and never calls this.
177
- */
178
- setAuthToken(authToken: string | undefined): void;
179
- /**
180
- * Fetch bootstrap data from sync engine with partial bootstrap support
181
- * @param lastSyncId - Optional: client's current lastSyncId for partial bootstrap
182
- * @returns Bootstrap data (either full snapshot or delta batch)
183
- */
184
- fetchBootstrap(lastSyncId?: number,
185
- /**
186
- * A per-call set of sync groups for a scoped hydrate-on-enter. When given,
187
- * the request uses these groups instead of the configured `syncGroups`, and
188
- * does so without mutating the shared options, so a concurrent full
189
- * bootstrap is unaffected. It also bypasses the offline snapshot cache,
190
- * which holds the full bootstrap and would be a wrong answer to a subset
191
- * request.
192
- */
193
- syncGroupsOverride?: readonly string[]): Promise<BootstrapData>;
194
- /**
195
- * The identity of a bootstrap request: everything that determines its answer.
196
- * Two calls with the same key are asking the same question, so the second can
197
- * take the first's result.
198
- */
199
- private flightKey;
200
- /** One bootstrap, start to finish. {@link fetchBootstrap} owns whether it runs. */
201
- private runBootstrap;
202
- /**
203
- * One bootstrap URL, fetched with backoff. Session errors and other
204
- * non-retryable failures throw immediately; only transient failures
205
- * (5xx, 429, timeouts, network blips) consume attempts. A cancellation is
206
- * deliberate and therefore non-retryable — it leaves through the same gate.
207
- */
208
- private fetchWithRetries;
209
- /**
210
- * Cold-start bootstrap, one request per instant model with a small
211
- * concurrency cap. Any chunk's terminal failure fails the whole
212
- * bootstrap (a partial snapshot must never masquerade as a full one)
213
- * and cancels its siblings.
214
- */
215
- private fetchChunkedBootstrap;
216
- /**
217
- * Fetch bootstrap with ETag, returning 304 hints
218
- */
219
- fetchBootstrapWithETag(): Promise<BootstrapFetchResult>;
220
- private fetchWithETagUsing;
221
- /**
222
- * Read a response body as a stream under a progress watchdog: the stall
223
- * timer re-arms on every chunk, so only a silent stream is aborted — a
224
- * slow-but-moving download is never killed for total duration. A cold-start
225
- * snapshot can be tens of megabytes; bounding its total transfer time was
226
- * what trapped large orgs in an endless full-bootstrap retry loop.
227
- *
228
- * Falls back to `response.json()` when the response exposes no readable
229
- * stream (empty bodies, some test doubles).
230
- */
231
- private readJsonWithStallGuard;
232
- /**
233
- * Perform one fetch. The timeout here bounds time to response headers
234
- * only; the body download is guarded by the stall watchdog in
235
- * {@link readJsonWithStallGuard}. Superseding an older in-flight
236
- * bootstrap is the caller's job ({@link fetchBootstrap} cancels the
237
- * registry) — chunk requests run through here concurrently and must
238
- * not cancel each other.
239
- */
240
- private fetchOnce;
241
- private fetchOnceWith;
242
- /**
243
- * Fetch a single entity by ID (on-demand self-healing).
244
- * Returns `null` for 404 (entity deleted) — this is an expected state, not an error.
245
- * Throws for unexpected HTTP errors (5xx, network failures).
246
- */
247
- fetchEntity(modelName: string, id: string): Promise<Record<string, unknown> | null>;
248
- /**
249
- * Clear all cached bootstrap data
250
- */
251
- clearCache(): void;
252
- private getBootstrapCacheKey;
253
- private saveCachedBootstrap;
254
- private loadCachedBootstrap;
255
- /**
256
- * Abort every ongoing bootstrap request (including all chunks of a
257
- * chunked cold start). Entity self-heal fetches are unaffected.
258
- *
259
- * The flight registry is cleared first and synchronously, so a caller that
260
- * bootstraps again in the same tick starts a fresh request rather than
261
- * joining the one being torn down.
262
- */
263
- abort(): void;
264
- /**
265
- * Helper to delay execution
266
- */
267
- private delay;
268
- /**
269
- * Get health status of sync engine
270
- */
271
- checkHealth(): Promise<boolean>;
272
- }
273
- /**
274
- * Assemble per-model chunk responses into one full snapshot.
275
- *
276
- * Each chunk is internally consistent at its own sync position, and the
277
- * positions differ (the chunks were served seconds apart). Anchoring the
278
- * merged snapshot at the MINIMUM position turns that skew into an ordinary
279
- * "briefly offline client": the WS catch-up replays every delta from the
280
- * anchor, and since deltas carry full rows, re-applying one a later chunk
281
- * already reflects converges to the same state. Anchoring at anything later
282
- * would silently skip deltas for the earliest-fetched models.
283
- */
284
- export declare function mergeBootstrapChunks(chunks: readonly BootstrapData[]): BootstrapData;