@syncular/client 0.0.6-136 → 0.0.6-138

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.
@@ -1 +1 @@
1
- {"version":3,"file":"push-engine.d.ts","sourceRoot":"","sources":["../src/push-engine.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAEV,gBAAgB,EAChB,aAAa,EACd,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAQrC,OAAO,KAAK,EACV,gBAAgB,EAEjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAiBD,wBAAsB,YAAY,CAAC,EAAE,SAAS,YAAY,EACxD,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EACd,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAiK7B"}
1
+ {"version":3,"file":"push-engine.d.ts","sourceRoot":"","sources":["../src/push-engine.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAEV,gBAAgB,EAChB,aAAa,EACd,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAOrD,OAAO,KAAK,EACV,gBAAgB,EAEjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAoDD,wBAAsB,YAAY,CAAC,EAAE,SAAS,YAAY,EACxD,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EACd,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CA4L7B"}
@@ -12,6 +12,28 @@ function clonePushRequest(request) {
12
12
  return structuredClone(request);
13
13
  return JSON.parse(JSON.stringify(request));
14
14
  }
15
+ function firstPushErrorCode(response) {
16
+ const firstError = response.results.find((result) => result.status === 'error');
17
+ if (firstError &&
18
+ 'code' in firstError &&
19
+ typeof firstError.code === 'string' &&
20
+ firstError.code) {
21
+ return firstError.code;
22
+ }
23
+ const hasConflict = response.results.some((result) => result.status === 'conflict');
24
+ return hasConflict ? 'CONFLICT' : null;
25
+ }
26
+ function buildPushResult(args) {
27
+ return {
28
+ outboxCommitId: args.outboxCommitId,
29
+ clientCommitId: args.clientCommitId,
30
+ status: args.status,
31
+ commitSeq: args.response.commitSeq ?? null,
32
+ results: args.response.results,
33
+ errorCode: firstPushErrorCode(args.response),
34
+ timestamp: Date.now(),
35
+ };
36
+ }
15
37
  export async function syncPushOnce(db, transport, options) {
16
38
  // getNextSendableOutboxCommit now atomically claims the commit
17
39
  // (marks it as 'sending' and returns it in one operation)
@@ -134,7 +156,16 @@ export async function syncPushOnce(db, transport, options) {
134
156
  commitSeq: responseToUse.commitSeq ?? null,
135
157
  responseJson,
136
158
  });
137
- return { pushed: true, response: responseToUse };
159
+ return {
160
+ pushed: true,
161
+ response: responseToUse,
162
+ pushResult: buildPushResult({
163
+ outboxCommitId: next.id,
164
+ clientCommitId: next.client_commit_id,
165
+ status: responseToUse.status,
166
+ response: responseToUse,
167
+ }),
168
+ };
138
169
  }
139
170
  // Check if all errors are retriable - if so, keep pending for retry
140
171
  const errorResults = responseToUse.results.filter((r) => r.status === 'error');
@@ -149,7 +180,16 @@ export async function syncPushOnce(db, transport, options) {
149
180
  error: `Retriable: ${errorMessages}`,
150
181
  responseJson,
151
182
  });
152
- return { pushed: true, response: responseToUse };
183
+ return {
184
+ pushed: true,
185
+ response: responseToUse,
186
+ pushResult: buildPushResult({
187
+ outboxCommitId: next.id,
188
+ clientCommitId: next.client_commit_id,
189
+ status: 'retriable',
190
+ response: responseToUse,
191
+ }),
192
+ };
153
193
  }
154
194
  // Terminal rejection - mark as failed and record conflicts
155
195
  await upsertConflictsForRejectedCommit(db, {
@@ -162,6 +202,15 @@ export async function syncPushOnce(db, transport, options) {
162
202
  error: 'REJECTED',
163
203
  responseJson,
164
204
  });
165
- return { pushed: true, response: responseToUse };
205
+ return {
206
+ pushed: true,
207
+ response: responseToUse,
208
+ pushResult: buildPushResult({
209
+ outboxCommitId: next.id,
210
+ clientCommitId: next.client_commit_id,
211
+ status: 'rejected',
212
+ response: responseToUse,
213
+ }),
214
+ };
166
215
  }
