@kevisual/query 0.0.13 → 0.0.14
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.
- package/dist/query-adapter.d.ts +5 -1
- package/dist/query-adapter.js +11 -4
- package/dist/query-browser.d.ts +10 -5
- package/dist/query-browser.js +23 -15
- package/dist/query.d.ts +10 -5
- package/dist/query.js +23 -15
- package/package.json +1 -1
package/dist/query-adapter.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
declare const methods: readonly ["GET", "POST"];
|
|
2
|
+
type Method = (typeof methods)[number];
|
|
1
3
|
type AdapterOpts = {
|
|
2
4
|
url: string;
|
|
3
5
|
headers?: Record<string, string>;
|
|
4
6
|
body?: Record<string, any>;
|
|
5
7
|
timeout?: number;
|
|
8
|
+
method?: Method;
|
|
6
9
|
};
|
|
7
10
|
/**
|
|
8
11
|
*
|
|
@@ -16,4 +19,5 @@ declare const adapter: (opts: AdapterOpts, overloadOpts?: RequestInit) => Promis
|
|
|
16
19
|
*/
|
|
17
20
|
declare const queryFetch: (opts: AdapterOpts, overloadOpts?: RequestInit) => Promise<any>;
|
|
18
21
|
|
|
19
|
-
export { adapter, queryFetch };
|
|
22
|
+
export { adapter, methods, queryFetch };
|
|
23
|
+
export type { AdapterOpts, Method };
|
package/dist/query-adapter.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const methods = ['GET', 'POST'];
|
|
1
2
|
/**
|
|
2
3
|
*
|
|
3
4
|
* @param opts
|
|
@@ -11,15 +12,21 @@ const adapter = async (opts, overloadOpts) => {
|
|
|
11
12
|
const timer = setTimeout(() => {
|
|
12
13
|
controller.abort();
|
|
13
14
|
}, timeout);
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
let method = overloadOpts?.method || opts.method || 'POST';
|
|
16
|
+
let url = new URL(opts.url, window.location.origin);
|
|
17
|
+
const isGet = method === 'GET';
|
|
18
|
+
if (isGet) {
|
|
19
|
+
url.search = new URLSearchParams(opts.body).toString();
|
|
20
|
+
}
|
|
21
|
+
return fetch(url, {
|
|
22
|
+
method: method,
|
|
16
23
|
headers: {
|
|
17
24
|
'Content-Type': 'application/json',
|
|
18
25
|
...opts.headers,
|
|
19
26
|
},
|
|
20
|
-
body: JSON.stringify(opts.body),
|
|
21
27
|
signal,
|
|
22
28
|
...overloadOpts,
|
|
29
|
+
body: isGet ? undefined : JSON.stringify(opts.body),
|
|
23
30
|
})
|
|
24
31
|
.then((response) => {
|
|
25
32
|
// 获取 Content-Type 头部信息
|
|
@@ -50,4 +57,4 @@ const adapter = async (opts, overloadOpts) => {
|
|
|
50
57
|
*/
|
|
51
58
|
const queryFetch = adapter;
|
|
52
59
|
|
|
53
|
-
export { adapter, queryFetch };
|
|
60
|
+
export { adapter, methods, queryFetch };
|
package/dist/query-browser.d.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { StoreApi } from 'zustand/vanilla';
|
|
2
2
|
|
|
3
|
+
declare const methods: readonly ["GET", "POST"];
|
|
4
|
+
type Method = (typeof methods)[number];
|
|
3
5
|
type AdapterOpts = {
|
|
4
6
|
url: string;
|
|
5
7
|
headers?: Record<string, string>;
|
|
6
8
|
body?: Record<string, any>;
|
|
7
9
|
timeout?: number;
|
|
10
|
+
method?: Method;
|
|
8
11
|
};
|
|
9
12
|
/**
|
|
10
13
|
*
|
|
@@ -67,6 +70,8 @@ type QueryOpts$1 = {
|
|
|
67
70
|
adapter?: typeof adapter;
|
|
68
71
|
headers?: Record<string, string>;
|
|
69
72
|
timeout?: number;
|
|
73
|
+
method?: Method;
|
|
74
|
+
[key: string]: any;
|
|
70
75
|
};
|
|
71
76
|
type Data = {
|
|
72
77
|
path?: string;
|
|
@@ -93,11 +98,11 @@ type Result<S = any> = {
|
|
|
93
98
|
};
|
|
94
99
|
type DataOpts = Partial<QueryOpts$1> & {
|
|
95
100
|
beforeRequest?: Fn;
|
|
96
|
-
afterResponse?: <S
|
|
101
|
+
afterResponse?: <S = any>(result: Result<S>, ctx?: {
|
|
97
102
|
req?: any;
|
|
98
103
|
res?: any;
|
|
99
104
|
fetch?: any;
|
|
100
|
-
}) => Promise<
|
|
105
|
+
}) => Promise<S>;
|
|
101
106
|
};
|
|
102
107
|
/**
|
|
103
108
|
* const query = new Query();
|
|
@@ -111,7 +116,7 @@ type DataOpts = Partial<QueryOpts$1> & {
|
|
|
111
116
|
declare class Query {
|
|
112
117
|
adapter: typeof adapter;
|
|
113
118
|
url: string;
|
|
114
|
-
beforeRequest?:
|
|
119
|
+
beforeRequest?: DataOpts['beforeRequest'];
|
|
115
120
|
afterResponse?: DataOpts['afterResponse'];
|
|
116
121
|
headers?: Record<string, string>;
|
|
117
122
|
timeout?: number;
|
|
@@ -146,12 +151,12 @@ declare class Query {
|
|
|
146
151
|
* 请求前处理,设置请求前处理函数
|
|
147
152
|
* @param fn 处理函数
|
|
148
153
|
*/
|
|
149
|
-
before(fn:
|
|
154
|
+
before(fn: DataOpts['beforeRequest']): void;
|
|
150
155
|
/**
|
|
151
156
|
* 请求后处理,设置请求后处理函数
|
|
152
157
|
* @param fn 处理函数
|
|
153
158
|
*/
|
|
154
|
-
after(fn:
|
|
159
|
+
after(fn: DataOpts['afterResponse']): void;
|
|
155
160
|
}
|
|
156
161
|
|
|
157
162
|
type QueryOpts = {
|
package/dist/query-browser.js
CHANGED
|
@@ -11,15 +11,21 @@ const adapter = async (opts, overloadOpts) => {
|
|
|
11
11
|
const timer = setTimeout(() => {
|
|
12
12
|
controller.abort();
|
|
13
13
|
}, timeout);
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
let method = overloadOpts?.method || opts.method || 'POST';
|
|
15
|
+
let url = new URL(opts.url, window.location.origin);
|
|
16
|
+
const isGet = method === 'GET';
|
|
17
|
+
if (isGet) {
|
|
18
|
+
url.search = new URLSearchParams(opts.body).toString();
|
|
19
|
+
}
|
|
20
|
+
return fetch(url, {
|
|
21
|
+
method: method,
|
|
16
22
|
headers: {
|
|
17
23
|
'Content-Type': 'application/json',
|
|
18
24
|
...opts.headers,
|
|
19
25
|
},
|
|
20
|
-
body: JSON.stringify(opts.body),
|
|
21
26
|
signal,
|
|
22
27
|
...overloadOpts,
|
|
28
|
+
body: isGet ? undefined : JSON.stringify(opts.body),
|
|
23
29
|
})
|
|
24
30
|
.then((response) => {
|
|
25
31
|
// 获取 Content-Type 头部信息
|
|
@@ -294,20 +300,22 @@ class Query {
|
|
|
294
300
|
*/
|
|
295
301
|
async post(body, options) {
|
|
296
302
|
const url = options?.url || this.url;
|
|
297
|
-
const headers
|
|
298
|
-
const
|
|
299
|
-
const
|
|
300
|
-
const
|
|
301
|
-
const
|
|
303
|
+
const { headers, adapter, beforeRequest, afterResponse, timeout, ...rest } = options || {};
|
|
304
|
+
const _headers = { ...this.headers, ...headers };
|
|
305
|
+
const _adapter = adapter || this.adapter;
|
|
306
|
+
const _beforeRequest = beforeRequest || this.beforeRequest;
|
|
307
|
+
const _afterResponse = afterResponse || this.afterResponse;
|
|
308
|
+
const _timeout = timeout || this.timeout;
|
|
302
309
|
const req = {
|
|
303
310
|
url: url,
|
|
304
|
-
headers:
|
|
311
|
+
headers: _headers,
|
|
305
312
|
body,
|
|
306
|
-
timeout,
|
|
313
|
+
timeout: _timeout,
|
|
314
|
+
...rest,
|
|
307
315
|
};
|
|
308
316
|
try {
|
|
309
|
-
if (
|
|
310
|
-
await
|
|
317
|
+
if (_beforeRequest) {
|
|
318
|
+
await _beforeRequest(req);
|
|
311
319
|
}
|
|
312
320
|
}
|
|
313
321
|
catch (e) {
|
|
@@ -335,11 +343,11 @@ class Query {
|
|
|
335
343
|
}, 1000);
|
|
336
344
|
});
|
|
337
345
|
}
|
|
338
|
-
return
|
|
346
|
+
return _adapter(req).then(async (res) => {
|
|
339
347
|
try {
|
|
340
348
|
setBaseResponse(res);
|
|
341
|
-
if (
|
|
342
|
-
return await
|
|
349
|
+
if (_afterResponse) {
|
|
350
|
+
return await _afterResponse(res, {
|
|
343
351
|
req,
|
|
344
352
|
res,
|
|
345
353
|
fetch: adapter,
|
package/dist/query.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
declare const methods: readonly ["GET", "POST"];
|
|
2
|
+
type Method = (typeof methods)[number];
|
|
1
3
|
type AdapterOpts = {
|
|
2
4
|
url: string;
|
|
3
5
|
headers?: Record<string, string>;
|
|
4
6
|
body?: Record<string, any>;
|
|
5
7
|
timeout?: number;
|
|
8
|
+
method?: Method;
|
|
6
9
|
};
|
|
7
10
|
/**
|
|
8
11
|
*
|
|
@@ -29,6 +32,8 @@ type QueryOpts = {
|
|
|
29
32
|
adapter?: typeof adapter;
|
|
30
33
|
headers?: Record<string, string>;
|
|
31
34
|
timeout?: number;
|
|
35
|
+
method?: Method;
|
|
36
|
+
[key: string]: any;
|
|
32
37
|
};
|
|
33
38
|
type Data = {
|
|
34
39
|
path?: string;
|
|
@@ -55,11 +60,11 @@ type Result<S = any> = {
|
|
|
55
60
|
};
|
|
56
61
|
type DataOpts = Partial<QueryOpts> & {
|
|
57
62
|
beforeRequest?: Fn;
|
|
58
|
-
afterResponse?: <S
|
|
63
|
+
afterResponse?: <S = any>(result: Result<S>, ctx?: {
|
|
59
64
|
req?: any;
|
|
60
65
|
res?: any;
|
|
61
66
|
fetch?: any;
|
|
62
|
-
}) => Promise<
|
|
67
|
+
}) => Promise<S>;
|
|
63
68
|
};
|
|
64
69
|
/**
|
|
65
70
|
* 设置基础响应, 设置 success 和 showError,
|
|
@@ -80,7 +85,7 @@ declare const setBaseResponse: (res: Result) => void;
|
|
|
80
85
|
declare class Query {
|
|
81
86
|
adapter: typeof adapter;
|
|
82
87
|
url: string;
|
|
83
|
-
beforeRequest?:
|
|
88
|
+
beforeRequest?: DataOpts['beforeRequest'];
|
|
84
89
|
afterResponse?: DataOpts['afterResponse'];
|
|
85
90
|
headers?: Record<string, string>;
|
|
86
91
|
timeout?: number;
|
|
@@ -115,12 +120,12 @@ declare class Query {
|
|
|
115
120
|
* 请求前处理,设置请求前处理函数
|
|
116
121
|
* @param fn 处理函数
|
|
117
122
|
*/
|
|
118
|
-
before(fn:
|
|
123
|
+
before(fn: DataOpts['beforeRequest']): void;
|
|
119
124
|
/**
|
|
120
125
|
* 请求后处理,设置请求后处理函数
|
|
121
126
|
* @param fn 处理函数
|
|
122
127
|
*/
|
|
123
|
-
after(fn:
|
|
128
|
+
after(fn: DataOpts['afterResponse']): void;
|
|
124
129
|
}
|
|
125
130
|
|
|
126
131
|
export { Query, adapter, setBaseResponse };
|
package/dist/query.js
CHANGED
|
@@ -11,15 +11,21 @@ const adapter = async (opts, overloadOpts) => {
|
|
|
11
11
|
const timer = setTimeout(() => {
|
|
12
12
|
controller.abort();
|
|
13
13
|
}, timeout);
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
let method = overloadOpts?.method || opts.method || 'POST';
|
|
15
|
+
let url = new URL(opts.url, window.location.origin);
|
|
16
|
+
const isGet = method === 'GET';
|
|
17
|
+
if (isGet) {
|
|
18
|
+
url.search = new URLSearchParams(opts.body).toString();
|
|
19
|
+
}
|
|
20
|
+
return fetch(url, {
|
|
21
|
+
method: method,
|
|
16
22
|
headers: {
|
|
17
23
|
'Content-Type': 'application/json',
|
|
18
24
|
...opts.headers,
|
|
19
25
|
},
|
|
20
|
-
body: JSON.stringify(opts.body),
|
|
21
26
|
signal,
|
|
22
27
|
...overloadOpts,
|
|
28
|
+
body: isGet ? undefined : JSON.stringify(opts.body),
|
|
23
29
|
})
|
|
24
30
|
.then((response) => {
|
|
25
31
|
// 获取 Content-Type 头部信息
|
|
@@ -119,20 +125,22 @@ class Query {
|
|
|
119
125
|
*/
|
|
120
126
|
async post(body, options) {
|
|
121
127
|
const url = options?.url || this.url;
|
|
122
|
-
const headers
|
|
123
|
-
const
|
|
124
|
-
const
|
|
125
|
-
const
|
|
126
|
-
const
|
|
128
|
+
const { headers, adapter, beforeRequest, afterResponse, timeout, ...rest } = options || {};
|
|
129
|
+
const _headers = { ...this.headers, ...headers };
|
|
130
|
+
const _adapter = adapter || this.adapter;
|
|
131
|
+
const _beforeRequest = beforeRequest || this.beforeRequest;
|
|
132
|
+
const _afterResponse = afterResponse || this.afterResponse;
|
|
133
|
+
const _timeout = timeout || this.timeout;
|
|
127
134
|
const req = {
|
|
128
135
|
url: url,
|
|
129
|
-
headers:
|
|
136
|
+
headers: _headers,
|
|
130
137
|
body,
|
|
131
|
-
timeout,
|
|
138
|
+
timeout: _timeout,
|
|
139
|
+
...rest,
|
|
132
140
|
};
|
|
133
141
|
try {
|
|
134
|
-
if (
|
|
135
|
-
await
|
|
142
|
+
if (_beforeRequest) {
|
|
143
|
+
await _beforeRequest(req);
|
|
136
144
|
}
|
|
137
145
|
}
|
|
138
146
|
catch (e) {
|
|
@@ -160,11 +168,11 @@ class Query {
|
|
|
160
168
|
}, 1000);
|
|
161
169
|
});
|
|
162
170
|
}
|
|
163
|
-
return
|
|
171
|
+
return _adapter(req).then(async (res) => {
|
|
164
172
|
try {
|
|
165
173
|
setBaseResponse(res);
|
|
166
|
-
if (
|
|
167
|
-
return await
|
|
174
|
+
if (_afterResponse) {
|
|
175
|
+
return await _afterResponse(res, {
|
|
168
176
|
req,
|
|
169
177
|
res,
|
|
170
178
|
fetch: adapter,
|