@adonis-agora/collaboration-client 0.10.0 → 0.10.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.
@@ -7,11 +7,14 @@ import type { CollabStatus } from '../types.js';
7
7
  * of forcing both worlds behind one interface.
8
8
  *
9
9
  * Wire protocol mirrors the server's AutomergeDriver:
10
- * 1. ws `${wsUrl}?doc=<name>&token=<token>` (token via fetchToken)
11
- * 2. server sends the full `A.save(doc)` binary on connect
12
- * 3. client sends its full saved doc after local changes (debounced)
13
- * 4. incoming binaries are merged into the local doc and re-broadcast by
14
- * the server to the other peers
10
+ * 1. ws `${wsUrl}?doc=<name>&token=<token>&sync=changes` (token via fetchToken)
11
+ * 2. a server that exchanges change chunks answers with the
12
+ * {@link CHANGES_ACK} text frame; then every server sends the full
13
+ * `A.save(doc)` binary
14
+ * 3. after local changes (debounced) the client sends the changes the server
15
+ * lacks (`A.saveSince`) once acknowledged, else its whole saved doc
16
+ * 4. incoming binaries — change chunks or whole docs — are applied with
17
+ * `A.loadIncremental`; the server forwards what was new to the other peers
15
18
  *
16
19
  * ## Reconnection
17
20
  *
@@ -27,7 +30,8 @@ import type { CollabStatus } from '../types.js';
27
30
  * Local changes made while the socket is down are **not lost**. Automerge's
28
31
  * full-document exchange makes the local doc its own outbox: the change is
29
32
  * applied locally, {@link UseAutomergeDocResult.pendingChanges} counts it, and
30
- * the whole saved document is written the moment a socket is open again. The
33
+ * whatever the server's state lacks is written as soon as a reconnected socket
34
+ * has delivered that state. The
31
35
  * count is exposed so a UI can say "3 unsaved changes" instead of pretending
32
36
  * everything is fine.
33
37
  */
