@trainstar/synchro-react-native 0.4.0-rc.2 → 0.4.0-rc.3

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.
@@ -4,6 +4,7 @@ import Synchro
4
4
  import XCTest
5
5
 
6
6
  private let settlementTimeout: TimeInterval = 60
7
+ private let promptDispatchTimeout: TimeInterval = 4
7
8
  private let sqliteTransient = unsafeBitCast(-1, to: sqlite3_destructor_type.self)
8
9
  private let columnsJSON = #"[{"name":"id","type":"TEXT","primaryKey":true},{"name":"name","type":"TEXT"}]"#
9
10
  private let insertSQL = "INSERT INTO bridge_items (id, name) VALUES (?, ?)"
@@ -365,6 +366,236 @@ final class SynchroModuleTransactionTests: XCTestCase {
365
366
  XCTAssertEqual(events.names, [])
366
367
  }
367
368
 
369
+ func testFourReadersLeaveCapacityForOrdinaryQuery() throws {
370
+ try initializeModule()
371
+ let held = try holdReadTransactions(count: 4)
372
+ let ordinary = settle("ordinary query with four readers") {
373
+ module.query("SELECT 1", params: [], resolve: $0.resolve, reject: $0.reject)
374
+ }
375
+ XCTAssertEqual((try resolvedValue(ordinary) as? [[String: Any]])?.count, 1)
376
+
377
+ let commits = try held.ids.enumerated().map { index, txID in
378
+ let commit = settle("commit reader \(index)") {
379
+ module.commitTransaction(txID, resolve: $0.resolve, reject: $0.reject)
380
+ }
381
+ _ = try resolvedValue(commit)
382
+ return commit
383
+ }
384
+ let close = try closeModule()
385
+
386
+ requireSettledOnce(held.recorders + [ordinary] + commits + [close])
387
+ XCTAssertEqual(events.names, [])
388
+ }
389
+
390
+ func testFiveReadersDoNotBlockOrdinaryQueryAheadOfCommits() throws {
391
+ try initializeModule()
392
+ let held = try holdReadTransactions(count: 5)
393
+ let ordinary = PromiseRecorder("ordinary query with five readers")
394
+ let commits = held.ids.indices.map { PromiseRecorder("commit reader \($0)") }
395
+ let invocationReturned = XCTestExpectation(description: "ordinary query invocation returns")
396
+ let methodQueue = DispatchQueue(label: "test.react-native.query-dispatch")
397
+ let module = try XCTUnwrap(self.module)
398
+
399
+ methodQueue.async {
400
+ module.query("SELECT 1", params: [], resolve: ordinary.resolve, reject: ordinary.reject)
401
+ invocationReturned.fulfill()
402
+ }
403
+ methodQueue.async {
404
+ for (index, txID) in held.ids.enumerated() {
405
+ module.commitTransaction(txID, resolve: commits[index].resolve, reject: commits[index].reject)
406
+ }
407
+ }
408
+
409
+ XCTAssertEqual(XCTWaiter().wait(for: [invocationReturned], timeout: promptDispatchTimeout), .completed)
410
+ waitForSettlements([ordinary] + commits, timeout: promptDispatchTimeout)
411
+ XCTAssertEqual((try resolvedValue(ordinary) as? [[String: Any]])?.count, 1)
412
+ let close = try closeModule()
413
+
414
+ requireSettledOnce(held.recorders + [ordinary] + commits + [close])
415
+ XCTAssertEqual(events.names, [])
416
+ }
417
+
418
+ func testFiveReadersDoNotBlockOrdinaryQueryOneAheadOfRollbacks() throws {
419
+ try initializeModule()
420
+ let held = try holdReadTransactions(count: 5)
421
+ let ordinary = PromiseRecorder("ordinary query one with five readers")
422
+ let rollbacks = held.ids.indices.map { PromiseRecorder("rollback reader \($0)") }
423
+ let invocationReturned = XCTestExpectation(description: "ordinary query one invocation returns")
424
+ let methodQueue = DispatchQueue(label: "test.react-native.query-one-dispatch")
425
+ let module = try XCTUnwrap(self.module)
426
+
427
+ methodQueue.async {
428
+ module.queryOne("SELECT 1", params: [], resolve: ordinary.resolve, reject: ordinary.reject)
429
+ invocationReturned.fulfill()
430
+ }
431
+ methodQueue.async {
432
+ for (index, txID) in held.ids.enumerated() {
433
+ module.rollbackTransaction(txID, resolve: rollbacks[index].resolve, reject: rollbacks[index].reject)
434
+ }
435
+ }
436
+
437
+ XCTAssertEqual(XCTWaiter().wait(for: [invocationReturned], timeout: promptDispatchTimeout), .completed)
438
+ waitForSettlements([ordinary] + rollbacks, timeout: promptDispatchTimeout)
439
+ XCTAssertEqual((try resolvedValue(ordinary) as? [String: Any])?.count, 1)
440
+ let close = try closeModule()
441
+
442
+ requireSettledOnce(held.recorders + [ordinary] + rollbacks + [close])
443
+ XCTAssertEqual(events.names, [])
444
+ }
445
+
446
+ func testOrdinaryWriterSurfacesDoNotBlockWriteTransactionCommands() throws {
447
+ try initializeModule()
448
+ let module = try XCTUnwrap(self.module)
449
+ let methodQueue = DispatchQueue(label: "test.react-native.writer-dispatch")
450
+ let ordinaryCalls: [(String, (PromiseRecorder) -> Void)] = [
451
+ ("execute", { recorder in
452
+ module.execute("SELECT 1", params: [], resolve: recorder.resolve, reject: recorder.reject)
453
+ }),
454
+ ("authored write", { recorder in
455
+ module.executeAuthoredWrite(
456
+ "bridge_items",
457
+ operation: "update",
458
+ columnNames: ["name"],
459
+ sql: "SELECT 1",
460
+ values: [],
461
+ resolve: recorder.resolve,
462
+ reject: recorder.reject
463
+ )
464
+ }),
465
+ ("batch", { recorder in
466
+ module.executeBatch(
467
+ [["sql": "SELECT 1", "params": []]],
468
+ resolve: recorder.resolve,
469
+ reject: recorder.reject
470
+ )
471
+ }),
472
+ ]
473
+ var recorders: [PromiseRecorder] = []
474
+
475
+ for (name, call) in ordinaryCalls {
476
+ let begin = settle("begin before \(name)") {
477
+ module.beginWriteTransaction($0.resolve, reject: $0.reject)
478
+ }
479
+ let txID = try XCTUnwrap(try resolvedValue(begin) as? String)
480
+ let probe = settle("transaction query before \(name)") {
481
+ module.txQuery(txID, sql: "SELECT 1", params: [], resolve: $0.resolve, reject: $0.reject)
482
+ }
483
+ let ordinary = PromiseRecorder(name)
484
+ let commit = PromiseRecorder("commit after \(name)")
485
+ let invocationReturned = XCTestExpectation(description: "\(name) invocation returns")
486
+
487
+ methodQueue.async {
488
+ call(ordinary)
489
+ invocationReturned.fulfill()
490
+ }
491
+ methodQueue.async {
492
+ module.commitTransaction(txID, resolve: commit.resolve, reject: commit.reject)
493
+ }
494
+
495
+ XCTAssertEqual(
496
+ XCTWaiter().wait(for: [invocationReturned], timeout: promptDispatchTimeout),
497
+ .completed,
498
+ name
499
+ )
500
+ waitForSettlements([ordinary, commit])
501
+ recorders += [begin, probe, ordinary, commit]
502
+ }
503
+
504
+ let close = try closeModule()
505
+ requireSettledOnce(recorders + [close])
506
+ XCTAssertEqual(events.names, [])
507
+ }
508
+
509
+ func testCloseDrainsAdmittedQueryAfterAbortingSaturatedReaders() throws {
510
+ try initializeModule()
511
+ let held = try holdReadTransactions(count: 5)
512
+ let pendingBegin = PromiseRecorder("pending sixth reader")
513
+ module.beginReadTransaction(pendingBegin.resolve, reject: pendingBegin.reject)
514
+ let query = PromiseRecorder("admitted query")
515
+ module.query("SELECT 1", params: [], resolve: query.resolve, reject: query.reject)
516
+
517
+ let close = PromiseRecorder("close with admitted query")
518
+ let recordClose = close.resolve
519
+ module.close({ value in
520
+ XCTAssertEqual(pendingBegin.rejections, ["NOT_CONNECTED"])
521
+ XCTAssertEqual(pendingBegin.settlementCount, 1)
522
+ XCTAssertEqual(query.settlementCount, 1)
523
+ recordClose(value)
524
+ }, reject: close.reject)
525
+ waitForSettlements([query, pendingBegin, close], timeout: promptDispatchTimeout)
526
+
527
+ XCTAssertEqual(query.settlementCount, 1)
528
+ XCTAssertEqual((try resolvedValue(query) as? [[String: Any]])?.count, 1)
529
+ requireSettledOnce(held.recorders + [query, close])
530
+ XCTAssertEqual(pendingBegin.resolutions.count, 0)
531
+ XCTAssertEqual(pendingBegin.rejections, ["NOT_CONNECTED"])
532
+ XCTAssertEqual(pendingBegin.settlementCount, 1)
533
+
534
+ let afterClose = settle("query after close") {
535
+ module.query("SELECT 1", params: [], resolve: $0.resolve, reject: $0.reject)
536
+ }
537
+ XCTAssertEqual(afterClose.resolutions.count, 0)
538
+ XCTAssertEqual(afterClose.rejections, ["NOT_CONNECTED"])
539
+ XCTAssertEqual(afterClose.settlementCount, 1)
540
+ XCTAssertEqual(events.names, [])
541
+ }
542
+
543
+ func testCloseDrainsQueuedOrdinaryCallsBeforeClosingClient() throws {
544
+ try initializeModule()
545
+ let external = try openExternalConnection()
546
+ let client = try XCTUnwrap(module.client)
547
+ let hold = ChangeHold()
548
+ let subscription = client.onChange(tables: ["bridge_items"]) { hold.enter() }
549
+ addTeardownBlock {
550
+ hold.release()
551
+ subscription.cancel()
552
+ }
553
+ let activeReader = try holdReadTransactions(count: 1)
554
+ let id = UUID().uuidString
555
+
556
+ let write = PromiseRecorder("held ordinary write")
557
+ module.execute(insertSQL, params: [id, "ordinary-held"], resolve: write.resolve, reject: write.reject)
558
+ XCTAssertEqual(XCTWaiter().wait(for: [hold.entered], timeout: settlementTimeout), .completed)
559
+ XCTAssertEqual(try external.names(id: id), ["ordinary-held"])
560
+ XCTAssertEqual(write.settlementCount, 0)
561
+
562
+ let read = PromiseRecorder("queued ordinary read")
563
+ module.queryOne(selectNameSQL, params: [id], resolve: read.resolve, reject: read.reject)
564
+ let close = PromiseRecorder("close draining ordinary calls")
565
+ let recordClose = close.resolve
566
+ module.close({ value in
567
+ XCTAssertEqual(write.settlementCount, 1)
568
+ XCTAssertEqual(read.settlementCount, 1)
569
+ recordClose(value)
570
+ }, reject: close.reject)
571
+
572
+ XCTAssertTrue(try waitUntilCloseDetachesSessions())
573
+ XCTAssertEqual(write.settlementCount, 0)
574
+ XCTAssertEqual(read.settlementCount, 0)
575
+ XCTAssertEqual(close.settlementCount, 0)
576
+
577
+ let rejected = PromiseRecorder("ordinary call after close admission stops")
578
+ module.query("SELECT 1", params: [], resolve: rejected.resolve, reject: rejected.reject)
579
+ waitForSettlements([rejected], timeout: promptDispatchTimeout)
580
+ XCTAssertEqual(rejected.resolutions.count, 0)
581
+ XCTAssertEqual(rejected.rejections, ["NOT_CONNECTED"])
582
+ XCTAssertEqual(rejected.settlementCount, 1)
583
+ XCTAssertEqual(write.settlementCount, 0)
584
+ XCTAssertEqual(read.settlementCount, 0)
585
+ XCTAssertEqual(close.settlementCount, 0)
586
+
587
+ hold.release()
588
+ waitForSettlements([write, read, close], timeout: promptDispatchTimeout)
589
+ XCTAssertTrue(hold.heldUntilRelease)
590
+ XCTAssertEqual(hold.entryCount, 1)
591
+ subscription.cancel()
592
+ let row = try XCTUnwrap(try resolvedValue(read) as? [String: Any])
593
+ XCTAssertEqual(row["name"] as? String, "ordinary-held")
594
+ requireSettledOnce(activeReader.recorders + [write, read, close])
595
+ XCTAssertEqual(try external.names(id: id), ["ordinary-held"])
596
+ XCTAssertEqual(events.names, [])
597
+ }
598
+
368
599
  /// Observes an accepted commit after its durable write and before its SDK call returns.
