@be-link/http 1.1.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,10 +3,11 @@
3
3
  *
4
4
  * 单例模式的 HTTP 请求客户端
5
5
  * 支持时间同步和 Token 加密
6
+ * 支持 Axios 和 Taro.request 两种请求引擎
6
7
  *
7
8
  * @module BeLinkHttp
8
9
  *
9
- * @example
10
+ * @example Axios 模式(默认)
10
11
  * ```ts
11
12
  * import { beLinkHttp } from '@be-link/http';
12
13
  *
@@ -21,27 +22,52 @@
21
22
  * // 发起请求
22
23
  * const data = await beLinkHttp.get('/api/users');
23
24
  * ```
25
+ *
26
+ * @example Taro 模式
27
+ * ```ts
28
+ * import { beLinkHttp } from '@be-link/http';
29
+ * import Taro from '@tarojs/taro';
30
+ *
31
+ * // 初始化
32
+ * beLinkHttp.init({
33
+ * adapter: 'taro',
34
+ * taroRequest: Taro.request,
35
+ * baseURL: 'https://api.example.com',
36
+ * getToken: () => Taro.getStorageSync('token'),
37
+ * });
38
+ *
39
+ * // 发起请求(使用方式完全一致)
40
+ * const data = await beLinkHttp.get('/api/users');
41
+ * ```
24
42
  */
25
- import { AxiosInstance, AxiosRequestConfig } from 'axios';
43
+ import type { AxiosInstance } from 'axios';
44
+ import type { AdapterRequestConfig } from './adapters/types';
26
45
  import type { IApiResponse, RequestOptions } from './types';
27
46
  import { TimeSyncService, EncryptionService } from './services';
28
47
  /**
29
48
  * BeLinkHttp 单例类
30
49
  *
31
50
  * 提供统一的 HTTP 请求接口,支持:
51
+ * - 多适配器(Axios / Taro)
32
52
  * - 时间同步
33
53
  * - Token 加密
34
54
  * - 请求/响应拦截
35
55
  */