167
216
  //# sourceMappingURL=push-engine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"push-engine.js","sourceRoot":"","sources":["../src/push-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"push-engine.js","sourceRoot":"","sources":["../src/push-engine.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import type { SyncPullResponse, SyncSubscriptionRequest, SyncTransport } from '@syncular/core';
7
7
  import type { Kysely } from 'kysely';
8
+ import type { PushResultInfo } from './engine/types';
8
9
  import type { ClientHandlerCollection } from './handlers/collection';
9
10
  import { type SyncPushOnceOptions } from './push-engine';
10
11
  import type { SyncClientDb } from './schema';
@@ -29,6 +30,7 @@ export interface SyncOnceResult {
29
30
  pushedCommits: number;
30
31
  pullRounds: number;
31
32
  pullResponse: SyncPullResponse;
33
+ pushResults: PushResultInfo[];
32
34
  }
33
35
  export declare function syncOnce<DB extends SyncClientDb>(db: Kysely<DB>, transport: SyncTransport, handlers: ClientHandlerCollection<DB>, options: SyncOnceOptions): Promise<SyncOnceResult>;
34
36
  //# sourceMappingURL=sync-loop.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync-loop.d.ts","sourceRoot":"","sources":["../src/sync-loop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAEV,gBAAgB,EAIhB,uBAAuB,EACvB,aAAa,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAgBrE,OAAO,EAAE,KAAK,mBAAmB,EAAgB,MAAM,eAAe,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA0H7C,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACzC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,IAAI,GAAG,OAAO,GAAG,MAAM,CAAC;IAClC,yEAAyE;IACzE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,gBAAgB,CAAC;CAChC;AA2MD,wBAAsB,QAAQ,CAAC,EAAE,SAAS,YAAY,EACpD,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EACd,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,uBAAuB,CAAC,EAAE,CAAC,EACrC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CAEzB"}
