UNPKG

@iamnnort/request

Version:

Request handler for Node.js - Fast - Interactive - Simple

165 lines (159 loc) 5.19 kB
import { AxiosRequestConfig } from 'axios'; type RequestParams = Pick<AxiosRequestConfig, 'params' | 'data'>; type RequestConfigParams = Pick<AxiosRequestConfig, 'params' | 'data'>; type RequestConfig = Omit<AxiosRequestConfig, 'baseURL' | 'url'> & { baseUrl?: string; baseUrlName?: string; baseUrlMap?: Record<string, string>; url?: number | string; urlParts?: (number | string)[]; bearerToken?: string; apiKey?: string; urlencoded?: boolean; multipart?: boolean; xml?: boolean; }; type BaseRequestConfig = Pick<AxiosRequestConfig, 'auth' | 'headers' | 'timeout' | 'responseType'> & { name?: string; baseUrl?: string; baseUrlName?: string; baseUrlMap?: Record<string, string>; url?: number | string; urlParts?: (number | string)[]; bearerToken?: string; apiKey?: string; debug?: boolean; logger?: boolean; serializer?: { array?: 'indices' | 'brackets' | 'repeat' | 'comma'; }; }; type ResponseConfig = { raw?: boolean; bulkCallback?: (page: number) => Promise<void>; }; type Response<T = unknown> = { success: boolean; data?: T; errorCode?: string; }; type RawResponse<T = unknown> = { success: boolean; status: HttpStatuses; method: HttpMethods; data: T; }; declare enum HttpMethods { GET = "get", POST = "post", PUT = "put", DELETE = "delete" } declare enum HttpStatuses { CONTINUE = 100, SWITCHING_PROTOCOLS = 101, PROCESSING = 102, EARLYHINTS = 103, OK = 200, CREATED = 201, ACCEPTED = 202, NON_AUTHORITATIVE_INFORMATION = 203, NO_CONTENT = 204, RESET_CONTENT = 205, PARTIAL_CONTENT = 206, AMBIGUOUS = 300, MOVED_PERMANENTLY = 301, FOUND = 302, SEE_OTHER = 303, NOT_MODIFIED = 304, TEMPORARY_REDIRECT = 307, PERMANENT_REDIRECT = 308, BAD_REQUEST = 400, UNAUTHORIZED = 401, PAYMENT_REQUIRED = 402, FORBIDDEN = 403, NOT_FOUND = 404, METHOD_NOT_ALLOWED = 405, NOT_ACCEPTABLE = 406, PROXY_AUTHENTICATION_REQUIRED = 407, REQUEST_TIMEOUT = 408, CONFLICT = 409, GONE = 410, LENGTH_REQUIRED = 411, PRECONDITION_FAILED = 412, PAYLOAD_TOO_LARGE = 413, URI_TOO_LONG = 414, UNSUPPORTED_MEDIA_TYPE = 415, REQUESTED_RANGE_NOT_SATISFIABLE = 416, EXPECTATION_FAILED = 417, I_AM_A_TEAPOT = 418, MISDIRECTED = 421, UNPROCESSABLE_ENTITY = 422, FAILED_DEPENDENCY = 424, PRECONDITION_REQUIRED = 428, TOO_MANY_REQUESTS = 429, INTERNAL_SERVER_ERROR = 500, NOT_IMPLEMENTED = 501, BAD_GATEWAY = 502, SERVICE_UNAVAILABLE = 503, GATEWAY_TIMEOUT = 504, HTTP_VERSION_NOT_SUPPORTED = 505 } type PaginationDto = { pagination?: boolean | null; page?: number | null; pageSize?: number | null; bulkSize?: number | null; }; type Pagination = { total: number; currentPage: number; lastPage: number; from: number; to: number; pageSize: number; }; type PaginationResponse<T = unknown> = { data: T[]; pagination: Pagination; }; declare class RequestBuilder { baseConfig: BaseRequestConfig; requestConfig: RequestConfig; config: AxiosRequestConfig; constructor(params: { baseConfig: BaseRequestConfig; requestConfig: RequestConfig; }); makeContentType(): this; makeAuth(): this; makeUrl(): this; makeMethod(): this; makeData(): this; makeParams(): this; makeSerializer(): this; build(): AxiosRequestConfig<any>; } declare class RequestDataSource<Entity extends Record<string, any> = any, SearchParams extends RequestConfigParams = any, SearchResponse extends Record<string, any> = any, CreateParams extends RequestConfigParams = any, UpdateParams extends RequestConfigParams = any> { baseRequestConfig: BaseRequestConfig; constructor(baseRequestConfig: BaseRequestConfig); common<T>(requestConfig: RequestConfig): Promise<T>; common<T>(requestConfig: RequestConfig, responseConfig: ResponseConfig): Promise<RawResponse<T>>; bulkCommon<T>(requestConfig: RequestConfig, responseConfig?: ResponseConfig): AsyncGenerator<T[]>; search(config?: SearchParams): Promise<SearchResponse>; bulkSearch(config?: SearchParams): AsyncGenerator<Entity[], any, unknown>; get(id: number | string, config?: SearchParams): Promise<Entity>; create(config: CreateParams): Promise<Entity>; bulkCreate(config: Omit<CreateParams, 'data'> & { data: CreateParams['data'][]; }): Promise<Entity[]>; update(id: number | string, config: UpdateParams): Promise<Entity>; bulkUpdate(config: Omit<UpdateParams, 'data'> & { data: UpdateParams['data'][]; }): Promise<Entity[]>; remove(id: number | string, config?: SearchParams): Promise<void>; } declare class RequestHelper { static sleep(seconds: number): Promise<unknown>; } export { type BaseRequestConfig, HttpMethods, HttpStatuses, type Pagination, type PaginationDto, type PaginationResponse, type RawResponse, RequestBuilder, type RequestConfig, type RequestConfigParams, RequestDataSource, RequestHelper, type RequestParams, type Response, type ResponseConfig };