UNPKG

@tanstack/db

Version:

A reactive client store for building super fast apps on sync

50 lines (49 loc) 1.73 kB
import { QueueStrategy, QueueStrategyOptions } from './types.cjs'; /** * Creates a queue strategy that processes all mutations in order with proper serialization. * * Unlike other strategies that may drop executions, queue ensures every * mutation is attempted sequentially. Each transaction commit completes before * the next one starts. Useful when data consistency is critical and * every operation must be attempted in order. * * **Error handling behavior:** * - If a mutation fails, it is NOT automatically retried - the transaction transitions to "failed" state * - Failed mutations surface their error via `transaction.isPersisted.promise` (which will reject) * - Subsequent mutations continue processing - a single failure does not block the queue * - Each mutation is independent; there is no all-or-nothing transaction semantics * * @param options - Configuration for queue behavior (FIFO/LIFO, timing, size limits) * @returns A queue strategy instance * * @example * ```ts * // FIFO queue - process in order received * const mutate = usePacedMutations({ * mutationFn: async ({ transaction }) => { * await api.save(transaction.mutations) * }, * strategy: queueStrategy({ * wait: 200, * addItemsTo: 'back', * getItemsFrom: 'front' * }) * }) * ``` * * @example * ```ts * // LIFO queue - process most recent first * const mutate = usePacedMutations({ * mutationFn: async ({ transaction }) => { * await api.save(transaction.mutations) * }, * strategy: queueStrategy({ * wait: 200, * addItemsTo: 'back', * getItemsFrom: 'back' * }) * }) * ``` */ export declare function queueStrategy(options?: QueueStrategyOptions): QueueStrategy;