@@ -1 +1 @@
1
- {"version":3,"file":"use_automerge_doc.d.ts","sourceRoot":"","sources":["../../../src/hooks/use_automerge_doc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,sBAAsB,CAAC;AAU1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtE,yEAAyE;IACzE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB;;;;;OAKG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;;;;OAKG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,OAAO,SAAS,CAAC;CAClC;AAeD,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzF,OAAO,EAAE,sBAAsB,GAC9B,qBAAqB,CAAC,CAAC,CAAC,CAqL1B"}
1
+ {"version":3,"file":"use_automerge_doc.d.ts","sourceRoot":"","sources":["../../../src/hooks/use_automerge_doc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,sBAAsB,CAAC;AAU1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtE,yEAAyE;IACzE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB;;;;;OAKG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;;;;OAKG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,OAAO,SAAS,CAAC;CAClC;AAsBD,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzF,OAAO,EAAE,sBAAsB,GAC9B,qBAAqB,CAAC,CAAC,CAAC,CAoO1B"}
@@ -4,6 +4,11 @@ import { useCollaborationContext } from '../context.js';
4
4
  import { fetchToken, resolveBaseUrl } from '../rest_client.js';
5
5
  import { isPermanentFailure, MAX_RECONNECT_ATTEMPTS, MAX_RECONNECT_DELAY_MS, reconnectExhausted, } from '../session.js';
6
6
  const SEND_DEBOUNCE_MS = 200;
7
+ /** Text frame a server sends when this socket may exchange change chunks. */
8
+ const CHANGES_ACK = 'automerge-sync:changes';
9
+ function sameHeads(a, b) {
10
+ return a.length === b.length && a.every((hash, index) => hash === b[index]);
11
+ }
7
12
  /**
8
13
  * Close codes the AutomergeDriver uses for an answer, not an outage.
9
14
  *
@@ -44,15 +49,36 @@ export function useAutomergeDoc(options) {
44
49
  let generation = 0;
45
50
  /** The last real failure, kept so an exhausted budget can name it. */
46
51
  let lastFailure = null;
52
+ /** The current socket's server acknowledged change chunks. */
53
+ let sendsChanges = false;
54
+ /** The current socket has delivered the server's state. */
55
+ let stateReceived = false;
56
+ /** Heads the server is known to hold on the current socket. */
57
+ let serverHeads = [];
47
58
  const fail = (failure) => {
48
59
  lastFailure = failure;
49
60
  setStatus('error');
50
61
  setError(failure);
51
62
  };
63
+ /**
64
+ * Sends what the server lacks: the changes since {@link serverHeads} to a
65
+ * server that acknowledged chunks, the whole saved doc to any other. Waits
66
+ * for the server's state, which is where a reconnect catches up.
67
+ */
52
68
  const flush = () => {
53
- if (socket?.readyState !== Impl.OPEN || !localDocRef.current)
69
+ const local = localDocRef.current;
70
+ if (socket?.readyState !== Impl.OPEN || !local || !stateReceived)
54
71
  return;
55
- socket.send(A.save(localDocRef.current));
72
+ if (sendsChanges) {
73
+ const heads = A.getHeads(local);
74
+ if (!sameHeads(heads, serverHeads)) {
75
+ socket.send(A.saveSince(local, serverHeads));
76
+ serverHeads = heads;
77
+ }
78
+ }
79
+ else {
80
+ socket.send(A.save(local));
81
+ }
56
82
  pendingRef.current = 0;
57
83
  setPendingChanges(0);
58
84
  };
@@ -79,6 +105,9 @@ export function useAutomergeDoc(options) {
79
105
  generation += 1;
80
106
  const mine = generation;
81
107
  const stale = () => disposed || mine !== generation;
108
+ sendsChanges = false;
109
+ stateReceived = false;
110
+ serverHeads = [];
82
111
  try {
83
112
  const info = await fetchToken(config, docName);
84
113
  if (stale())
@@ -87,7 +116,7 @@ export function useAutomergeDoc(options) {
87
116
  throw new Error(`useAutomergeDoc requires engine=automerge (got ${info.engine})`);
88
117
  }
89
118
  const base = resolveBaseUrl(config);
90
- const query = `?doc=${encodeURIComponent(docName)}&token=${encodeURIComponent(info.token)}`;
119
+ const query = `?doc=${encodeURIComponent(docName)}&token=${encodeURIComponent(info.token)}&sync=changes`;
91
120
  const wsUrl = info.wsUrl.startsWith('ws')
92
121
  ? `${info.wsUrl}${query}`
93
122
  : `${base.replace(/^http/, 'ws')}${info.wsUrl}${query}`;
@@ -103,18 +132,42 @@ export function useAutomergeDoc(options) {
103
132
  lastFailure = null;
104
133
  setStatus('connected');
105
134
  setError(null);
106
- // Everything typed while the socket was down goes out now. The local
107
- // doc IS the outbox: this protocol sends whole documents.
108
- if (pendingRef.current > 0)
109
- flush();
110
135
  };
111
136
  ws.onmessage = (event) => {
112
137
  if (stale())
113
138
  return;
139
+ if (typeof event.data === 'string') {
140
+ if (event.data === CHANGES_ACK)
141
+ sendsChanges = true;
142
+ return;
143
+ }
114
144
  const bytes = new Uint8Array(event.data);
115
- const incoming = A.load(bytes);
116
- const next = localDocRef.current ? A.merge(localDocRef.current, incoming) : incoming;
145
+ const current = localDocRef.current;
146
+ if (!stateReceived) {
147
+ // The server's whole state. Whatever the local doc holds beyond it
148
+ // — typed while disconnected, or sent on a socket that dropped —
149
+ // goes out now: the local doc is the outbox.
150
+ const incoming = A.load(bytes);
151
+ const next = current ? A.merge(current, incoming) : incoming;
152
+ localDocRef.current = next;
153
+ stateReceived = true;
154
+ serverHeads = A.getHeads(incoming);
155
+ setDoc(next);
156
+ setSynced(true);
157
+ if (sameHeads(A.getHeads(next), serverHeads)) {
158
+ pendingRef.current = 0;
159
+ setPendingChanges(0);
160
+ }
161
+ else {
162
+ flush();
163
+ }
164
+ return;
165
+ }
166
+ const next = current ? A.loadIncremental(current, bytes) : A.load(bytes);
117
167
  localDocRef.current = next;
168
+ // With nothing left unsent, the server holds everything this doc holds.
169
+ if (pendingRef.current === 0)
170
+ serverHeads = A.getHeads(next);
118
171
  setDoc(next);
119
172
  setSynced(true);
120
173
  };
@@ -1 +1 @@
1
- {"version":3,"file":"use_automerge_doc.js","sourceRoot":"","sources":["../../../src/hooks/use_automerge_doc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use_automerge_doc.js","sourceRoot":"","sources":["../../../src/hooks/use_automerge_doc.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adonis-agora/collaboration-client",
3
- "version": "0.10.0",
3
+ "version": "0.10.1",
4
4
  "description": "Client-side React hooks for @adonis-agora/collaboration — collaborative docs, presence, comments and versions. Part of the Agora ecosystem.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -63,17 +63,17 @@
63
63
  }
64
64
  },
65
65
  "devDependencies": {
66
- "@swc/core": "1.16.18",
66
+ "@swc/core": "1.16.20",
67
67
  "@testing-library/react": "16.3.3",
68
68
  "@types/node": "26.6.5",
69
69
  "@types/react": "19.3.0",
70
70
  "@types/react-dom": "19.3.0",
71
- "jsdom": "30.1.2",
72
- "react": "19.3.0",
73
- "react-dom": "19.3.0",
71
+ "jsdom": "30.1.3",
72
+ "react": "19.3.1",
73
+ "react-dom": "19.3.1",
74
74
  "typescript": "7.0.2",
75
75
  "unplugin-swc": "2.0.0",
76
- "vitest": "5.0.4"
76
+ "vitest": "5.0.5"
77
77
  },
78
78
  "engines": {
79
79
  "node": ">=24"