369
600
  /// This is not a window inside SQLite COMMIT.
370
601
  func testCloseWaitsForAcceptedCommitHeldAfterDurableWrite() throws {
@@ -602,6 +833,26 @@ final class SynchroModuleTransactionTests: XCTestCase {
602
833
  requireSettledOnce([inspect, snapshot, close])
603
834
  }
604
835
 
836
+ // MARK: - Transaction capacity
837
+
838
+ private func holdReadTransactions(count: Int) throws -> (ids: [String], recorders: [PromiseRecorder]) {
839
+ var ids: [String] = []
840
+ var recorders: [PromiseRecorder] = []
841
+ for index in 0..<count {
842
+ let begin = settle("begin reader \(index)") {
843
+ module.beginReadTransaction($0.resolve, reject: $0.reject)
844
+ }
845
+ let txID = try XCTUnwrap(try resolvedValue(begin) as? String)
846
+ let query = settle("query reader \(index)") {
847
+ module.txQuery(txID, sql: "SELECT 1", params: [], resolve: $0.resolve, reject: $0.reject)
848
+ }
849
+ XCTAssertEqual((try resolvedValue(query) as? [[String: Any]])?.count, 1)
850
+ ids.append(txID)
851
+ recorders += [begin, query]
852
+ }
853
+ return (ids, recorders)
854
+ }
855
+
605
856
  // MARK: - Bridge calls
606
857
 
607
858
  private func initializeModule() throws {
@@ -686,6 +937,19 @@ final class SynchroModuleTransactionTests: XCTestCase {
686
937
  return recorder
687
938
  }
688
939
 
940
+ private func waitForSettlements(
941
+ _ recorders: [PromiseRecorder],
942
+ timeout: TimeInterval = settlementTimeout,
943
+ file: StaticString = #filePath,
944
+ line: UInt = #line
945
+ ) {
946
+ let result = XCTWaiter().wait(
947
+ for: recorders.map(\.firstSettlement),
948
+ timeout: timeout
949
+ )
950
+ XCTAssertEqual(result, .completed, "promises did not settle", file: file, line: line)
951
+ }
952
+
689
953
  private func resolvedValue(
690
954
  _ recorder: PromiseRecorder,
691
955
  file: StaticString = #filePath,
@@ -1 +1 @@
1
- {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeSynchro.ts"],"mappings":";;AAKA,SAASA,mBAAmB,QAAQ,cAAc;;AAElD;AACA;AACA;;AAgLA,eAAeA,mBAAmB,CAACC,YAAY,CAAO,eAAe,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeSynchro.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;;AAElD;AACA;AACA;;AAgLA,eAAeA,mBAAmB,CAACC,YAAY,CAAO,eAAe,CAAC","ignoreList":[]}
@@ -1,7 +1,6 @@
1
- import type { TurboModule } from 'react-native';
2
- import type { EventEmitter, UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
3
- type NativeSQLiteBindValue = string | number | boolean | null | UnsafeObject;
4
- type NativeRow = UnsafeObject;
1
+ import type { CodegenTypes, TurboModule } from 'react-native';
2
+ type NativeSQLiteBindValue = string | number | boolean | null | CodegenTypes.UnsafeObject;
3
+ type NativeRow = CodegenTypes.UnsafeObject;
5
4
  type NativeSQLStatement = {
6
5
  sql: string;
7
6
  params: ReadonlyArray<NativeSQLiteBindValue>;
@@ -10,7 +9,7 @@ type StatusEvent = {
10
9
  status: string;
11
10
  retryAt: string | null;
12
11
  operation: string | null;
13
- failure: UnsafeObject | null;
12
+ failure: CodegenTypes.UnsafeObject | null;
14
13
  };
15
14
  type ConflictEvent = {
16
15
  table: string;
@@ -25,8 +24,8 @@ type SyncEvent = {
25
24
  operation: string | null;
26
25
  attempt: number | null;
27
26
  retryAt: string | null;
28
- source: UnsafeObject | null;
29
- target: UnsafeObject | null;
27
+ source: CodegenTypes.UnsafeObject | null;
28
+ target: CodegenTypes.UnsafeObject | null;
30
29
  action: string | null;
31
30
  mutationID: string | null;
32
31
  tableID: string | null;
@@ -34,7 +33,7 @@ type SyncEvent = {
34
33
  rejectionCode: string | null;
35
34
  scopeID: string | null;
36
35
  rebuildID: string | null;
37
- failure: UnsafeObject | null;
36
+ failure: CodegenTypes.UnsafeObject | null;
38
37
  };
39
38
  type AuthRequestEvent = {
40
39
  requestID: string;
@@ -118,12 +117,12 @@ export interface Spec extends TurboModule {
118
117
  clearRejectedMutations(): Promise<void>;
119
118
  resolveAuthRequest(requestID: string, token: string): void;
120
119
  rejectAuthRequest(requestID: string, error: string): void;
121
- readonly onStatusChange: EventEmitter<StatusEvent>;
122
- readonly onSyncEvent: EventEmitter<SyncEvent>;
123
- readonly onConflict: EventEmitter<ConflictEvent>;
124
- readonly onAuthRequest: EventEmitter<AuthRequestEvent>;
125
- readonly onChange: EventEmitter<ChangeEvent>;
126
- readonly onQueryResult: EventEmitter<QueryResultEvent>;
120
+ readonly onStatusChange: CodegenTypes.EventEmitter<StatusEvent>;
121
+ readonly onSyncEvent: CodegenTypes.EventEmitter<SyncEvent>;
122
+ readonly onConflict: CodegenTypes.EventEmitter<ConflictEvent>;
123
+ readonly onAuthRequest: CodegenTypes.EventEmitter<AuthRequestEvent>;
124
+ readonly onChange: CodegenTypes.EventEmitter<ChangeEvent>;
125
+ readonly onQueryResult: CodegenTypes.EventEmitter<QueryResultEvent>;
127
126
  addListener(eventName: string): void;
128
127
  removeListeners(count: number): void;
129
128
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NativeSynchro.d.ts","sourceRoot":"","sources":["../../../src/NativeSynchro.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NativeSynchro.d.ts","sourceRoot":"","sources":["../../../src/NativeSynchro.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trainstar/synchro-react-native",
3
- "version": "0.4.0-rc.2",
3
+ "version": "0.4.0-rc.3",
4
4
  "description": "React Native bridge for Synchro sync SDK",
5
5
  "source": "./src/index.ts",
6
6
  "main": "./lib/module/index.js",
@@ -76,25 +76,26 @@
76
76
  "node": ">=20.19.4"
77
77
  },
78
78
  "devDependencies": {
79
- "@react-native/babel-preset": "0.83.10",
79
+ "@react-native/babel-preset": "0.88.0",
80
+ "@react-native/jest-preset": "0.88.0",
80
81
  "@testing-library/react-native": "^12.4.0",
81
82
  "@types/jest": "^29.5.14",
82
- "@types/react": "^19.2.4",
83
+ "@types/react": "^19.3.0",
83
84
  "@typescript-eslint/eslint-plugin": "^8.0.0",
84
85
  "@typescript-eslint/parser": "^8.0.0",
85
86
  "del-cli": "^6.0.0",
86
87
  "eslint": "^9.0.0",
87
88
  "jest": "^29.7.0",
88
- "react": "19.2.4",
89
- "react-native": "0.83.10",
89
+ "react": "19.3.0",
90
+ "react-native": "0.88.0",
90
91
  "react-native-builder-bob": "^0.40.18",
91
- "react-test-renderer": "^19.2.4",
92
+ "react-test-renderer": "19.3.0",
92
93
  "ts-jest": "^29.1.0",
93
94
  "typescript": "^5.9.2"
94
95
  },
95
96
  "peerDependencies": {
96
97
  "react": ">=19.1.1 <20.0.0",
97
- "react-native": ">=0.82.1 <0.84.0"
98
+ "react-native": ">=0.82.1 <0.89.0"
98
99
  },
99
100
  "workspaces": [
100
101
  "example"
@@ -139,7 +140,7 @@
139
140
  }
140
141
  },
141
142
  "jest": {
142
- "preset": "react-native",
143
+ "preset": "@react-native/jest-preset",
143
144
  "transform": {
144
145
  "^.+\\.tsx?$": [
145
146
  "ts-jest",
@@ -1,15 +1,11 @@
1
- import type { TurboModule } from 'react-native';
2
- import type {
3
- EventEmitter,
4
- UnsafeObject,
5
- } from 'react-native/Libraries/Types/CodegenTypes';
1
+ import type { CodegenTypes, TurboModule } from 'react-native';
6
2
  import { TurboModuleRegistry } from 'react-native';
7
3
 
8
4
  // Codegen does not support a discriminated union of object and primitive
9
5
  // parameter types. UnsafeObject keeps the TurboModule boundary representable,
10
6
  // while the public client validates the tagged values before crossing it.
11
- type NativeSQLiteBindValue = string | number | boolean | null | UnsafeObject;
12
- type NativeRow = UnsafeObject;
7
+ type NativeSQLiteBindValue = string | number | boolean | null | CodegenTypes.UnsafeObject;
8
+ type NativeRow = CodegenTypes.UnsafeObject;
13
9
  type NativeSQLStatement = {
14
10
  sql: string;
15
11
  params: ReadonlyArray<NativeSQLiteBindValue>;
@@ -18,7 +14,7 @@ type StatusEvent = {
18
14
  status: string;
19
15
  retryAt: string | null;
20
16
  operation: string | null;
21
- failure: UnsafeObject | null;
17
+ failure: CodegenTypes.UnsafeObject | null;
22
18
  };
23
19
  type ConflictEvent = {
24
20
  table: string;
@@ -33,8 +29,8 @@ type SyncEvent = {
33
29
  operation: string | null;
34
30
  attempt: number | null;
35
31
  retryAt: string | null;
36
- source: UnsafeObject | null;
37
- target: UnsafeObject | null;
32
+ source: CodegenTypes.UnsafeObject | null;
33
+ target: CodegenTypes.UnsafeObject | null;
38
34
  action: string | null;
39
35
  mutationID: string | null;
40
36
  tableID: string | null;
@@ -42,7 +38,7 @@ type SyncEvent = {
42
38
  rejectionCode: string | null;
43
39
  scopeID: string | null;
44
40
  rebuildID: string | null;
45
- failure: UnsafeObject | null;
41
+ failure: CodegenTypes.UnsafeObject | null;
46
42
  };
47
43
  type AuthRequestEvent = { requestID: string };
48
44
  type ChangeEvent = { observerID: string };
@@ -171,12 +167,12 @@ export interface Spec extends TurboModule {
171
167
  rejectAuthRequest(requestID: string, error: string): void;
172
168
 
173
169
  // Typed events
174
- readonly onStatusChange: EventEmitter<StatusEvent>;
175
- readonly onSyncEvent: EventEmitter<SyncEvent>;
176
- readonly onConflict: EventEmitter<ConflictEvent>;
177
- readonly onAuthRequest: EventEmitter<AuthRequestEvent>;
178
- readonly onChange: EventEmitter<ChangeEvent>;
179
- readonly onQueryResult: EventEmitter<QueryResultEvent>;
170
+ readonly onStatusChange: CodegenTypes.EventEmitter<StatusEvent>;
171
+ readonly onSyncEvent: CodegenTypes.EventEmitter<SyncEvent>;
172
+ readonly onConflict: CodegenTypes.EventEmitter<ConflictEvent>;
173
+ readonly onAuthRequest: CodegenTypes.EventEmitter<AuthRequestEvent>;
174
+ readonly onChange: CodegenTypes.EventEmitter<ChangeEvent>;
175
+ readonly onQueryResult: CodegenTypes.EventEmitter<QueryResultEvent>;
180
176
 
181
177
  // NativeEventEmitter compatibility
182
178
  addListener(eventName: string): void;