@abloatai/humans 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 (404) hide show
  1. package/README.md +52 -0
  2. package/dist/Ablo.d.ts +208 -0
  3. package/dist/Ablo.js +120 -0
  4. package/dist/client.d.ts +317 -0
  5. package/dist/client.js +13 -0
  6. package/dist/core.d.ts +35 -0
  7. package/dist/core.js +48 -0
  8. package/dist/humans.d.ts +28 -0
  9. package/dist/humans.js +34 -0
  10. package/dist/index.d.ts +10 -0
  11. package/dist/index.js +6 -0
  12. package/dist/local/BaseSyncedStore.d.ts +807 -0
  13. package/dist/local/BaseSyncedStore.js +1516 -0
  14. package/dist/local/Database.d.ts +322 -0
  15. package/dist/local/Database.js +1589 -0
  16. package/dist/local/InstanceCache.d.ts +255 -0
  17. package/dist/local/InstanceCache.js +1263 -0
  18. package/dist/local/LazyReferenceCollection.d.ts +177 -0
  19. package/dist/local/LazyReferenceCollection.js +461 -0
  20. package/dist/local/Model.d.ts +475 -0
  21. package/dist/local/Model.js +950 -0
  22. package/dist/local/ModelRegistry.d.ts +225 -0
  23. package/dist/local/ModelRegistry.js +539 -0
  24. package/dist/local/NetworkMonitor.d.ts +28 -0
  25. package/dist/local/NetworkMonitor.js +79 -0
  26. package/dist/local/RuntimeContext.d.ts +52 -0
  27. package/dist/local/RuntimeContext.js +80 -0
  28. package/dist/local/SyncClient.d.ts +516 -0
  29. package/dist/local/SyncClient.js +1754 -0
  30. package/dist/local/adapters/alwaysOnline.d.ts +14 -0
  31. package/dist/local/adapters/alwaysOnline.js +17 -0
  32. package/dist/local/adapters/inMemoryStorage.d.ts +37 -0
  33. package/dist/local/adapters/inMemoryStorage.js +122 -0
  34. package/dist/local/client/clientPrelude.d.ts +52 -0
  35. package/dist/local/client/clientPrelude.js +60 -0
  36. package/dist/local/client/consoleLogger.d.ts +35 -0
  37. package/dist/local/client/consoleLogger.js +44 -0
  38. package/dist/local/client/createInternalComponents.d.ts +50 -0
  39. package/dist/local/client/createInternalComponents.js +98 -0
  40. package/dist/local/client/createModelProxy.d.ts +248 -0
  41. package/dist/local/client/createModelProxy.js +880 -0
  42. package/dist/local/client/modelRegistration.d.ts +10 -0
  43. package/dist/local/client/modelRegistration.js +316 -0
  44. package/dist/local/client/options.d.ts +440 -0
  45. package/dist/local/client/options.js +7 -0
  46. package/dist/local/client/reactiveEngine.d.ts +53 -0
  47. package/dist/local/client/reactiveEngine.js +705 -0
  48. package/dist/local/client/resourceTypes.d.ts +12 -0
  49. package/dist/local/client/resourceTypes.js +10 -0
  50. package/dist/local/client/schemaConfig.d.ts +44 -0
  51. package/dist/local/client/schemaConfig.js +185 -0
  52. package/dist/local/client/storeCluster.d.ts +46 -0
  53. package/dist/local/client/storeCluster.js +133 -0
  54. package/dist/local/client/storeLifecycle.d.ts +61 -0
  55. package/dist/local/client/storeLifecycle.js +236 -0
  56. package/dist/local/client/validateAbloOptions.d.ts +42 -0
  57. package/dist/local/client/validateAbloOptions.js +43 -0
  58. package/dist/local/client/wsMutationExecutor.d.ts +27 -0
  59. package/dist/local/client/wsMutationExecutor.js +72 -0
  60. package/dist/local/context.d.ts +42 -0
  61. package/dist/local/context.js +81 -0
  62. package/dist/local/coordination/ClaimLog.d.ts +26 -0
  63. package/dist/local/coordination/ClaimLog.js +32 -0
  64. package/dist/local/interfaces/index.d.ts +311 -0
  65. package/dist/local/interfaces/index.js +9 -0
  66. package/dist/local/localModelContract.d.ts +14 -0
  67. package/dist/local/localModelContract.js +1 -0
  68. package/dist/local/logPosition.d.ts +31 -0
  69. package/dist/local/logPosition.js +53 -0
  70. package/dist/local/mutationPersistence.d.ts +6 -0
  71. package/dist/local/mutationPersistence.js +1 -0
  72. package/dist/local/mutators/RecordingMutation.d.ts +36 -0
  73. package/dist/local/mutators/RecordingMutation.js +182 -0
  74. package/dist/local/mutators/Transaction.d.ts +40 -0
  75. package/dist/local/mutators/Transaction.js +58 -0
  76. package/dist/local/mutators/UndoManager.d.ts +258 -0
  77. package/dist/local/mutators/UndoManager.js +665 -0
  78. package/dist/local/mutators/defineMutators.d.ts +60 -0
  79. package/dist/local/mutators/defineMutators.js +18 -0
  80. package/dist/local/mutators/inverseOp.d.ts +126 -0
  81. package/dist/local/mutators/inverseOp.js +71 -0
  82. package/dist/local/mutators/mutateActions.d.ts +45 -0
  83. package/dist/local/mutators/mutateActions.js +105 -0
  84. package/dist/local/mutators/readerActions.d.ts +33 -0
  85. package/dist/local/mutators/readerActions.js +57 -0
  86. package/dist/local/mutators/undoApply.d.ts +51 -0
  87. package/dist/local/mutators/undoApply.js +117 -0
  88. package/dist/local/persistence.d.ts +7 -0
  89. package/dist/local/persistence.js +9 -0
  90. package/dist/local/query/QueryProcessor.d.ts +75 -0
  91. package/dist/local/query/QueryProcessor.js +255 -0
  92. package/dist/local/query/client.d.ts +64 -0
  93. package/dist/local/query/client.js +138 -0
  94. package/dist/local/query/types.d.ts +85 -0
  95. package/dist/local/query/types.js +16 -0
  96. package/dist/local/schema/serialize.d.ts +1 -0
  97. package/dist/local/schema/serialize.js +1 -0
  98. package/dist/local/store/queryApi.d.ts +13 -0
  99. package/dist/local/store/queryApi.js +35 -0
  100. package/dist/local/storeContract.d.ts +145 -0
  101. package/dist/local/storeContract.js +12 -0
  102. package/dist/local/stores/DatabaseManager.d.ts +112 -0
  103. package/dist/local/stores/DatabaseManager.js +400 -0
  104. package/dist/local/stores/ObjectStore.d.ts +115 -0
  105. package/dist/local/stores/ObjectStore.js +393 -0
  106. package/dist/local/stores/ObjectStoreContract.d.ts +38 -0
  107. package/dist/local/stores/ObjectStoreContract.js +1 -0
  108. package/dist/local/stores/StoreManager.d.ts +114 -0
  109. package/dist/local/stores/StoreManager.js +304 -0
  110. package/dist/local/stores/SyncActionStore.d.ts +99 -0
  111. package/dist/local/stores/SyncActionStore.js +506 -0
  112. package/dist/local/stores/openIDBWithTimeout.d.ts +65 -0
  113. package/dist/local/stores/openIDBWithTimeout.js +153 -0
  114. package/dist/local/stores/persistenceCleanup.d.ts +7 -0
  115. package/dist/local/stores/persistenceCleanup.js +26 -0
  116. package/dist/local/stores/persistenceIdentity.d.ts +27 -0
  117. package/dist/local/stores/persistenceIdentity.js +38 -0
  118. package/dist/local/stores/syncAction.d.ts +26 -0
  119. package/dist/local/stores/syncAction.js +16 -0
  120. package/dist/local/stores/v1PersistenceDeletion.d.ts +8 -0
  121. package/dist/local/stores/v1PersistenceDeletion.js +16 -0
  122. package/dist/local/sync/BootstrapFetcher.d.ts +284 -0
  123. package/dist/local/sync/BootstrapFetcher.js +964 -0
  124. package/dist/local/sync/ConnectionManager.d.ts +8 -0
  125. package/dist/local/sync/ConnectionManager.js +8 -0
  126. package/dist/local/sync/OnDemandLoader.d.ts +231 -0
  127. package/dist/local/sync/OnDemandLoader.js +743 -0
  128. package/dist/local/sync/SubscriptionManager.d.ts +159 -0
  129. package/dist/local/sync/SubscriptionManager.js +243 -0
  130. package/dist/local/sync/SyncWebSocket.d.ts +173 -0
  131. package/dist/local/sync/SyncWebSocket.js +438 -0
  132. package/dist/local/sync/bootstrapApply.d.ts +73 -0
  133. package/dist/local/sync/bootstrapApply.js +73 -0
  134. package/dist/local/sync/commitFrames.d.ts +8 -0
  135. package/dist/local/sync/commitFrames.js +8 -0
  136. package/dist/local/sync/connectionManagerLifecycle.d.ts +23 -0
  137. package/dist/local/sync/connectionManagerLifecycle.js +126 -0
  138. package/dist/local/sync/contextPorts.d.ts +18 -0
  139. package/dist/local/sync/contextPorts.js +31 -0
  140. package/dist/local/sync/createClaimStream.d.ts +64 -0
  141. package/dist/local/sync/createClaimStream.js +475 -0
  142. package/dist/local/sync/createSnapshot.d.ts +29 -0
  143. package/dist/local/sync/createSnapshot.js +116 -0
  144. package/dist/local/sync/credentialLifecycle.d.ts +7 -0
  145. package/dist/local/sync/credentialLifecycle.js +7 -0
  146. package/dist/local/sync/deltaPipeline.d.ts +116 -0
  147. package/dist/local/sync/deltaPipeline.js +357 -0
  148. package/dist/local/sync/groupChange.d.ts +116 -0
  149. package/dist/local/sync/groupChange.js +244 -0
  150. package/dist/local/sync/initialize.d.ts +27 -0
  151. package/dist/local/sync/initialize.js +137 -0
  152. package/dist/local/sync/participants.d.ts +132 -0
  153. package/dist/local/sync/participants.js +342 -0
  154. package/dist/local/sync/persistedPrefix.d.ts +12 -0
  155. package/dist/local/sync/persistedPrefix.js +22 -0
  156. package/dist/local/sync/reconnect.d.ts +23 -0
  157. package/dist/local/sync/reconnect.js +55 -0
  158. package/dist/local/sync/schemaDrift.d.ts +55 -0
  159. package/dist/local/sync/schemaDrift.js +53 -0
  160. package/dist/local/sync/schemas.d.ts +71 -0
  161. package/dist/local/sync/schemas.js +94 -0
  162. package/dist/local/sync/socketEventWiring.d.ts +31 -0
  163. package/dist/local/sync/socketEventWiring.js +130 -0
  164. package/dist/local/sync/syncCursor.d.ts +40 -0
  165. package/dist/local/sync/syncCursor.js +55 -0
  166. package/dist/local/sync/syncPlan.d.ts +54 -0
  167. package/dist/local/sync/syncPlan.js +50 -0
  168. package/dist/local/sync/terminalSessionLifecycle.d.ts +20 -0
  169. package/dist/local/sync/terminalSessionLifecycle.js +50 -0
  170. package/dist/local/sync/wsFrameHandlers.d.ts +8 -0
  171. package/dist/local/sync/wsFrameHandlers.js +8 -0
  172. package/dist/local/transactions/databaseCommitOutbox.d.ts +15 -0
  173. package/dist/local/transactions/databaseCommitOutbox.js +16 -0
  174. package/dist/local/transactions/localMutation.d.ts +10 -0
  175. package/dist/local/transactions/localMutation.js +37 -0
  176. package/dist/local/transactions/mutations/MutationQueue.d.ts +511 -0
  177. package/dist/local/transactions/mutations/MutationQueue.js +1498 -0
  178. package/dist/local/transactions/mutations/MutationStore.d.ts +20 -0
  179. package/dist/local/transactions/mutations/MutationStore.js +53 -0
  180. package/dist/local/transactions/mutations/UnconfirmedWrites.d.ts +82 -0
  181. package/dist/local/transactions/mutations/UnconfirmedWrites.js +104 -0
  182. package/dist/local/transactions/mutations/batchProcessing.d.ts +64 -0
  183. package/dist/local/transactions/mutations/batchProcessing.js +349 -0
  184. package/dist/local/transactions/mutations/coalesceRules.d.ts +58 -0
  185. package/dist/local/transactions/mutations/coalesceRules.js +140 -0
  186. package/dist/local/transactions/mutations/commitApi.d.ts +19 -0
  187. package/dist/local/transactions/mutations/commitApi.js +74 -0
  188. package/dist/local/transactions/mutations/commitLane.d.ts +70 -0
  189. package/dist/local/transactions/mutations/commitLane.js +140 -0
  190. package/dist/local/transactions/mutations/commitLatency.d.ts +52 -0
  191. package/dist/local/transactions/mutations/commitLatency.js +130 -0
  192. package/dist/local/transactions/mutations/commitPayload.d.ts +165 -0
  193. package/dist/local/transactions/mutations/commitPayload.js +152 -0
  194. package/dist/local/transactions/mutations/commitTransport.d.ts +36 -0
  195. package/dist/local/transactions/mutations/commitTransport.js +104 -0
  196. package/dist/local/transactions/mutations/deltaConfirmation.d.ts +63 -0
  197. package/dist/local/transactions/mutations/deltaConfirmation.js +235 -0
  198. package/dist/local/transactions/mutations/durableCommitRestore.d.ts +17 -0
  199. package/dist/local/transactions/mutations/durableCommitRestore.js +95 -0
  200. package/dist/local/transactions/mutations/durableWriteStore.d.ts +14 -0
  201. package/dist/local/transactions/mutations/durableWriteStore.js +12 -0
  202. package/dist/local/transactions/mutations/executionSelection.d.ts +6 -0
  203. package/dist/local/transactions/mutations/executionSelection.js +42 -0
  204. package/dist/local/transactions/mutations/failureHandling.d.ts +16 -0
  205. package/dist/local/transactions/mutations/failureHandling.js +130 -0
  206. package/dist/local/transactions/mutations/failurePolicy.d.ts +13 -0
  207. package/dist/local/transactions/mutations/failurePolicy.js +48 -0
  208. package/dist/local/transactions/mutations/localMutation.d.ts +58 -0
  209. package/dist/local/transactions/mutations/localMutation.js +75 -0
  210. package/dist/local/transactions/mutations/modelOperations.d.ts +44 -0
  211. package/dist/local/transactions/mutations/modelOperations.js +144 -0
  212. package/dist/local/transactions/mutations/mutationPersistence.d.ts +25 -0
  213. package/dist/local/transactions/mutations/mutationPersistence.js +188 -0
  214. package/dist/local/transactions/mutations/pendingDrain.d.ts +33 -0
  215. package/dist/local/transactions/mutations/pendingDrain.js +112 -0
  216. package/dist/local/transactions/mutations/processingScheduler.d.ts +14 -0
  217. package/dist/local/transactions/mutations/processingScheduler.js +24 -0
  218. package/dist/local/transactions/mutations/queueCoalescing.d.ts +13 -0
  219. package/dist/local/transactions/mutations/queueCoalescing.js +35 -0
  220. package/dist/local/transactions/mutations/replayValidation.d.ts +187 -0
  221. package/dist/local/transactions/mutations/replayValidation.js +164 -0
  222. package/dist/local/transactions/reconnectDrain.d.ts +11 -0
  223. package/dist/local/transactions/reconnectDrain.js +13 -0
  224. package/dist/local/utils/mobxSetup.d.ts +53 -0
  225. package/dist/local/utils/mobxSetup.js +330 -0
  226. package/dist/local/views/QueryView.d.ts +79 -0
  227. package/dist/local/views/QueryView.js +218 -0
  228. package/dist/local/views/ViewRegistry.d.ts +20 -0
  229. package/dist/local/views/ViewRegistry.js +57 -0
  230. package/dist/local/views/incrementalView.d.ts +45 -0
  231. package/dist/local/views/incrementalView.js +69 -0
  232. package/dist/plugin.d.ts +285 -0
  233. package/dist/plugin.js +106 -0
  234. package/dist/presenceStream.d.ts +69 -0
  235. package/dist/presenceStream.js +200 -0
  236. package/dist/react/AbloProvider.d.ts +242 -0
  237. package/dist/react/AbloProvider.js +456 -0
  238. package/dist/react/ClientSideSuspense.d.ts +36 -0
  239. package/dist/react/ClientSideSuspense.js +17 -0
  240. package/dist/react/DefaultFallback.d.ts +24 -0
  241. package/dist/react/DefaultFallback.js +43 -0
  242. package/dist/react/context.d.ts +55 -0
  243. package/dist/react/context.js +29 -0
  244. package/dist/react/createAbloReact.d.ts +50 -0
  245. package/dist/react/createAbloReact.js +48 -0
  246. package/dist/react/internalContext.d.ts +33 -0
  247. package/dist/react/internalContext.js +3 -0
  248. package/dist/react/useAblo.d.ts +96 -0
  249. package/dist/react/useAblo.js +120 -0
  250. package/dist/react/useCurrentUserId.d.ts +2 -0
  251. package/dist/react/useCurrentUserId.js +12 -0
  252. package/dist/react/useErrorListener.d.ts +2 -0
  253. package/dist/react/useErrorListener.js +14 -0
  254. package/dist/react/useMutationFailureListener.d.ts +8 -0
  255. package/dist/react/useMutationFailureListener.js +19 -0
  256. package/dist/react/useMutators.d.ts +56 -0
  257. package/dist/react/useMutators.js +84 -0
  258. package/dist/react/useSyncStatus.d.ts +19 -0
  259. package/dist/react/useSyncStatus.js +37 -0
  260. package/dist/react/useUndoScope.d.ts +34 -0
  261. package/dist/react/useUndoScope.js +73 -0
  262. package/dist/react.d.ts +18 -0
  263. package/dist/react.js +14 -0
  264. package/dist/reactRuntime.d.ts +4 -0
  265. package/dist/reactRuntime.js +2 -0
  266. package/dist/surface.d.ts +36 -0
  267. package/dist/surface.js +77 -0
  268. package/dist/useReactive.d.ts +6 -0
  269. package/dist/useReactive.js +43 -0
  270. package/package.json +119 -0
  271. package/src/Ablo.ts +456 -0
  272. package/src/client.ts +374 -0
  273. package/src/core.ts +104 -0
  274. package/src/humans.ts +61 -0
  275. package/src/index.ts +40 -0
  276. package/src/local/BaseSyncedStore.ts +1991 -0
  277. package/src/local/Database.ts +2052 -0
  278. package/src/local/InstanceCache.ts +1503 -0
  279. package/src/local/LazyReferenceCollection.ts +563 -0
  280. package/src/local/Model.ts +1124 -0
  281. package/src/local/ModelRegistry.ts +762 -0
  282. package/src/local/NetworkMonitor.ts +88 -0
  283. package/src/local/RuntimeContext.ts +141 -0
  284. package/src/local/SyncClient.ts +2131 -0
  285. package/src/local/adapters/alwaysOnline.ts +20 -0
  286. package/src/local/adapters/inMemoryStorage.ts +141 -0
  287. package/src/local/client/clientPrelude.ts +112 -0
  288. package/src/local/client/consoleLogger.ts +60 -0
  289. package/src/local/client/createInternalComponents.ts +163 -0
  290. package/src/local/client/createModelProxy.ts +1390 -0
  291. package/src/local/client/modelRegistration.ts +350 -0
  292. package/src/local/client/options.ts +526 -0
  293. package/src/local/client/reactiveEngine.ts +935 -0
  294. package/src/local/client/resourceTypes.ts +37 -0
  295. package/src/local/client/schemaConfig.ts +194 -0
  296. package/src/local/client/storeCluster.ts +172 -0
  297. package/src/local/client/storeLifecycle.ts +343 -0
  298. package/src/local/client/validateAbloOptions.ts +95 -0
  299. package/src/local/client/wsMutationExecutor.ts +110 -0
  300. package/src/local/context.ts +96 -0
  301. package/src/local/coordination/ClaimLog.ts +39 -0
  302. package/src/local/interfaces/index.ts +468 -0
  303. package/src/local/localModelContract.ts +15 -0
  304. package/src/local/logPosition.ts +84 -0
  305. package/src/local/mutationPersistence.ts +7 -0
  306. package/src/local/mutators/RecordingMutation.ts +222 -0
  307. package/src/local/mutators/Transaction.ts +97 -0
  308. package/src/local/mutators/UndoManager.ts +741 -0
  309. package/src/local/mutators/defineMutators.ts +76 -0
  310. package/src/local/mutators/inverseOp.ts +83 -0
  311. package/src/local/mutators/mutateActions.ts +167 -0
  312. package/src/local/mutators/readerActions.ts +99 -0
  313. package/src/local/mutators/undoApply.ts +141 -0
  314. package/src/local/persistence.ts +16 -0
  315. package/src/local/query/QueryProcessor.ts +347 -0
  316. package/src/local/query/client.ts +197 -0
  317. package/src/local/query/types.ts +102 -0
  318. package/src/local/schema/serialize.ts +1 -0
  319. package/src/local/store/queryApi.ts +56 -0
  320. package/src/local/storeContract.ts +146 -0
  321. package/src/local/stores/DatabaseManager.ts +507 -0
  322. package/src/local/stores/ObjectStore.ts +449 -0
  323. package/src/local/stores/ObjectStoreContract.ts +48 -0
  324. package/src/local/stores/StoreManager.ts +388 -0
  325. package/src/local/stores/SyncActionStore.ts +579 -0
  326. package/src/local/stores/openIDBWithTimeout.ts +195 -0
  327. package/src/local/stores/persistenceCleanup.ts +43 -0
  328. package/src/local/stores/persistenceIdentity.ts +83 -0
  329. package/src/local/stores/syncAction.ts +21 -0
  330. package/src/local/stores/v1PersistenceDeletion.ts +21 -0
  331. package/src/local/sync/BootstrapFetcher.ts +1224 -0
  332. package/src/local/sync/ConnectionManager.ts +15 -0
  333. package/src/local/sync/OnDemandLoader.ts +927 -0
  334. package/src/local/sync/SubscriptionManager.ts +300 -0
  335. package/src/local/sync/SyncWebSocket.ts +584 -0
  336. package/src/local/sync/bootstrapApply.ts +130 -0
  337. package/src/local/sync/commitFrames.ts +16 -0
  338. package/src/local/sync/connectionManagerLifecycle.ts +158 -0
  339. package/src/local/sync/contextPorts.ts +37 -0
  340. package/src/local/sync/createClaimStream.ts +668 -0
  341. package/src/local/sync/createSnapshot.ts +160 -0
  342. package/src/local/sync/credentialLifecycle.ts +18 -0
  343. package/src/local/sync/deltaPipeline.ts +473 -0
  344. package/src/local/sync/groupChange.ts +343 -0
  345. package/src/local/sync/initialize.ts +205 -0
  346. package/src/local/sync/participants.ts +564 -0
  347. package/src/local/sync/persistedPrefix.ts +27 -0
  348. package/src/local/sync/reconnect.ts +88 -0
  349. package/src/local/sync/schemaDrift.ts +86 -0
  350. package/src/local/sync/schemas.ts +118 -0
  351. package/src/local/sync/socketEventWiring.ts +196 -0
  352. package/src/local/sync/syncCursor.ts +62 -0
  353. package/src/local/sync/syncPlan.ts +89 -0
  354. package/src/local/sync/terminalSessionLifecycle.ts +66 -0
  355. package/src/local/sync/wsFrameHandlers.ts +20 -0
  356. package/src/local/transactions/databaseCommitOutbox.ts +33 -0
  357. package/src/local/transactions/localMutation.ts +58 -0
  358. package/src/local/transactions/mutations/MutationQueue.ts +1998 -0
  359. package/src/local/transactions/mutations/MutationStore.ts +65 -0
  360. package/src/local/transactions/mutations/UnconfirmedWrites.ts +133 -0
  361. package/src/local/transactions/mutations/batchProcessing.ts +469 -0
  362. package/src/local/transactions/mutations/coalesceRules.ts +192 -0
  363. package/src/local/transactions/mutations/commitApi.ts +97 -0
  364. package/src/local/transactions/mutations/commitLane.ts +191 -0
  365. package/src/local/transactions/mutations/commitLatency.ts +164 -0
  366. package/src/local/transactions/mutations/commitPayload.ts +281 -0
  367. package/src/local/transactions/mutations/commitTransport.ts +174 -0
  368. package/src/local/transactions/mutations/deltaConfirmation.ts +298 -0
  369. package/src/local/transactions/mutations/durableCommitRestore.ts +128 -0
  370. package/src/local/transactions/mutations/durableWriteStore.ts +21 -0
  371. package/src/local/transactions/mutations/executionSelection.ts +42 -0
  372. package/src/local/transactions/mutations/failureHandling.ts +154 -0
  373. package/src/local/transactions/mutations/failurePolicy.ts +61 -0
  374. package/src/local/transactions/mutations/localMutation.ts +135 -0
  375. package/src/local/transactions/mutations/modelOperations.ts +210 -0
  376. package/src/local/transactions/mutations/mutationPersistence.ts +231 -0
  377. package/src/local/transactions/mutations/pendingDrain.ts +160 -0
  378. package/src/local/transactions/mutations/processingScheduler.ts +35 -0
  379. package/src/local/transactions/mutations/queueCoalescing.ts +45 -0
  380. package/src/local/transactions/mutations/replayValidation.ts +192 -0
  381. package/src/local/transactions/reconnectDrain.ts +24 -0
  382. package/src/local/utils/mobxSetup.ts +388 -0
  383. package/src/local/views/QueryView.ts +311 -0
  384. package/src/local/views/ViewRegistry.ts +61 -0
  385. package/src/local/views/incrementalView.ts +92 -0
  386. package/src/plugin.ts +396 -0
  387. package/src/presenceStream.ts +279 -0
  388. package/src/react/AbloProvider.tsx +744 -0
  389. package/src/react/ClientSideSuspense.tsx +57 -0
  390. package/src/react/DefaultFallback.tsx +60 -0
  391. package/src/react/context.ts +89 -0
  392. package/src/react/createAbloReact.ts +116 -0
  393. package/src/react/internalContext.ts +38 -0
  394. package/src/react/useAblo.ts +280 -0
  395. package/src/react/useCurrentUserId.ts +17 -0
  396. package/src/react/useErrorListener.ts +22 -0
  397. package/src/react/useMutationFailureListener.ts +34 -0
  398. package/src/react/useMutators.ts +184 -0
  399. package/src/react/useSyncStatus.ts +42 -0
  400. package/src/react/useUndoScope.ts +143 -0
  401. package/src/react.ts +69 -0
  402. package/src/reactRuntime.ts +10 -0
  403. package/src/surface.ts +106 -0
  404. package/src/useReactive.ts +51 -0
