@fast-china/axios
Version:
Fast Axios 请求工具库.
1 lines • 5.18 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../src/uni-adapter/utils/index.ts"],"sourcesContent":["import { AxiosHeaders } from \"axios\";\n// @ts-expect-error ignore\nimport buildFullPath from \"axios/unsafe/core/buildFullPath\";\n// @ts-expect-error ignore\nimport buildURL from \"axios/unsafe/helpers/buildURL\";\n// @ts-expect-error ignore\nimport speedometer from \"axios/unsafe/helpers/speedometer\";\nimport type { MethodType, UniNetworkRequestWithoutCallback } from \"../type\";\nimport type { AxiosProgressEvent, AxiosRequestConfig } from \"axios\";\n\n/**\n * 获取请求方法\n */\nexport const getMethodType = <T>(config: AxiosRequestConfig<T>): MethodType => {\n\t// 解析 method 如果不存在默认为 GET 请求\n\tconst { method: rawMethod = \"GET\" } = config;\n\tconst method = rawMethod.toLocaleLowerCase();\n\tswitch (method) {\n\t\tcase \"download\":\n\t\t\treturn \"download\";\n\t\tcase \"upload\":\n\t\t\treturn \"upload\";\n\t\tdefault:\n\t\t\treturn \"request\";\n\t}\n};\n\n/**\n * 解析 UniApp 请求选项\n * @param config\n */\nexport const resolveUniAppRequestOptions = (config: AxiosRequestConfig): UniNetworkRequestWithoutCallback => {\n\tconst data = config.data;\n\tconst responseType = config.responseType === \"arraybuffer\" ? \"arraybuffer\" : \"text\";\n\tconst dataType = responseType === \"text\" ? \"json\" : undefined;\n\n\tconst { headers, baseURL, ...requestConfig } = config;\n\n\tconst requestHeaders = AxiosHeaders.from(headers as any).normalize(false);\n\n\tif (config.auth) {\n\t\tconst username = config.auth.username || \"\";\n\t\tconst password = config.auth.password ? decodeURIComponent(encodeURIComponent(config.auth.password)) : \"\";\n\t\trequestHeaders.set(\"Authorization\", `Basic ${btoa(`${username}:${password}`)}`);\n\t}\n\n\tconst fullPath = buildFullPath(baseURL, config.url);\n\tconst method = (config?.method?.toUpperCase() ?? \"GET\") as unknown as any;\n\tconst url = buildURL(fullPath, config.params, config.paramsSerializer);\n\n\t// set uni-app default value\n\t// request\n\tconst timeout = config.timeout || 60000;\n\t// upload\n\tlet formData = {};\n\tif (data && typeof data === \"string\") {\n\t\ttry {\n\t\t\tformData = JSON.parse(data);\n\t\t} catch {}\n\t}\n\n\tconst header = requestHeaders.toJSON();\n\n\treturn {\n\t\t...requestConfig,\n\t\turl,\n\t\tdata,\n\t\theader,\n\t\tmethod,\n\t\tresponseType,\n\t\tdataType,\n\t\ttimeout,\n\t\tformData,\n\t};\n};\n\n/**\n * 处理 Axios 上传或下载进度\n * - https://github.com/axios/axios/blob/7d45ab2e2ad6e59f5475e39afd4b286b1f393fc0/lib/adapters/xhr.js#L17-L44\n * @param listener\n * @param isDownloadStream 是否为下载流\n */\nexport const progressEventReducer = (listener: (progressEvent: AxiosProgressEvent) => void, isDownloadStream: boolean) => {\n\tlet bytesNotified = 0;\n\tconst _speedometer = speedometer(50, 250);\n\n\treturn (result: UniApp.OnProgressDownloadResult): void => {\n\t\tconst loaded = result.totalBytesWritten;\n\t\tconst total = result.totalBytesExpectedToWrite;\n\t\tconst progressBytes = loaded - bytesNotified;\n\t\tconst rate = _speedometer(progressBytes);\n\t\tconst inRange = loaded <= total;\n\n\t\tbytesNotified = loaded;\n\n\t\tconst data: AxiosProgressEvent = {\n\t\t\tloaded,\n\t\t\ttotal,\n\t\t\tprogress: total ? loaded / total : undefined,\n\t\t\tbytes: progressBytes,\n\t\t\trate: rate || undefined,\n\t\t\testimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n\t\t\tevent: result,\n\t\t\tlengthComputable: true,\n\t\t};\n\t\tdata[isDownloadStream ? \"download\" : \"upload\"] = true;\n\t\tlistener(data);\n\t};\n};\n"],"names":[],"mappings":";;;;AAaa,MAAA,gBAAgB,CAAI,WAA8C;AAE9E,QAAM,EAAE,QAAQ,YAAY,MAAU,IAAA;AAChC,QAAA,SAAS,UAAU,kBAAkB;AAC3C,UAAQ,QAAQ;AAAA,IACf,KAAK;AACG,aAAA;AAAA,IACR,KAAK;AACG,aAAA;AAAA,IACR;AACQ,aAAA;AAAA,EAAA;AAEV;AAMa,MAAA,8BAA8B,CAAC,WAAiE;;AAC5G,QAAM,OAAO,OAAO;AACpB,QAAM,eAAe,OAAO,iBAAiB,gBAAgB,gBAAgB;AACvE,QAAA,WAAW,iBAAiB,SAAS,SAAS;AAEpD,QAAM,EAAE,SAAS,SAAS,GAAG,cAAkB,IAAA;AAE/C,QAAM,iBAAiB,aAAa,KAAK,OAAc,EAAE,UAAU,KAAK;AAExE,MAAI,OAAO,MAAM;AACV,UAAA,WAAW,OAAO,KAAK,YAAY;AACnC,UAAA,WAAW,OAAO,KAAK,WAAW,mBAAmB,mBAAmB,OAAO,KAAK,QAAQ,CAAC,IAAI;AACxF,mBAAA,IAAI,iBAAiB,SAAS,KAAK,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC,EAAE;AAAA,EAAA;AAG/E,QAAM,WAAW,cAAc,SAAS,OAAO,GAAG;AAClD,QAAM,WAAU,sCAAQ,WAAR,mBAAgB,kBAAiB;AACjD,QAAM,MAAM,SAAS,UAAU,OAAO,QAAQ,OAAO,gBAAgB;AAI/D,QAAA,UAAU,OAAO,WAAW;AAElC,MAAI,WAAW,CAAC;AACZ,MAAA,QAAQ,OAAO,SAAS,UAAU;AACjC,QAAA;AACQ,iBAAA,KAAK,MAAM,IAAI;AAAA,IAAA,QACnB;AAAA,IAAA;AAAA,EAAC;AAGJ,QAAA,SAAS,eAAe,OAAO;AAE9B,SAAA;AAAA,IACN,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAQa,MAAA,uBAAuB,CAAC,UAAuD,qBAA8B;AACzH,MAAI,gBAAgB;AACd,QAAA,eAAe,YAAY,IAAI,GAAG;AAExC,SAAO,CAAC,WAAkD;AACzD,UAAM,SAAS,OAAO;AACtB,UAAM,QAAQ,OAAO;AACrB,UAAM,gBAAgB,SAAS;AACzB,UAAA,OAAO,aAAa,aAAa;AACvC,UAAM,UAAU,UAAU;AAEV,oBAAA;AAEhB,UAAM,OAA2B;AAAA,MAChC;AAAA,MACA;AAAA,MACA,UAAU,QAAQ,SAAS,QAAQ;AAAA,MACnC,OAAO;AAAA,MACP,MAAM,QAAQ;AAAA,MACd,WAAW,QAAQ,SAAS,WAAW,QAAQ,UAAU,OAAO;AAAA,MAChE,OAAO;AAAA,MACP,kBAAkB;AAAA,IACnB;AACK,SAAA,mBAAmB,aAAa,QAAQ,IAAI;AACjD,aAAS,IAAI;AAAA,EACd;AACD;"}