Interface: SyncEvents
Defined in: contract.ts:123
@rasd/sync — the public entry point.
Two things ship here: the engine (createSyncEngine), which is transport
agnostic and drives @rasd/storage's outbox, and the RSP v1 transport
(createRspTransport), which is one implementation of the frozen
SyncTransport port. A host talking to ODK Central, KoboToolbox or its own
backend replaces the second without touching the first
(docs/10-sync-protocol.md §10).
Nothing in this file has an implementation; every symbol is re-exported from
the module that owns it, so the graph stays a DAG:
contract → types → policy / backoff / classify → idempotency →
rsp-transport → engine.
Properties
datasetUpdated
datasetUpdated: object;
Defined in: contract.ts:130
name
name: string;
rows
rows: number;
error
error: object;
Defined in: contract.ts:126
code
code: string;
message
message: string;
retryable
retryable: boolean;
formUpdated
formUpdated: object;
Defined in: contract.ts:129
id
id: string;
version
version: string;
licenseRefreshed
licenseRefreshed: object;
Defined in: contract.ts:141
docs/17 §7 documents this payload as { exp } and the engine has always
emitted { token }. Both are here rather than one silently winning: the
token is what a host forwards on, and exp is what a "licence renewed
until…" line in a UI needs. exp is read out of the token's claims
WITHOUT verifying it — this event is a notification, never an
authorisation, and @rasd/license is the only thing that may decide a
token is good.
exp?
optional exp?: string;
token
token: string;
progress
progress: SyncProgress;
Defined in: contract.ts:124
rejected
rejected: object;
Defined in: contract.ts:128
A submission the server refused; the enumerator must fix and re-finalize.
code
code: string;
field?
optional field?: string;
id
id: string;
message
message: string;
status
status: SyncStatus;
Defined in: contract.ts:125
synced
synced: object;
Defined in: contract.ts:142
attachments
attachments: number;
submissions
submissions: number;