@ahoo-wang/fetcher-react 2.6.2 → 2.6.5
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/README.md +207 -58
- package/README.zh-CN.md +199 -56
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/useExecutePromise.d.ts.map +1 -1
- package/dist/core/useLatest.d.ts +32 -0
- package/dist/core/useLatest.d.ts.map +1 -0
- package/dist/core/usePromiseState.d.ts +13 -8
- package/dist/core/usePromiseState.d.ts.map +1 -1
- package/dist/core/useRequestId.d.ts.map +1 -1
- package/dist/fetcher/useFetcher.d.ts.map +1 -1
- package/dist/index.es.js +97 -69
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
package/README.zh-CN.md
CHANGED
|
@@ -12,11 +12,26 @@ Fetcher 生态的 React 集成包。提供 React Hooks 和组件,实现无缝
|
|
|
12
12
|
|
|
13
13
|
## 功能特性
|
|
14
14
|
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
15
|
+
- 🚀 **数据获取**: 完整的 HTTP 客户端与 React hooks 集成
|
|
16
|
+
- 🔄 **Promise 状态管理**: 高级异步操作处理,具有竞态条件保护
|
|
17
|
+
- 🛡️ **类型安全**: 完整的 TypeScript 支持和全面的类型定义
|
|
18
|
+
- ⚡ **性能优化**: 使用 useMemo、useCallback 和智能依赖管理进行优化
|
|
19
|
+
- 🎯 **选项灵活性**: 支持静态选项和动态选项供应商
|
|
20
|
+
- 🔧 **开发者体验**: 内置加载状态、错误处理和自动重新渲染
|
|
21
|
+
|
|
22
|
+
## 目录
|
|
23
|
+
|
|
24
|
+
- [安装](#安装)
|
|
25
|
+
- [快速开始](#快速开始)
|
|
26
|
+
- [使用方法](#使用方法)
|
|
27
|
+
- [useFetcher Hook](#usefetcher-hook)
|
|
28
|
+
- [useExecutePromise Hook](#useexecutepromise-hook)
|
|
29
|
+
- [usePromiseState Hook](#usepromisestate-hook)
|
|
30
|
+
- [useRequestId Hook](#userequestid-hook)
|
|
31
|
+
- [useLatest Hook](#uselatest-hook)
|
|
32
|
+
- [useKeyStorage Hook](#usekeystorage-hook)
|
|
33
|
+
- [API 参考](#api-参考)
|
|
34
|
+
- [许可证](#许可证)
|
|
20
35
|
|
|
21
36
|
## 安装
|
|
22
37
|
|
|
@@ -24,30 +39,52 @@ Fetcher 生态的 React 集成包。提供 React Hooks 和组件,实现无缝
|
|
|
24
39
|
npm install @ahoo-wang/fetcher-react
|
|
25
40
|
```
|
|
26
41
|
|
|
42
|
+
## 快速开始
|
|
43
|
+
|
|
44
|
+
只需几行代码即可开始使用 `@ahoo-wang/fetcher-react`:
|
|
45
|
+
|
|
46
|
+
```typescript jsx
|
|
47
|
+
import { useFetcher } from '@ahoo-wang/fetcher-react';
|
|
48
|
+
|
|
49
|
+
function App() {
|
|
50
|
+
const { loading, result, error, execute } = useFetcher();
|
|
51
|
+
|
|
52
|
+
return (
|
|
53
|
+
<div>
|
|
54
|
+
<button onClick={() => execute({ url: '/api/data', method: 'GET' })}>
|
|
55
|
+
获取数据
|
|
56
|
+
</button>
|
|
57
|
+
{loading && <p>加载中...</p>}
|
|
58
|
+
{result && <pre>{JSON.stringify(result, null, 2)}</pre>}
|
|
59
|
+
{error && <p>错误: {error.message}</p>}
|
|
60
|
+
</div>
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
27
65
|
## 使用方法
|
|
28
66
|
|
|
29
|
-
###
|
|
67
|
+
### useFetcher Hook
|
|
30
68
|
|
|
31
|
-
`
|
|
69
|
+
`useFetcher` hook 提供完整的数据获取功能,具有自动状态管理、竞态条件保护和灵活的配置选项。
|
|
32
70
|
|
|
33
71
|
```typescript jsx
|
|
34
|
-
import {
|
|
72
|
+
import { useFetcher } from '@ahoo-wang/fetcher-react';
|
|
35
73
|
|
|
36
74
|
const MyComponent = () => {
|
|
37
|
-
const {
|
|
75
|
+
const { loading, error, result, execute } = useFetcher<string>();
|
|
38
76
|
|
|
39
|
-
const
|
|
40
|
-
|
|
77
|
+
const handleFetch = () => {
|
|
78
|
+
execute({ url: '/api/users', method: 'GET' });
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
if (loading) return <div>加载中...</div>;
|
|
82
|
+
if (error) return <div>错误: {error.message}</div>;
|
|
41
83
|
|
|
42
84
|
return (
|
|
43
85
|
<div>
|
|
44
|
-
<
|
|
45
|
-
<button onClick={
|
|
46
|
-
<button onClick={setIdle}>重置</button>
|
|
47
|
-
<p>状态: {status}</p>
|
|
48
|
-
{loading && <p>加载中...</p>}
|
|
49
|
-
{result && <p>结果: {result}</p>}
|
|
50
|
-
{error && <p>错误: {error.message}</p>}
|
|
86
|
+
<pre>{JSON.stringify(result, null, 2)}</pre>
|
|
87
|
+
<button onClick={handleFetch}>获取数据</button>
|
|
51
88
|
</div>
|
|
52
89
|
);
|
|
53
90
|
};
|
|
@@ -55,7 +92,7 @@ const MyComponent = () => {
|
|
|
55
92
|
|
|
56
93
|
### useExecutePromise Hook
|
|
57
94
|
|
|
58
|
-
`useExecutePromise` hook
|
|
95
|
+
`useExecutePromise` hook 管理异步操作,具有自动状态处理、竞态条件保护和 promise 状态选项支持。
|
|
59
96
|
|
|
60
97
|
```typescript jsx
|
|
61
98
|
import { useExecutePromise } from '@ahoo-wang/fetcher-react';
|
|
@@ -90,6 +127,63 @@ const MyComponent = () => {
|
|
|
90
127
|
};
|
|
91
128
|
```
|
|
92
129
|
|
|
130
|
+
### usePromiseState Hook
|
|
131
|
+
|
|
132
|
+
`usePromiseState` hook 提供 promise 操作的状态管理,无执行逻辑。支持静态选项和动态选项供应商。
|
|
133
|
+
|
|
134
|
+
```typescript jsx
|
|
135
|
+
import { usePromiseState, PromiseStatus } from '@ahoo-wang/fetcher-react';
|
|
136
|
+
|
|
137
|
+
const MyComponent = () => {
|
|
138
|
+
const { status, loading, result, error, setSuccess, setError, setIdle } = usePromiseState<string>();
|
|
139
|
+
|
|
140
|
+
const handleSuccess = () => setSuccess('数据加载成功');
|
|
141
|
+
const handleError = () => setError(new Error('加载失败'));
|
|
142
|
+
|
|
143
|
+
return (
|
|
144
|
+
<div>
|
|
145
|
+
<button onClick={handleSuccess}>设置成功</button>
|
|
146
|
+
<button onClick={handleError}>设置错误</button>
|
|
147
|
+
<button onClick={setIdle}>重置</button>
|
|
148
|
+
<p>状态: {status}</p>
|
|
149
|
+
{loading && <p>加载中...</p>}
|
|
150
|
+
{result && <p>结果: {result}</p>}
|
|
151
|
+
{error && <p>错误: {error.message}</p>}
|
|
152
|
+
</div>
|
|
153
|
+
);
|
|
154
|
+
};
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
#### usePromiseState with Options Supplier
|
|
158
|
+
|
|
159
|
+
```typescript jsx
|
|
160
|
+
import { usePromiseState, PromiseStatus } from '@ahoo-wang/fetcher-react';
|
|
161
|
+
|
|
162
|
+
const MyComponent = () => {
|
|
163
|
+
// 使用选项供应商进行动态配置
|
|
164
|
+
const optionsSupplier = () => ({
|
|
165
|
+
initialStatus: PromiseStatus.IDLE,
|
|
166
|
+
onSuccess: async (result: string) => {
|
|
167
|
+
await saveToAnalytics(result);
|
|
168
|
+
console.log('成功:', result);
|
|
169
|
+
},
|
|
170
|
+
onError: async (error) => {
|
|
171
|
+
await logErrorToServer(error);
|
|
172
|
+
console.error('错误:', error);
|
|
173
|
+
},
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
const { setSuccess, setError } = usePromiseState<string>(optionsSupplier);
|
|
177
|
+
|
|
178
|
+
return (
|
|
179
|
+
<div>
|
|
180
|
+
<button onClick={() => setSuccess('动态成功!')}>设置成功</button>
|
|
181
|
+
<button onClick={() => setError(new Error('动态错误!'))}>设置错误</button>
|
|
182
|
+
</div>
|
|
183
|
+
);
|
|
184
|
+
};
|
|
185
|
+
```
|
|
186
|
+
|
|
93
187
|
### useRequestId Hook
|
|
94
188
|
|
|
95
189
|
`useRequestId` hook 提供请求ID管理,用于防止异步操作中的竞态条件。
|
|
@@ -125,27 +219,27 @@ const MyComponent = () => {
|
|
|
125
219
|
};
|
|
126
220
|
```
|
|
127
221
|
|
|
128
|
-
###
|
|
222
|
+
### useLatest Hook
|
|
129
223
|
|
|
130
|
-
`
|
|
224
|
+
`useLatest` hook 返回包含最新值的 ref 对象,用于在异步回调中访问当前值。
|
|
131
225
|
|
|
132
226
|
```typescript jsx
|
|
133
|
-
import {
|
|
227
|
+
import { useLatest } from '@ahoo-wang/fetcher-react';
|
|
134
228
|
|
|
135
229
|
const MyComponent = () => {
|
|
136
|
-
const
|
|
230
|
+
const [count, setCount] = useState(0);
|
|
231
|
+
const latestCount = useLatest(count);
|
|
137
232
|
|
|
138
|
-
const
|
|
139
|
-
|
|
233
|
+
const handleAsync = async () => {
|
|
234
|
+
await someAsyncOperation();
|
|
235
|
+
console.log('最新计数:', latestCount.current); // 始终是最新值
|
|
140
236
|
};
|
|
141
237
|
|
|
142
|
-
if (loading) return <div>加载中...</div>;
|
|
143
|
-
if (error) return <div>错误: {error.message}</div>;
|
|
144
|
-
|
|
145
238
|
return (
|
|
146
239
|
<div>
|
|
147
|
-
<
|
|
148
|
-
<button onClick={
|
|
240
|
+
<p>计数: {count}</p>
|
|
241
|
+
<button onClick={() => setCount(c => c + 1)}>递增</button>
|
|
242
|
+
<button onClick={handleAsync}>异步记录</button>
|
|
149
243
|
</div>
|
|
150
244
|
);
|
|
151
245
|
};
|
|
@@ -198,19 +292,25 @@ const [user, setUser] = useKeyStorage(userStorage);
|
|
|
198
292
|
|
|
199
293
|
## API 参考
|
|
200
294
|
|
|
201
|
-
###
|
|
295
|
+
### useFetcher
|
|
202
296
|
|
|
203
297
|
```typescript
|
|
204
|
-
function
|
|
205
|
-
options?:
|
|
206
|
-
):
|
|
298
|
+
function useFetcher<R = unknown, E = unknown>(
|
|
299
|
+
options?: UseFetcherOptions<R, E> | UseFetcherOptionsSupplier<R, E>,
|
|
300
|
+
): UseFetcherReturn<R, E>;
|
|
207
301
|
```
|
|
208
302
|
|
|
209
|
-
|
|
303
|
+
用于管理异步获取操作的 React hook,具有适当的状态处理、竞态条件保护和灵活的配置。
|
|
304
|
+
|
|
305
|
+
**类型参数:**
|
|
306
|
+
|
|
307
|
+
- `R`: 结果的类型
|
|
308
|
+
- `E`: 错误的类型(默认为 `unknown`)
|
|
210
309
|
|
|
211
310
|
**参数:**
|
|
212
311
|
|
|
213
|
-
- `options`:
|
|
312
|
+
- `options`: 配置选项或供应商函数
|
|
313
|
+
- `fetcher`: 要使用的自定义获取器实例。默认为默认获取器。
|
|
214
314
|
- `initialStatus`: 初始状态,默认为 IDLE
|
|
215
315
|
- `onSuccess`: 成功时调用的回调
|
|
216
316
|
- `onError`: 错误时调用的回调
|
|
@@ -223,30 +323,77 @@ function usePromiseState<R = unknown>(
|
|
|
223
323
|
- `loading`: 指示当前是否加载中
|
|
224
324
|
- `result`: 结果值
|
|
225
325
|
- `error`: 错误值
|
|
226
|
-
- `
|
|
227
|
-
- `
|
|
228
|
-
- `setError`: 设置状态为 ERROR 并提供错误
|
|
229
|
-
- `setIdle`: 设置状态为 IDLE
|
|
326
|
+
- `exchange`: 表示正在进行的获取操作的 FetchExchange 对象
|
|
327
|
+
- `execute`: 执行获取请求的函数
|
|
230
328
|
|
|
231
329
|
### useExecutePromise
|
|
232
330
|
|
|
233
331
|
```typescript
|
|
234
|
-
function useExecutePromise<R = unknown>(
|
|
332
|
+
function useExecutePromise<R = unknown, E = unknown>(
|
|
333
|
+
options?: UseExecutePromiseOptions<R, E>,
|
|
334
|
+
): UseExecutePromiseReturn<R, E>;
|
|
235
335
|
```
|
|
236
336
|
|
|
237
|
-
用于管理异步操作的 React hook
|
|
337
|
+
用于管理异步操作的 React hook,具有适当的状态处理、竞态条件保护和 promise 状态选项。
|
|
338
|
+
|
|
339
|
+
**类型参数:**
|
|
340
|
+
|
|
341
|
+
- `R`: 结果的类型
|
|
342
|
+
- `E`: 错误的类型(默认为 `unknown`)
|
|
343
|
+
|
|
344
|
+
**参数:**
|
|
345
|
+
|
|
346
|
+
- `options`: 配置选项
|
|
347
|
+
- `initialStatus`: 初始状态,默认为 IDLE
|
|
348
|
+
- `onSuccess`: 成功时调用的回调
|
|
349
|
+
- `onError`: 错误时调用的回调
|
|
238
350
|
|
|
239
351
|
**返回值:**
|
|
240
352
|
|
|
241
353
|
包含以下属性的对象:
|
|
242
354
|
|
|
243
|
-
- `status`: 当前状态
|
|
355
|
+
- `status`: 当前状态 (IDLE, LOADING, SUCCESS, ERROR)
|
|
244
356
|
- `loading`: 指示当前是否加载中
|
|
245
357
|
- `result`: 结果值
|
|
246
358
|
- `error`: 错误值
|
|
247
359
|
- `execute`: 执行 promise supplier 或 promise 的函数
|
|
248
360
|
- `reset`: 重置状态到初始值的函数
|
|
249
361
|
|
|
362
|
+
### usePromiseState
|
|
363
|
+
|
|
364
|
+
```typescript
|
|
365
|
+
function usePromiseState<R = unknown, E = unknown>(
|
|
366
|
+
options?: UsePromiseStateOptions<R, E> | UsePromiseStateOptionsSupplier<R, E>,
|
|
367
|
+
): UsePromiseStateReturn<R, E>;
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
用于管理 promise 状态的 React hook,无执行逻辑。支持静态选项和动态选项供应商。
|
|
371
|
+
|
|
372
|
+
**类型参数:**
|
|
373
|
+
|
|
374
|
+
- `R`: 结果的类型
|
|
375
|
+
- `E`: 错误的类型(默认为 `unknown`)
|
|
376
|
+
|
|
377
|
+
**参数:**
|
|
378
|
+
|
|
379
|
+
- `options`: 配置选项或供应商函数
|
|
380
|
+
- `initialStatus`: 初始状态,默认为 IDLE
|
|
381
|
+
- `onSuccess`: 成功时调用的回调(可以是异步的)
|
|
382
|
+
- `onError`: 错误时调用的回调(可以是异步的)
|
|
383
|
+
|
|
384
|
+
**返回值:**
|
|
385
|
+
|
|
386
|
+
包含以下属性的对象:
|
|
387
|
+
|
|
388
|
+
- `status`: 当前状态 (IDLE, LOADING, SUCCESS, ERROR)
|
|
389
|
+
- `loading`: 指示当前是否加载中
|
|
390
|
+
- `result`: 结果值
|
|
391
|
+
- `error`: 错误值
|
|
392
|
+
- `setLoading`: 设置状态为 LOADING
|
|
393
|
+
- `setSuccess`: 设置状态为 SUCCESS 并提供结果
|
|
394
|
+
- `setError`: 设置状态为 ERROR 并提供错误
|
|
395
|
+
- `setIdle`: 设置状态为 IDLE
|
|
396
|
+
|
|
250
397
|
### useRequestId
|
|
251
398
|
|
|
252
399
|
```typescript
|
|
@@ -265,29 +412,25 @@ function useRequestId(): UseRequestIdReturn;
|
|
|
265
412
|
- `invalidate`: 使当前请求ID失效(标记为过时)
|
|
266
413
|
- `reset`: 重置请求ID计数器
|
|
267
414
|
|
|
268
|
-
###
|
|
415
|
+
### useLatest
|
|
269
416
|
|
|
270
417
|
```typescript
|
|
271
|
-
function
|
|
418
|
+
function useLatest<T>(value: T): { current: T };
|
|
272
419
|
```
|
|
273
420
|
|
|
274
|
-
|
|
421
|
+
返回包含最新值的 ref 对象的 React hook,用于在异步回调中访问当前值。
|
|
422
|
+
|
|
423
|
+
**类型参数:**
|
|
424
|
+
|
|
425
|
+
- `T`: 值的类型
|
|
275
426
|
|
|
276
427
|
**参数:**
|
|
277
428
|
|
|
278
|
-
- `
|
|
279
|
-
- `fetcher`: 要使用的自定义获取器实例。默认为默认获取器。
|
|
429
|
+
- `value`: 要跟踪的值
|
|
280
430
|
|
|
281
431
|
**返回值:**
|
|
282
432
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
- `status`: 当前状态
|
|
286
|
-
- `loading`: 指示当前是否加载中
|
|
287
|
-
- `result`: 结果值
|
|
288
|
-
- `error`: 错误值
|
|
289
|
-
- `exchange`: FetchExchange 对象
|
|
290
|
-
- `execute`: 执行获取请求的函数
|
|
433
|
+
包含 `current` 属性(包含最新值)的 ref 对象
|
|
291
434
|
|
|
292
435
|
### useKeyStorage
|
|
293
436
|
|
package/dist/core/index.d.ts
CHANGED
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAaA,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAaA,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useExecutePromise.d.ts","sourceRoot":"","sources":["../../src/core/useExecutePromise.ts"],"names":[],"mappings":"AAeA,OAAO,
|
|
1
|
+
{"version":3,"file":"useExecutePromise.d.ts","sourceRoot":"","sources":["../../src/core/useExecutePromise.ts"],"names":[],"mappings":"AAeA,OAAO,EAEL,YAAY,EACZ,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAG3B;;;GAGG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;AAElD;;;GAGG;AACH,MAAM,WAAW,uBAAuB,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CACrD,SAAQ,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1B,wDAAwD;IACxD,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAChE,oDAAoD;IACpD,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EACxD,OAAO,CAAC,EAAE,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,GACrC,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAuD/B"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A React hook that returns a ref containing the latest value, useful for accessing the current value in async callbacks.
|
|
3
|
+
*
|
|
4
|
+
* @template T - The type of the value
|
|
5
|
+
* @param value - The value to track
|
|
6
|
+
* @returns A ref object containing the latest value
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { useLatest } from '@ahoo-wang/fetcher-react';
|
|
11
|
+
*
|
|
12
|
+
* const MyComponent = () => {
|
|
13
|
+
* const [count, setCount] = useState(0);
|
|
14
|
+
* const latestCount = useLatest(count);
|
|
15
|
+
*
|
|
16
|
+
* const handleAsync = async () => {
|
|
17
|
+
* await someAsyncOperation();
|
|
18
|
+
* console.log('Latest count:', latestCount.current); // Always the latest
|
|
19
|
+
* };
|
|
20
|
+
*
|
|
21
|
+
* return (
|
|
22
|
+
* <div>
|
|
23
|
+
* <p>Count: {count}</p>
|
|
24
|
+
* <button onClick={() => setCount(c => c + 1)}>Increment</button>
|
|
25
|
+
* <button onClick={handleAsync}>Async Log</button>
|
|
26
|
+
* </div>
|
|
27
|
+
* );
|
|
28
|
+
* };
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function useLatest<T>(value: T): import('react').MutableRefObject<T>;
|
|
32
|
+
//# sourceMappingURL=useLatest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLatest.d.ts","sourceRoot":"","sources":["../../src/core/useLatest.ts"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,uCAIpC"}
|
|
@@ -17,6 +17,12 @@ export interface PromiseState<R, E = unknown> {
|
|
|
17
17
|
/** The error value */
|
|
18
18
|
error: E | undefined;
|
|
19
19
|
}
|
|
20
|
+
export interface PromiseStateCallbacks<R, E = unknown> {
|
|
21
|
+
/** Callback invoked on success (can be async) */
|
|
22
|
+
onSuccess?: (result: R) => void | Promise<void>;
|
|
23
|
+
/** Callback invoked on error (can be async) */
|
|
24
|
+
onError?: (error: E) => void | Promise<void>;
|
|
25
|
+
}
|
|
20
26
|
/**
|
|
21
27
|
* Options for configuring usePromiseState behavior
|
|
22
28
|
* @template R - The type of result
|
|
@@ -26,17 +32,16 @@ export interface PromiseState<R, E = unknown> {
|
|
|
26
32
|
* const options: UsePromiseStateOptions<string> = {
|
|
27
33
|
* initialStatus: PromiseStatus.IDLE,
|
|
28
34
|
* onSuccess: (result) => console.log('Success:', result),
|
|
29
|
-
* onError: (error) =>
|
|
35
|
+
* onError: async (error) => {
|
|
36
|
+
* await logErrorToServer(error);
|
|
37
|
+
* console.error('Error:', error);
|
|
38
|
+
* },
|
|
30
39
|
* };
|
|
31
40
|
* ```
|
|
32
41
|
*/
|
|
33
|
-
export interface UsePromiseStateOptions<R, E = unknown> {
|
|
42
|
+
export interface UsePromiseStateOptions<R, E = unknown> extends PromiseStateCallbacks<R, E> {
|
|
34
43
|
/** Initial status, defaults to IDLE */
|
|
35
44
|
initialStatus?: PromiseStatus;
|
|
36
|
-
/** Callback invoked on success */
|
|
37
|
-
onSuccess?: (result: R) => void;
|
|
38
|
-
/** Callback invoked on error */
|
|
39
|
-
onError?: (error: E) => void;
|
|
40
45
|
}
|
|
41
46
|
/**
|
|
42
47
|
* Return type for usePromiseState hook
|
|
@@ -46,9 +51,9 @@ export interface UsePromiseStateReturn<R, E = unknown> extends PromiseState<R, E
|
|
|
46
51
|
/** Set status to LOADING */
|
|
47
52
|
setLoading: () => void;
|
|
48
53
|
/** Set status to SUCCESS with result */
|
|
49
|
-
setSuccess: (result: R) => void
|
|
54
|
+
setSuccess: (result: R) => Promise<void>;
|
|
50
55
|
/** Set status to ERROR with error */
|
|
51
|
-
setError: (error: E) => void
|
|
56
|
+
setError: (error: E) => Promise<void>;
|
|
52
57
|
/** Set status to IDLE */
|
|
53
58
|
setIdle: () => void;
|
|
54
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePromiseState.d.ts","sourceRoot":"","sources":["../../src/core/usePromiseState.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"usePromiseState.d.ts","sourceRoot":"","sources":["../../src/core/usePromiseState.ts"],"names":[],"mappings":"AAiBA;;GAEG;AACH,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO;IAC1C,oCAAoC;IACpC,MAAM,EAAE,aAAa,CAAC;IACtB,qCAAqC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,uBAAuB;IACvB,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC;IACtB,sBAAsB;IACtB,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO;IACnD,iDAAiD;IACjD,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,+CAA+C;IAC/C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,sBAAsB,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CACpD,SAAQ,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC;IACnC,uCAAuC;IACvC,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CACnD,SAAQ,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1B,4BAA4B;IAC5B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,wCAAwC;IACxC,UAAU,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,qCAAqC;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,yBAAyB;IACzB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,eAAe,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EACtD,OAAO,CAAC,EAAE,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,GACrC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAqE7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRequestId.d.ts","sourceRoot":"","sources":["../../src/core/useRequestId.ts"],"names":[],"mappings":"AAeA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,wDAAwD;IACxD,QAAQ,EAAE,MAAM,MAAM,CAAC;IACvB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,MAAM,CAAC;IACtB,gDAAgD;IAChD,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,oDAAoD;IACpD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,YAAY,IAAI,kBAAkB,
|
|
1
|
+
{"version":3,"file":"useRequestId.d.ts","sourceRoot":"","sources":["../../src/core/useRequestId.ts"],"names":[],"mappings":"AAeA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,wDAAwD;IACxD,QAAQ,EAAE,MAAM,MAAM,CAAC;IACvB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,MAAM,CAAC;IACtB,gDAAgD;IAChD,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,oDAAoD;IACpD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,YAAY,IAAI,kBAAkB,CA+BjD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFetcher.d.ts","sourceRoot":"","sources":["../../src/fetcher/useFetcher.ts"],"names":[],"mappings":"AAaA,OAAO,EAEL,cAAc,EACd,aAAa,EACb,YAAY,EAEZ,cAAc,EACf,MAAM,oBAAoB,CAAC;AAG5B,OAAO,
|
|
1
|
+
{"version":3,"file":"useFetcher.d.ts","sourceRoot":"","sources":["../../src/fetcher/useFetcher.ts"],"names":[],"mappings":"AAaA,OAAO,EAEL,cAAc,EACd,aAAa,EACb,YAAY,EAEZ,cAAc,EACf,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,YAAY,EAGZ,sBAAsB,EAEvB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAC/C,SAAQ,cAAc,EACpB,cAAc,EACd,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAE,SAAQ,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1E,wEAAwE;IACxE,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,EACvC,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,GAChC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAsExB"}
|