UNPKG

valync

Version:

**A lightweight, framework-agnostic async data handling library for React & Vue, inspired by Riverpod’s AsyncValue pattern and powered by ts-results-es.**

62 lines 1.67 kB
import { Option } from "ts-results-es"; export type ValyncOptions<T> = { init?: Omit<RequestInit, "signal">; cache?: boolean; fetchOnMount?: boolean; retryCount?: number; onData?: (data: T) => T; watch?: any[]; initialData?: ApiResponse<T>; }; export type CacheKey = string | Record<string, any>; export declare function normalizeKey(key: CacheKey): string; export type ApiErrorResponse = { status: "failed"; error: { name: string; message: string; code?: number | string; }; }; export type ApiSuccessResponse<T> = { status: "success"; data: T; }; export type ApiResponse<T> = ApiSuccessResponse<T> | ApiErrorResponse; export type Handler<T, R> = { loading?: () => R; error?: (err: { name: string; message: string; code?: number | string; }) => R; data?: (value: Option<T>) => R; }; export declare abstract class AsyncValue<T> { abstract when<R>(handlers: Handler<T, R>): R; isLoading(): boolean; isData(): boolean; isError(): boolean; } export declare class AsyncLoading<T> extends AsyncValue<T> { when<R>(h: Handler<T, R>): R; } export declare class AsyncError<T = unknown> extends AsyncValue<T> { error: { name: string; message: string; code?: string | number; }; constructor(error: { name: string; message: string; code?: string | number; }); when<R>(h: Handler<T, R>): R; } export declare class AsyncData<T> extends AsyncValue<T> { value: Option<T>; constructor(value: Option<T>); when<R>(h: Handler<T, R>): R; } //# sourceMappingURL=index.d.ts.map