UNPKG

jsm-sdk

Version:
118 lines (112 loc) 3.56 kB
import { AxiosHeaderValue, AxiosRequestConfig, AxiosResponse, AxiosInstance, } from "axios"; declare global { namespace Jsm { namespace Sdk { type TRequestConfig = { token?: string; app?: string; company?: string; office?: string; store?: string; } & ( | { serviceName: string; serviceToken: string; } | { serviceName?: never; serviceToken?: never; } ) & { throw_not_found_error?: boolean; }; type TResponseDatum< T extends { data?: object | Array<object>; } & Jsm.Core.Utils.Api.Response.DefaultResponse & Jsm.Core.Utils.Api.Response.PagedResponse > = Jsm.Core.Utils.NonUndefined<T["data"]> extends Array<any> ? { data: Jsm.Core.Utils.NonUndefined<T["data"]>; edge: Jsm.Core.Utils.NonUndefined<T["edge"]>; pagination?: Jsm.Core.Utils.NonUndefined< Jsm.Core.Utils.Api.Response.PagedResponse["pagination"] >; hasMore?: Jsm.Core.Utils.Api.Response.PagedResponse["hasMore"] } : { data: Jsm.Core.Utils.NonUndefined<T["data"]>; edge: Jsm.Core.Utils.NonUndefined<T["edge"]>; }; type IResponse = { data?: any; edge?: any; error?: Jsm.Core.Utils.Api.Response.Error; } & Jsm.Core.Utils.Api.Response.PagedResponse; interface IHttpClient { get axios(): AxiosInstance; request<T extends IResponse, D = any>( config: AxiosRequestConfig<D> ): Promise<Sdk.TResponseDatum<T>>; get<T extends IResponse, D = any>( path: string, query?: object, config?: AxiosRequestConfig<D> ): Promise<Sdk.TResponseDatum<T>>; delete<T extends Sdk.IResponse, D = any>( path: string, query?: object, config?: AxiosRequestConfig<D> ): Promise<Sdk.TResponseDatum<T>>; head<T extends Sdk.IResponse>( path: string, query: object ): Promise<Sdk.TResponseDatum<T>>; options<T extends Sdk.IResponse>( path: string, query: object ): Promise<Sdk.TResponseDatum<T>>; post<T extends Sdk.IResponse, D = any>( path: string, data?: D, config?: AxiosRequestConfig<D> ): Promise<Sdk.TResponseDatum<T>>; put<T extends Sdk.IResponse, D = any>( path: string, data?: D, config?: AxiosRequestConfig<D> ): Promise<Sdk.TResponseDatum<T>>; patch<T extends Sdk.IResponse, D = any>( path: string, data?: D, config?: AxiosRequestConfig<D> ): Promise<Sdk.TResponseDatum<T>>; postForm<T extends Sdk.IResponse, D = any>( path: string, data?: D, config?: AxiosRequestConfig<D> ): Promise<Sdk.TResponseDatum<T>>; putForm<T extends Sdk.IResponse, D = any>( path: string, data?: D, config?: AxiosRequestConfig<D> ): Promise<Sdk.TResponseDatum<T>>; patchForm<T extends Sdk.IResponse, D = any>( path: string, data?: D, config?: AxiosRequestConfig<D> ): Promise<Sdk.TResponseDatum<T>>; } } } } type TResponseDatum<T extends { data?: object | Array<object> }> = { data: T["data"]; edge: T["edge"]; pagination: T["data"] extends Array ? boolean : never; };