next-loaders
Version:
Provider server loader for NextJS
29 lines (28 loc) • 925 B
TypeScript
export interface LoaderServerSuccess<T> {
success: true;
data: T;
message?: string;
}
export interface LoaderServerFailure {
success: false;
message: string;
detail?: string;
data?: null;
}
export type LoaderServerResponse<T> = LoaderServerSuccess<T> | LoaderServerFailure;
export interface LoaderServerAction<T, P = any> {
(...args: P extends any[] ? P : P[]): Promise<LoaderServerResponse<T>>;
}
export interface ActionCallbacks<T> {
onSuccess?(result: LoaderServerResponse<T>): void;
onError?(e: unknown): void;
onFinally?(): void;
}
export interface ActionInferred<T, P = any> {
(): Promise<void>;
(...args: P extends never ? [] : [...(P extends any[] ? P : [P]), ActionCallbacks<T>?]): Promise<void>;
}
export interface LoaderInferred<P = any> {
(): Promise<void>;
(...args: P extends never ? [] : [...(P extends any[] ? P : [P]), boolean?]): Promise<void>;
}