@docukit/docsync 0.0.1-alpha.1 → 0.2.0-alpha.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 (268) hide show
  1. package/dist/src/bindings/docnode.d.ts +3 -0
  2. package/dist/src/bindings/docnode.d.ts.map +1 -0
  3. package/dist/src/{shared/docBinding.js → bindings/docnode.js} +2 -5
  4. package/dist/src/bindings/docnode.js.map +1 -0
  5. package/dist/src/bindings/index.d.ts +3 -0
  6. package/dist/src/bindings/index.d.ts.map +1 -0
  7. package/dist/src/bindings/index.js +5 -0
  8. package/dist/src/bindings/index.js.map +1 -0
  9. package/dist/src/client/handlers/clientInitiated/deleteDoc.d.ts +4 -0
  10. package/dist/src/client/handlers/clientInitiated/deleteDoc.d.ts.map +1 -0
  11. package/dist/src/client/handlers/clientInitiated/deleteDoc.js +6 -0
  12. package/dist/src/client/handlers/clientInitiated/deleteDoc.js.map +1 -0
  13. package/dist/src/client/handlers/clientInitiated/presence.d.ts +10 -0
  14. package/dist/src/client/handlers/clientInitiated/presence.d.ts.map +1 -0
  15. package/dist/src/client/handlers/clientInitiated/presence.js +45 -0
  16. package/dist/src/client/handlers/clientInitiated/presence.js.map +1 -0
  17. package/dist/src/client/handlers/clientInitiated/sync/buildSyncPayload.d.ts +20 -0
  18. package/dist/src/client/handlers/clientInitiated/sync/buildSyncPayload.d.ts.map +1 -0
  19. package/dist/src/client/handlers/clientInitiated/sync/buildSyncPayload.js +38 -0
  20. package/dist/src/client/handlers/clientInitiated/sync/buildSyncPayload.js.map +1 -0
  21. package/dist/src/client/handlers/clientInitiated/sync/handleSyncResponse/applyAndBroadcastServerOps.d.ts +12 -0
  22. package/dist/src/client/handlers/clientInitiated/sync/handleSyncResponse/applyAndBroadcastServerOps.d.ts.map +1 -0
  23. package/dist/src/client/handlers/clientInitiated/sync/handleSyncResponse/applyAndBroadcastServerOps.js +39 -0
  24. package/dist/src/client/handlers/clientInitiated/sync/handleSyncResponse/applyAndBroadcastServerOps.js.map +1 -0
  25. package/dist/src/client/handlers/clientInitiated/sync/handleSyncResponse/handleSyncResponse.d.ts +11 -0
  26. package/dist/src/client/handlers/clientInitiated/sync/handleSyncResponse/handleSyncResponse.d.ts.map +1 -0
  27. package/dist/src/client/handlers/clientInitiated/sync/handleSyncResponse/handleSyncResponse.js +37 -0
  28. package/dist/src/client/handlers/clientInitiated/sync/handleSyncResponse/handleSyncResponse.js.map +1 -0
  29. package/dist/src/client/handlers/clientInitiated/sync/handleSyncResponse/persistDocDeleted.d.ts +8 -0
  30. package/dist/src/client/handlers/clientInitiated/sync/handleSyncResponse/persistDocDeleted.d.ts.map +1 -0
  31. package/dist/src/client/handlers/clientInitiated/sync/handleSyncResponse/persistDocDeleted.js +13 -0
  32. package/dist/src/client/handlers/clientInitiated/sync/handleSyncResponse/persistDocDeleted.js.map +1 -0
  33. package/dist/src/client/handlers/clientInitiated/sync/handleSyncResponse/persistSyncResult.d.ts +14 -0
  34. package/dist/src/client/handlers/clientInitiated/sync/handleSyncResponse/persistSyncResult.d.ts.map +1 -0
  35. package/dist/src/client/handlers/clientInitiated/sync/handleSyncResponse/persistSyncResult.js +38 -0
  36. package/dist/src/client/handlers/clientInitiated/sync/handleSyncResponse/persistSyncResult.js.map +1 -0
  37. package/dist/src/client/handlers/clientInitiated/sync/sync.d.ts +7 -0
  38. package/dist/src/client/handlers/clientInitiated/sync/sync.d.ts.map +1 -0
  39. package/dist/src/client/handlers/clientInitiated/sync/sync.js +41 -0
  40. package/dist/src/client/handlers/clientInitiated/sync/sync.js.map +1 -0
  41. package/dist/src/client/handlers/clientInitiated/sync.d.ts +21 -0
  42. package/dist/src/client/handlers/clientInitiated/sync.d.ts.map +1 -0
  43. package/dist/src/client/handlers/clientInitiated/sync.js +174 -0
  44. package/dist/src/client/handlers/clientInitiated/sync.js.map +1 -0
  45. package/dist/src/client/handlers/clientInitiated/unsubscribe.d.ts +4 -0
  46. package/dist/src/client/handlers/clientInitiated/unsubscribe.d.ts.map +1 -0
  47. package/dist/src/client/handlers/clientInitiated/unsubscribe.js +12 -0
  48. package/dist/src/client/handlers/clientInitiated/unsubscribe.js.map +1 -0
  49. package/dist/src/client/handlers/connection/connect.d.ts +5 -0
  50. package/dist/src/client/handlers/connection/connect.d.ts.map +1 -0
  51. package/dist/src/client/handlers/connection/connect.js +10 -0
  52. package/dist/src/client/handlers/connection/connect.js.map +1 -0
  53. package/dist/src/client/handlers/connection/disconnect.d.ts +5 -0
  54. package/dist/src/client/handlers/connection/disconnect.d.ts.map +1 -0
  55. package/dist/src/client/handlers/connection/disconnect.js +21 -0
  56. package/dist/src/client/handlers/connection/disconnect.js.map +1 -0
  57. package/dist/src/client/handlers/serverInitiated/dirty.d.ts +5 -0
  58. package/dist/src/client/handlers/serverInitiated/dirty.d.ts.map +1 -0
  59. package/dist/src/client/handlers/serverInitiated/dirty.js +7 -0
  60. package/dist/src/client/handlers/serverInitiated/dirty.js.map +1 -0
  61. package/dist/src/client/handlers/serverInitiated/presence.d.ts +6 -0
  62. package/dist/src/client/handlers/serverInitiated/presence.d.ts.map +1 -0
  63. package/dist/src/client/handlers/serverInitiated/presence.js +11 -0
  64. package/dist/src/client/handlers/serverInitiated/presence.js.map +1 -0
  65. package/dist/src/client/index.d.ts +20 -73
  66. package/dist/src/client/index.d.ts.map +1 -1
  67. package/dist/src/client/index.js +54 -522
  68. package/dist/src/client/index.js.map +1 -1
  69. package/dist/src/client/methods/deleteDoc.d.ts +5 -0
  70. package/dist/src/client/methods/deleteDoc.d.ts.map +1 -0
  71. package/dist/src/client/methods/deleteDoc.js +22 -0
  72. package/dist/src/client/methods/deleteDoc.js.map +1 -0
  73. package/dist/src/client/methods/getDoc/getDoc.d.ts +6 -0
  74. package/dist/src/client/methods/getDoc/getDoc.d.ts.map +1 -0
  75. package/dist/src/client/methods/getDoc/getDoc.js +107 -0
  76. package/dist/src/client/methods/getDoc/getDoc.js.map +1 -0
  77. package/dist/src/client/methods/getDoc/loadOrCreateDoc.d.ts +3 -0
  78. package/dist/src/client/methods/getDoc/loadOrCreateDoc.d.ts.map +1 -0
  79. package/dist/src/client/methods/getDoc/loadOrCreateDoc.js +42 -0
  80. package/dist/src/client/methods/getDoc/loadOrCreateDoc.js.map +1 -0
  81. package/dist/src/client/methods/getDoc/setupChangeListener/onLocalOperations.d.ts +6 -0
  82. package/dist/src/client/methods/getDoc/setupChangeListener/onLocalOperations.d.ts.map +1 -0
  83. package/dist/src/client/methods/getDoc/setupChangeListener/onLocalOperations.js +36 -0
  84. package/dist/src/client/methods/getDoc/setupChangeListener/onLocalOperations.js.map +1 -0
  85. package/dist/src/client/methods/getDoc/setupChangeListener/setupChangeListener.d.ts +3 -0
  86. package/dist/src/client/methods/getDoc/setupChangeListener/setupChangeListener.d.ts.map +1 -0
  87. package/dist/src/client/methods/getDoc/setupChangeListener/setupChangeListener.js +30 -0
  88. package/dist/src/client/methods/getDoc/setupChangeListener/setupChangeListener.js.map +1 -0
  89. package/dist/src/client/methods/getDoc/unloadDoc.d.ts +3 -0
  90. package/dist/src/client/methods/getDoc/unloadDoc.d.ts.map +1 -0
  91. package/dist/src/client/methods/getDoc/unloadDoc.js +32 -0
  92. package/dist/src/client/methods/getDoc/unloadDoc.js.map +1 -0
  93. package/dist/src/client/methods/getPresence.d.ts +6 -0
  94. package/dist/src/client/methods/getPresence.d.ts.map +1 -0
  95. package/dist/src/client/methods/getPresence.js +23 -0
  96. package/dist/src/client/methods/getPresence.js.map +1 -0
  97. package/dist/src/client/providers/indexeddb.d.ts +3 -3
  98. package/dist/src/client/providers/indexeddb.d.ts.map +1 -1
  99. package/dist/src/client/providers/indexeddb.js.map +1 -1
  100. package/dist/src/client/types.d.ts +81 -0
  101. package/dist/src/client/types.d.ts.map +1 -0
  102. package/dist/src/client/types.js +2 -0
  103. package/dist/src/client/types.js.map +1 -0
  104. package/dist/src/client/utils/BCHelper.d.ts +21 -0
  105. package/dist/src/client/utils/BCHelper.d.ts.map +1 -0
  106. package/dist/src/client/utils/BCHelper.js +57 -0
  107. package/dist/src/client/utils/BCHelper.js.map +1 -0
  108. package/dist/src/client/utils/applyPresencePatch.d.ts +11 -0
  109. package/dist/src/client/utils/applyPresencePatch.d.ts.map +1 -0
  110. package/dist/src/client/utils/applyPresencePatch.js +21 -0
  111. package/dist/src/client/utils/applyPresencePatch.js.map +1 -0
  112. package/dist/src/client/utils/createSocket.d.ts +4 -0
  113. package/dist/src/client/utils/createSocket.d.ts.map +1 -0
  114. package/dist/src/client/utils/createSocket.js +29 -0
  115. package/dist/src/client/utils/createSocket.js.map +1 -0
  116. package/dist/src/client/utils/events.d.ts +46 -0
  117. package/dist/src/client/utils/events.d.ts.map +1 -0
  118. package/dist/src/client/utils/events.js +25 -0
  119. package/dist/src/client/utils/events.js.map +1 -0
  120. package/dist/src/client/utils/getDeviceId.d.ts +6 -0
  121. package/dist/src/client/utils/getDeviceId.d.ts.map +1 -0
  122. package/dist/src/client/utils/getDeviceId.js +14 -0
  123. package/dist/src/client/utils/getDeviceId.js.map +1 -0
  124. package/dist/src/client/utils/getOwnPresencePatch.d.ts +3 -0
  125. package/dist/src/client/utils/getOwnPresencePatch.d.ts.map +1 -0
  126. package/dist/src/client/utils/getOwnPresencePatch.js +10 -0
  127. package/dist/src/client/utils/getOwnPresencePatch.js.map +1 -0
  128. package/dist/src/client/utils/request.d.ts +10 -0
  129. package/dist/src/client/utils/request.d.ts.map +1 -0
  130. package/dist/src/client/utils/request.js +15 -0
  131. package/dist/src/client/utils/request.js.map +1 -0
  132. package/dist/src/exports/client.d.ts +4 -1
  133. package/dist/src/exports/client.d.ts.map +1 -1
  134. package/dist/src/exports/client.js +1 -0
  135. package/dist/src/exports/client.js.map +1 -1
  136. package/dist/src/exports/docnode.d.ts +1 -1
  137. package/dist/src/exports/docnode.d.ts.map +1 -1
  138. package/dist/src/exports/docnode.js +1 -1
  139. package/dist/src/exports/docnode.js.map +1 -1
  140. package/dist/src/exports/server.d.ts +1 -1
  141. package/dist/src/exports/server.d.ts.map +1 -1
  142. package/dist/src/exports/server.js.map +1 -1
  143. package/dist/src/exports/shared.d.ts +2 -0
  144. package/dist/src/exports/shared.d.ts.map +1 -0
  145. package/dist/src/exports/shared.js +2 -0
  146. package/dist/src/exports/shared.js.map +1 -0
  147. package/dist/src/server/cli.js +1 -1
  148. package/dist/src/server/cli.js.map +1 -1
  149. package/dist/src/server/handlers/connection/authenticationAndConnection.d.ts +7 -0
  150. package/dist/src/server/handlers/connection/authenticationAndConnection.d.ts.map +1 -0
  151. package/dist/src/server/handlers/connection/authenticationAndConnection.js +57 -0
  152. package/dist/src/server/handlers/connection/authenticationAndConnection.js.map +1 -0
  153. package/dist/src/server/handlers/connection/disconnect.d.ts +5 -0
  154. package/dist/src/server/handlers/connection/disconnect.d.ts.map +1 -0
  155. package/dist/src/server/handlers/connection/disconnect.js +25 -0
  156. package/dist/src/server/handlers/connection/disconnect.js.map +1 -0
  157. package/dist/src/server/handlers/deleteDoc.d.ts +11 -0
  158. package/dist/src/server/handlers/deleteDoc.d.ts.map +1 -0
  159. package/dist/src/server/handlers/deleteDoc.js +13 -0
  160. package/dist/src/server/handlers/deleteDoc.js.map +1 -0
  161. package/dist/src/server/handlers/disconnect.d.ts +10 -0
  162. package/dist/src/server/handlers/disconnect.d.ts.map +1 -0
  163. package/dist/src/server/handlers/disconnect.js +24 -0
  164. package/dist/src/server/handlers/disconnect.js.map +1 -0
  165. package/dist/src/server/handlers/presence.d.ts +12 -0
  166. package/dist/src/server/handlers/presence.d.ts.map +1 -0
  167. package/dist/src/server/handlers/presence.js +19 -0
  168. package/dist/src/server/handlers/presence.js.map +1 -0
  169. package/dist/src/server/handlers/sync/handleError.d.ts +13 -0
  170. package/dist/src/server/handlers/sync/handleError.d.ts.map +1 -0
  171. package/dist/src/server/handlers/sync/handleError.js +23 -0
  172. package/dist/src/server/handlers/sync/handleError.js.map +1 -0
  173. package/dist/src/server/handlers/sync/handleSync.d.ts +10 -0
  174. package/dist/src/server/handlers/sync/handleSync.d.ts.map +1 -0
  175. package/dist/src/server/handlers/sync/handleSync.js +68 -0
  176. package/dist/src/server/handlers/sync/handleSync.js.map +1 -0
  177. package/dist/src/server/handlers/sync/notifyClients.d.ts +12 -0
  178. package/dist/src/server/handlers/sync/notifyClients.d.ts.map +1 -0
  179. package/dist/src/server/handlers/sync/notifyClients.js +27 -0
  180. package/dist/src/server/handlers/sync/notifyClients.js.map +1 -0
  181. package/dist/src/server/handlers/sync/runSyncTransaction.d.ts +16 -0
  182. package/dist/src/server/handlers/sync/runSyncTransaction.d.ts.map +1 -0
  183. package/dist/src/server/handlers/sync/runSyncTransaction.js +43 -0
  184. package/dist/src/server/handlers/sync/runSyncTransaction.js.map +1 -0
  185. package/dist/src/server/handlers/sync/squashIfNeeded.d.ts +9 -0
  186. package/dist/src/server/handlers/sync/squashIfNeeded.d.ts.map +1 -0
  187. package/dist/src/server/handlers/sync/squashIfNeeded.js +32 -0
  188. package/dist/src/server/handlers/sync/squashIfNeeded.js.map +1 -0
  189. package/dist/src/server/handlers/sync/subscribeToRoom.d.ts +8 -0
  190. package/dist/src/server/handlers/sync/subscribeToRoom.d.ts.map +1 -0
  191. package/dist/src/server/handlers/sync/subscribeToRoom.js +21 -0
  192. package/dist/src/server/handlers/sync/subscribeToRoom.js.map +1 -0
  193. package/dist/src/server/handlers/sync.d.ts +13 -0
  194. package/dist/src/server/handlers/sync.d.ts.map +1 -0
  195. package/dist/src/server/handlers/sync.js +161 -0
  196. package/dist/src/server/handlers/sync.js.map +1 -0
  197. package/dist/src/server/handlers/unsubscribe.d.ts +10 -0
  198. package/dist/src/server/handlers/unsubscribe.d.ts.map +1 -0
  199. package/dist/src/server/handlers/unsubscribe.js +21 -0
  200. package/dist/src/server/handlers/unsubscribe.js.map +1 -0
  201. package/dist/src/server/index.d.ts +11 -11
  202. package/dist/src/server/index.d.ts.map +1 -1
  203. package/dist/src/server/index.js +37 -337
  204. package/dist/src/server/index.js.map +1 -1
  205. package/dist/src/server/providers/memory.d.ts +3 -3
  206. package/dist/src/server/providers/memory.d.ts.map +1 -1
  207. package/dist/src/server/providers/memory.js +5 -0
  208. package/dist/src/server/providers/memory.js.map +1 -1
  209. package/dist/src/server/providers/postgres/drizzle.config.d.ts.map +1 -1
  210. package/dist/src/server/providers/postgres/drizzle.config.js +2 -1
  211. package/dist/src/server/providers/postgres/drizzle.config.js.map +1 -1
  212. package/dist/src/server/providers/postgres/index.d.ts +4 -3
  213. package/dist/src/server/providers/postgres/index.d.ts.map +1 -1
  214. package/dist/src/server/providers/postgres/index.js +7 -9
  215. package/dist/src/server/providers/postgres/index.js.map +1 -1
  216. package/dist/src/server/providers/postgres/schema.d.ts +1 -0
  217. package/dist/src/server/providers/postgres/schema.d.ts.map +1 -1
  218. package/dist/src/server/providers/postgres/schema.js +18 -1
  219. package/dist/src/server/providers/postgres/schema.js.map +1 -1
  220. package/dist/src/server/types.d.ts +107 -0
  221. package/dist/src/server/types.d.ts.map +1 -0
  222. package/dist/src/server/types.js +2 -0
  223. package/dist/src/server/types.js.map +1 -0
  224. package/dist/src/server/utils/applyPresenceUpdate.d.ts +11 -0
  225. package/dist/src/server/utils/applyPresenceUpdate.d.ts.map +1 -0
  226. package/dist/src/server/utils/applyPresenceUpdate.js +25 -0
  227. package/dist/src/server/utils/applyPresenceUpdate.js.map +1 -0
  228. package/dist/src/server/utils/authorizeMiddleware.d.ts +4 -0
  229. package/dist/src/server/utils/authorizeMiddleware.d.ts.map +1 -0
  230. package/dist/src/server/utils/authorizeMiddleware.js +73 -0
  231. package/dist/src/server/utils/authorizeMiddleware.js.map +1 -0
  232. package/dist/src/server/utils/events.d.ts +16 -0
  233. package/dist/src/server/utils/events.d.ts.map +1 -0
  234. package/dist/src/server/utils/events.js +22 -0
  235. package/dist/src/server/utils/events.js.map +1 -0
  236. package/dist/src/server/utils/rateLimitMiddleware.d.ts +6 -0
  237. package/dist/src/server/utils/rateLimitMiddleware.d.ts.map +1 -0
  238. package/dist/src/server/utils/rateLimitMiddleware.js +65 -0
  239. package/dist/src/server/utils/rateLimitMiddleware.js.map +1 -0
  240. package/dist/src/shared/types.d.ts +52 -338
  241. package/dist/src/shared/types.d.ts.map +1 -1
  242. package/dist/src/shared/types.js +0 -4
  243. package/dist/src/shared/types.js.map +1 -1
  244. package/dist/tsconfig.build.tsbuildinfo +1 -1
  245. package/package.json +3 -5
  246. package/dist/src/exports/index.d.ts +0 -3
  247. package/dist/src/exports/index.d.ts.map +0 -1
  248. package/dist/src/exports/index.js +0 -3
  249. package/dist/src/exports/index.js.map +0 -1
  250. package/dist/src/exports/testing.d.ts +0 -7
  251. package/dist/src/exports/testing.d.ts.map +0 -1
  252. package/dist/src/exports/testing.js +0 -6
  253. package/dist/src/exports/testing.js.map +0 -1
  254. package/dist/src/shared/debounce.d.ts +0 -2
  255. package/dist/src/shared/debounce.d.ts.map +0 -1
  256. package/dist/src/shared/debounce.js +0 -10
  257. package/dist/src/shared/debounce.js.map +0 -1
  258. package/dist/src/shared/docBinding.d.ts +0 -17
  259. package/dist/src/shared/docBinding.d.ts.map +0 -1
  260. package/dist/src/shared/docBinding.js.map +0 -1
  261. package/dist/src/shared/throttle.d.ts +0 -30
  262. package/dist/src/shared/throttle.d.ts.map +0 -1
  263. package/dist/src/shared/throttle.js +0 -51
  264. package/dist/src/shared/throttle.js.map +0 -1
  265. package/dist/src/shared/utils.d.ts +0 -2
  266. package/dist/src/shared/utils.d.ts.map +0 -1
  267. package/dist/src/shared/utils.js +0 -11
  268. package/dist/src/shared/utils.js.map +0 -1
