eze-link
Version:
142 lines (141 loc) • 6.2 kB
TypeScript
import { IApiService } from "./ApiService";
import { IStorable } from "./Storable";
export default class ClientBuilder<RootKey extends string> {
limit: number;
storable: IStorable;
api: IApiService<any>;
generateQuery: ({ url, query }: GenerateQuery) => string;
useCash: boolean;
roots: {
[key: string]: string;
};
private getRoot;
clearCash: (storageKey?: string) => void;
static clearCash: (storageKey: string, storage?: "localStorage" | "sessionStorage") => void;
constructor({ api, limit, storage, storeKey, generateQuery, roots }: IClientFunctionsConstructor);
GET_Blob: ({ root, url, query, headers }: IGet<RootKey>) => Promise<Blob>;
POST_Blob: ({ root, url, query, headers, body }: IPost<RootKey>) => Promise<Blob>;
OffsetPaginatorWithCash: <T = IQuery, Response_1 = any[]>({ root, url, getUrl, getHeaders, limit, storageKey, abortId, }: CreateCashedLoadCleintProps<T, RootKey>) => {
hasMore: boolean;
limit: number;
load: (query?: T | undefined, clearCash?: boolean) => Promise<Response_1>;
loadMore: () => Promise<Response_1>;
reload: (query?: T | undefined) => Promise<Response_1>;
loadAll: (query?: T | undefined) => Promise<Response_1>;
};
OffsetPaginator: <T = IQuery, Response_1 = any[]>({ root, url, getUrl, getHeaders, limit, abortId }: CreateLoadCleintProps<T, RootKey>) => {
hasMore: boolean;
limit: number;
load: (query?: T | undefined) => Promise<Response_1>;
loadMore: () => Promise<Response_1>;
reload: (query?: T | undefined) => Promise<Response_1>;
loadAll: (query?: T | undefined) => Promise<Response_1>;
};
PaginatorWithCash: <T = IQuery, Response_1 = any[]>({ root, url, getUrl, getHeaders, limit, storageKey, }: CreateCashedLoadCleintProps<T, RootKey>) => {
hasMore: boolean;
limit: number;
load: (query?: T | undefined, clearCash?: boolean) => Promise<Response_1>;
loadMore: () => Promise<Response_1>;
reload: (query?: T | undefined) => Promise<Response_1>;
};
Paginator: <T = IQuery, Response_1 = any[]>({ root, url, getUrl, getHeaders, limit }: CreateLoadCleintProps<T, RootKey>) => {
hasMore: boolean;
limit: number;
load: (query?: T | undefined) => Promise<Response_1>;
loadMore: () => Promise<Response_1>;
reload: (query?: T | undefined) => Promise<Response_1>;
};
IdPaginatorWithCash: <T = IQuery, Response_1 = any[]>({ root, url, getUrl, getHeaders, limit, storageKey, }: CreateCashedLoadCleintProps<T, RootKey>) => {
hasMore: boolean;
limit: number;
load: (query?: T | undefined, clearCash?: boolean) => Promise<Response_1>;
loadMore: () => Promise<Response_1>;
reload: (query?: T | undefined) => Promise<Response_1>;
};
IdPaginator: <T = IQuery, Response_1 = any[]>({ root, url, getUrl, getHeaders, limit }: CreateLoadCleintProps<T, RootKey>) => {
hasMore: boolean;
limit: number;
load: (query?: T | undefined) => Promise<Response_1>;
loadMore: () => Promise<Response_1>;
reload: (query?: T | undefined) => Promise<Response_1>;
};
GET: <Response_1 = any>({ root, url, query, headers }: IGet<RootKey>) => Promise<Response_1>;
GET_WithCash: <Response_1 = any>({ root, url, query, headers, clearCash, storageKey, abortId }: IGet<RootKey> & ICashed) => Promise<Response_1>;
POST: <Response_1 = any>({ root, url, query, headers, getHeaders, body, onSuccess, onError, abortId }: IPost<RootKey>) => Promise<Response_1>;
POST_WithCash: <Response_1 = any>({ root, url, query, headers, getHeaders, body, clearCash, storageKey, onError, onSuccess, abortId, }: IPost<RootKey> & ICashed) => Promise<Response_1>;
PUT: <Response_1 = any>({ root, url, query, headers, body, getHeaders, onError, onSuccess, abortId }: IPost<RootKey>) => Promise<Response_1>;
UPDATE: <Response_1 = any>({ root, url, query, headers, getHeaders, body, onError, onSuccess, abortId }: IPost<RootKey>) => Promise<Response_1>;
PATCH: <Response_1 = any>({ root, url, query, body, headers, getHeaders, onError, onSuccess, abortId }: IPost<RootKey>) => Promise<Response_1>;
DELETE: <Response_1 = any>({ root, url, query, body, headers, getHeaders, onError, onSuccess, abortId }: IPost<RootKey>) => Promise<Response_1>;
}
type GenerateQuery = {
url: string;
query?: any;
};
type IQuery = {
[key: string]: any;
};
type CreateLoadCleintProps<T, RootKey> = ({
url: string;
getUrl?: null;
} | {
url?: null;
getUrl: (query?: T) => string;
}) & {
getHeaders?: (query?: T) => any;
limit?: number;
abortId?: string;
} & AmRoot<RootKey>;
type CreateCashedLoadCleintProps<T, RootKey> = CreateLoadCleintProps<T, RootKey> & {
storageKey?: string;
};
type IClientFunctionsConstructor = {
api?: IApiService<any>;
limit?: number;
storeKey?: string;
storage?: undefined;
generateQuery?: (props: GenerateQuery) => string;
roots: {
[key: string]: string;
};
} | {
api?: IApiService<any>;
limit?: number;
storeKey: string;
storage?: "localStorage" | "sessionStorage" | "memoryStorage";
generateQuery?: (props: GenerateQuery) => string;
roots: {};
} | {
api?: IApiService<any>;
limit?: number;
storeKey: string;
storage: "localStorage" | "sessionStorage" | "memoryStorage";
generateQuery?: (props: GenerateQuery) => string;
roots: {};
};
type AmRoot<RootKey> = {
root?: any;
} | {
root: RootKey;
};
type IGet<RootKey> = {
url: string;
query?: IQuery;
headers?: any;
abortId?: string;
} & AmRoot<RootKey>;
type IPost<RootKey> = {
url: string;
body?: any;
query?: IQuery;
headers?: any;
getHeaders?: (query: any) => any;
onSuccess?: (res: any) => void;
onError?: (err: any) => void;
abortId?: string;
} & AmRoot<RootKey>;
type ICashed = {
clearCash?: boolean;
storageKey?: string;
};
export {};