UNPKG

ipink-util

Version:

util.js

203 lines (202 loc) 7.48 kB
export declare type Method = 'get' | 'GET' | 'delete' | 'DELETE' | 'head' | 'HEAD' | 'options' | 'OPTIONS' | 'post' | 'POST' | 'put' | 'PUT' | 'patch' | 'PATCH' | 'purge' | 'PURGE' | 'link' | 'LINK' | 'unlink' | 'UNLINK'; export declare type ResponseType = 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream'; export declare type responseEncoding = 'ascii' | 'ASCII' | 'ansi' | 'ANSI' | 'binary' | 'BINARY' | 'base64' | 'BASE64' | 'base64url' | 'BASE64URL' | 'hex' | 'HEX' | 'latin1' | 'LATIN1' | 'ucs-2' | 'UCS-2' | 'ucs2' | 'UCS2' | 'utf-8' | 'UTF-8' | 'utf8' | 'UTF8' | 'utf16le' | 'UTF16LE'; export declare type CommonRequestHeadersList = 'Accept' | 'Content-Length' | 'User-Agent' | 'Content-Encoding' | 'Authorization'; export declare type ContentType = 'text/html' | 'text/plain' | 'multipart/form-data' | 'application/json' | 'application/x-www-form-urlencoded' | 'application/octet-stream' | string; export declare type CommonResponseHeadersList = 'Server' | 'Content-Type' | 'Content-Length' | 'Cache-Control' | 'Content-Encoding'; export interface RawAxiosHeaders { [key: string]: any; } export type RawAxiosRequestHeaders = Partial<RawAxiosHeaders & { [Key in CommonRequestHeadersList]: any; } & { 'Content-Type': ContentType; }>; export type RawCommonResponseHeaders = { [Key in CommonResponseHeadersList]: any; } & { "set-cookie": string[]; }; export type RawAxiosResponseHeaders = Partial<RawAxiosHeaders & RawCommonResponseHeaders>; export type MethodsHeaders = Partial<{ [Key in Method as Lowercase<Key>]: any; } & { common: any; }>; export interface GenericAbortSignal { readonly aborted: boolean; onabort?: ((...args: any) => any) | null; addEventListener?: (...args: any) => any; removeEventListener?: (...args: any) => any; } export interface TransitionalOptions { silentJSONParsing?: boolean; forcedJSONParsing?: boolean; clarifyTimeoutError?: boolean; } export interface Cancel { message: string | undefined; } export interface CancelToken { promise: Promise<Cancel>; reason?: Cancel; throwIfRequested(): void; } export interface AxiosBasicCredentials { username: string; password: string; } export interface AxiosProxyConfig { host: string; port: number; auth?: AxiosBasicCredentials; protocol?: string; } export declare enum HttpStatusCode { Continue = 100, SwitchingProtocols = 101, Processing = 102, EarlyHints = 103, Ok = 200, Created = 201, Accepted = 202, NonAuthoritativeInformation = 203, NoContent = 204, ResetContent = 205, PartialContent = 206, MultiStatus = 207, AlreadyReported = 208, ImUsed = 226, MultipleChoices = 300, MovedPermanently = 301, Found = 302, SeeOther = 303, NotModified = 304, UseProxy = 305, Unused = 306, TemporaryRedirect = 307, PermanentRedirect = 308, BadRequest = 400, Unauthorized = 401, PaymentRequired = 402, Forbidden = 403, NotFound = 404, MethodNotAllowed = 405, NotAcceptable = 406, ProxyAuthenticationRequired = 407, RequestTimeout = 408, Conflict = 409, Gone = 410, LengthRequired = 411, PreconditionFailed = 412, PayloadTooLarge = 413, UriTooLong = 414, UnsupportedMediaType = 415, RangeNotSatisfiable = 416, ExpectationFailed = 417, ImATeapot = 418, MisdirectedRequest = 421, UnprocessableEntity = 422, Locked = 423, FailedDependency = 424, TooEarly = 425, UpgradeRequired = 426, PreconditionRequired = 428, TooManyRequests = 429, RequestHeaderFieldsTooLarge = 431, UnavailableForLegalReasons = 451, InternalServerError = 500, NotImplemented = 501, BadGateway = 502, ServiceUnavailable = 503, GatewayTimeout = 504, HttpVersionNotSupported = 505, VariantAlsoNegotiates = 506, InsufficientStorage = 507, LoopDetected = 508, NotExtended = 510, NetworkAuthenticationRequired = 511 } export type BrowserProgressEvent = any; /** * 内置相应类型 */ export declare interface IResponse<T> extends AnyObject { ok?: boolean; code?: number | string; data?: T; msg: string | null; err?: IErrorResponse; } /** * Uni http 响应的response类型, */ export declare interface IBaseResponse<K> { data: K; statusCode: number; header: RawAxiosResponseHeaders | MethodsHeaders & Headers; cookies: string[]; } export declare interface IErrorResponse { errCode: string; errMsg: string; errSubject?: string; cause?: string; data?: string; } export declare interface IUploadResponse extends IResponse<string | AnyObject> { local?: string; } export declare interface IUploadMoreResponse extends IResponse<string[] | AnyObject[]> { local?: string[]; } export type LoadingType = (title: string | WechatMiniprogram.ShowLoadingOption) => any; export type CloseLoadingType = () => any; export type ToastType = (title: string | UniNamespace.ShowToastOptions) => void; export type InterceptorTypeEnum = "BeforeRequest" | "ExecRequest" | "AfterRequest" | "AfterChooseFile" | "BeforeUpload" | "ExecUpload" | "AfterUpload" | "401" | "403" | "404" | "408" | "500" | "501" | "502" | "508" | string; /** * http 请求拦截器, 在这里可设置自定义操作 * @param type { InterceptorTypeEnum } 拦截到的类型 * @param data { any } 可修改的源数据, return data 即修改完成 * * @example ` * HttpConfig.interceptor = (type: InterceptorTypeEnum, data: any) => { * * switch (type) { * // 请求前,对配置和入参做一些处理 * case "BeforeRequest": * // 执行中, data为RequestTask, 可执行 RequestTask.abort() 终止请求 * case "ExecRequest": * typeof data = { abort: () => void } * break; * // 请求完成,对出参做一些处理, 例如: 整体出参揭秘等 * case "AfterRequest": * break; * // upload 方法,选择文件后对选择的文件做一些处理;虽然该函数提供 choosedCallback:() => boolean 入参函数 * case "AfterChooseFile": * break; * // 调用UploadFile前,对配置和入参做一些处理 * case "BeforeUpload": * break; * // 调用UploadFile时, 对请求进行管理 * case "ExecUpload": * typeof data = { * abort: () => void * onProgressUpdate: ({progress: number, totalBytesSent: number, totalBytesExpectedToSend: number}) => {} // 监听上传进度变化 * onHeadersReceived // 仅微信小程序平台支持, 见官方文档 * offProgressUpdate // 仅微信小程序平台支持, 见官方文档 * offHeadersReceived // 仅微信小程序平台支持, 见官方文档 * } * break; * // UploadFile | UploadMoreFile 方法,对上传完成后的数据进行一些处理 * case "AfterUpload": * break; * * * } * return data * } * ` */ export type InterceptorType = (type: InterceptorTypeEnum, data: any) => any; export type IfUnknown<T, K> = unknown extends T ? (T extends unknown ? K : T) : T;