From f26f29d84e0a68831a6af14dab3eec5500496d2e Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期三, 28 五月 2025 16:48:52 +0800
Subject: [PATCH] 初始化项目

---
 uni_modules/wu-ui-tools/libs/luch-request/core/Request.js |  198 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 198 insertions(+), 0 deletions(-)

diff --git a/uni_modules/wu-ui-tools/libs/luch-request/core/Request.js b/uni_modules/wu-ui-tools/libs/luch-request/core/Request.js
new file mode 100644
index 0000000..cc48566
--- /dev/null
+++ b/uni_modules/wu-ui-tools/libs/luch-request/core/Request.js
@@ -0,0 +1,198 @@
+/**
+ * @Class Request
+ * @description luch-request http璇锋眰鎻掍欢
+ * @version 3.0.7
+ * @Author lu-ch
+ * @Date 2021-09-04
+ * @Email webwork.s@qq.com
+ * 鏂囨。: https://www.quanzhan.co/luch-request/
+ * github: https://github.com/lei-mu/luch-request
+ * DCloud: http://ext.dcloud.net.cn/plugin?id=392
+ * HBuilderX: beat-3.0.4 alpha-3.0.4
+ */
+
+import dispatchRequest from './dispatchRequest'
+import InterceptorManager from './InterceptorManager'
+import mergeConfig from './mergeConfig'
+import defaults from './defaults'
+import { isPlainObject } from '../utils'
+import clone from '../utils/clone'
+
+export default class Request {
+    /**
+   * @param {Object} arg - 鍏ㄥ眬閰嶇疆
+   * @param {String} arg.baseURL - 鍏ㄥ眬鏍硅矾寰�
+   * @param {Object} arg.header - 鍏ㄥ眬header
+   * @param {String} arg.method = [GET|POST|PUT|DELETE|CONNECT|HEAD|OPTIONS|TRACE] - 鍏ㄥ眬榛樿璇锋眰鏂瑰紡
+   * @param {String} arg.dataType = [json] - 鍏ㄥ眬榛樿鐨刣ataType
+   * @param {String} arg.responseType = [text|arraybuffer] - 鍏ㄥ眬榛樿鐨剅esponseType銆傛敮浠樺疂灏忕▼搴忎笉鏀寔
+   * @param {Object} arg.custom - 鍏ㄥ眬榛樿鐨勮嚜瀹氫箟鍙傛暟
+   * @param {Number} arg.timeout - 鍏ㄥ眬榛樿鐨勮秴鏃舵椂闂达紝鍗曚綅 ms銆傞粯璁�60000銆侶5(HBuilderX 2.9.9+)銆丄PP(HBuilderX 2.9.9+)銆佸井淇″皬绋嬪簭锛�2.10.0锛夈�佹敮浠樺疂灏忕▼搴�
+   * @param {Boolean} arg.sslVerify - 鍏ㄥ眬榛樿鐨勬槸鍚﹂獙璇� ssl 璇佷功銆傞粯璁rue.浠匒pp瀹夊崜绔敮鎸侊紙HBuilderX 2.3.3+锛�
+   * @param {Boolean} arg.withCredentials - 鍏ㄥ眬榛樿鐨勮法鍩熻姹傛椂鏄惁鎼哄甫鍑瘉锛坈ookies锛夈�傞粯璁alse銆備粎H5鏀寔锛圚BuilderX 2.6.15+锛�
+   * @param {Boolean} arg.firstIpv4 - 鍏―NS瑙f瀽鏃朵紭鍏堜娇鐢╥pv4銆傞粯璁alse銆備粎 App-Android 鏀寔 (HBuilderX 2.8.0+)
+   * @param {Function(statusCode):Boolean} arg.validateStatus - 鍏ㄥ眬榛樿鐨勮嚜瀹氫箟楠岃瘉鍣ㄣ�傞粯璁tatusCode >= 200 && statusCode < 300
+   */
+    constructor(arg = {}) {
+        if (!isPlainObject(arg)) {
+            arg = {}
+            console.warn('璁剧疆鍏ㄥ眬鍙傛暟蹇呴』鎺ユ敹涓�涓狾bject')
+        }
+        this.config = clone({ ...defaults, ...arg })
+        this.interceptors = {
+            request: new InterceptorManager(),
+            response: new InterceptorManager()
+        }
+    }
+
+    /**
+   * @Function
+   * @param {Request~setConfigCallback} f - 璁剧疆鍏ㄥ眬榛樿閰嶇疆
+   */
+    setConfig(f) {
+        this.config = f(this.config)
+    }
+
+    middleware(config) {
+        config = mergeConfig(this.config, config)
+        const chain = [dispatchRequest, undefined]
+        let promise = Promise.resolve(config)
+
+        this.interceptors.request.forEach((interceptor) => {
+            chain.unshift(interceptor.fulfilled, interceptor.rejected)
+        })
+
+        this.interceptors.response.forEach((interceptor) => {
+            chain.push(interceptor.fulfilled, interceptor.rejected)
+        })
+
+        while (chain.length) {
+            promise = promise.then(chain.shift(), chain.shift())
+        }
+
+        return promise
+    }
+
+    /**
+   * @Function
+   * @param {Object} config - 璇锋眰閰嶇疆椤�
+   * @prop {String} options.url - 璇锋眰璺緞
+   * @prop {Object} options.data - 璇锋眰鍙傛暟
+   * @prop {Object} [options.responseType = config.responseType] [text|arraybuffer] - 鍝嶅簲鐨勬暟鎹被鍨�
+   * @prop {Object} [options.dataType = config.dataType] - 濡傛灉璁句负 json锛屼細灏濊瘯瀵硅繑鍥炵殑鏁版嵁鍋氫竴娆� JSON.parse
+   * @prop {Object} [options.header = config.header] - 璇锋眰header
+   * @prop {Object} [options.method = config.method] - 璇锋眰鏂规硶
+   * @returns {Promise<unknown>}
+   */
+    request(config = {}) {
+        return this.middleware(config)
+    }
+
+    get(url, options = {}) {
+        return this.middleware({
+            url,
+            method: 'GET',
+            ...options
+        })
+    }
+
+    post(url, data, options = {}) {
+        return this.middleware({
+            url,
+            data,
+            method: 'POST',
+            ...options
+        })
+    }
+
+    // #ifndef MP-ALIPAY
+    put(url, data, options = {}) {
+        return this.middleware({
+            url,
+            data,
+            method: 'PUT',
+            ...options
+        })
+    }
+
+    // #endif
+
+    // #ifdef APP-PLUS || H5 || MP-WEIXIN || MP-BAIDU
+    delete(url, data, options = {}) {
+        return this.middleware({
+            url,
+            data,
+            method: 'DELETE',
+            ...options
+        })
+    }
+
+    // #endif
+
+    // #ifdef H5 || MP-WEIXIN
+    connect(url, data, options = {}) {
+        return this.middleware({
+            url,
+            data,
+            method: 'CONNECT',
+            ...options
+        })
+    }
+
+    // #endif
+
+    // #ifdef  H5 || MP-WEIXIN || MP-BAIDU
+    head(url, data, options = {}) {
+        return this.middleware({
+            url,
+            data,
+            method: 'HEAD',
+            ...options
+        })
+    }
+
+    // #endif
+
+    // #ifdef APP-PLUS || H5 || MP-WEIXIN || MP-BAIDU
+    options(url, data, options = {}) {
+        return this.middleware({
+            url,
+            data,
+            method: 'OPTIONS',
+            ...options
+        })
+    }
+
+    // #endif
+
+    // #ifdef H5 || MP-WEIXIN
+    trace(url, data, options = {}) {
+        return this.middleware({
+            url,
+            data,
+            method: 'TRACE',
+            ...options
+        })
+    }
+
+    // #endif
+
+    upload(url, config = {}) {
+        config.url = url
+        config.method = 'UPLOAD'
+        return this.middleware(config)
+    }
+
+    download(url, config = {}) {
+        config.url = url
+        config.method = 'DOWNLOAD'
+        return this.middleware(config)
+    }
+}
+
+/**
+ * setConfig鍥炶皟
+ * @return {Object} - 杩斿洖鎿嶄綔鍚庣殑config
+ * @callback Request~setConfigCallback
+ * @param {Object} config - 鍏ㄥ眬榛樿config
+ */

--
Gitblit v1.9.3