{"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":["getMethodType","config","method","rawMethod","toLocaleLowerCase","resolveUniAppRequestOptions","data","responseType","dataType","headers","baseURL","requestConfig","requestHeaders","AxiosHeaders","from","normalize","auth","username","password","decodeURIComponent","encodeURIComponent","set","btoa","fullPath","buildFullPath","url","toUpperCase","buildURL","params","paramsSerializer","timeout","formData","JSON","parse","header","toJSON","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","speedometer","result","loaded","totalBytesWritten","total","totalBytesExpectedToWrite","progressBytes","rate","progress","bytes","estimated","event","lengthComputable"],"mappings":"6UAaO,MAAMA,EAAoBC,IAEhC,MAAQC,OAAQC,EAAY,OAAUF,EAEtC,OADeE,EAAUC,qBAExB,IAAK,WACJ,MAAO,WACR,IAAK,SACJ,MAAO,SACR,QACC,MAAO,YAQGC,EAA+BJ,IAC3C,MAAMK,EAAOL,EAAOK,KACdC,EAAuC,gBAAxBN,EAAOM,aAAiC,cAAgB,OACvEC,EAA4B,SAAjBD,EAA0B,YAAS,GAE9CE,QAAEA,EAAAC,QAASA,KAAYC,GAAkBV,EAEzCW,EAAiBC,EAAaC,KAAKL,GAAgBM,WAAU,GAEnE,GAAId,EAAOe,KAAM,CAChB,MAAMC,EAAWhB,EAAOe,KAAKC,UAAY,GACnCC,EAAWjB,EAAOe,KAAKE,SAAWC,mBAAmBC,mBAAmBnB,EAAOe,KAAKE,WAAa,GACvGN,EAAeS,IAAI,gBAAiB,SAASC,KAAK,GAAGL,KAAYC,OAClE,CAEA,MAAMK,EAAWC,EAAcd,EAAST,EAAOwB,KACzCvB,EAAUD,GAAQC,QAAQwB,eAAiB,MAC3CD,EAAME,EAASJ,EAAUtB,EAAO2B,OAAQ3B,EAAO4B,kBAI/CC,EAAU7B,EAAO6B,SAAW,IAElC,IAAIC,EAAW,CAAA,EACf,GAAIzB,GAAwB,iBAATA,EAClB,IACCyB,EAAWC,KAAKC,MAAM3B,EACvB,CAAA,MAAS,CAKV,MAAO,IACHK,EACHc,MACAnB,OACA4B,OANctB,EAAeuB,SAO7BjC,SACAK,eACAC,WACAsB,UACAC,aAUWK,EAAuB,CAACC,EAAuDC,KAC3F,IAAIC,EAAgB,EACpB,MAAMC,EAAeC,EAAY,GAAI,KAErC,OAAQC,IACP,MAAMC,EAASD,EAAOE,kBAChBC,EAAQH,EAAOI,0BACfC,EAAgBJ,EAASJ,EACzBS,EAAOR,EAAaO,GAG1BR,EAAgBI,EAEhB,MAAMrC,EAA2B,CAChCqC,SACAE,QACAI,SAAUJ,EAAQF,EAASE,OAAQ,EACnCK,MAAOH,EACPC,KAAMA,QAAQ,EACdG,UAAWH,GAAQH,GAVJF,GAAUE,GAUcA,EAAQF,GAAUK,OAAO,EAChEI,MAAOV,EACPW,kBAAkB,GAEnB/C,EAAKgC,EAAmB,WAAa,WAAY,EACjDD,EAAS/B"}