Skip to Content
APICoreTypes

Types

All type definitions used in Connectivity.

Connectivity state

type ConnectivityStatus = 'online' | 'offline' | 'unknown'; interface ConnectionQuality { rttMs?: number; // round-trip time (ms) effectiveType?: string; // '4g', '3g', '2g' downlink?: number; // estimated downlink speed (Mbps) } interface ConnectivityState { status: ConnectivityStatus; since: number; // Date.now() reason?: string; // change reason (e.g. 'navigator', 'heartbeat') quality: ConnectionQuality; } interface ConnectivityTransition { from: ConnectivityStatus; to: ConnectivityStatus; duration: number; // how long previous state lasted (ms) }

Detector

interface DetectorEvent { status: ConnectivityStatus; reason: string; quality?: ConnectionQuality; } interface Detector { start: (listener: (event: DetectorEvent) => void) => () => void; }

Action

interface RetryPolicy { maxAttempts: number; backoffMs: (attempt: number) => number; } interface FlushOption { concurrency?: number; // max concurrent jobs (default: Infinity) intervalMs?: number; // delay between batches (default: 0) } interface ActionOptions { whenOffline?: 'queue' | 'fail'; retry?: RetryPolicy; flushOption?: FlushOption; dedupeKey?: (input: unknown) => string; dedupeOnFlush?: 'keep-first' | 'keep-last'; } interface ActionOptionsConfig<TInput, TResult> { actionKey: string; request: (input: TInput) => Promise<TResult>; whenOffline?: 'queue' | 'fail'; retry?: RetryPolicy; flushOption?: FlushOption; dedupeKey?: (input: TInput) => string; dedupeOnFlush?: 'keep-first' | 'keep-last'; } interface RegisteredAction { request: (input: unknown) => Promise<unknown>; options: ActionOptions; }

Queue

type JobStatus = 'queued' | 'running' | 'succeeded' | 'failed' | 'canceled'; interface QueuedJob { id: string; actionKey: string; dedupeKey?: string; input: unknown; createdAt: number; attempt: number; nextRunAt?: number; status: JobStatus; lastError?: unknown; }

Execution result

type ActionRunResult = | { enqueued: true; jobId: string } | { enqueued: false; result: unknown };

Client options

interface ConnectivityClientOptions { detectors: Detector[]; initialStatus?: ConnectivityStatus; gracePeriodMs?: number; onJobError?: (error: unknown, job: QueuedJob) => void; defaultOptions?: { actions?: ActionOptions; }; }

Callbacks

interface UseActionCallbacks<TResult> { onSuccess?: (result: TResult) => void; onEnqueued?: (jobId: string) => void; onError?: (error: unknown) => void; onSettled?: () => void; }

React

interface ConnectivityProviderOptions { /** Global defaults for all actions */ actions?: Partial<ActionOptions>; /** Defaults for Connectivity component */ connectivity?: { fallback?: React.ReactNode; delayMs?: number; }; } type ConnectivityChangeHandlers = Partial< Record<ConnectivityStatus, (transition: ConnectivityTransition) => void> >;

Utility

type Unsubscribe = () => void;
Last updated on