@@ -0,0 +1,3 @@
1
+ import { Doc, type DocConfig, type Operations } from "@docukit/docnode";
2
+ export declare const DocNodeBinding: (docConfigs: DocConfig[]) => import("../shared/types.js").DocBinding<Doc, import("@docukit/docnode").JsonDoc, Operations>;
3
+ //# sourceMappingURL=docnode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docnode.d.ts","sourceRoot":"","sources":["../../../src/bindings/docnode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGxE,eAAO,MAAM,cAAc,GAAI,YAAY,SAAS,EAAE,iGAmCrD,CAAC"}
@@ -1,8 +1,5 @@
1
- /* eslint-disable @typescript-eslint/no-empty-object-type */
2
1
  import { Doc } from "@docukit/docnode";
3
- export const createDocBinding = (docBinding) => {
4
- return docBinding;
5
- };
2
+ import { createDocBinding } from "./index.js";
6
3
  export const DocNodeBinding = (docConfigs) => {
7
4
  const docConfigsMap = new Map();
8
5
  docConfigs.forEach((docConfig) => {
@@ -38,4 +35,4 @@ export const DocNodeBinding = (docConfigs) => {
38
35
  dispose: (doc) => doc.dispose(),
39
36
  });
40
37
  };
41
- //# sourceMappingURL=docBinding.js.map
38
+ //# sourceMappingURL=docnode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docnode.js","sourceRoot":"","sources":["../../../src/bindings/docnode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAmC,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,UAAuB,EAAE,EAAE;IACxD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAqB,CAAC;IAEnD,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QAC/B,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;QAClC,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,OAAO,gBAAgB,CAAC;QACtB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;YACnB,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;YACzD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1C,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACrC,CAAC;QACD,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAChD,WAAW,EAAE,CAAC,aAAa,EAAE,EAAE;YAC7B,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;YACzD,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YACnD,GAAG,CAAC,WAAW,EAAE,CAAC;YAClB,OAAO,GAAG,CAAC;QACb,CAAC;QACD,QAAQ,EAAE,CAAC,GAAG,EAAE,EAA4C,EAAE,EAAE,CAC9D,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClB,eAAe,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE;YACnC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAChC,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,CAAC;QACD,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE;KAChC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { DocBinding } from "../shared/types.js";
2
+ export declare const createDocBinding: <D extends {}, S extends {}, O extends {} = {}>(docBinding: DocBinding<D, S, O>) => DocBinding<D, S, O>;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bindings/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,EAC5E,YAAY,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC9B,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAEpB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /* eslint-disable @typescript-eslint/no-empty-object-type */
2
+ export const createDocBinding = (docBinding) => {
3
+ return docBinding;
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bindings/index.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAI5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,UAA+B,EACV,EAAE;IACvB,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { DeleteDocRequest } from "../../../shared/types.js";
2
+ import type { ClientSocket } from "../../types.js";
3
+ export declare const handleDeleteDoc: (socket: ClientSocket<object, object>, payload: DeleteDocRequest, timeoutMs?: number) => Promise<boolean>;
4
+ //# sourceMappingURL=deleteDoc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deleteDoc.d.ts","sourceRoot":"","sources":["../../../../../src/client/handlers/clientInitiated/deleteDoc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,eAAO,MAAM,eAAe,GAC1B,QAAQ,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,SAAS,gBAAgB,EACzB,kBAAgB,KACf,OAAO,CAAC,OAAO,CAGjB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { request } from "../../utils/request.js";
2
+ export const handleDeleteDoc = async (socket, payload, timeoutMs = 5000) => {
3
+ const response = await request(socket, "delete-doc", payload, timeoutMs);
4
+ return response.success;
5
+ };
6
+ //# sourceMappingURL=deleteDoc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deleteDoc.js","sourceRoot":"","sources":["../../../../../src/client/handlers/clientInitiated/deleteDoc.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,MAAoC,EACpC,OAAyB,EACzB,SAAS,GAAG,IAAI,EACE,EAAE;IACpB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACzE,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC1B,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { DocSyncClient } from "../../index.js";
2
+ /**
3
+ * Set presence for a document: debounces updates, then updates local cache,
4
+ * broadcasts to other tabs, and sends to the server.
5
+ */
6
+ export declare function handlePresence<D extends {}, S extends {}, O extends {}>(client: DocSyncClient<D, S, O>, args: {
7
+ docId: string;
8
+ presence: unknown;
9
+ }): void;
10
+ //# sourceMappingURL=presence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presence.d.ts","sourceRoot":"","sources":["../../../../../src/client/handlers/clientInitiated/presence.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIpD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,EACrE,MAAM,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC9B,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GACzC,IAAI,CA2CN"}
@@ -0,0 +1,45 @@
1
+ import { request } from "../../utils/request.js";
2
+ import { applyPresencePatch } from "../../utils/applyPresencePatch.js";
3
+ /**
4
+ * Set presence for a document: debounces updates, then updates local cache,
5
+ * broadcasts to other tabs, and sends to the server.
6
+ */
7
+ export function handlePresence(client, args) {
8
+ const { docId, presence } = args;
9
+ const cacheEntry = client["_docsCache"].get(docId);
10
+ if (!cacheEntry) {
11
+ throw new Error(`Doc ${docId} is not loaded, cannot set presence`);
12
+ }
13
+ const existingState = client["_presenceDebounceState"].get(docId);
14
+ clearTimeout(existingState?.timeout);
15
+ const timeout = setTimeout(() => {
16
+ const state = client["_presenceDebounceState"].get(docId);
17
+ if (!state)
18
+ return;
19
+ client["_presenceDebounceState"].delete(docId);
20
+ const patch = { [client["_clientId"]]: state.data };
21
+ applyPresencePatch(client["_clientId"], cacheEntry, patch);
22
+ client["_bcHelper"]?.broadcast({
23
+ type: "PRESENCE",
24
+ docId,
25
+ presence: patch,
26
+ });
27
+ const socket = client["_socket"];
28
+ if (socket.connected) {
29
+ void (async () => {
30
+ try {
31
+ const payload = { docId, presence: state.data };
32
+ const { error } = await request(socket, "presence", payload, 5000);
33
+ if (error) {
34
+ console.error(`Error setting presence for doc ${docId}:`, error);
35
+ }
36
+ }
37
+ catch (error) {
38
+ console.error(`Error setting presence for doc ${docId}:`, error);
39
+ }
40
+ })();
41
+ }
42
+ }, client["_presenceDebounce"]);
43
+ client["_presenceDebounceState"].set(docId, { timeout, data: presence });
44
+ }
45
+ //# sourceMappingURL=presence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presence.js","sourceRoot":"","sources":["../../../../../src/client/handlers/clientInitiated/presence.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,MAA8B,EAC9B,IAA0C;IAE1C,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACjC,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,qCAAqC,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClE,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAErC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,MAAM,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE/C,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAEpD,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAE3D,MAAM,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;YAC7B,IAAI,EAAE,UAAU;YAChB,KAAK;YACL,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,IAAI,CAAC;oBACH,MAAM,OAAO,GAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;oBACjE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;oBACnE,IAAI,KAAK,EAAE,CAAC;wBACV,OAAO,CAAC,KAAK,CAAC,kCAAkC,KAAK,GAAG,EAAE,KAAK,CAAC,CAAC;oBACnE,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,KAAK,GAAG,EAAE,KAAK,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;IACH,CAAC,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAEhC,MAAM,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { SyncRequest } from "../../../../shared/types.js";
2
+ import type { DocSyncClient } from "../../../index.js";
3
+ import type { DeferredState } from "../../../types.js";
4
+ export type BuildSyncPayloadResult<O> = {
5
+ payload: SyncRequest<O>;
6
+ req: {
7
+ docId: string;
8
+ operations: O[];
9
+ clock: number;
10
+ };
11
+ operationsBatches: O[][];
12
+ };
13
+ /**
14
+ * Reads operations and clock from provider, flushes presence debounce, and
15
+ * builds the sync request payload and req object for events.
16
+ */
17
+ export declare function buildSyncPayload<D extends {}, S extends {}, O extends {}>(client: DocSyncClient<D, S, O>, docId: string, cacheEntry: {
18
+ presenceDebounceState: DeferredState<unknown>;
19
+ }): Promise<BuildSyncPayloadResult<O>>;
20
+ //# sourceMappingURL=buildSyncPayload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildSyncPayload.d.ts","sourceRoot":"","sources":["../../../../../../src/client/handlers/clientInitiated/sync/buildSyncPayload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI;IACtC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACxB,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,CAAC,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,iBAAiB,EAAE,CAAC,EAAE,EAAE,CAAC;CAC1B,CAAC;AAEF;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,CAAC,SAAS,EAAE,EACZ,CAAC,SAAS,EAAE,EACZ,CAAC,SAAS,EAAE,EAEZ,MAAM,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC9B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE;IAAE,qBAAqB,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;CAAE,GAC5D,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAuCpC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Reads operations and clock from provider, flushes presence debounce, and
3
+ * builds the sync request payload and req object for events.
4
+ */
5
+ export async function buildSyncPayload(client, docId, cacheEntry) {
6
+ const { provider } = await client["_localPromise"];
7
+ const [rawBatches, stored] = await provider.transaction("readonly", async (ctx) => {
8
+ return Promise.all([
9
+ ctx.getOperations({ docId }),
10
+ ctx.getSerializedDoc(docId),
11
+ ]);
12
+ });
13
+ const operationsBatches = rawBatches === "deleted" ? [] : rawBatches;
14
+ const flatOps = operationsBatches.flat();
15
+ const operations = rawBatches === "deleted" ? "deleted" : flatOps;
16
+ const clientClock = stored?.clock ?? 0;
17
+ const presenceState = cacheEntry.presenceDebounceState;
18
+ let presence;
19
+ if (presenceState !== undefined) {
20
+ clearTimeout(presenceState.timeout);
21
+ presence = presenceState.data;
22
+ cacheEntry.presenceDebounceState = undefined;
23
+ client["_bcHelper"]?.broadcast({
24
+ type: "PRESENCE",
25
+ docId,
26
+ presence: { [client["_clientId"]]: presence },
27
+ });
28
+ }
29
+ const payload = {
30
+ clock: clientClock,
31
+ docId,
32
+ operations,
33
+ ...(presence !== undefined ? { presence } : {}),
34
+ };
35
+ const req = { docId, operations: flatOps, clock: clientClock };
36
+ return { payload, req, operationsBatches };
37
+ }
38
+ //# sourceMappingURL=buildSyncPayload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildSyncPayload.js","sourceRoot":"","sources":["../../../../../../src/client/handlers/clientInitiated/sync/buildSyncPayload.ts"],"names":[],"mappings":"AAUA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAKpC,MAA8B,EAC9B,KAAa,EACb,UAA6D;IAE7D,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAEnD,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,WAAW,CACrD,UAAU,EACV,KAAK,EAAE,GAAG,EAAE,EAAE;QACZ,OAAO,OAAO,CAAC,GAAG,CAAC;YACjB,GAAG,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;YAC5B,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IACF,MAAM,iBAAiB,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;IACrE,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,UAAU,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;IAClE,MAAM,WAAW,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,CAAC;IAEvC,MAAM,aAAa,GAAG,UAAU,CAAC,qBAAqB,CAAC;IACvD,IAAI,QAAiB,CAAC;IACtB,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACpC,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC;QAC9B,UAAU,CAAC,qBAAqB,GAAG,SAAS,CAAC;QAC7C,MAAM,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;YAC7B,IAAI,EAAE,UAAU;YAChB,KAAK;YACL,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE;SAC9C,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAmB;QAC9B,KAAK,EAAE,WAAW;QAClB,KAAK;QACL,UAAU;QACV,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChD,CAAC;IACF,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IAE/D,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { DocSyncClient } from "../../../../index.js";
2
+ /**
3
+ * Applies server operations to the cached doc (emit change) and broadcasts
4
+ * each operation to other tabs with optional presence patch.
5
+ */
6
+ export declare function applyAndBroadcastServerOps<D extends {}, S extends {}, O extends {}>(client: DocSyncClient<D, S, O>, docId: string, operations: O[]): Promise<void>;
7
+ /** Applies server operations to the cached doc and emits change event (remote). */
8
+ export declare function applyServerOperations<D extends {}, S extends {}, O extends {}>(client: DocSyncClient<D, S, O>, args: {
9
+ docId: string;
10
+ operations: O[];
11
+ }): Promise<void>;
12
+ //# sourceMappingURL=applyAndBroadcastServerOps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyAndBroadcastServerOps.d.ts","sourceRoot":"","sources":["../../../../../../../src/client/handlers/clientInitiated/sync/handleSyncResponse/applyAndBroadcastServerOps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,CAAC,SAAS,EAAE,EACZ,CAAC,SAAS,EAAE,EACZ,CAAC,SAAS,EAAE,EAEZ,MAAM,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC9B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,CAAC,EAAE,GACd,OAAO,CAAC,IAAI,CAAC,CAcf;AAED,mFAAmF;AACnF,wBAAsB,qBAAqB,CACzC,CAAC,SAAS,EAAE,EACZ,CAAC,SAAS,EAAE,EACZ,CAAC,SAAS,EAAE,EAEZ,MAAM,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC9B,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,CAAC,EAAE,CAAA;CAAE,GACvC,OAAO,CAAC,IAAI,CAAC,CAkBf"}
@@ -0,0 +1,39 @@
1
+ import { getOwnPresencePatch } from "../../../../utils/getOwnPresencePatch.js";
2
+ /**
3
+ * Applies server operations to the cached doc (emit change) and broadcasts
4
+ * each operation to other tabs with optional presence patch.
5
+ */
6
+ export async function applyAndBroadcastServerOps(client, docId, operations) {
7
+ if (operations.length === 0)
8
+ return;
9
+ await applyServerOperations(client, { docId, operations });
10
+ const presencePatch = getOwnPresencePatch(client, docId);
11
+ for (const op of operations) {
12
+ client["_bcHelper"]?.broadcast({
13
+ type: "OPERATIONS",
14
+ operations: op,
15
+ docId,
16
+ ...(presencePatch && { presence: presencePatch }),
17
+ });
18
+ }
19
+ }
20
+ /** Applies server operations to the cached doc and emits change event (remote). */
21
+ export async function applyServerOperations(client, args) {
22
+ const cacheEntry = client["_docsCache"].get(args.docId);
23
+ if (!cacheEntry)
24
+ return;
25
+ const doc = await cacheEntry.promisedDoc;
26
+ if (!doc || doc === "deleted")
27
+ return;
28
+ client["_shouldBroadcast"] = false;
29
+ for (const op of args.operations) {
30
+ client["_docBinding"].applyOperations(doc, op);
31
+ }
32
+ client["_shouldBroadcast"] = true;
33
+ client["_events"].emit("change", {
34
+ docId: args.docId,
35
+ origin: "remote",
36
+ operations: args.operations,
37
+ });
38
+ }
39
+ //# sourceMappingURL=applyAndBroadcastServerOps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyAndBroadcastServerOps.js","sourceRoot":"","sources":["../../../../../../../src/client/handlers/clientInitiated/sync/handleSyncResponse/applyAndBroadcastServerOps.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAE/E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAK9C,MAA8B,EAC9B,KAAa,EACb,UAAe;IAEf,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEpC,MAAM,qBAAqB,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAE3D,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACzD,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;YAC7B,IAAI,EAAE,YAAY;YAClB,UAAU,EAAE,EAAE;YACd,KAAK;YACL,GAAG,CAAC,aAAa,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;SAClD,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAKzC,MAA8B,EAC9B,IAAwC;IAExC,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU;QAAE,OAAO;IAExB,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC;IACzC,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO;IAEtC,MAAM,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC;IACnC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC;IAElC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;QAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { SyncRequest } from "../../../../../shared/types.js";
2
+ import type { DocSyncClient } from "../../../../index.js";
3
+ import type { BuildSyncPayloadResult } from "../buildSyncPayload.js";
4
+ import { type SyncResponseData } from "./persistSyncResult.js";
5
+ /**
6
+ * Handles a successful sync response: emits the sync event, then either
7
+ * persists a "deleted" doc or persists the sync result and optionally
8
+ * applies and broadcasts server operations.
9
+ */
10
+ export declare function handleSyncResponse<D extends {}, S extends {}, O extends {}>(client: DocSyncClient<D, S, O>, docId: string, payload: SyncRequest<O>, req: BuildSyncPayloadResult<O>["req"], operationsBatches: O[][], data: SyncResponseData<S, O>): Promise<void>;
11
+ //# sourceMappingURL=handleSyncResponse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleSyncResponse.d.ts","sourceRoot":"","sources":["../../../../../../../src/client/handlers/clientInitiated/sync/handleSyncResponse/handleSyncResponse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAErE,OAAO,EACL,KAAK,gBAAgB,EAEtB,MAAM,wBAAwB,CAAC;AAEhC;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,CAAC,SAAS,EAAE,EACZ,CAAC,SAAS,EAAE,EACZ,CAAC,SAAS,EAAE,EAEZ,MAAM,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC9B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EACvB,GAAG,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EACrC,iBAAiB,EAAE,CAAC,EAAE,EAAE,EACxB,IAAI,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC,CAuCf"}
@@ -0,0 +1,37 @@
1
+ import { applyAndBroadcastServerOps } from "./applyAndBroadcastServerOps.js";
2
+ import { persistDocDeleted } from "./persistDocDeleted.js";
3
+ import { persistSyncResult, } from "./persistSyncResult.js";
4
+ /**
5
+ * Handles a successful sync response: emits the sync event, then either
6
+ * persists a "deleted" doc or persists the sync result and optionally
7
+ * applies and broadcasts server operations.
8
+ */
9
+ export async function handleSyncResponse(client, docId, payload, req, operationsBatches, data) {
10
+ client["_events"].emit("sync", {
11
+ req,
12
+ data: {
13
+ docId: data.docId,
14
+ ...(data.operations ? { operations: data.operations } : {}),
15
+ ...(data.serializedDoc ? { serializedDoc: data.serializedDoc } : {}),
16
+ clock: data.clock,
17
+ },
18
+ });
19
+ if (data.serializedDoc === "deleted") {
20
+ await persistDocDeleted(client, docId, data.clock);
21
+ const entry = client["_docsCache"].get(docId);
22
+ if (entry) {
23
+ client["_docsCache"].set(docId, {
24
+ ...entry,
25
+ promisedDoc: Promise.resolve("deleted"),
26
+ });
27
+ }
28
+ return;
29
+ }
30
+ if (payload.operations === "deleted")
31
+ throw new Error("If client sends 'deleted', server should respond with 'deleted' too");
32
+ const didConsolidate = await persistSyncResult(client, docId, data, operationsBatches, payload.operations ?? []);
33
+ const serverOps = data.operations ?? [];
34
+ if (didConsolidate && serverOps.length > 0)
35
+ await applyAndBroadcastServerOps(client, docId, serverOps);
36
+ }
37
+ //# sourceMappingURL=handleSyncResponse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleSyncResponse.js","sourceRoot":"","sources":["../../../../../../../src/client/handlers/clientInitiated/sync/handleSyncResponse/handleSyncResponse.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAEL,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAEhC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAKtC,MAA8B,EAC9B,KAAa,EACb,OAAuB,EACvB,GAAqC,EACrC,iBAAwB,EACxB,IAA4B;IAE5B,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;QAC7B,GAAG;QACH,IAAI,EAAE;YACJ,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB;KACF,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE;gBAC9B,GAAG,KAAK;gBACR,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;aACxC,CAAC,CAAC;QACL,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;QAClC,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;IAEJ,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAC5C,MAAM,EACN,KAAK,EACL,IAAI,EACJ,iBAAiB,EACjB,OAAO,CAAC,UAAU,IAAI,EAAE,CACzB,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;IACxC,IAAI,cAAc,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QACxC,MAAM,0BAA0B,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AAC/D,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { DocSyncClient } from "../../../../index.js";
2
+ /**
3
+ * Persists that the document was deleted: deletes all operations for the doc
4
+ * and saves serializedDoc "deleted" with the given clock.
5
+ * Does not update the in-memory cache (caller should set promisedDoc to "deleted").
6
+ */
7
+ export declare function persistDocDeleted<D extends {}, S extends {}, O extends {}>(client: DocSyncClient<D, S, O>, docId: string, clock: number): Promise<void>;
8
+ //# sourceMappingURL=persistDocDeleted.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistDocDeleted.d.ts","sourceRoot":"","sources":["../../../../../../../src/client/handlers/clientInitiated/sync/handleSyncResponse/persistDocDeleted.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,CAAC,SAAS,EAAE,EACZ,CAAC,SAAS,EAAE,EACZ,CAAC,SAAS,EAAE,EACZ,MAAM,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO7E"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Persists that the document was deleted: deletes all operations for the doc
3
+ * and saves serializedDoc "deleted" with the given clock.
4
+ * Does not update the in-memory cache (caller should set promisedDoc to "deleted").
5
+ */
6
+ export async function persistDocDeleted(client, docId, clock) {
7
+ const { provider } = await client["_localPromise"];
8
+ await provider.transaction("readwrite", async (ctx) => {
9
+ await ctx.deleteOperations({ docId });
10
+ await ctx.saveSerializedDoc({ docId, serializedDoc: "deleted", clock });
11
+ });
12
+ }
13
+ //# sourceMappingURL=persistDocDeleted.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistDocDeleted.js","sourceRoot":"","sources":["../../../../../../../src/client/handlers/clientInitiated/sync/handleSyncResponse/persistDocDeleted.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAIrC,MAA8B,EAAE,KAAa,EAAE,KAAa;IAC5D,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAEnD,MAAM,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACpD,MAAM,GAAG,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACtC,MAAM,GAAG,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { DocSyncClient } from "../../../../index.js";
2
+ export type SyncResponseData<S, O> = {
3
+ docId: string;
4
+ operations?: O[];
5
+ serializedDoc?: S | "deleted";
6
+ clock: number;
7
+ };
8
+ /**
9
+ * Persists the sync result: deletes pushed operations, then optionally
10
+ * consolidates server ops + client ops into the serialized doc and saves.
11
+ * Returns whether consolidation was performed.
12
+ */
13
+ export declare function persistSyncResult<D extends {}, S extends {}, O extends {}>(client: DocSyncClient<D, S, O>, docId: string, data: SyncResponseData<S, O>, operationsBatches: O[][], operations: O[]): Promise<boolean>;
14
+ //# sourceMappingURL=persistSyncResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistSyncResult.d.ts","sourceRoot":"","sources":["../../../../../../../src/client/handlers/clientInitiated/sync/handleSyncResponse/persistSyncResult.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,MAAM,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,CAAC,SAAS,EAAE,EACZ,CAAC,SAAS,EAAE,EACZ,CAAC,SAAS,EAAE,EAEZ,MAAM,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC9B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,EAC5B,iBAAiB,EAAE,CAAC,EAAE,EAAE,EACxB,UAAU,EAAE,CAAC,EAAE,GACd,OAAO,CAAC,OAAO,CAAC,CAiClB"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Persists the sync result: deletes pushed operations, then optionally
3
+ * consolidates server ops + client ops into the serialized doc and saves.
4
+ * Returns whether consolidation was performed.
5
+ */
6
+ export async function persistSyncResult(client, docId, data, operationsBatches, operations) {
7
+ const { provider } = await client["_localPromise"];
8
+ const docBinding = client["_docBinding"];
9
+ let didConsolidate = false;
10
+ await provider.transaction("readwrite", async (ctx) => {
11
+ if (operationsBatches.length > 0) {
12
+ await ctx.deleteOperations({ docId, count: operationsBatches.length });
13
+ }
14
+ const stored = await ctx.getSerializedDoc(docId);
15
+ if (!stored)
16
+ return;
17
+ if (stored.serializedDoc === "deleted")
18
+ return;
19
+ if (stored.clock >= data.clock)
20
+ return;
21
+ const serverOps = data.operations ?? [];
22
+ const allOps = [...serverOps, ...operations];
23
+ if (allOps.length === 0)
24
+ return;
25
+ const doc = docBinding.deserialize(stored.serializedDoc);
26
+ for (const op of allOps) {
27
+ docBinding.applyOperations(doc, op);
28
+ }
29
+ const serializedDoc = docBinding.serialize(doc);
30
+ const recheckStored = await ctx.getSerializedDoc(docId);
31
+ if (recheckStored?.clock !== stored.clock)
32
+ return;
33
+ await ctx.saveSerializedDoc({ serializedDoc, docId, clock: data.clock });
34
+ didConsolidate = true;
35
+ });
36
+ return didConsolidate;
37
+ }
38
+ //# sourceMappingURL=persistSyncResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistSyncResult.js","sourceRoot":"","sources":["../../../../../../../src/client/handlers/clientInitiated/sync/handleSyncResponse/persistSyncResult.ts"],"names":[],"mappings":"AASA;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAKrC,MAA8B,EAC9B,KAAa,EACb,IAA4B,EAC5B,iBAAwB,EACxB,UAAe;IAEf,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IACzC,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,MAAM,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACpD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,GAAG,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS;YAAE,OAAO;QAC/C,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO;QAEvC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,UAAU,CAAC,CAAC;QAC7C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEhC,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACzD,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;YACxB,UAAU,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEhD,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,aAAa,EAAE,KAAK,KAAK,MAAM,CAAC,KAAK;YAAE,OAAO;QAElD,MAAM,GAAG,CAAC,iBAAiB,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACzE,cAAc,GAAG,IAAI,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC;AACxB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { DocSyncClient } from "../../../index.js";
2
+ /**
3
+ * Sync (push) a document to the server. Queues if already pushing (sets
4
+ * pushing-with-pending), otherwise sets pushing and runs the sync.
5
+ */
6
+ export declare const handleSync: <D extends {}, S extends {}, O extends {}>(client: DocSyncClient<D, S, O>, docId: string) => Promise<void>;
7
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../../../../src/client/handlers/clientInitiated/sync/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAU,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,EACvE,QAAQ,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC9B,OAAO,MAAM,KACZ,OAAO,CAAC,IAAI,CA+Cd,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { buildSyncPayload } from "./buildSyncPayload.js";
2
+ import { handleSyncResponse } from "./handleSyncResponse/handleSyncResponse.js";
3
+ /**
4
+ * Sync (push) a document to the server. Queues if already pushing (sets
5
+ * pushing-with-pending), otherwise sets pushing and runs the sync.
6
+ */
7
+ export const handleSync = async (client, docId) => {
8
+ if (!client["_socket"].connected)
9
+ return;
10
+ const cacheEntry = client["_docsCache"].get(docId);
11
+ if (!cacheEntry)
12
+ return;
13
+ // Serialize pushes: if a push is already in progress, mark that another one is
14
+ // pending and return; the pending sync will run after the current one finishes.
15
+ const status = cacheEntry.pushStatus;
16
+ if (status !== "idle") {
17
+ cacheEntry.pushStatus = "pushing-with-pending";
18
+ return;
19
+ }
20
+ cacheEntry.pushStatus = "pushing";
21
+ // Build the sync payload (clock, operations or serialized doc) and send request.
22
+ const { payload, req, operationsBatches } = await buildSyncPayload(client, docId, cacheEntry);
23
+ const { error, data } = await client["_request"]("sync", payload);
24
+ if (error) {
25
+ client["_events"].emit("sync", { req, error });
26
+ cacheEntry.pushStatus = "idle";
27
+ void handleSync(client, docId);
28
+ return;
29
+ }
30
+ if (data) {
31
+ await handleSyncResponse(client, docId, payload, req, operationsBatches, data);
32
+ }
33
+ const current = client["_docsCache"].get(docId);
34
+ if (current) {
35
+ const retry = current.pushStatus === "pushing-with-pending";
36
+ current.pushStatus = "idle";
37
+ if (retry)
38
+ void handleSync(client, docId);
39
+ }
40
+ };
41
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../../../src/client/handlers/clientInitiated/sync/sync.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAEhF;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC7B,MAA8B,EAC9B,KAAa,EACE,EAAE;IACjB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS;QAAE,OAAO;IAEzC,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,CAAC,UAAU;QAAE,OAAO;IAExB,+EAA+E;IAC/E,gFAAgF;IAChF,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC;IACrC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,UAAU,CAAC,UAAU,GAAG,sBAAsB,CAAC;QAC/C,OAAO;IACT,CAAC;IACD,UAAU,CAAC,UAAU,GAAG,SAAS,CAAC;IAElC,iFAAiF;IACjF,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,GAAG,MAAM,gBAAgB,CAChE,MAAM,EACN,KAAK,EACL,UAAU,CACX,CAAC;IAEF,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClE,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/C,UAAU,CAAC,UAAU,GAAG,MAAM,CAAC;QAC/B,KAAK,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,kBAAkB,CACtB,MAAM,EACN,KAAK,EACL,OAAO,EACP,GAAG,EACH,iBAAiB,EACjB,IAAI,CACL,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,KAAK,sBAAsB,CAAC;QAC5D,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC;QAC5B,IAAI,KAAK;YAAE,KAAK,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { DocSyncClient } from "../../index.js";
2
+ /** Applies server operations to the cached doc and emits change event (remote). */
3
+ export declare function applyServerOperations<D extends {}, S extends {}, O extends {}>(client: DocSyncClient<D, S, O>, args: {
4
+ docId: string;
5
+ operations: O[];
6
+ }): Promise<void>;
7
+ /**
8
+ * Replaces the cached document (e.g. when server responds with a squashed doc).
9
+ * Keeps refCount, presence, and presenceListeners unchanged.
10
+ */
11
+ export declare function replaceDocInCache<D extends {}, S extends {}, O extends {}>(client: DocSyncClient<D, S, O>, args: {
12
+ docId: string;
13
+ doc?: D;
14
+ serializedDoc?: S;
15
+ }): void;
16
+ /**
17
+ * Sync (push) a document to the server. Queues if already pushing (sets
18
+ * pushing-with-pending), otherwise sets pushing and runs the sync.
19
+ */
20
+ export declare const handleSync: <D extends {}, S extends {}, O extends {}>(client: DocSyncClient<D, S, O>, docId: string) => Promise<void>;
21
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../../../src/client/handlers/clientInitiated/sync.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIpD,mFAAmF;AACnF,wBAAsB,qBAAqB,CACzC,CAAC,SAAS,EAAE,EACZ,CAAC,SAAS,EAAE,EACZ,CAAC,SAAS,EAAE,EAEZ,MAAM,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC9B,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,CAAC,EAAE,CAAA;CAAE,GACvC,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,EACxE,MAAM,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC9B,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAAC,aAAa,CAAC,EAAE,CAAC,CAAA;CAAE,GAClD,IAAI,CAeN;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAU,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,EACvE,QAAQ,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC9B,OAAO,MAAM,KACZ,OAAO,CAAC,IAAI,CAiJd,CAAC"}