1
+ {"version":3,"file":"sync-loop.d.ts","sourceRoot":"","sources":["../src/sync-loop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAEV,gBAAgB,EAIhB,uBAAuB,EACvB,aAAa,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAgBrE,OAAO,EAAE,KAAK,mBAAmB,EAAgB,MAAM,eAAe,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAkK7C,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACzC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,IAAI,GAAG,OAAO,GAAG,MAAM,CAAC;IAClC,yEAAyE;IACzE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,gBAAgB,CAAC;IAC/B,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B;AAqOD,wBAAsB,QAAQ,CAAC,EAAE,SAAS,YAAY,EACpD,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EACd,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,uBAAuB,CAAC,EAAE,CAAC,EACrC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CAEzB"}
package/dist/sync-loop.js CHANGED
@@ -7,9 +7,32 @@ import { upsertConflictsForRejectedCommit } from './conflicts.js';
7
7
  import { getNextSendableOutboxCommit, markOutboxCommitAcked, markOutboxCommitFailed, markOutboxCommitPending, } from './outbox.js';
8
8
  import { applyPullResponse, buildPullRequest, createFollowupPullState, syncPullOnce, } from './pull-engine.js';
9
9
  import { syncPushOnce } from './push-engine.js';
10
+ function firstPushErrorCode(response) {
11
+ const firstError = response.results.find((result) => result.status === 'error');
12
+ if (firstError &&
13
+ 'code' in firstError &&
14
+ typeof firstError.code === 'string' &&
15
+ firstError.code) {
16
+ return firstError.code;
17
+ }
18
+ const hasConflict = response.results.some((result) => result.status === 'conflict');
19
+ return hasConflict ? 'CONFLICT' : null;
20
+ }
21
+ function buildPushResult(args) {
22
+ return {
23
+ outboxCommitId: args.outboxCommitId,
24
+ clientCommitId: args.clientCommitId,
25
+ status: args.status,
26
+ commitSeq: args.response.commitSeq ?? null,
27
+ results: args.response.results,
28
+ errorCode: firstPushErrorCode(args.response),
29
+ timestamp: Date.now(),
30
+ };
31
+ }
10
32
  async function syncPushUntilSettled(db, transport, options) {
11
33
  const maxCommits = Math.max(1, Math.min(1000, options.maxCommits ?? 20));
12
34
  let pushedCount = 0;
35
+ const pushResults = [];
13
36
  for (let i = 0; i < maxCommits; i++) {
14
37
  const res = await syncPushOnce(db, transport, {
15
38
  clientId: options.clientId,
@@ -19,8 +42,11 @@ async function syncPushUntilSettled(db, transport, options) {
19
42
  if (!res.pushed)
20
43
  break;
21
44
  pushedCount += 1;
45
+ if (res.pushResult) {
46
+ pushResults.push(res.pushResult);
47
+ }
22
48
  }
23
- return { pushedCount };
49
+ return { pushedCount, pushResults };
24
50
  }
25
51
  function hasPushViaWs(transport) {
26
52
  return 'pushViaWs' in transport && typeof transport.pushViaWs === 'function';
@@ -169,6 +195,7 @@ async function syncOnceCombined(db, transport, handlers, options) {
169
195
  }
170
196
  // Process push response
171
197
  let pushedCommits = 0;
198
+ const pushResults = [];
172
199
  if (outbox && pushRequest) {
173
200
  let pushRes = wsPushResponse ?? combined.push;
174
201
  if (!pushRes) {
@@ -194,6 +221,12 @@ async function syncOnceCombined(db, transport, handlers, options) {
194
221
  commitSeq: pushRes.commitSeq ?? null,
195
222
  responseJson,
196
223
  });
224
+ pushResults.push(buildPushResult({
225
+ outboxCommitId: outbox.id,
226
+ clientCommitId: outbox.client_commit_id,
227
+ status: pushRes.status,
228
+ response: pushRes,
229
+ }));
197
230
  pushedCommits = 1;
198
231
  }
199
232
  else {
@@ -207,6 +240,12 @@ async function syncOnceCombined(db, transport, handlers, options) {
207
240
  error: 'Retriable',
208
241
  responseJson,
209
242
  });
243
+ pushResults.push(buildPushResult({
244
+ outboxCommitId: outbox.id,
245
+ clientCommitId: outbox.client_commit_id,
246
+ status: 'retriable',
247
+ response: pushRes,
248
+ }));
210
249
  pushedCommits = 1;
211
250
  }
212
251
  else {
@@ -220,6 +259,12 @@ async function syncOnceCombined(db, transport, handlers, options) {
220
259
  error: 'REJECTED',
221
260
  responseJson,
222
261
  });
262
+ pushResults.push(buildPushResult({
263
+ outboxCommitId: outbox.id,
264
+ clientCommitId: outbox.client_commit_id,
265
+ status: 'rejected',
266
+ response: pushRes,
267
+ }));
223
268
  pushedCommits = 1;
224
269
  }
225
270
  }
@@ -231,6 +276,7 @@ async function syncOnceCombined(db, transport, handlers, options) {
231
276
  maxCommits: (options.maxPushCommits ?? 20) - 1,
232
277
  });
233
278
  pushedCommits += remaining.pushedCount;
279
+ pushResults.push(...remaining.pushResults);
234
280
  }
235
281
  // Process pull response
236
282
  let pullResponse = { ok: true, subscriptions: [] };
@@ -255,7 +301,7 @@ async function syncOnceCombined(db, transport, handlers, options) {
255
301
  };
256
302
  }
257
303
  }
