UNPKG

@uni-helper/uni-network

Version:

为 uni-app 打造的基于 Promise 的 HTTP 客户端

869 lines 29 kB
//#region src/types/common.d.ts type UnData = string | Record<string, any> | ArrayBuffer; type UnMethod = "get" | "GET" | "delete" | "DELETE" | "head" | "HEAD" | "options" | "OPTIONS" | "post" | "POST" | "put" | "PUT" | "patch" | "PATCH" | "trace" | "TRACE" | "connect" | "CONNECT"; type UnHeaders = Record<string, any>; type UnParams = Record<string, any>; type UnParamsSerializer = (params?: UnParams) => string; type UnValidateStatus = (status: number) => boolean | null; interface UnGenericAbortSignal { readonly aborted: boolean; onabort?: ((...args: any) => any) | null; addEventListener?: (...args: any) => any; removeEventListener?: (...args: any) => any; } type UnDataType = "json" | string; type UnResponseType = "text" | "arraybuffer"; interface UnFile { name?: string; file?: File; uri?: string; } type UnOnProgress = (response?: { /** 当前上传/下载百分比 */ progress?: number; /** 已经上传的数据长度,单位 Bytes */ totalBytesSent?: number; /** 预期需要上传的数据总长度,单位 Bytes */ totalBytesExpectedToSend?: number; /** 已经下载的数据长度,单位 Bytes */ totalBytesWritten?: number; /** 预期需要下载的数据总长度,单位 Bytes */ totalBytesExpectedToWrite?: number; }) => void; type UnFileType = "image" | "video" | "audio"; interface UnProfile { /** * 第一个 HTTP 重定向发生时的时间 * * 有跳转且是同域名内的重定向才算,否则值为 0 */ redirectStart?: number; /** * 最后一个 HTTP 重定向完成时的时间 * * 有跳转且是同域名内部的重定向才算,否则值为 0 */ redirectEnd?: number; /** 组件准备好使用 HTTP 请求抓取资源的时间,这发生在检查本地缓存之前 */ fetchStart?: number; /** * DNS 域名查询开始的时间 * * 如果使用了本地缓存(即无 DNS 查询)或持久连接,则与 fetchStart 值相等 */ domainLookupStart?: number; /** * DNS 域名查询完成的时间 * * 如果使用了本地缓存(即无 DNS 查询)或持久连接,则与 fetchStart 值相等 */ domainLookupEnd?: number; /** * HTTP(TCP) 开始建立连接的时间 * * 如果是持久连接,则与 fetchStart 值相等 * * 如果在传输层发生了错误且重新建立连接,则这里显示的是新建立的连接开始的时间 */ connectStart?: number; /** * HTTP(TCP) 完成建立连接的时间(完成握手) * * 如果是持久连接,则与 fetchStart 值相等 * * 注意如果在传输层发生了错误且重新建立连接,则这里显示的是新建立的连接完成的时间 * * 这里的完成握手包括安全连接建立完成、SOCKS 授权通过 */ connectEnd?: number; /** * SSL建立连接的时间 * * 如果不是安全连接,则值为 0 */ SSLconnectionStart?: number; /** * SSL 建立完成的时间 * * 如果不是安全连接,则值为 0 */ SSLconnectionEnd?: number; /** * HTTP 请求读取真实文档开始的时间(完成建立连接),包括从本地读取缓存 * * 连接错误重连时,这里显示的也是新建立连接的时间 */ requestStart?: number; /** HTTP 请求读取真实文档结束的时间 */ requestEnd?: number; /** HTTP 开始接收响应的时间(获取到第一个字节),包括从本地读取缓存 */ responseStart?: number; /** HTTP 响应全部接收完成的时间(获取到最后一个字节),包括从本地读取缓存 */ responseEnd?: number; /** 当次请求连接过程中实时 rtt */ rtt?: number; /** 评估的网络状态 */ estimate_nettype?: string | number; /** 协议层根据多个请求评估当前网络的 rtt(仅供参考) */ httpRttEstimate?: number; /** 传输层根据多个请求评估的当前网络的 rtt(仅供参考) */ transportRttEstimate?: number; /** 评估当前网络下载的 kbps */ downstreamThroughputKbpsEstimate?: number; /** 当前网络的实际下载 kbps */ throughputKbps?: number; /** 当前请求的 IP */ peerIP?: string; /** 当前请求的端口 */ port?: number; /** 是否复用连接 */ socketReused?: boolean; /** 发送的字节数 */ sendBytesCount?: number; /** 收到字节数 */ receivedBytedCount?: number; /** 使用协议类型 */ protocol?: "http1.1" | "h2" | "quic" | "unknown" | string; } //#endregion //#region src/core/UnCancelToken.d.ts interface UnCancel { message?: string; } interface UnCancelStatic { new (message?: string): UnCancel; } type UnCanceler<T = UnData, D = UnData> = (message?: string, config?: UnConfig<T, D>, task?: UnTask) => void; type UnCancelTokenListener = (reason: UnCancel | PromiseLike<UnCancel>) => void; interface UnCancelTokenSource<T = UnData, D = UnData> { token: UnCancelToken; cancel: UnCanceler<T, D>; } interface UnCancelTokenStatic<T = UnData, D = UnData> { new (executor: (cancel: UnCanceler<T, D>) => void): UnCancelToken<T, D>; source: () => UnCancelTokenSource<T, D>; } declare class UnCancelToken<T = UnData, D = UnData> { promise: Promise<UnCancel>; reason?: UnCancel; private listeners; constructor(executor: (cancel: UnCanceler<T, D>) => void); throwIfRequested(): void; subscribe(listener: UnCancelTokenListener): void; unsubscribe(listener: UnCancelTokenListener): void; toAbortSignal(): AbortSignal & { unsubscribe: () => void; }; static source<TT = UnData, DD = UnData>(): UnCancelTokenSource<TT, DD>; } //#endregion //#region src/types/config.d.ts interface UnConfig<T = UnData, D = UnData> { /** 用于请求的服务器 URL */ url?: string; /** * 创建请求时使用的方法 * * 默认为 'GET' */ method?: UnMethod; /** 自动加在 `url` 前面,除非 `url` 是一个绝对 URL 且选项 `allowAbsoluteUrls` 为 true */ baseUrl?: string; /** * 决定是否允许绝对 URL 覆盖配置的 `baseUrl` * * 当设置为 true(默认)时,绝对值的 `url` 会覆盖 `baseUrl` * * 当设置为 false 时,绝对值的 `url` 会始终被 `baseUrl` 前置 */ allowAbsoluteUrls?: boolean; /** 自定义请求头,不能设置 Referer */ headers?: UnHeaders; /** 与请求一起发送的 URL 参数 */ params?: UnParams; /** * 可选方法,主要用于序列化 `params` * * 默认使用 [fast-querystring](https://github.com/anonrig/fast-querystring) * 序列化,需要自行处理嵌套值 * * [picoquery](https://github.com/43081j/picoquery) 在 fast-querystring * 基础上支持嵌套值、增加可配置性 * * [qs](https://github.com/ljharb/qs) 包含大量无用的兼容代码,占用额外体积,如无必要不建议使用 * * [qs](https://github.com/ljharb/qs) v6.10.0 引入了 `get-intrinsic` * 导致结合微信小程序和微信小程序插件使用时出现报错,可使用 v6.9.7 * * [query-string](https://github.com/sindresorhus/query-string) 体积性能都较好,支持完善 * * [query-string](https://github.com/sindresorhus/query-string) 基于 * [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component),它使用了部分小程序(如支付宝小程序)不支持的语法(可选的 * catch 参数,Optional catch Binding),需自行修改处理 */ paramsSerializer?: UnParamsSerializer; /** * 作为请求体被发送的数据 * * 必须是以下类型之一:string、ArrayBuffer、Record<string, any> */ data?: D; /** * 指定请求超时的毫秒数 * * 如果请求时间超过 `timeout` 的值,则请求会被中断 * * 要设置永不超时,可以将其设置为 Number.POSITIVE_INFINITY * * 默认值是实际调用的 API 的默认值 */ timeout?: number; /** * 允许自定义处理请求 * * 可以指定为 'request'、`upload` 和 `download` 三者之一 * * 也可以指定为一个方法,返回一个 Promise 并提供一个有效的响应 * * 如果你正在使用 un.request、un.download、un.upload、un.get 等别名方法,则无需再指定该键的值 * * 默认为 'request' */ adapter?: "request" | "download" | "upload" | UnAdapter<T, D>; /** * 定义了对于给定的 HTTP 状态码该 resolve 还是 reject * * 如果 `validateStatus` 返回 `true`、`null` 或 `undefined` * * 则 promise 将会被 resolve,否则会被 reject * * 默认为 (status) => status >= 200 && status < 300 */ validateStatus?: UnValidateStatus; /** 用于取消请求 */ signal?: UnGenericAbortSignal; /** 用于取消请求 */ cancelToken?: UnCancelToken<T, D>; /** * 监听 HTTP Response Header 事件 * * 会比请求完成事件更早 */ onHeadersReceived?: (response?: { headers?: UnHeaders; }) => void; /** * Request 使用 * * 服务器返回数据的类型 * * 如果设置为 json,会尝试对返回的数据做一次 JSON.parse * * 默认为 json */ dataType?: UnDataType; /** * Request 使用 * * 响应的数据类型 * * 默认为 text */ responseType?: UnResponseType; /** * Request 使用 * * 是否验证 ssl 证书 * * 默认为 true */ sslVerify?: boolean; /** * Request 使用 * * 跨域请求时是否需要使用凭证 * * 默认为 false */ withCredentials?: boolean; /** * Request 使用 * * 是否在 DNS 解析时优先使用 ipv4 * * 默认为 false */ firstIpv4?: boolean; /** * Request 使用 * * 是否开启 http2 * * 默认为 false */ enableHttp2?: boolean; /** * Request 使用 * * 是否开启 quic * * 默认为 false */ enableQuic?: boolean; /** * Request 使用 * * 是否开启缓存 * * 默认为 false */ enableCache?: boolean; /** * Request 使用 * * 是否开启 HttpDNS 服务 * * 默认为 false */ enableHttpDNS?: boolean; /** * Request 使用 * * HttpDNS 服务商 Id */ httpDNSServiceId?: string; /** * Request 使用 * * 是否开启 transfer-encoding chunked * * 默认为 false */ enableChunked?: boolean; /** * Request 使用 * * 是否在 wifi 下使用移动网络发送请求 * * 默认为 false */ forceCellularNetwork?: boolean; /** * Request 使用 * * 是否可在 headers 中编辑 cookie * * 默认为 false */ enableCookie?: boolean; /** * Request 使用 * * 是否开启云加速 * * 默认为 false */ cloudCache?: boolean | { /** * 用于指定 query 中哪些字段不作为缓存依据 */ excludeURLQueries?: string[]; /** * 用于表达云加速缓存的最快刷新时间 * * 单位 s */ minRefresh?: number; [key: string]: any; }; /** * Request 使用 * * 控制当前请求是否延时至首屏内容渲染后发送 * * 默认为 false */ defer?: boolean; /** * Request 使用 * * 监听 Transfer-Encoding Chunk Received 事件 * * 当接收到新的 chunk 时触发 */ onChunkReceived?: (response?: { data?: ArrayBuffer; }) => void; /** * Upload 使用 * * 需要上传的文件列表,files 和 filePath 必填一个 * * 使用该参数时,filePath 和 name 无效 * * 不支持小程序 */ files?: UnFile[]; /** * Upload 使用 * * 文件类型 */ fileType?: UnFileType; /** * Upload 使用 * * 文件对象 */ file?: File; /** * Upload 使用 * * 文件路径,files 和 filePath 必填一个 * * Download 使用 * * 文件下载后存储的本地路径 */ filePath?: string; /** * Upload 使用 * * 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容 */ name?: string; /** * Upload 使用 * * 一个对象,会作为 HTTP 请求中其它额外的 form data */ formData?: Record<string, any>; /** * Download 使用 * * 下载进度变化时触发 * * 优先级 onDownloadProgress > onDownloadProgressUpdate > onProgress > * onProgressUpdate */ onDownloadProgress?: UnOnProgress; /** * Download 使用 * * 下载进度变化时触发 * * 优先级 onDownloadProgress > onDownloadProgressUpdate > onProgress > * onProgressUpdate */ onDownloadProgressUpdate?: UnOnProgress; /** * Upload 使用 * * 上传进度变化时触发 * * 优先级 onUploadProgress > onUploadProgressUpdate > onProgress > * onProgressUpdate */ onUploadProgress?: UnOnProgress; /** * Upload 使用 * * 上传进度变化时触发 * * 优先级 onUploadProgress > onUploadProgressUpdate > onProgress > * onProgressUpdate */ onUploadProgressUpdate?: UnOnProgress; /** * Upload / download 使用 * * 上传/下载进度变化时触发 * * 优先级 onUploadProgress / onDownloadProgress > onUploadProgressUpdate / * onDownloadProgressUpdate > onProgress > onProgressUpdate */ onProgress?: UnOnProgress; /** * Upload / download 使用 * * 上传/下载进度变化时触发 * * 优先级 onUploadProgress / onDownloadProgress > onUploadProgressUpdate / * onDownloadProgressUpdate > onProgress > onProgressUpdate */ onProgressUpdate?: UnOnProgress; [key: string]: any; } //#endregion //#region src/types/task.d.ts interface UnTask extends Partial<UniApp.RequestTask>, Partial<Omit<UniApp.DownloadTask, "onProgressUpdate">>, Partial<Omit<UniApp.UploadTask, "onProgressUpdate">> { onProgressUpdate?: (callback: UnOnProgress) => void; [key: string]: any; } //#endregion //#region src/types/response.d.ts interface UnResponse<T = UnData, D = UnData> { /** 错误信息 */ errMsg?: string; /** 错误代码 */ errno?: number; /** 网络请求过程中的调试信息 */ profile?: UnProfile; /** 请求的配置信息 */ config?: UnConfig<T, D>; /** 对应的 task 信息 */ task?: UnTask; /** 服务器响应的 HTTP 状态码 */ status?: number; /** 服务器响应的 HTTP 状态信息 */ statusText?: string; /** 服务器响应头 */ headers?: UnHeaders; /** 服务器响应数据 */ data?: T; /** * Request 特有 * * 服务器提供的 cookies 数据 */ cookies?: string[]; /** * Download 特有 * * 临时本地文件路径 * * 没传入 filePath 指定文件存储路径时会返回,下载后的文件会存储到一个临时文件 */ tempFilePath?: string; /** * Download 特有 * * 用户本地文件路径 * * 传入 filePath 时会返回,跟传入的 filePath 一致 */ filePath?: string; } //#endregion //#region src/types/promise.d.ts type UnPromise<T = UnData, D = UnData> = Promise<UnResponse<T, D>>; //#endregion //#region src/types/adapter.d.ts type UnAdapter<T = UnData, D = UnData> = (config: UnConfig<T, D>) => UnPromise<T, D>; //#endregion //#region src/core/dispatchRequest.d.ts declare const dispatchRequest: <T = UnData, D = UnData>(config: UnConfig<T, D>) => Promise<UnResponse<T, D>>; //#endregion //#region src/core/HttpStatusCode.d.ts declare const HttpStatusCode: { readonly Continue: 100; readonly 100: "Continue"; readonly SwitchingProtocols: 101; readonly 101: "SwitchingProtocols"; readonly Processing: 102; readonly 102: "Processing"; readonly EarlyHints: 103; readonly 103: "EarlyHints"; readonly Ok: 200; readonly 200: "Ok"; readonly Created: 201; readonly 201: "Created"; readonly Accepted: 202; readonly 202: "Accepted"; readonly NonAuthoritativeInformation: 203; readonly 203: "NonAuthoritativeInformation"; readonly NoContent: 204; readonly 204: "NoContent"; readonly ResetContent: 205; readonly 205: "ResetContent"; readonly PartialContent: 206; readonly 206: "PartialContent"; readonly MultiStatus: 207; readonly 207: "MultiStatus"; readonly AlreadyReported: 208; readonly 208: "AlreadyReported"; readonly ImUsed: 226; readonly 226: "ImUsed"; readonly MultipleChoices: 300; readonly 300: "MultipleChoices"; readonly MovedPermanently: 301; readonly 301: "MovedPermanently"; readonly Found: 302; readonly 302: "Found"; readonly SeeOther: 303; readonly 303: "SeeOther"; readonly NotModified: 304; readonly 304: "NotModified"; readonly UseProxy: 305; readonly 305: "UseProxy"; readonly Unused: 306; readonly 306: "Unused"; readonly TemporaryRedirect: 307; readonly 307: "TemporaryRedirect"; readonly PermanentRedirect: 308; readonly 308: "PermanentRedirect"; readonly BadRequest: 400; readonly 400: "BadRequest"; readonly Unauthorized: 401; readonly 401: "Unauthorized"; readonly PaymentRequired: 402; readonly 402: "PaymentRequired"; readonly Forbidden: 403; readonly 403: "Forbidden"; readonly NotFound: 404; readonly 404: "NotFound"; readonly MethodNotAllowed: 405; readonly 405: "MethodNotAllowed"; readonly NotAcceptable: 406; readonly 406: "NotAcceptable"; readonly ProxyAuthenticationRequired: 407; readonly 407: "ProxyAuthenticationRequired"; readonly RequestTimeout: 408; readonly 408: "RequestTimeout"; readonly Conflict: 409; readonly 409: "Conflict"; readonly Gone: 410; readonly 410: "Gone"; readonly LengthRequired: 411; readonly 411: "LengthRequired"; readonly PreconditionFailed: 412; readonly 412: "PreconditionFailed"; readonly PayloadTooLarge: 413; readonly 413: "PayloadTooLarge"; readonly UriTooLong: 414; readonly 414: "UriTooLong"; readonly UnsupportedMediaType: 415; readonly 415: "UnsupportedMediaType"; readonly RangeNotSatisfiable: 416; readonly 416: "RangeNotSatisfiable"; readonly ExpectationFailed: 417; readonly 417: "ExpectationFailed"; readonly ImATeapot: 418; readonly 418: "ImATeapot"; readonly MisdirectedRequest: 421; readonly 421: "MisdirectedRequest"; readonly UnprocessableEntity: 422; readonly 422: "UnprocessableEntity"; readonly Locked: 423; readonly 423: "Locked"; readonly FailedDependency: 424; readonly 424: "FailedDependency"; readonly TooEarly: 425; readonly 425: "TooEarly"; readonly UpgradeRequired: 426; readonly 426: "UpgradeRequired"; readonly PreconditionRequired: 428; readonly 428: "PreconditionRequired"; readonly TooManyRequests: 429; readonly 429: "TooManyRequests"; readonly RequestHeaderFieldsTooLarge: 431; readonly 431: "RequestHeaderFieldsTooLarge"; readonly UnavailableForLegalReasons: 451; readonly 451: "UnavailableForLegalReasons"; readonly InternalServerError: 500; readonly 500: "InternalServerError"; readonly NotImplemented: 501; readonly 501: "NotImplemented"; readonly BadGateway: 502; readonly 502: "BadGateway"; readonly ServiceUnavailable: 503; readonly 503: "ServiceUnavailable"; readonly GatewayTimeout: 504; readonly 504: "GatewayTimeout"; readonly HttpVersionNotSupported: 505; readonly 505: "HttpVersionNotSupported"; readonly VariantAlsoNegotiates: 506; readonly 506: "VariantAlsoNegotiates"; readonly InsufficientStorage: 507; readonly 507: "InsufficientStorage"; readonly LoopDetected: 508; readonly 508: "LoopDetected"; readonly NotExtended: 510; readonly 510: "NotExtended"; readonly NetworkAuthenticationRequired: 511; readonly 511: "NetworkAuthenticationRequired"; }; //#endregion //#region src/core/UnError.d.ts declare class UnError<T = UnData, D = UnData> extends Error { static ERR_FR_TOO_MANY_REDIRECTS: string; static ERR_BAD_OPTION_VALUE: string; static ERR_BAD_OPTION: string; static ERR_NETWORK: string; static ERR_DEPRECATED: string; static ERR_BAD_RESPONSE: string; static ERR_BAD_REQUEST: string; static ERR_NOT_SUPPORT: string; static ERR_INVALID_URL: string; static ERR_CANCELED: string; static ECONNABORTED: string; static ETIMEDOUT: string; code?: string; config?: UnConfig<T, D>; task?: UnTask; response?: UnResponse<T, D>; isUnError: boolean; status?: number; cause?: Error; constructor(message?: string, code?: string, config?: UnConfig<T, D>, task?: UnTask, response?: UnResponse<T, D>); toJSON(): { name: string; message?: string; stack?: string; config?: UnConfig<T, D>; code?: string; status?: number; [key: string]: any; }; static from<TT = UnData, DD = UnData>(error?: Error, code?: string, config?: UnConfig<TT, DD>, task?: UnTask, response?: UnResponse<TT, DD>, customProps?: Record<string, any>): UnError<TT, DD>; } //#endregion //#region src/core/UnCanceledError.d.ts declare class UnCanceledError<T = UnData, D = UnData> extends UnError<T, D> { isUnCanceledError: boolean; constructor(message?: string, config?: UnConfig<T, D>, task?: UnTask); } //#endregion //#region src/core/isUnCancel.d.ts declare const isUnCancel: <T = UnData, D = UnData>(value: any) => value is UnCanceledError<T, D>; //#endregion //#region src/core/isUnError.d.ts declare const isUnError: <T = UnData, D = UnData>(value: any) => value is UnError<T, D>; //#endregion //#region src/core/settle.d.ts declare const settle: <T = UnData, D = UnData, R extends UnResponse<T, D> = UnResponse<T, D>>(resolve: (value: R | PromiseLike<R>) => void, reject: (reason?: any) => void, response: R) => void; //#endregion //#region src/core/UnInterceptorManager.d.ts interface UnInterceptorOptions<T = UnData, D = UnData> { synchronous?: boolean; runWhen?: (config: UnConfig<T, D>) => boolean; } type UnInterceptorManagerHandlerFulfilled<V> = (value: V) => V | Promise<V>; type UnInterceptorManagerHandlerRejected = (error: any) => any; interface UnInterceptorManagerHandler<V, T = V, D = UnData> extends UnInterceptorOptions<T, D> { fulfilled?: UnInterceptorManagerHandlerFulfilled<V>; rejected?: UnInterceptorManagerHandlerRejected; } declare class UnInterceptorManager<V, T = V, D = UnData> { private handlers; use(fulfilled?: UnInterceptorManagerHandlerFulfilled<V>, rejected?: UnInterceptorManagerHandlerRejected, options?: UnInterceptorOptions<T, D>): number; eject(id: number): void; clear(): void; each(fn: (handler: UnInterceptorManagerHandler<V, T, D>) => any): void; } //#endregion //#region src/core/Un.d.ts declare class Un<T = UnData, D = UnData> { defaults: UnConfig<T, D>; interceptors: { request: UnInterceptorManager<UnConfig<T, D>, T, D>; response: UnInterceptorManager<UnResponse<T, D>, T, D>; }; constructor(instanceConfig?: UnConfig<T, D>); private _request; request<TT = T, DD = D, R = UnResponse<TT, DD>>(configOrUrl: string | UnConfig<TT, DD>, config?: UnConfig<TT, DD>): Promise<R>; download<TT = T, DD = D, R = UnResponse<TT, DD>>(configOrUrl: string | UnConfig<TT, DD>, config?: UnConfig<TT, DD>): Promise<R>; upload<TT = T, DD = D, R = UnResponse<TT, DD>>(configOrUrl: string | UnConfig<TT, DD>, config?: UnConfig<TT, DD>): Promise<R>; get<TT = T, DD = D, R = UnResponse<TT, DD>>(url: string, config?: UnConfig<TT, DD>): Promise<R>; delete<TT = T, DD = D, R = UnResponse<TT, DD>>(url: string, config?: UnConfig<TT, DD>): Promise<R>; head<TT = T, DD = D, R = UnResponse<TT, DD>>(url: string, config?: UnConfig<TT, DD>): Promise<R>; options<TT = T, DD = D, R = UnResponse<TT, DD>>(url: string, config?: UnConfig<TT, DD>): Promise<R>; trace<TT = T, DD = D, R = UnResponse<TT, DD>>(url: string, config?: UnConfig<TT, DD>): Promise<R>; connect<TT = T, DD = D, R = UnResponse<TT, DD>>(url: string, config?: UnConfig<TT, DD>): Promise<R>; post<TT = T, DD = D, R = UnResponse<TT, DD>>(url: string, data?: DD, config?: UnConfig<TT, DD>): Promise<R>; put<TT = T, DD = D, R = UnResponse<TT, DD>>(url: string, data?: DD, config?: UnConfig<TT, DD>): Promise<R>; patch<TT = T, DD = D, R = UnResponse<TT, DD>>(url: string, data?: DD, config?: UnConfig<TT, DD>): Promise<R>; getUri(config: UnConfig<T, D>): string; } //#endregion //#region src/utils/buildDownloadConfig.d.ts declare const buildDownloadConfig: <T = UnData, D = UnData>(config: UnConfig<T, D>) => UniApp.DownloadFileOption; //#endregion //#region src/utils/buildFullPath.d.ts declare const buildFullPath: (baseUrl: string, requestedUrl: string, allowAbsoluteUrls: boolean) => string; //#endregion //#region src/utils/buildRequestConfig.d.ts declare const buildRequestConfig: <T = UnData, D = UnData>(config: UnConfig<T, D>) => UniApp.RequestOptions; //#endregion //#region src/utils/buildUploadConfig.d.ts declare const buildUploadConfig: <T = UnData, D = UnData>(config: UnConfig<T, D>) => UniApp.UploadFileOption; //#endregion //#region src/utils/buildUrl.d.ts declare const buildUrl: (url: string, params?: UnParams, paramsSerializer?: UnParamsSerializer) => string; //#endregion //#region src/utils/combineUrls.d.ts declare const combineUrls: (baseUrl: string, relativeUrl: string) => string; //#endregion //#region src/utils/extend.d.ts /** * 向对象 a 添加对象 b 的属性 * * 直接改变对象 a */ declare const extend: (a: Record<string, any>, b: Record<string, any>, thisArg?: Record<string, any> | null | undefined, { allOwnKeys }?: { allOwnKeys?: boolean | undefined; }) => Record<string, any>; //#endregion //#region src/utils/forEach.d.ts /** * 遍历数组或对象,为每项调用方法 * * 如果 obj 是一个数组,传递每项的值、索引和完整的数组 * * 如果 obj 是一个对象,为每个属性传递值、键和完整的对象 */ declare function forEach(obj: Record<string, any> | Array<any> | undefined, fn: (...rest: any) => any, { allOwnKeys }?: { allOwnKeys?: boolean | undefined; }): void; //#endregion //#region src/utils/isAbsoluteUrl.d.ts declare const isAbsoluteUrl: (url: string) => boolean; //#endregion //#region src/utils/mergeConfig.d.ts declare function mergeConfig<T = UnData, D = UnData>(config1?: UnConfig<T, D>, config2?: UnConfig<T, D>): UnConfig<T, D>; //#endregion //#region src/adapters/download.d.ts declare const downloadAdapter: <T = UnData, D = UnData>(config: UnConfig<T, D>) => Promise<UnResponse<T, D>>; //#endregion //#region src/adapters/request.d.ts declare const requestAdapter: <T = UnData, D = UnData>(config: UnConfig<T, D>) => Promise<UnResponse<T, D>>; //#endregion //#region src/adapters/upload.d.ts declare const uploadAdapter: <T = UnData, D = UnData>(config: UnConfig<T, D>) => Promise<UnResponse<T, D>>; //#endregion //#region src/adapters/index.d.ts declare const adapters: { download: <T = UnData, D = UnData>(config: UnConfig<T, D>) => Promise<UnResponse<T, D>>; request: <T = UnData, D = UnData>(config: UnConfig<T, D>) => Promise<UnResponse<T, D>>; upload: <T = UnData, D = UnData>(config: UnConfig<T, D>) => Promise<UnResponse<T, D>>; }; //#endregion //#region src/defaults/index.d.ts declare const defaults: Partial<UnConfig>; //#endregion //#region src/index.d.ts interface UnInstance<T = UnData, D = UnData> extends Un<T, D> { <TT = T, DD = D, R = UnResponse<TT, DD>>(config: UnConfig<TT, DD>): Promise<R>; <TT = T, DD = D, R = UnResponse<TT, DD>>(url: string, config?: UnConfig<TT, DD>): Promise<R>; defaults: UnConfig<T, D>; } interface UnStatic<T = UnData, D = UnData> extends UnInstance<T, D> { create: (config?: UnConfig<T, D>) => UnInstance<T, D>; Un: typeof Un; CanceledError: typeof UnCanceledError<T, D>; CancelToken: UnCancelTokenStatic<T, D>; isCancel: (value: any) => value is UnCanceledError<T, D>; VERSION: string; UnError: typeof UnError; isUnError: <T = any, D = any>(value: any) => value is UnError<T, D>; all: (values: Array<T | Promise<T>>) => Promise<T[]>; mergeConfig: typeof mergeConfig; HttpStatusCode: typeof HttpStatusCode; } declare const un: UnStatic<UnData, UnData>; //#endregion export { UnParamsSerializer as $, HttpStatusCode as A, UnCancelTokenListener as B, UnInterceptorManagerHandlerRejected as C, isUnCancel as D, isUnError as E, UnTask as F, UnDataType as G, UnCancelTokenStatic as H, UnConfig as I, UnGenericAbortSignal as J, UnFile as K, UnCancel as L, UnAdapter as M, UnPromise as N, UnCanceledError as O, UnResponse as P, UnParams as Q, UnCancelStatic as R, UnInterceptorManagerHandlerFulfilled as S, settle as T, UnCanceler as U, UnCancelTokenSource as V, UnData as W, UnMethod as X, UnHeaders as Y, UnOnProgress as Z, buildFullPath as _, adapters as a, UnInterceptorManager as b, downloadAdapter as c, forEach as d, UnProfile as et, extend as f, buildRequestConfig as g, buildUploadConfig as h, defaults as i, dispatchRequest as j, UnError as k, mergeConfig as l, buildUrl as m, UnStatic as n, UnValidateStatus as nt, uploadAdapter as o, combineUrls as p, UnFileType as q, un as r, requestAdapter as s, UnInstance as t, UnResponseType as tt, isAbsoluteUrl as u, buildDownloadConfig as v, UnInterceptorOptions as w, UnInterceptorManagerHandler as x, Un as y, UnCancelToken as z };