@@ -0,0 +1,34 @@
1
+ import type { Schema } from '@abloatai/transaction/schema/schema';
2
+ import { type UndoScope, type UndoScopeOptions } from '../local/mutators/UndoManager.js';
3
+ import type { ResolveSchema } from '@abloatai/transaction/types/global';
4
+ /**
5
+ * Provides per-surface undo and redo for mutator invocations. Each named scope
6
+ * owns an independent undo/redo stack, so different parts of your app — a main
7
+ * editor, a sidebar form — can undo separately without stepping on each other.
8
+ *
9
+ * Wire the returned `scope` into `useMutators(schema, mutators, { undoScope:
10
+ * scope })` and those invocations become recorded. `undo()` and `redo()` replay
11
+ * the captured inverses and forwards as new transactions that do not record
12
+ * themselves; the manager moves the entry between the two stacks explicitly.
13
+ *
14
+ * @example
15
+ * const { undo, redo, canUndo, canRedo, scope } = useUndoScope('report-editor');
16
+ * const mutate = useMutators(schema, reportMutators, { undoScope: scope });
17
+ *
18
+ * // Cmd+Z handler
19
+ * useHotkey('mod+z', () => { if (canUndo) void undo(); });
20
+ */
21
+ export interface UseUndoScopeResult<S extends Schema> {
22
+ /** Pass to `useMutators(..., { undoScope })` to enable recording. */
23
+ scope: UndoScope<S>;
24
+ undo: () => Promise<void>;
25
+ redo: () => Promise<void>;
26
+ canUndo: boolean;
27
+ canRedo: boolean;
28
+ /** Drop history. Use after sync errors / auth context changes. */
29
+ clear: () => void;
30
+ }
31
+ /** Per-surface undo/redo (explicit schema arg). */
32
+ export declare function useUndoScope<S extends Schema>(schema: S, name: string, options?: UndoScopeOptions): UseUndoScopeResult<S>;
33
+ /** Per-surface undo/redo via the `Register` module augmentation. */
34
+ export declare function useUndoScope(name: string, options?: UndoScopeOptions): UseUndoScopeResult<ResolveSchema extends Schema ? ResolveSchema : Schema>;
@@ -0,0 +1,73 @@
1
+ 'use client';
2
+ import { useEffect, useMemo, useState } from 'react';
3
+ import { UndoManager, } from '../local/mutators/UndoManager.js';
4
+ import { useSyncContext } from './context.js';
5
+ import { AbloValidationError } from '@abloatai/transaction/errors';
6
+ // Module-level weak registry: `SyncStoreContract` → `UndoManager`.
7
+ // A single app wiring through one SyncProvider shares one manager across
8
+ // every useUndoScope call, so scopes with the same name are identity-equal.
9
+ // The hook implementation already operates on the runtime-wide `Schema` type;
10
+ // its overloads restore the caller's precise schema type at the public boundary,
11
+ // so the registry can keep that same non-generic runtime representation.
12
+ const managers = new WeakMap();
13
+ function getManager(key, factory) {
14
+ let m = managers.get(key);
15
+ if (!m) {
16
+ const created = factory();
17
+ managers.set(key, created);
18
+ m = created;
19
+ }
20
+ return m;
21
+ }
22
+ export function useUndoScope(schemaOrName, nameOrOptions, maybeOptions) {
23
+ const { store, organizationId, schema: ctxSchema } = useSyncContext();
24
+ const isExplicit = typeof schemaOrName !== 'string';
25
+ const schema = isExplicit ? (schemaOrName) : ctxSchema;
26
+ const name = isExplicit ? nameOrOptions : schemaOrName;
27
+ const options = (isExplicit ? maybeOptions : nameOrOptions);
28
+ if (!schema) {
29
+ throw new AbloValidationError('useUndoScope: no schema available. Pass the schema as the first arg, ' +
30
+ 'or build the <AbloProvider> above with `Ablo({ schema })` so the ' +
31
+ 'zero-arg overload can read it from context.', { code: 'undo_scope_schema_missing' });
32
+ }
33
+ const scope = useMemo(() => {
34
+ // Store is the identity for the manager — one per SyncProvider.
35
+ const manager = getManager(store, () => new UndoManager(schema, store, organizationId));
36
+ return manager.getScope(name, options);
37
+ // eslint-disable-next-line react-hooks/exhaustive-deps
38
+ }, [store, organizationId, name]);
39
+ // Local tick forces re-render after undo/redo/clear so canUndo/canRedo
40
+ // reflect the new stack sizes. The scope itself doesn't emit React-
41
+ // friendly notifications; callers that want cross-component reactivity
42
+ // can wire a mobx observable or custom event bus on top.
43
+ const [, setTick] = useState(0);
44
+ // Reset tick when scope identity changes (new store / new orgId).
45
+ useEffect(() => {
46
+ setTick(0);
47
+ }, [scope]);
48
+ // Re-render on any stack change — including entries recorded from the local-
49
+ // mutation stream, which don't otherwise trigger a React update. Without this
50
+ // `canUndo`/`canRedo` go stale in every consumer that didn't itself call
51
+ // undo/redo (e.g. a keyboard handler whose Cmd+Z gate then never fires).
52
+ useEffect(() => {
53
+ return scope.onChange(() => { setTick((t) => t + 1); });
54
+ }, [scope]);
55
+ const size = scope.size();
56
+ return {
57
+ scope,
58
+ undo: async () => {
59
+ await scope.undo();
60
+ setTick((t) => t + 1);
61
+ },
62
+ redo: async () => {
63
+ await scope.redo();
64
+ setTick((t) => t + 1);
65
+ },
66
+ canUndo: size.undo > 0,
67
+ canRedo: size.redo > 0,
68
+ clear: () => {
69
+ scope.clear();
70
+ setTick((t) => t + 1);
71
+ },
72
+ };
73
+ }
@@ -0,0 +1,18 @@
1
+ /** React bindings for the optional human-facing local-state package. */
2
+ export { useReactive } from './useReactive.js';
3
+ export { useCurrentUserId } from './react/useCurrentUserId.js';
4
+ export { useErrorListener } from './react/useErrorListener.js';
5
+ export { useSyncStatus, type SyncStatusSnapshot } from './react/useSyncStatus.js';
6
+ export { useMutationFailureListener, type MutationFailurePayload, } from './react/useMutationFailureListener.js';
7
+ export { AbloProvider, useJoin, usePeers, useSync, useSyncStore, type AbloProviderProps, type ParticipantScope, type ParticipantStatus, type UseJoinOptions, type UseJoinReturn, } from './react/AbloProvider.js';
8
+ export { ClientSideSuspense, type ClientSideSuspenseProps, } from './react/ClientSideSuspense.js';
9
+ export { DefaultFallback } from './react/DefaultFallback.js';
10
+ export { createAbloReact, type AbloReactBinding, } from './react/createAbloReact.js';
11
+ export { useAblo, type UseAbloHydratedModelResult, type UseAbloModelOptions, type UseAbloModelResult, } from './react/useAblo.js';
12
+ export { useMutators, type InvokerFor, type MutatorInvokers, type UseMutatorsOptions, } from './react/useMutators.js';
13
+ export { useUndoScope, type UseUndoScopeResult, } from './react/useUndoScope.js';
14
+ export type { DefaultSyncShape, ResolveSchema, ResolveUserMeta, ResolveClaimMeta, ResolveModelKey, } from '@abloatai/transaction/types/global';
15
+ export { ModelScope } from '@abloatai/transaction/types';
16
+ export type { SyncStoreContract } from './react/context.js';
17
+ export type { MutateActions } from './local/mutators/mutateActions.js';
18
+ export type { ReaderActions, ReaderFindOptions, } from './local/mutators/readerActions.js';
package/dist/react.js ADDED
@@ -0,0 +1,14 @@
1
+ /** React bindings for the optional human-facing local-state package. */
2
+ export { useReactive } from './useReactive.js';
3
+ export { useCurrentUserId } from './react/useCurrentUserId.js';
4
+ export { useErrorListener } from './react/useErrorListener.js';
5
+ export { useSyncStatus } from './react/useSyncStatus.js';
6
+ export { useMutationFailureListener, } from './react/useMutationFailureListener.js';
7
+ export { AbloProvider, useJoin, usePeers, useSync, useSyncStore, } from './react/AbloProvider.js';
8
+ export { ClientSideSuspense, } from './react/ClientSideSuspense.js';
9
+ export { DefaultFallback } from './react/DefaultFallback.js';
10
+ export { createAbloReact, } from './react/createAbloReact.js';
11
+ export { useAblo, } from './react/useAblo.js';
12
+ export { useMutators, } from './react/useMutators.js';
13
+ export { useUndoScope, } from './react/useUndoScope.js';
14
+ export { ModelScope } from '@abloatai/transaction/types';
@@ -0,0 +1,4 @@
1
+ export { AbloInternalContext, type AbloInternalContextValue, } from './react/internalContext.js';
2
+ export { useSyncContext, type SyncReactContext, } from './react/context.js';
3
+ export type { SyncStoreContract } from './local/storeContract.js';
4
+ export type { QueuedMutation } from './local/transactions/mutations/MutationQueue.js';
@@ -0,0 +1,2 @@
1
+ export { AbloInternalContext, } from './react/internalContext.js';
2
+ export { useSyncContext, } from './react/context.js';
@@ -0,0 +1,36 @@
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 ["get", "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", "authTimeoutMs", "allowCrossOriginAuthEndpoint", "persistence", "durableWrites", "commitOutbox", "commitOutboxScope", "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];
@@ -0,0 +1,77 @@
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
+ 'get',
25
+ 'retrieve',
26
+ 'list',
27
+ 'local',
28
+ 'create',
29
+ 'update',
30
+ 'delete',
31
+ 'claim',
32
+ 'track',
33
+ 'join',
34
+ 'onChange',
35
+ ];
36
+ // ── the read/list query option surface ─────────────────────────────────────
37
+ /**
38
+ * The option keys accepted by `local.list` and `onChange`, matching the
39
+ * keys of {@link LocalReadOptions}. Note that the lifecycle filter is named
40
+ * `state`, not `scope`.
41
+ */
42
+ export const PUBLIC_LIST_OPTION_KEYS = [
43
+ 'where',
44
+ 'filter',
45
+ 'orderBy',
46
+ 'limit',
47
+ 'offset',
48
+ 'state',
49
+ ];
50
+ // ── the `Ablo({ … })` constructor option surface ───────────────────────────
51
+ /**
52
+ * The keys of the client constructor options, {@link AbloOptions}. Only
53
+ * `schema` is required; every other key is optional.
54
+ */
55
+ export const PUBLIC_ABLO_OPTION_KEYS = [
56
+ 'schema',
57
+ 'apiKey',
58
+ 'authEndpoint',
59
+ 'authTimeoutMs',
60
+ 'allowCrossOriginAuthEndpoint',
61
+ 'persistence',
62
+ 'durableWrites',
63
+ 'commitOutbox',
64
+ 'commitOutboxScope',
65
+ 'debug',
66
+ 'logLevel',
67
+ 'logger',
68
+ 'authToken',
69
+ 'baseURL',
70
+ 'fetch',
71
+ 'defaultHeaders',
72
+ 'defaultQuery',
73
+ 'dangerouslyAllowBrowser',
74
+ 'collaborationEvents',
75
+ 'plugins',
76
+ 'wait',
77
+ ];
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Subscribe a React component to a MobX computation with a cached snapshot.
3
+ * This is the framework-level reactive primitive owned by @abloatai/humans;
4
+ * store/model hooks are layered above it.
5
+ */
6
+ export declare function useReactive<T>(compute: () => T, equals?: (a: T, b: T) => boolean): T;
@@ -0,0 +1,43 @@
1
+ 'use client';
2
+ import { useCallback, useRef } from 'react';
3
+ import { useSyncExternalStore } from 'react';
4
+ import { reaction } from 'mobx';
5
+ /**
6
+ * Subscribe a React component to a MobX computation with a cached snapshot.
7
+ * This is the framework-level reactive primitive owned by @abloatai/humans;
8
+ * store/model hooks are layered above it.
9
+ */
10
+ export function useReactive(compute, equals = defaultEquals) {
11
+ const computeRef = useRef(compute);
12
+ const equalsRef = useRef(equals);
13
+ const snapshotRef = useRef(null);
14
+ const versionRef = useRef(0);
15
+ equalsRef.current = equals;
16
+ if (snapshotRef.current === null) {
17
+ snapshotRef.current = { value: compute() };
18
+ }
19
+ else if (computeRef.current !== compute) {
20
+ const next = compute();
21
+ if (!equals(snapshotRef.current.value, next)) {
22
+ snapshotRef.current = { value: next };
23
+ versionRef.current++;
24
+ }
25
+ }
26
+ computeRef.current = compute;
27
+ const subscribe = useCallback((onChange) => reaction(() => computeRef.current(), (next) => {
28
+ const current = snapshotRef.current.value;
29
+ if (!equalsRef.current(current, next)) {
30
+ snapshotRef.current = { value: next };
31
+ onChange();
32
+ }
33
+ }), [versionRef.current]);
34
+ const getSnapshot = useCallback(() => snapshotRef.current.value, []);
35
+ return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
36
+ }
37
+ function defaultEquals(a, b) {
38
+ if (Object.is(a, b))
39
+ return true;
40
+ if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length)
41
+ return false;
42
+ return a.every((value, index) => Object.is(value, b[index]));
43
+ }
package/package.json ADDED
@@ -0,0 +1,119 @@
1
+ {
2
+ "name": "@abloatai/humans",
3
+ "version": "0.37.0",
4
+ "description": "The optional human-facing local-state package for Ablo: presence, live queries, and React bindings.",
5
+ "license": "Apache-2.0",
6
+ "type": "module",
7
+ "engines": {
8
+ "node": ">=24.0.0"
9
+ },
10
+ "main": "./dist/index.js",
11
+ "types": "./dist/index.d.ts",
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "import": "./dist/index.js",
16
+ "default": "./dist/index.js"
17
+ },
18
+ "./react": {
19
+ "types": "./dist/react.d.ts",
20
+ "import": "./dist/react.js",
21
+ "default": "./dist/react.js"
22
+ },
23
+ "./react-runtime": {
24
+ "types": "./dist/reactRuntime.d.ts",
25
+ "import": "./dist/reactRuntime.js",
26
+ "default": "./dist/reactRuntime.js"
27
+ },
28
+ "./plugin": {
29
+ "types": "./dist/plugin.d.ts",
30
+ "import": "./dist/plugin.js",
31
+ "default": "./dist/plugin.js"
32
+ },
33
+ "./client": {
34
+ "types": "./dist/client.d.ts",
35
+ "import": "./dist/client.js",
36
+ "default": "./dist/client.js"
37
+ },
38
+ "./surface": {
39
+ "types": "./dist/surface.d.ts",
40
+ "import": "./dist/surface.js",
41
+ "default": "./dist/surface.js"
42
+ },
43
+ "./core": {
44
+ "types": "./dist/core.d.ts",
45
+ "import": "./dist/core.js",
46
+ "default": "./dist/core.js"
47
+ }
48
+ },
49
+ "files": [
50
+ "dist",
51
+ "src",
52
+ "!src/**/__tests__/**",
53
+ "!src/**/*.test.ts",
54
+ "!src/local/testing/**",
55
+ "README.md",
56
+ "package.json"
57
+ ],
58
+ "scripts": {
59
+ "clean": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
60
+ "build": "npm run clean && tsc -p tsconfig.build.json",
61
+ "prepack": "npm run build && node ../ablo/scripts/strip-source-condition.mjs",
62
+ "postpack": "node ../ablo/scripts/restore-source-condition.mjs",
63
+ "pack:check": "node ../ablo/scripts/pack-check.mjs",
64
+ "typecheck": "tsc -p tsconfig.json",
65
+ "test": "jest",
66
+ "test:unit": "jest --testPathPatterns=__tests__/unit",
67
+ "test:contract": "jest --testPathPatterns=__tests__/contract",
68
+ "test:property": "jest --testPathPatterns=__tests__/property",
69
+ "test:migrated-integration": "jest --testPathPatterns=__tests__/integration",
70
+ "test:e2e": "E2E_TEST=true jest --config jest.e2e.config.ts",
71
+ "lint:eslint": "eslint . --cache",
72
+ "check:boundary": "node scripts/check-boundary.mjs",
73
+ "test:integration": "npm run build && node scripts/check-package-integration.mjs",
74
+ "lint:pkg": "publint"
75
+ },
76
+ "publishConfig": {
77
+ "access": "public",
78
+ "provenance": true,
79
+ "registry": "https://registry.npmjs.org"
80
+ },
81
+ "repository": {
82
+ "type": "git",
83
+ "url": "git+https://github.com/Abloatai/ablo.git",
84
+ "directory": "packages/humans"
85
+ },
86
+ "dependencies": {
87
+ "@abloatai/transaction": "^0.37.0",
88
+ "mobx": "^6.13.7",
89
+ "uuid": "^11.1.0",
90
+ "zod": "^4.4.3"
91
+ },
92
+ "peerDependencies": {
93
+ "react": "^19.2.8"
94
+ },
95
+ "peerDependenciesMeta": {
96
+ "react": {
97
+ "optional": true
98
+ }
99
+ },
100
+ "devDependencies": {
101
+ "@jest/globals": "^30.2.0",
102
+ "@testing-library/react": "^16.0.0",
103
+ "@types/jest": "^30.0.0",
104
+ "@types/react": "^19.0.0",
105
+ "eslint-plugin-react-hooks": "^7.0.0",
106
+ "fake-indexeddb": "^6.0.0",
107
+ "fast-check": "^3.0.0",
108
+ "globals": "^16.5.0",
109
+ "jest": "^30.2.0",
110
+ "jest-environment-jsdom": "^30.2.0",
111
+ "jest-environment-node": "^30.2.0",
112
+ "publint": "^0.3.17",
113
+ "react": "^19.2.8",
114
+ "react-dom": "^19.2.8",
115
+ "ts-jest": "^29.4.5",
116
+ "typescript": "npm:@typescript/typescript6@^6.0.2",
117
+ "ws": "^8.18.3"
118
+ }
119
+ }