36
56
  declare class BeLinkHttp {
37
- /** Axios 实例 */
38
- private instance;
57
+ /** HTTP 适配器实例 */
58
+ private adapter;
39
59
  /** 时间同步服务 */
40
60
  private timeSyncService;
41
61
  /** 加密服务 */
42
62
  private encryptionService;
63
+ /** 请求配置选项 */
64
+ private options;
43
65
  /** 是否已初始化 */
44
66
  private initialized;
67
+ /** 动态设置的 Token */
68
+ private _token;
69
+ /** 动态设置的 UserId */
70
+ private _userId;
45
71
  /**
46
72
  * 初始化请求客户端
47
73
  *
@@ -49,7 +75,7 @@ declare class BeLinkHttp {
49
75
  *
50
76
  * @param options - 请求配置选项
51
77
  *
52
- * @example
78
+ * @example Axios 模式
53
79
  * ```ts
54
80
  * beLinkHttp.init({
55
81
  * baseURL: 'https://api.example.com',
@@ -65,6 +91,18 @@ declare class BeLinkHttp {
65
91
  * getUserId: () => localStorage.getItem('userId'),
66
92
  * });
67
93
  * ```
94
+ *
95
+ * @example Taro 模式
96
+ * ```ts
97
+ * import Taro from '@tarojs/taro';
98
+ *
99
+ * beLinkHttp.init({
100
+ * adapter: 'taro',
101
+ * taroRequest: Taro.request,
102
+ * baseURL: 'https://api.example.com',
103
+ * getToken: () => Taro.getStorageSync('token'),
104
+ * });
105
+ * ```
68
106
  */
69
107
  init(options: RequestOptions): void;
70
108
  /**
@@ -75,7 +113,7 @@ declare class BeLinkHttp {
75
113
  * GET 请求
76
114
  *
77
115
  * @param url - 请求 URL
78
- * @param config - 可选的 Axios 请求配置
116
+ * @param config - 可选的请求配置
79
117
  * @returns Promise 响应数据
80
118
  *
81
119
  * @example
@@ -84,13 +122,13 @@ declare class BeLinkHttp {
84
122
  * const user = await beLinkHttp.get('/api/users/1', { params: { include: 'profile' } });
85
123
  * ```
86
124
  */
87
- get<T>(url: string, config?: AxiosRequestConfig): Promise<IApiResponse<T>>;
125
+ get<T>(url: string, config?: Partial<AdapterRequestConfig>): Promise<IApiResponse<T>>;
88
126
  /**
89
127
  * POST 请求
90
128
  *
91
129
  * @param url - 请求 URL
92
130
  * @param data - 请求体数据
93
- * @param config - 可选的 Axios 请求配置
131
+ * @param config - 可选的请求配置
94
132
  * @returns Promise 响应数据
95
133
  *
96
134
  * @example
@@ -98,13 +136,13 @@ declare class BeLinkHttp {
98
136
  * const result = await beLinkHttp.post('/api/users', { name: '张三', age: 25 });
99
137
  * ```
100
138
  */
101
- post<T>(url: string, data?: any, config?: AxiosRequestConfig): Promise<IApiResponse<T>>;
139
+ post<T>(url: string, data?: any, config?: Partial<AdapterRequestConfig>): Promise<IApiResponse<T>>;
102
140
  /**
103
141
  * PUT 请求
104
142
  *
105
143
  * @param url - 请求 URL
106
144
  * @param data - 请求体数据
107
- * @param config - 可选的 Axios 请求配置
145
+ * @param config - 可选的请求配置
108
146
  * @returns Promise 响应数据
109
147
  *
110
148
  * @example
@@ -112,13 +150,13 @@ declare class BeLinkHttp {
112
150
  * const result = await beLinkHttp.put('/api/users/1', { name: '李四' });
113
151
  * ```
114
152
  */
115
- put<T>(url: string, data?: any, config?: AxiosRequestConfig): Promise<IApiResponse<T>>;
153
+ put<T>(url: string, data?: any, config?: Partial<AdapterRequestConfig>): Promise<IApiResponse<T>>;
116
154
  /**
117
155
  * PATCH 请求
118
156
  *
119
157
  * @param url - 请求 URL
120
158
  * @param data - 请求体数据
121
- * @param config - 可选的 Axios 请求配置
159
+ * @param config - 可选的请求配置
122
160
  * @returns Promise 响应数据
123
161
  *
124
162
  * @example
@@ -126,12 +164,12 @@ declare class BeLinkHttp {
126
164
  * const result = await beLinkHttp.patch('/api/users/1', { age: 26 });
127
165
  * ```
128
166
  */
129
- patch<T>(url: string, data?: any, config?: AxiosRequestConfig): Promise<IApiResponse<T>>;
167
+ patch<T>(url: string, data?: any, config?: Partial<AdapterRequestConfig>): Promise<IApiResponse<T>>;
130
168
  /**
131
169
  * DELETE 请求
132
170
  *
133
171
  * @param url - 请求 URL
134
- * @param config - 可选的 Axios 请求配置
172
+ * @param config - 可选的请求配置
135
173
  * @returns Promise 响应数据
136
174
  *
137
175
  * @example
@@ -139,24 +177,24 @@ declare class BeLinkHttp {
139
177
  * await beLinkHttp.delete('/api/users/1');
140
178
  * ```
141
179
  */
142
- delete<T>(url: string, config?: AxiosRequestConfig): Promise<IApiResponse<T>>;
180
+ delete<T>(url: string, config?: Partial<AdapterRequestConfig>): Promise<IApiResponse<T>>;
143
181
  /**
144
182
  * 通用请求方法
145
183
  *
146
- * @param config - Axios 请求配置
184
+ * @param config - 请求配置
147
185
  * @returns Promise 响应数据
148
186
  *
149
187
  * @example
150
188
  * ```ts
151
189
  * const result = await beLinkHttp.request({
152
- * method: 'post',
190
+ * method: 'POST',
153
191
  * url: '/api/users',
154
192
  * data: { name: '张三' },
155
193
  * headers: { 'X-Custom': 'value' },
156
194
  * });
157
195
  * ```
158
196
  */
159
- request<T>(config: AxiosRequestConfig): Promise<IApiResponse<T>>;
197
+ request<T>(config: AdapterRequestConfig): Promise<IApiResponse<T>>;
160
198
  /**
161
199
  * 获取时间同步服务实例
162
200
  *
@@ -172,9 +210,67 @@ declare class BeLinkHttp {
172
210
  /**
173
211
  * 获取 Axios 实例
174
212
  *
175
- * @returns Axios 实例,未初始化时返回 null
213
+ * 仅在使用 axios 适配器时有效
214
+ *
215
+ * @returns Axios 实例,非 axios 适配器或未初始化时返回 null
176
216
  */
177
217
  getAxiosInstance(): AxiosInstance | null;
218
+ /**
219
+ * 获取当前适配器类型
220
+ *
221
+ * @returns 适配器类型,未初始化时返回 null
222
+ */
223
+ getAdapterType(): 'axios' | 'taro' | null;
224
+ /**
225
+ * 设置 Token
226
+ *
227
+ * 动态更新请求时使用的 Token,会覆盖 init 时传入的 getToken 返回值
228
+ *
229
+ * @param token - 新的 Token 值,传入 null 则清除
230
+ *
231
+ * @example
232
+ * ```ts
233
+ * // 登录后设置 Token
234
+ * beLinkHttp.setToken('new-token-value');
235
+ *
236
+ * // 登出时清除 Token
237
+ * beLinkHttp.setToken(null);
238
+ * ```
239
+ */
240
+ setToken(token: string | null): void;
241
+ /**
242
+ * 设置 UserId
243
+ *
244
+ * 动态更新请求时使用的 UserId,会覆盖 init 时传入的 getUserId 返回值
245
+ *
246
+ * @param userId - 新的 UserId 值,传入 null 则清除
247
+ *
248
+ * @example
249
+ * ```ts
250
+ * // 登录后设置 UserId
251
+ * beLinkHttp.setUserId('user-123');
252
+ *
253
+ * // 登出时清除 UserId
254
+ * beLinkHttp.setUserId(null);
255
+ * ```
256
+ */
257
+ setUserId(userId: string | null): void;
258
+ /**
259
+ * 获取当前 Token
260
+ *
261
+ * 优先返回通过 setToken 设置的值,否则调用 init 时传入的 getToken 函数
262
+ *
263
+ * @returns 当前 Token 值
264
+ */
265
+ getToken(): string | null;
266
+ /**
267
+ * 获取当前 UserId
268
+ *
269
+ * 优先返回通过 setUserId 设置的值,否则调用 init 时传入的 getUserId 函数
270
+ *
271
+ * @returns 当前 UserId 值
272
+ */
273
+ getUserId(): string | null;
178
274
  /**
179
275
  * 重置客户端
180
276
  *
@@ -1 +1 @@
1
- {"version":3,"file":"BeLinkHttp.d.ts","sourceRoot":"","sources":["../src/BeLinkHttp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAEjE,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGhE;;;;;;;GAOG;AACH,cAAM,UAAU;IACd,eAAe;IACf,OAAO,CAAC,QAAQ,CAA8B;IAE9C,aAAa;IACb,OAAO,CAAC,eAAe,CAAgC;IAEvD,WAAW;IACX,OAAO,CAAC,iBAAiB,CAAkC;IAE3D,aAAa;IACb,OAAO,CAAC,WAAW,CAAS;IAE5B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACI,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IA8B1C;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;;;;;;;;;;;OAYG;IACU,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAKvF;;;;;;;;;;;;OAYG;IACU,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAKpG;;;;;;;;;;;;OAYG;IACU,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAKnG;;;;;;;;;;;;OAYG;IACU,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAKrG;;;;;;;;;;;OAWG;IACU,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAK1F;;;;;;;;;;;;;;;OAeG;IACU,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAK7E;;;;OAIG;IACI,kBAAkB,IAAI,eAAe,GAAG,IAAI;IAInD;;;;OAIG;IACI,oBAAoB,IAAI,iBAAiB,GAAG,IAAI;IAIvD;;;;OAIG;IACI,gBAAgB,IAAI,aAAa,GAAG,IAAI;IAI/C;;;;OAIG;IACI,KAAK,IAAI,IAAI;CAMrB;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,UAAU,YAAmB,CAAC;AAE3C;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"BeLinkHttp.d.ts","sourceRoot":"","sources":["../src/BeLinkHttp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Axios 适配器
3
+ *
4
+ * 使用 Axios 实现 HttpAdapter 接口
5
+ *
6
+ * @module adapters/AxiosAdapter
7
+ */
8
+ import { AxiosInstance } from 'axios';
9
+ import type { AdapterConfig, AdapterRequestConfig, AdapterResponse, HttpAdapter } from './types';
10
+ /**
11
+ * Axios 适配器
12
+ *
13
+ * 将 Axios 封装为统一的 HttpAdapter 接口
14
+ */
15
+ export declare class AxiosAdapter implements HttpAdapter {
16
+ /** Axios 实例 */
17
+ private instance;
18
+ /**
19
+ * 创建 Axios 适配器实例
20
+ *
21
+ * @param config - 适配器配置
22
+ */
23
+ constructor(config: AdapterConfig);
24
+ /**
25
+ * 发起 HTTP 请求
26
+ *
27
+ * @param config - 请求配置
28
+ * @returns Promise 响应数据
29
+ */
30
+ request<T = any>(config: AdapterRequestConfig): Promise<AdapterResponse<T>>;
31
+ /**
32
+ * 获取 Axios 实例
33
+ *
34
+ * 用于直接访问 Axios 实例进行高级操作
35
+ *
36
+ * @returns Axios 实例
37
+ */
38
+ getAxiosInstance(): AxiosInstance;
39
+ }
40
+ //# sourceMappingURL=AxiosAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AxiosAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/AxiosAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAc,EAAE,aAAa,EAAsB,MAAM,OAAO,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEjG;;;;GAIG;AACH,qBAAa,YAAa,YAAW,WAAW;IAC9C,eAAe;IACf,OAAO,CAAC,QAAQ,CAAgB;IAEhC;;;;OAIG;gBACS,MAAM,EAAE,aAAa;IAWjC;;;;;OAKG;IACU,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAmBxF;;;;;;OAMG;IACI,gBAAgB,IAAI,aAAa;CAGzC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Taro 适配器
3
+ *
4
+ * 使用 Taro.request 实现 HttpAdapter 接口
5
+ * 适用于 Taro 小程序项目
6
+ *
7
+ * @module adapters/TaroAdapter
8
+ */
9
+ import type { FetchFunction } from '../services/TimeSyncService';
10
+ import type { AdapterRequestConfig, AdapterResponse, HttpAdapter, TaroAdapterConfig, TaroRequestFunction } from './types';
11
+ /**
12
+ * Taro 适配器
13
+ *
14
+ * 将 Taro.request 封装为统一的 HttpAdapter 接口
15
+ */
16
+ export declare class TaroAdapter implements HttpAdapter {
17
+ /** API 基础 URL */
18
+ private baseURL;
19
+ /** 默认请求头 */
20
+ private defaultHeaders;
21
+ /** 默认超时时间(毫秒) */
22
+ private timeout;
23
+ /** Taro.request 函数引用 */
24
+ private taroRequest;
25
+ /**
26
+ * 创建 Taro 适配器实例
27
+ *
28
+ * @param config - 适配器配置
29
+ */
30
+ constructor(config: TaroAdapterConfig);
31
+ /**
32
+ * 发起 HTTP 请求
33
+ *
34
+ * @param config - 请求配置
35
+ * @returns Promise 响应数据
36
+ */
37
+ request<T = any>(config: AdapterRequestConfig): Promise<AdapterResponse<T>>;
38
+ /**
39
+ * 解析完整 URL
40
+ *
41
+ * 处理相对路径和查询参数
42
+ *
43
+ * @param url - 请求 URL
44
+ * @param params - 查询参数
45
+ * @returns 完整 URL
46
+ */
47
+ private resolveUrl;
48
+ }
49
+ /**
50
+ * 创建 Taro Fetch 包装器
51
+ *
52
+ * 将 Taro.request 包装为类似 fetch 的函数
53
+ * 用于 TimeSyncService 进行时间同步
54
+ *
55
+ * @param taroRequest - Taro.request 函数引用
56
+ * @returns FetchFunction 类型的函数
57
+ *
58
+ * @example
59
+ * ```ts
60
+ * import Taro from '@tarojs/taro';
61
+ * import { createTaroFetch } from '@be-link/http';
62
+ *
63
+ * const fetchFn = createTaroFetch(Taro.request);
64
+ * const timeSyncService = new TimeSyncService(config, fetchFn);
65
+ * ```
66
+ */
67
+ export declare function createTaroFetch(taroRequest: TaroRequestFunction): FetchFunction;
68
+ //# sourceMappingURL=TaroAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaroAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/TaroAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,qBAAa,WAAY,YAAW,WAAW;IAC7C,iBAAiB;IACjB,OAAO,CAAC,OAAO,CAAS;IAExB,YAAY;IACZ,OAAO,CAAC,cAAc,CAAyB;IAE/C,iBAAiB;IACjB,OAAO,CAAC,OAAO,CAAS;IAExB,wBAAwB;IACxB,OAAO,CAAC,WAAW,CAAsB;IAEzC;;;;OAIG;gBACS,MAAM,EAAE,iBAAiB;IAUrC;;;;;OAKG;IACU,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAqBxF;;;;;;;;OAQG;IACH,OAAO,CAAC,UAAU;CAyBnB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,mBAAmB,GAAG,aAAa,CAiB/E"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * HTTP 适配器模块
3
+ *
4
+ * 导出所有适配器和相关类型
5
+ *
6
+ * @module adapters
7
+ */
8
+ export type { AdapterConfig, AdapterRequestConfig, AdapterResponse, HttpAdapter, TaroAdapterConfig, TaroRequestFunction, TaroRequestOption, TaroRequestResult, } from './types';
9
+ export { AxiosAdapter } from './AxiosAdapter';
10
+ export { TaroAdapter, createTaroFetch } from './TaroAdapter';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * HTTP 适配器类型定义
3
+ *
4
+ * 定义统一的 HTTP 适配器接口,支持 Axios 和 Taro.request
5
+ *
6
+ * @module adapters/types
7
+ */
8
+ /**
9
+ * 适配器请求配置
10
+ *
11
+ * 统一的请求配置接口,兼容 Axios 和 Taro.request
12
+ */
13
+ export interface AdapterRequestConfig {
14
+ /**
15
+ * 请求 URL
16
+ * 可以是相对路径或绝对路径
17
+ */
18
+ url: string;
19
+ /**
20
+ * HTTP 请求方法
21
+ * @default 'GET'
22
+ */
23
+ method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';
24
+ /**
25
+ * 请求体数据
26
+ */
27
+ data?: any;
28
+ /**
29
+ * 请求头
30
+ */
31
+ headers?: Record<string, string>;
32
+ /**
33
+ * 请求超时时间(毫秒)
34
+ */
35
+ timeout?: number;
36
+ /**
37
+ * URL 查询参数
38
+ * 会被序列化并附加到 URL 上
39
+ */
40
+ params?: Record<string, any>;
41
+ }
42
+ /**
43
+ * 适配器响应结构
44
+ *
45
+ * 统一的响应结构,兼容 Axios 和 Taro.request
46
+ */
47
+ export interface AdapterResponse<T = any> {
48
+ /**
49
+ * 响应数据
50
+ */
51
+ data: T;
52
+ /**
53
+ * HTTP 状态码
54
+ */
55
+ status: number;
56
+ /**
57
+ * 响应头
58
+ */
59
+ headers: Record<string, string>;
60
+ }
61
+ /**
62
+ * HTTP 适配器接口
63
+ *
64
+ * 所有 HTTP 请求适配器必须实现此接口
65
+ */
66
+ export interface HttpAdapter {
67
+ /**
68
+ * 发起 HTTP 请求
69
+ *
70
+ * @param config - 请求配置
71
+ * @returns Promise 响应数据
72
+ */
73
+ request: <T = any>(config: AdapterRequestConfig) => Promise<AdapterResponse<T>>;
74
+ }
75
+ /**
76
+ * 适配器构造配置
77
+ */
78
+ export interface AdapterConfig {
79
+ /**
80
+ * API 基础 URL
81
+ */
82
+ baseURL: string;
83
+ /**
84
+ * 请求超时时间(毫秒)
85
+ * @default 30000
86
+ */
87
+ timeout?: number;
88
+ /**
89
+ * 默认请求头
90
+ */
91
+ headers?: Record<string, string>;
92
+ }
93
+ /**
94
+ * Taro 适配器构造配置
95
+ */
96
+ export interface TaroAdapterConfig extends AdapterConfig {
97
+ /**
98
+ * Taro.request 函数引用
99
+ * 需要从 @tarojs/taro 导入并传入
100
+ */
101
+ taroRequest: TaroRequestFunction;
102
+ }
103
+ /**
104
+ * Taro.request 函数类型
105
+ *
106
+ * 简化的 Taro.request 类型定义,避免直接依赖 @tarojs/taro
107
+ */
108
+ export interface TaroRequestFunction {
109
+ <T = any>(option: TaroRequestOption<T>): Promise<TaroRequestResult<T>>;
110
+ }
111
+ /**
112
+ * Taro.request 请求选项
113
+ */
114
+ export interface TaroRequestOption<T = any> {
115
+ url: string;
116
+ method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'TRACE' | 'CONNECT';
117
+ data?: any;
118
+ header?: Record<string, string>;
119
+ timeout?: number;
120
+ dataType?: string;
121
+ responseType?: 'text' | 'arraybuffer';
122
+ success?: (result: TaroRequestResult<T>) => void;
123
+ fail?: (res: any) => void;
124
+ complete?: (res: any) => void;
125
+ }
126
+ /**
127
+ * Taro.request 响应结果
128
+ */
129
+ export interface TaroRequestResult<T = any> {
130
+ data: T;
131
+ statusCode: number;
132
+ header: Record<string, string>;
133
+ cookies?: string[];
134
+ errMsg?: string;
135
+ }
136
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAE1E;;OAEG;IACH,IAAI,CAAC,EAAE,GAAG,CAAC;IAEX;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,GAAG;IACtC;;OAEG;IACH,IAAI,EAAE,CAAC,CAAC;IAER;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,OAAO,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,oBAAoB,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;CACjF;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD;;;OAGG;IACH,WAAW,EAAE,mBAAmB,CAAC;CAClC;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;CACxE;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,GAAG;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACtF,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACjD,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,GAAG;IACxC,IAAI,EAAE,CAAC,CAAC;IACR,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}