Skip to content

handleSyncRequest

handleSyncRequest<TEnv, TDurableObjectRpc, CFHostMetada, TSyncPayload>(__namedParameters): Promise<Response>

Defined in: packages/@livestore/sync-cf/src/cf-worker/worker.ts:156

Handles LiveStore sync requests (e.g. with search params ?storeId=...&transport=...).

TEnv extends Env = Env

TDurableObjectRpc extends undefined | DurableObjectBranded = undefined

CFHostMetada = unknown

TSyncPayload = JsonValue

ExecutionContext

Only there for type-level reasons

TEnv

HeadersInit

Request<CFHostMetada>

{ payload: undefined | JsonValue; storeId: string; transport: "http" | "ws"; }

undefined | JsonValue = ...

string = Schema.String

"http" | "ws" = ...

ExtractDurableObjectKeys<TEnv>

Binding name of the sync backend Durable Object

Schema<TSyncPayload, TSyncPayload, never>

(payload, context) => void | Promise<void>

Promise<Response>

const validatePayload = (payload: Schema.JsonValue | undefined, context: { storeId: string }) => {
console.log(`Validating connection for store: ${context.storeId}`)
if (payload?.authToken !== 'insecure-token-change-me') {
throw new Error('Invalid auth token')
}
}
export default {
fetch: async (request, env, ctx) => {
const searchParams = matchSyncRequest(request)
// Is LiveStore sync request
if (searchParams !== undefined) {
return handleSyncRequest({
request,
searchParams,
env,
ctx,
syncBackendBinding: 'SYNC_BACKEND_DO',
headers: {},
validatePayload,
})
}
return new Response('Invalid path', { status: 400 })
}
}

If the payload is invalid