Skip to content

RpcOp

RpcOp = "create" | "update" | "delete" | "batch" | "transaction" | "flush" | "reconcile" | "retryFailed" | "recoverSending" | "discardConflict" | "discardQuarantined" | "desync" | "discardEphemeral" | "appendEvent" | "flushEvents" | "outboxStatus" | "ensureSynced" | "readMutationDetails" | "diagnostics" | "rawQuery" | "rawExec" | "rawTransaction" | "guardedQuery" | "bootReport" | "liveQueryDiagnostics" | "exportStore" | "exportDiagnostics" | "exportData"

Defined in: packages/client/src/worker/protocol.ts:294

The RPC ops the attach facade proxies to the worker’s booted client — the write API (mirrors client.mutate/flush), mutation-state reads, and the raw inspection surface (the one-shot rawQuery/ rawExec, plus the atomic rawTransaction).

Most dispatches are pure structured clone. The exception is a raw statement’s COPY body (ADR-0061): the tab lists each blob’s ArrayBuffer on the dispatch’s transfer list, so the bytes cross ZERO-COPY and the tab’s buffers are detached. No wire type changes for it — a Uint8Array survives structured clone as a Uint8Array over the transferred buffer, so the worker reads RawStatement.blob unchanged.