UNPKG

@ngx-resource/core

Version:
176 lines (175 loc) 6.21 kB
import { Observable, Subscription } from 'rxjs'; import { Provider } from '@angular/core'; export type TTypePromiseNull<T = {}> = T | Promise<T> | null; export interface IResourceModuleConfig { handler?: Provider; } export interface IResourceParamsBase { url?: string; pathPrefix?: string; path?: string; headers?: any; body?: any; params?: any; query?: any; } export interface IResourceParams extends IResourceParamsBase { rootNode?: string; removeTrailingSlash?: boolean; addTimestamp?: boolean | string; withCredentials?: boolean; lean?: boolean; mutateBody?: boolean; returnAs?: ResourceActionReturnType; keepEmptyBody?: boolean; requestBodyType?: ResourceRequestBodyType; responseBodyType?: ResourceResponseBodyType; queryMappingMethod?: ResourceQueryMappingMethod; [prop: string]: any; } export interface IResourceAction extends IResourceParams { method?: ResourceRequestMethod; expectJsonArray?: boolean; resultFactory?: TResourceResultFactory; map?: TResourceResponseMap; filter?: TResourceResponseFilter; } export type TResourceResponseMap = (item: any, options: IResourceActionInner) => any; export type TResourceResponseFilter = (item: any, options: IResourceActionInner) => boolean; export type TResourceResultFactory = (item: any, options: IResourceActionInner) => any; export interface IResourceActionAttributes { body?: any; query?: any; params?: any; onSuccess?(data: any): any; onError?(data: any): any; } export interface IResourceActionInner { actionAttributes?: IResourceActionAttributes; actionOptions?: IResourceAction; resolvedOptions?: IResourceParamsBase; queryMappingMethod?: ResourceQueryMappingMethod; usedInPath?: { [key: string]: boolean; }; mainObservable?: Observable<any>; subscription?: Subscription | null; promise?: Promise<any>; isModel?: boolean; requestOptions?: IResourceRequest; returnData?: any; } export interface IResourceRequest { method?: ResourceRequestMethod; headers?: any; url?: string; withCredentials?: boolean; body?: any; query?: { [prop: string]: string; }; responseBodyType?: ResourceResponseBodyType; requestBodyType?: ResourceRequestBodyType; } export interface IResourceHandlerResponse { promise?: Promise<IResourceResponse>; observable?: Observable<IResourceResponse>; abort?(): void; } export interface IResourceResponse<B = any> { status: number; headers?: any; body?: B; } export interface IResourceMethodStrictBase<IB, IQ, IP, O, R> { (body: IB, query: IQ, params: IP, onSuccess?: (data: O) => any, onError?: (err: IResourceResponse) => any): R; (body: IB, query: IQ, onSuccess?: (data: O) => any, onError?: (err: IResourceResponse) => any): R; (body: IB, onSuccess?: (data: O) => any, onError?: (err: IResourceResponse) => any): R; (onSuccess?: (data: O) => any, onError?: (err: IResourceResponse) => any): R; } export interface IResourceMethodBase<IB, O, R> extends IResourceMethodStrictBase<IB, any, any, O, R> { } /** * @deprecated use IResourceMethodPromiseStrict instead */ export interface IResourceMethodStrict<IB, IQ, IP, O> extends IResourceMethodStrictBase<IB, IQ, IP, O, Promise<O>> { } /** * @deprecated use IResourceMethodPromise instead */ export interface IResourceMethod<IB, O> extends IResourceMethodBase<IB, O, Promise<O>> { } export interface IResourceMethodPromiseStrict<IB, IQ, IP, O> extends IResourceMethodStrictBase<IB, IQ, IP, O, Promise<O>> { } export interface IResourceMethodPromise<IB, O> extends IResourceMethodBase<IB, O, Promise<O>> { } export interface IResourceMethodObservableStrict<IB, IQ, IP, O> extends IResourceMethodStrictBase<IB, IQ, IP, O, Observable<O>> { } export interface IResourceMethodObservable<IB, O> extends IResourceMethodBase<IB, O, Observable<O>> { } export interface IResourceMethodResultStrict<IB, IQ, IP, O extends {}> extends IResourceMethodStrictBase<IB, IQ, IP, O, ResourceResult<O>> { } export interface IResourceMethodResult<IB, O extends {}> extends IResourceMethodBase<IB, O, ResourceResult<O>> { } /** * @deprecated use IResourceMethodPromiseStrictFull instead */ export interface IResourceMethodStrictFull<IB, IQ, IP, O> extends IResourceMethodStrictBase<IB, IQ, IP, O, Promise<IResourceResponse<O>>> { } /** * @deprecated use IResourceMethodPromiseFull instead */ export interface IResourceMethodFull<IB, O> extends IResourceMethodBase<IB, O, Promise<IResourceResponse<O>>> { } export interface IResourceMethodPromiseStrictFull<IB, IQ, IP, O> extends IResourceMethodStrictBase<IB, IQ, IP, O, Promise<IResourceResponse<O>>> { } export interface IResourceMethodPromiseFull<IB, O> extends IResourceMethodBase<IB, O, Promise<IResourceResponse<O>>> { } export interface IResourceMethodObservableStrictFull<IB, IQ, IP, O> extends IResourceMethodStrictBase<IB, IQ, IP, O, Observable<IResourceResponse<O>>> { } export interface IResourceMethodObservableFull<IB, O> extends IResourceMethodBase<IB, O, Observable<IResourceResponse<O>>> { } export interface IResourceMethodResultStrictFull<IB, IQ, IP, O> extends IResourceMethodStrictBase<IB, IQ, IP, O, ResourceResult<IResourceResponse<O>>> { } export interface IResourceMethodResultFull<IB, O> extends IResourceMethodBase<IB, O, ResourceResult<IResourceResponse<O>>> { } export type ResourceResult<R extends {}> = R & { $resolved?: boolean; $promise?: Promise<R>; $abort?(): void; }; export declare enum ResourceRequestBodyType { NONE = 0, JSON = 1, FORM = 2, FORM_DATA = 3, TEXT = 4, BLOB = 5, ARRAY_BUFFER = 6 } export declare enum ResourceResponseBodyType { Text = 1, Json = 2, ArrayBuffer = 3, Blob = 4 } export declare enum ResourceRequestMethod { Get = 1, Post = 2, Put = 3, Delete = 4, Options = 5, Head = 6, Patch = 7 } export declare enum ResourceQueryMappingMethod { Plain = 1, Bracket = 2, JQueryParamsBracket = 3, None = 99 } export declare enum ResourceActionReturnType { Promise = "promise", Observable = "observable", Resource = "resource" }