258
- return { pushedCommits, pullRounds, pullResponse };
304
+ return { pushedCommits, pullRounds, pullResponse, pushResults };
259
305
  }
260
306
  export async function syncOnce(db, transport, handlers, options) {
261
307
  return syncOnceCombined(db, transport, handlers, options);
@@ -1 +1 @@
1
- {"version":3,"file":"sync-loop.js","sourceRoot":"","sources":["../src/sync-loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-loop.js","sourceRoot":"","sources":["../src/sync-loop.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@syncular/client",
3
- "version": "0.0.6-136",
3
+ "version": "0.0.6-138",
4
4
  "description": "Client-side sync engine with offline-first support, outbox, and conflict resolution",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Benjamin Kniffler",
@@ -46,8 +46,8 @@
46
46
  "release": "bunx syncular-publish"
47
47
  },
48
48
  "dependencies": {
49
- "@syncular/core": "0.0.6-136",
50
- "@syncular/transport-http": "0.0.6-136"
49
+ "@syncular/core": "0.0.6-138",
50
+ "@syncular/transport-http": "0.0.6-138"
51
51
  },
52
52
  "peerDependencies": {
53
53
  "kysely": "*"
@@ -141,13 +141,13 @@ describe('Client conflict events', () => {
141
141
  }
142
142
 
143
143
  async function runConflictCheck(
144
- clientInstance: Client<TestDb>
144
+ engineInstance: SyncEngine<TestDb>
145
145
  ): Promise<void> {
146
- const checker = Reflect.get(clientInstance, 'checkForNewConflicts');
146
+ const checker = Reflect.get(engineInstance, 'emitNewConflicts');
147
147
  if (typeof checker !== 'function') {
148
- throw new Error('Expected checkForNewConflicts to be callable');
148
+ throw new Error('Expected emitNewConflicts to be callable');
149
149
  }
150
- await checker.call(clientInstance);
150
+ await checker.call(engineInstance);
151
151
  }
152
152
 
153
153
  beforeEach(async () => {
@@ -184,6 +184,11 @@ describe('Client conflict events', () => {
184
184
  subscriptions: [],
185
185
  });
186
186
  Reflect.set(client, 'engine', engine);
187
+ const wireEngineEvents = Reflect.get(client, 'wireEngineEvents');
188
+ if (typeof wireEngineEvents !== 'function') {
189
+ throw new Error('Expected wireEngineEvents to be callable');
190
+ }
191
+ wireEngineEvents.call(client);
187
192
  });
188
193
 
189
194
  afterEach(async () => {
@@ -220,11 +225,43 @@ describe('Client conflict events', () => {
220
225
  newEvents.push(conflict.id);
221
226
  });
222
227
 
223
- await runConflictCheck(client);
224
- await runConflictCheck(client);
228
+ await runConflictCheck(engine);
229
+ await runConflictCheck(engine);
225
230
 
226
231
  expect(newEvents).toEqual(['conflict-1']);
227
232
  });
233
+
234
+ it('forwards push:result events from the engine', () => {
235
+ const pushResults: Array<{ clientCommitId: string; status: string }> = [];
236
+ client.on('push:result', (result) => {
237
+ pushResults.push({
238
+ clientCommitId: result.clientCommitId,
239
+ status: result.status,
240
+ });
241
+ });
242
+
243
+ const emit = Reflect.get(engine, 'emit');
244
+ if (typeof emit !== 'function') {
245
+ throw new Error('Expected SyncEngine.emit to be callable');
246
+ }
247
+
248
+ emit.call(engine, 'push:result', {
249
+ outboxCommitId: 'outbox-1',
250
+ clientCommitId: 'commit-1',
251
+ status: 'rejected',
252
+ commitSeq: null,
253
+ results: [],
254
+ errorCode: 'CONFLICT',
255
+ timestamp: Date.now(),
256
+ });
257
+
258
+ expect(pushResults).toEqual([
259
+ {
260
+ clientCommitId: 'commit-1',
261
+ status: 'rejected',
262
+ },
263
+ ]);
264
+ });
228
265
  });
229
266
 
230
267
  describe('Client blob upload queue recovery', () => {
package/src/client.ts CHANGED
@@ -24,6 +24,7 @@ import type {
24
24
  ConflictInfo,
25
25
  OutboxStats,
26
26
  PresenceEntry,
27
+ PushResultInfo,
27
28
  SubscriptionProgress,
28
29
  SyncAwaitBootstrapOptions,
29
30
  SyncAwaitPhaseOptions,
@@ -249,6 +250,7 @@ type ClientEventType =
249
250
  | 'sync:complete'
250
251
  | 'sync:live'
251
252
  | 'sync:error'
253
+ | 'push:result'
252
254
  | 'bootstrap:start'
253
255
  | 'bootstrap:progress'
254
256
  | 'bootstrap:complete'
@@ -266,6 +268,7 @@ type ClientEventPayloads = {
266
268
  'sync:complete': SyncResult;
267
269
  'sync:live': { timestamp: number };
268
270
  'sync:error': { code: string; message: string };
271
+ 'push:result': PushResultInfo;
269
272
  'bootstrap:start': {
270
273
  timestamp: number;
271
274
  stateId: string;
@@ -332,7 +335,6 @@ export class Client<DB extends SyncClientDb = SyncClientDb> {
332
335
  private engine: SyncEngine<DB> | null = null;
333
336
  private started = false;
334
337
  private destroyed = false;
335
- private emittedConflictIds = new Set<string>();
336
338
  private eventListeners = new Map<
337
339
  ClientEventType,
338
340
  Set<ClientEventHandler<any>>
@@ -758,7 +760,6 @@ export class Client<DB extends SyncClientDb = SyncClientDb> {
758
760
  },
759
761
  });
760
762
 
761
- this.emittedConflictIds.delete(id);
762
763
  if (resolvedConflict) {
763
764
  this.emit('conflict:resolved', resolvedConflict);
764
765
  }
@@ -975,9 +976,14 @@ export class Client<DB extends SyncClientDb = SyncClientDb> {
975
976
 
976
977
  this.engine.on('sync:error', (error) => {
977
978
  this.emit('sync:error', { code: error.code, message: error.message });
979
+ });
980
+
981
+ this.engine.on('push:result', (payload) => {
982
+ this.emit('push:result', payload);
983
+ });
978
984
 
979
- // Check for new conflicts after sync error
980
- this.checkForNewConflicts();
985
+ this.engine.on('conflict:new', (payload) => {
986
+ this.emit('conflict:new', this.mapConflictInfo(payload));
981
987
  });
982
988
 
983
989
  this.engine.on('bootstrap:start', (payload) => {
@@ -1020,25 +1026,6 @@ export class Client<DB extends SyncClientDb = SyncClientDb> {
1020
1026
  });
1021
1027
  }
1022
1028
 
1023
- private async checkForNewConflicts(): Promise<void> {
1024
- const conflicts = await this.getConflicts();
1025
- const activeIds = new Set(conflicts.map((conflict) => conflict.id));
1026
-
1027
- for (const id of this.emittedConflictIds) {
1028
- if (!activeIds.has(id)) {
1029
- this.emittedConflictIds.delete(id);
1030
- }
1031
- }
1032
-
1033
- for (const conflict of conflicts) {
1034
- if (this.emittedConflictIds.has(conflict.id)) {
1035
- continue;
1036
- }
1037
- this.emittedConflictIds.add(conflict.id);
1038
- this.emit('conflict:new', conflict);
1039
- }
1040
- }
1041
-
1042
1029
  private mapConflictInfo(info: ConflictInfo): Conflict {
1043
1030
  let serverPayload: Record<string, unknown> | null = null;
1044
1031
  if (info.serverRowJson) {