UNPKG

my-http-resource

Version:
75 lines (69 loc) 2.11 kB
import { Signal, WritableSignal } from '@angular/core'; import { Observable, UnaryFunction } from 'rxjs'; import { HttpErrorResponse } from '@angular/common/http'; type TQueryParams = { [key: string]: string | number | boolean; }; type TUrlParams = { [key: string]: string | number; }; type TFetchData = { urlParams?: TUrlParams; mergeValues?: boolean; }; type Get = { queryParams?: TQueryParams; } & TFetchData; type Delete = { queryParams?: TQueryParams; } & TFetchData; type Post = { body?: object; } & TFetchData; type Patch = { body?: object; } & TFetchData; type Put = { body?: object; } & TFetchData; interface IHttpResource<Method, T = any> { loading: Signal<boolean>; value: WritableSignal<T>; error: WritableSignal<unknown>; fetch: (fetData?: Method) => void; request$: (fetData?: Method) => Observable<any>; } interface IBaseRequestData<T> { url: string; afterSuccess?: (data: T) => void; afterError?: (error: HttpErrorResponse) => void; headers?: Record<string, string | number>; initialValue?: any; manual?: boolean; mergeValues?: boolean; pipe?: UnaryFunction<Observable<T>, Observable<T>>; urlParams?: TUrlParams; } interface IGetOrDeleteData<T> extends IBaseRequestData<T> { queryParams?: TQueryParams; } interface IPostOrPutOrPatchData<T> extends IBaseRequestData<T> { body?: object; } declare class MyHttpService { private http; private destroyRef; private getAfterActions; private mergeResult; private createUrl; private getHttp; get<T = any>(data: IGetOrDeleteData<T>): IHttpResource<Get, T>; post<T = any>(data: IPostOrPutOrPatchData<T>): IHttpResource<Post, T>; patch<T = any>(data: IPostOrPutOrPatchData<T>): IHttpResource<Patch, T>; put<T = any>(data: IPostOrPutOrPatchData<T>): IHttpResource<Put, T>; delete<T = any>(data: IGetOrDeleteData<T>): IHttpResource<Delete, T>; private createResource; } declare function myHttpResource(): MyHttpService; export { myHttpResource }; export type { Delete, Get, IHttpResource, Patch, Post, Put };