@faasjs/react 0.0.3-beta.99 → 0.0.4-beta.10
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 +126 -16
- package/dist/index.d.mts +11 -6
- package/dist/index.d.ts +11 -6
- package/dist/index.js +79 -56
- package/dist/index.mjs +79 -56
- package/package.json +6 -5
package/README.md
CHANGED
|
@@ -16,23 +16,26 @@ React plugin for FaasJS.
|
|
|
16
16
|
|
|
17
17
|
### Classes
|
|
18
18
|
|
|
19
|
-
- [
|
|
19
|
+
- [ErrorBoundary](classes/ErrorBoundary.md)
|
|
20
20
|
- [Response](classes/Response.md)
|
|
21
21
|
- [ResponseError](classes/ResponseError.md)
|
|
22
22
|
|
|
23
23
|
### Interfaces
|
|
24
24
|
|
|
25
|
-
- [
|
|
26
|
-
- [FaasDataWrapperProps](interfaces/FaasDataWrapperProps.md)
|
|
27
|
-
- [FaasReactClientInstance](interfaces/FaasReactClientInstance.md)
|
|
25
|
+
- [ErrorBoundaryProps](interfaces/ErrorBoundaryProps.md)
|
|
28
26
|
|
|
29
27
|
### Type Aliases
|
|
30
28
|
|
|
29
|
+
- [ErrorChildrenProps](#errorchildrenprops)
|
|
31
30
|
- [FaasAction](#faasaction)
|
|
32
31
|
- [FaasData](#faasdata)
|
|
32
|
+
- [FaasDataInjection](#faasdatainjection)
|
|
33
|
+
- [FaasDataWrapperProps](#faasdatawrapperprops)
|
|
33
34
|
- [FaasParams](#faasparams)
|
|
35
|
+
- [FaasReactClientInstance](#faasreactclientinstance)
|
|
34
36
|
- [Options](#options)
|
|
35
37
|
- [ResponseHeaders](#responseheaders)
|
|
38
|
+
- [useFaasOptions](#usefaasoptions)
|
|
36
39
|
|
|
37
40
|
### Functions
|
|
38
41
|
|
|
@@ -44,6 +47,21 @@ React plugin for FaasJS.
|
|
|
44
47
|
|
|
45
48
|
## Type Aliases
|
|
46
49
|
|
|
50
|
+
### ErrorChildrenProps
|
|
51
|
+
|
|
52
|
+
Ƭ **ErrorChildrenProps**: `Object`
|
|
53
|
+
|
|
54
|
+
#### Type declaration
|
|
55
|
+
|
|
56
|
+
| Name | Type |
|
|
57
|
+
| :------ | :------ |
|
|
58
|
+
| `error?` | `Error` |
|
|
59
|
+
| `errorDescription?` | `string` |
|
|
60
|
+
| `errorMessage?` | `string` |
|
|
61
|
+
| `info?` | `any` |
|
|
62
|
+
|
|
63
|
+
___
|
|
64
|
+
|
|
47
65
|
### FaasAction
|
|
48
66
|
|
|
49
67
|
Ƭ **FaasAction**: `FaasActionPaths` \| `Record`<`string`, `any`\>
|
|
@@ -62,6 +80,62 @@ ___
|
|
|
62
80
|
|
|
63
81
|
___
|
|
64
82
|
|
|
83
|
+
### FaasDataInjection
|
|
84
|
+
|
|
85
|
+
Ƭ **FaasDataInjection**<`Data`\>: `Object`
|
|
86
|
+
|
|
87
|
+
Injects FaasData props.
|
|
88
|
+
|
|
89
|
+
#### Type parameters
|
|
90
|
+
|
|
91
|
+
| Name | Type |
|
|
92
|
+
| :------ | :------ |
|
|
93
|
+
| `Data` | `any` |
|
|
94
|
+
|
|
95
|
+
#### Type declaration
|
|
96
|
+
|
|
97
|
+
| Name | Type |
|
|
98
|
+
| :------ | :------ |
|
|
99
|
+
| `action` | `string` \| `any` |
|
|
100
|
+
| `data` | `Data` |
|
|
101
|
+
| `error` | `any` |
|
|
102
|
+
| `loading` | `boolean` |
|
|
103
|
+
| `params` | `Record`<`string`, `any`\> |
|
|
104
|
+
| `promise` | `Promise`<`Response`<`Data`\>\> |
|
|
105
|
+
| `reloadTimes` | `number` |
|
|
106
|
+
| `setData` | `React.Dispatch`<`React.SetStateAction`<`Data`\>\> |
|
|
107
|
+
| `setError` | `React.Dispatch`<`React.SetStateAction`<`any`\>\> |
|
|
108
|
+
| `setLoading` | `React.Dispatch`<`React.SetStateAction`<`boolean`\>\> |
|
|
109
|
+
| `setPromise` | `React.Dispatch`<`React.SetStateAction`<`Promise`<`Response`<`Data`\>\>\>\> |
|
|
110
|
+
| `reload` | (`params?`: `Record`<`string`, `any`\>) => `Promise`<`any`\> |
|
|
111
|
+
|
|
112
|
+
___
|
|
113
|
+
|
|
114
|
+
### FaasDataWrapperProps
|
|
115
|
+
|
|
116
|
+
Ƭ **FaasDataWrapperProps**<`PathOrData`\>: `Object`
|
|
117
|
+
|
|
118
|
+
#### Type parameters
|
|
119
|
+
|
|
120
|
+
| Name | Type |
|
|
121
|
+
| :------ | :------ |
|
|
122
|
+
| `PathOrData` | extends `FaasAction` |
|
|
123
|
+
|
|
124
|
+
#### Type declaration
|
|
125
|
+
|
|
126
|
+
| Name | Type | Description |
|
|
127
|
+
| :------ | :------ | :------ |
|
|
128
|
+
| `action` | `string` | - |
|
|
129
|
+
| `children?` | `React.ReactElement`<`Partial`<[`FaasDataInjection`](#faasdatainjection)\>\> | - |
|
|
130
|
+
| `data?` | `FaasData`<`PathOrData`\> | use custom data, should work with setData |
|
|
131
|
+
| `fallback?` | `JSX.Element` \| ``false`` | - |
|
|
132
|
+
| `params?` | `FaasParams`<`PathOrData`\> | - |
|
|
133
|
+
| `setData?` | `React.Dispatch`<`React.SetStateAction`<`FaasData`<`PathOrData`\>\>\> | use custom setData, should work with data |
|
|
134
|
+
| `onDataChange?` | (`args`: [`FaasDataInjection`](#faasdatainjection)<`FaasData`<`PathOrData`\>\>) => `void` | - |
|
|
135
|
+
| `render?` | (`args`: [`FaasDataInjection`](#faasdatainjection)<`FaasData`<`PathOrData`\>\>) => `Element` \| `Element`[] | - |
|
|
136
|
+
|
|
137
|
+
___
|
|
138
|
+
|
|
65
139
|
### FaasParams
|
|
66
140
|
|
|
67
141
|
Ƭ **FaasParams**<`T`\>: `T` extends `FaasActionPaths` ? `FaasActions`[`T`][``"Params"``] : `any`
|
|
@@ -74,10 +148,27 @@ ___
|
|
|
74
148
|
|
|
75
149
|
___
|
|
76
150
|
|
|
151
|
+
### FaasReactClientInstance
|
|
152
|
+
|
|
153
|
+
Ƭ **FaasReactClientInstance**: `Object`
|
|
154
|
+
|
|
155
|
+
#### Type declaration
|
|
156
|
+
|
|
157
|
+
| Name | Type |
|
|
158
|
+
| :------ | :------ |
|
|
159
|
+
| `faas` | <PathOrData\>(`action`: `string` \| `PathOrData`, `params`: `FaasParams`<`PathOrData`\>) => `Promise`<`Response`<`FaasData`<`PathOrData`\>\>\> |
|
|
160
|
+
| `id` | `string` |
|
|
161
|
+
| `useFaas` | <PathOrData\>(`action`: `string` \| `PathOrData`, `defaultParams`: `FaasParams`<`PathOrData`\>, `options?`: [`useFaasOptions`](#usefaasoptions)<`PathOrData`\>) => [`FaasDataInjection`](#faasdatainjection)<`FaasData`<`PathOrData`\>\> |
|
|
162
|
+
| `FaasDataWrapper` | <PathOrData\>(`props`: [`FaasDataWrapperProps`](#faasdatawrapperprops)<`PathOrData`\>) => `Element` |
|
|
163
|
+
|
|
164
|
+
___
|
|
165
|
+
|
|
77
166
|
### Options
|
|
78
167
|
|
|
79
168
|
Ƭ **Options**: `RequestInit` & { `beforeRequest?`: (`{
|
|
80
|
-
action,
|
|
169
|
+
action,
|
|
170
|
+
params,
|
|
171
|
+
options,
|
|
81
172
|
}`: { `action`: `string` ; `options`: [`Options`](#options) ; `params`: `Record`<`string`, `any`\> }) => `Promise`<`void`\> \| `void` ; `headers?`: { `[key: string]`: `string`; } ; `request?`: <PathOrData\>(`url`: `string`, `options`: [`Options`](#options)) => `Promise`<[`Response`](classes/Response.md)<[`FaasData`](#faasdata)<`PathOrData`\>\>\> }
|
|
82
173
|
|
|
83
174
|
___
|
|
@@ -90,6 +181,28 @@ ___
|
|
|
90
181
|
|
|
91
182
|
▪ [key: `string`]: `string`
|
|
92
183
|
|
|
184
|
+
___
|
|
185
|
+
|
|
186
|
+
### useFaasOptions
|
|
187
|
+
|
|
188
|
+
Ƭ **useFaasOptions**<`PathOrData`\>: `Object`
|
|
189
|
+
|
|
190
|
+
#### Type parameters
|
|
191
|
+
|
|
192
|
+
| Name | Type |
|
|
193
|
+
| :------ | :------ |
|
|
194
|
+
| `PathOrData` | extends `FaasAction` |
|
|
195
|
+
|
|
196
|
+
#### Type declaration
|
|
197
|
+
|
|
198
|
+
| Name | Type | Description |
|
|
199
|
+
| :------ | :------ | :------ |
|
|
200
|
+
| `data?` | `FaasData`<`PathOrData`\> | - |
|
|
201
|
+
| `debounce?` | `number` | send the last request after milliseconds |
|
|
202
|
+
| `params?` | `FaasParams`<`PathOrData`\> | - |
|
|
203
|
+
| `setData?` | `React.Dispatch`<`React.SetStateAction`<`FaasData`<`PathOrData`\>\>\> | - |
|
|
204
|
+
| `skip?` | `boolean` \| (`params`: `FaasParams`<`PathOrData`\>) => `boolean` | if skip is true, will not send request |
|
|
205
|
+
|
|
93
206
|
## Functions
|
|
94
207
|
|
|
95
208
|
### FaasDataWrapper
|
|
@@ -108,7 +221,7 @@ A data wrapper for react components
|
|
|
108
221
|
|
|
109
222
|
| Name | Type |
|
|
110
223
|
| :------ | :------ |
|
|
111
|
-
| `props` | [`FaasDataWrapperProps`](
|
|
224
|
+
| `props` | [`FaasDataWrapperProps`](#faasdatawrapperprops)<`PathOrData`\> |
|
|
112
225
|
|
|
113
226
|
#### Returns
|
|
114
227
|
|
|
@@ -129,7 +242,7 @@ ___
|
|
|
129
242
|
|
|
130
243
|
### FaasReactClient
|
|
131
244
|
|
|
132
|
-
▸ **FaasReactClient**(`«destructured»`): [`FaasReactClientInstance`](
|
|
245
|
+
▸ **FaasReactClient**(`«destructured»`): [`FaasReactClientInstance`](#faasreactclientinstance)
|
|
133
246
|
|
|
134
247
|
Before use faas, you should initialize a FaasReactClient.
|
|
135
248
|
|
|
@@ -144,7 +257,7 @@ Before use faas, you should initialize a FaasReactClient.
|
|
|
144
257
|
|
|
145
258
|
#### Returns
|
|
146
259
|
|
|
147
|
-
[`FaasReactClientInstance`](
|
|
260
|
+
[`FaasReactClientInstance`](#faasreactclientinstance)
|
|
148
261
|
|
|
149
262
|
```ts
|
|
150
263
|
const client = FaasReactClient({
|
|
@@ -187,7 +300,7 @@ ___
|
|
|
187
300
|
|
|
188
301
|
### getClient
|
|
189
302
|
|
|
190
|
-
▸ **getClient**(`domain?`): [`FaasReactClientInstance`](
|
|
303
|
+
▸ **getClient**(`domain?`): [`FaasReactClientInstance`](#faasreactclientinstance)
|
|
191
304
|
|
|
192
305
|
Get FaasReactClient instance
|
|
193
306
|
|
|
@@ -199,7 +312,7 @@ Get FaasReactClient instance
|
|
|
199
312
|
|
|
200
313
|
#### Returns
|
|
201
314
|
|
|
202
|
-
[`FaasReactClientInstance`](
|
|
315
|
+
[`FaasReactClientInstance`](#faasreactclientinstance)
|
|
203
316
|
|
|
204
317
|
```ts
|
|
205
318
|
getClient()
|
|
@@ -211,7 +324,7 @@ ___
|
|
|
211
324
|
|
|
212
325
|
### useFaas
|
|
213
326
|
|
|
214
|
-
▸ **useFaas**<`PathOrData`\>(`action`, `defaultParams`, `options?`): [`FaasDataInjection`](
|
|
327
|
+
▸ **useFaas**<`PathOrData`\>(`action`, `defaultParams`, `options?`): [`FaasDataInjection`](#faasdatainjection)<[`FaasData`](#faasdata)<`PathOrData`\>\>
|
|
215
328
|
|
|
216
329
|
Request faas server with React hook
|
|
217
330
|
|
|
@@ -227,14 +340,11 @@ Request faas server with React hook
|
|
|
227
340
|
| :------ | :------ | :------ |
|
|
228
341
|
| `action` | `string` \| `PathOrData` | {string} action name |
|
|
229
342
|
| `defaultParams` | [`FaasParams`](#faasparams)<`PathOrData`\> | {object} initial action params |
|
|
230
|
-
| `options?` | `
|
|
231
|
-
| `options.data?` | [`FaasData`](#faasdata)<`PathOrData`\> | - |
|
|
232
|
-
| `options.setData?` | `Dispatch`<`SetStateAction`<[`FaasData`](#faasdata)<`PathOrData`\>\>\> | - |
|
|
233
|
-
| `options.skip?` | `boolean` | - |
|
|
343
|
+
| `options?` | [`useFaasOptions`](#usefaasoptions)<`PathOrData`\> | - |
|
|
234
344
|
|
|
235
345
|
#### Returns
|
|
236
346
|
|
|
237
|
-
[`FaasDataInjection`](
|
|
347
|
+
[`FaasDataInjection`](#faasdatainjection)<[`FaasData`](#faasdata)<`PathOrData`\>\>
|
|
238
348
|
|
|
239
349
|
```ts
|
|
240
350
|
function Post ({ id }) {
|
package/dist/index.d.mts
CHANGED
|
@@ -14,9 +14,11 @@ type FaasReactClientInstance = {
|
|
|
14
14
|
useFaas: <PathOrData extends FaasAction>(
|
|
15
15
|
action: string | PathOrData,
|
|
16
16
|
defaultParams: FaasParams<PathOrData>,
|
|
17
|
-
options?: useFaasOptions<PathOrData
|
|
17
|
+
options?: useFaasOptions<PathOrData>
|
|
18
18
|
) => FaasDataInjection<FaasData<PathOrData>>
|
|
19
|
-
FaasDataWrapper<PathOrData extends FaasAction>(
|
|
19
|
+
FaasDataWrapper<PathOrData extends FaasAction>(
|
|
20
|
+
props: FaasDataWrapperProps<PathOrData>
|
|
21
|
+
): JSX.Element
|
|
20
22
|
}
|
|
21
23
|
|
|
22
24
|
/**
|
|
@@ -30,7 +32,7 @@ type FaasDataInjection<Data = any> = {
|
|
|
30
32
|
data: Data
|
|
31
33
|
error: any
|
|
32
34
|
promise: Promise<Response<Data>>
|
|
33
|
-
reload(params?: Record<string, any>): Promise<Response<Data
|
|
35
|
+
reload(params?: Record<string, any>): Promise<Response<Data>>
|
|
34
36
|
setData: React.Dispatch<React.SetStateAction<Data>>
|
|
35
37
|
setLoading: React.Dispatch<React.SetStateAction<boolean>>
|
|
36
38
|
setPromise: React.Dispatch<React.SetStateAction<Promise<Response<Data>>>>
|
|
@@ -38,7 +40,9 @@ type FaasDataInjection<Data = any> = {
|
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
type FaasDataWrapperProps<PathOrData extends FaasAction> = {
|
|
41
|
-
render?(
|
|
43
|
+
render?(
|
|
44
|
+
args: FaasDataInjection<FaasData<PathOrData>>
|
|
45
|
+
): JSX.Element | JSX.Element[]
|
|
42
46
|
children?: React.ReactElement<Partial<FaasDataInjection>>
|
|
43
47
|
fallback?: JSX.Element | false
|
|
44
48
|
action: string
|
|
@@ -54,7 +58,8 @@ type useFaasOptions<PathOrData extends FaasAction> = {
|
|
|
54
58
|
params?: FaasParams<PathOrData>
|
|
55
59
|
data?: FaasData<PathOrData>
|
|
56
60
|
setData?: React.Dispatch<React.SetStateAction<FaasData<PathOrData>>>
|
|
57
|
-
skip
|
|
61
|
+
/** if skip is true, will not send request */
|
|
62
|
+
skip?: boolean | ((params: FaasParams<PathOrData>) => boolean)
|
|
58
63
|
/** send the last request after milliseconds */
|
|
59
64
|
debounce?: number
|
|
60
65
|
}
|
|
@@ -72,7 +77,7 @@ type useFaasOptions<PathOrData extends FaasAction> = {
|
|
|
72
77
|
* })
|
|
73
78
|
* ```
|
|
74
79
|
*/
|
|
75
|
-
declare function FaasReactClient({ domain, options, onError }: {
|
|
80
|
+
declare function FaasReactClient({ domain, options, onError, }: {
|
|
76
81
|
domain: string;
|
|
77
82
|
options?: Options;
|
|
78
83
|
onError?: (action: string, params: Record<string, any>) => (res: ResponseError) => Promise<void>;
|
package/dist/index.d.ts
CHANGED
|
@@ -14,9 +14,11 @@ type FaasReactClientInstance = {
|
|
|
14
14
|
useFaas: <PathOrData extends FaasAction>(
|
|
15
15
|
action: string | PathOrData,
|
|
16
16
|
defaultParams: FaasParams<PathOrData>,
|
|
17
|
-
options?: useFaasOptions<PathOrData
|
|
17
|
+
options?: useFaasOptions<PathOrData>
|
|
18
18
|
) => FaasDataInjection<FaasData<PathOrData>>
|
|
19
|
-
FaasDataWrapper<PathOrData extends FaasAction>(
|
|
19
|
+
FaasDataWrapper<PathOrData extends FaasAction>(
|
|
20
|
+
props: FaasDataWrapperProps<PathOrData>
|
|
21
|
+
): JSX.Element
|
|
20
22
|
}
|
|
21
23
|
|
|
22
24
|
/**
|
|
@@ -30,7 +32,7 @@ type FaasDataInjection<Data = any> = {
|
|
|
30
32
|
data: Data
|
|
31
33
|
error: any
|
|
32
34
|
promise: Promise<Response<Data>>
|
|
33
|
-
reload(params?: Record<string, any>): Promise<Response<Data
|
|
35
|
+
reload(params?: Record<string, any>): Promise<Response<Data>>
|
|
34
36
|
setData: React.Dispatch<React.SetStateAction<Data>>
|
|
35
37
|
setLoading: React.Dispatch<React.SetStateAction<boolean>>
|
|
36
38
|
setPromise: React.Dispatch<React.SetStateAction<Promise<Response<Data>>>>
|
|
@@ -38,7 +40,9 @@ type FaasDataInjection<Data = any> = {
|
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
type FaasDataWrapperProps<PathOrData extends FaasAction> = {
|
|
41
|
-
render?(
|
|
43
|
+
render?(
|
|
44
|
+
args: FaasDataInjection<FaasData<PathOrData>>
|
|
45
|
+
): JSX.Element | JSX.Element[]
|
|
42
46
|
children?: React.ReactElement<Partial<FaasDataInjection>>
|
|
43
47
|
fallback?: JSX.Element | false
|
|
44
48
|
action: string
|
|
@@ -54,7 +58,8 @@ type useFaasOptions<PathOrData extends FaasAction> = {
|
|
|
54
58
|
params?: FaasParams<PathOrData>
|
|
55
59
|
data?: FaasData<PathOrData>
|
|
56
60
|
setData?: React.Dispatch<React.SetStateAction<FaasData<PathOrData>>>
|
|
57
|
-
skip
|
|
61
|
+
/** if skip is true, will not send request */
|
|
62
|
+
skip?: boolean | ((params: FaasParams<PathOrData>) => boolean)
|
|
58
63
|
/** send the last request after milliseconds */
|
|
59
64
|
debounce?: number
|
|
60
65
|
}
|
|
@@ -72,7 +77,7 @@ type useFaasOptions<PathOrData extends FaasAction> = {
|
|
|
72
77
|
* })
|
|
73
78
|
* ```
|
|
74
79
|
*/
|
|
75
|
-
declare function FaasReactClient({ domain, options, onError }: {
|
|
80
|
+
declare function FaasReactClient({ domain, options, onError, }: {
|
|
76
81
|
domain: string;
|
|
77
82
|
options?: Options;
|
|
78
83
|
onError?: (action: string, params: Record<string, any>) => (res: ResponseError) => Promise<void>;
|
package/dist/index.js
CHANGED
|
@@ -30,59 +30,76 @@ function FaasReactClient({
|
|
|
30
30
|
const [params, setParams] = react.useState(defaultParams);
|
|
31
31
|
const [reloadTimes, setReloadTimes] = react.useState(0);
|
|
32
32
|
const [fails, setFails] = react.useState(0);
|
|
33
|
-
react.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
33
|
+
const [skip, setSkip] = react.useState(
|
|
34
|
+
typeof options2.skip === "function" ? options2.skip(defaultParams) : options2.skip
|
|
35
|
+
);
|
|
36
|
+
react.useEffect(() => {
|
|
37
|
+
setSkip(
|
|
38
|
+
typeof options2.skip === "function" ? options2.skip(params) : options2.skip
|
|
39
|
+
);
|
|
40
|
+
}, [
|
|
41
|
+
typeof options2.skip === "function" ? JSON.stringify(params) : options2.skip
|
|
42
|
+
]);
|
|
43
|
+
react.useEffect(
|
|
44
|
+
function() {
|
|
45
|
+
if (JSON.stringify(defaultParams) !== JSON.stringify(params)) {
|
|
46
|
+
setParams(defaultParams);
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
[JSON.stringify(defaultParams)]
|
|
50
|
+
);
|
|
51
|
+
react.useEffect(
|
|
52
|
+
function() {
|
|
53
|
+
if (!action || skip) {
|
|
54
|
+
setLoading(false);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
setLoading(true);
|
|
58
|
+
const controller = new AbortController();
|
|
59
|
+
function send() {
|
|
60
|
+
const request = client.action(
|
|
61
|
+
action,
|
|
62
|
+
options2.params || params,
|
|
63
|
+
{ signal: controller.signal }
|
|
64
|
+
);
|
|
65
|
+
setPromise(request);
|
|
66
|
+
request.then(
|
|
67
|
+
(r) => (options2 == null ? void 0 : options2.setData) ? options2.setData(r.data) : setData(r.data)
|
|
68
|
+
).catch(async (e) => {
|
|
69
|
+
if ((e == null ? void 0 : e.message) === "The user aborted a request." || (e == null ? void 0 : e.message) === "Aborted")
|
|
70
|
+
return;
|
|
71
|
+
if (!fails && typeof (e == null ? void 0 : e.message) === "string" && e.message.indexOf("Failed to fetch") >= 0) {
|
|
72
|
+
console.warn(`FaasReactClient: ${e.message} retry...`);
|
|
73
|
+
setFails(1);
|
|
74
|
+
return send();
|
|
61
75
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
76
|
+
if (onError)
|
|
77
|
+
try {
|
|
78
|
+
await onError(action, params)(e);
|
|
79
|
+
} catch (error2) {
|
|
80
|
+
setError(error2);
|
|
81
|
+
}
|
|
82
|
+
else
|
|
83
|
+
setError(e);
|
|
84
|
+
return Promise.reject(e);
|
|
85
|
+
}).finally(() => setLoading(false));
|
|
86
|
+
}
|
|
87
|
+
if (options2 == null ? void 0 : options2.debounce) {
|
|
88
|
+
const timeout = setTimeout(send, options2.debounce);
|
|
89
|
+
return () => {
|
|
90
|
+
clearTimeout(timeout);
|
|
91
|
+
controller.abort();
|
|
92
|
+
setLoading(false);
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
send();
|
|
69
96
|
return () => {
|
|
70
|
-
clearTimeout(timeout);
|
|
71
97
|
controller.abort();
|
|
72
98
|
setLoading(false);
|
|
73
99
|
};
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
controller.abort();
|
|
78
|
-
setLoading(false);
|
|
79
|
-
};
|
|
80
|
-
}, [
|
|
81
|
-
action,
|
|
82
|
-
JSON.stringify(options2.params || params),
|
|
83
|
-
reloadTimes,
|
|
84
|
-
options2.skip
|
|
85
|
-
]);
|
|
100
|
+
},
|
|
101
|
+
[action, JSON.stringify(options2.params || params), reloadTimes, skip]
|
|
102
|
+
);
|
|
86
103
|
return {
|
|
87
104
|
action,
|
|
88
105
|
params,
|
|
@@ -122,14 +139,20 @@ function FaasReactClient({
|
|
|
122
139
|
setData
|
|
123
140
|
});
|
|
124
141
|
const [loaded, setLoaded] = react.useState(false);
|
|
125
|
-
react.useEffect(
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
142
|
+
react.useEffect(
|
|
143
|
+
function() {
|
|
144
|
+
if (!loaded && !request.loading)
|
|
145
|
+
setLoaded(true);
|
|
146
|
+
},
|
|
147
|
+
[request.loading]
|
|
148
|
+
);
|
|
149
|
+
react.useEffect(
|
|
150
|
+
function() {
|
|
151
|
+
if (onDataChange)
|
|
152
|
+
onDataChange(request);
|
|
153
|
+
},
|
|
154
|
+
[JSON.stringify(request.data)]
|
|
155
|
+
);
|
|
133
156
|
if (loaded) {
|
|
134
157
|
if (children)
|
|
135
158
|
return react.cloneElement(children, request);
|
package/dist/index.mjs
CHANGED
|
@@ -28,59 +28,76 @@ function FaasReactClient({
|
|
|
28
28
|
const [params, setParams] = useState(defaultParams);
|
|
29
29
|
const [reloadTimes, setReloadTimes] = useState(0);
|
|
30
30
|
const [fails, setFails] = useState(0);
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
31
|
+
const [skip, setSkip] = useState(
|
|
32
|
+
typeof options2.skip === "function" ? options2.skip(defaultParams) : options2.skip
|
|
33
|
+
);
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
setSkip(
|
|
36
|
+
typeof options2.skip === "function" ? options2.skip(params) : options2.skip
|
|
37
|
+
);
|
|
38
|
+
}, [
|
|
39
|
+
typeof options2.skip === "function" ? JSON.stringify(params) : options2.skip
|
|
40
|
+
]);
|
|
41
|
+
useEffect(
|
|
42
|
+
function() {
|
|
43
|
+
if (JSON.stringify(defaultParams) !== JSON.stringify(params)) {
|
|
44
|
+
setParams(defaultParams);
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
[JSON.stringify(defaultParams)]
|
|
48
|
+
);
|
|
49
|
+
useEffect(
|
|
50
|
+
function() {
|
|
51
|
+
if (!action || skip) {
|
|
52
|
+
setLoading(false);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
setLoading(true);
|
|
56
|
+
const controller = new AbortController();
|
|
57
|
+
function send() {
|
|
58
|
+
const request = client.action(
|
|
59
|
+
action,
|
|
60
|
+
options2.params || params,
|
|
61
|
+
{ signal: controller.signal }
|
|
62
|
+
);
|
|
63
|
+
setPromise(request);
|
|
64
|
+
request.then(
|
|
65
|
+
(r) => (options2 == null ? void 0 : options2.setData) ? options2.setData(r.data) : setData(r.data)
|
|
66
|
+
).catch(async (e) => {
|
|
67
|
+
if ((e == null ? void 0 : e.message) === "The user aborted a request." || (e == null ? void 0 : e.message) === "Aborted")
|
|
68
|
+
return;
|
|
69
|
+
if (!fails && typeof (e == null ? void 0 : e.message) === "string" && e.message.indexOf("Failed to fetch") >= 0) {
|
|
70
|
+
console.warn(`FaasReactClient: ${e.message} retry...`);
|
|
71
|
+
setFails(1);
|
|
72
|
+
return send();
|
|
59
73
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
74
|
+
if (onError)
|
|
75
|
+
try {
|
|
76
|
+
await onError(action, params)(e);
|
|
77
|
+
} catch (error2) {
|
|
78
|
+
setError(error2);
|
|
79
|
+
}
|
|
80
|
+
else
|
|
81
|
+
setError(e);
|
|
82
|
+
return Promise.reject(e);
|
|
83
|
+
}).finally(() => setLoading(false));
|
|
84
|
+
}
|
|
85
|
+
if (options2 == null ? void 0 : options2.debounce) {
|
|
86
|
+
const timeout = setTimeout(send, options2.debounce);
|
|
87
|
+
return () => {
|
|
88
|
+
clearTimeout(timeout);
|
|
89
|
+
controller.abort();
|
|
90
|
+
setLoading(false);
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
send();
|
|
67
94
|
return () => {
|
|
68
|
-
clearTimeout(timeout);
|
|
69
95
|
controller.abort();
|
|
70
96
|
setLoading(false);
|
|
71
97
|
};
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
controller.abort();
|
|
76
|
-
setLoading(false);
|
|
77
|
-
};
|
|
78
|
-
}, [
|
|
79
|
-
action,
|
|
80
|
-
JSON.stringify(options2.params || params),
|
|
81
|
-
reloadTimes,
|
|
82
|
-
options2.skip
|
|
83
|
-
]);
|
|
98
|
+
},
|
|
99
|
+
[action, JSON.stringify(options2.params || params), reloadTimes, skip]
|
|
100
|
+
);
|
|
84
101
|
return {
|
|
85
102
|
action,
|
|
86
103
|
params,
|
|
@@ -120,14 +137,20 @@ function FaasReactClient({
|
|
|
120
137
|
setData
|
|
121
138
|
});
|
|
122
139
|
const [loaded, setLoaded] = useState(false);
|
|
123
|
-
useEffect(
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
140
|
+
useEffect(
|
|
141
|
+
function() {
|
|
142
|
+
if (!loaded && !request.loading)
|
|
143
|
+
setLoaded(true);
|
|
144
|
+
},
|
|
145
|
+
[request.loading]
|
|
146
|
+
);
|
|
147
|
+
useEffect(
|
|
148
|
+
function() {
|
|
149
|
+
if (onDataChange)
|
|
150
|
+
onDataChange(request);
|
|
151
|
+
},
|
|
152
|
+
[JSON.stringify(request.data)]
|
|
153
|
+
);
|
|
131
154
|
if (loaded) {
|
|
132
155
|
if (children)
|
|
133
156
|
return cloneElement(children, request);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@faasjs/react",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4-beta.10",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -22,16 +22,17 @@
|
|
|
22
22
|
"dist"
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@faasjs/browser": "0.0.
|
|
25
|
+
"@faasjs/browser": "0.0.4-beta.10"
|
|
26
26
|
},
|
|
27
27
|
"peerDependencies": {
|
|
28
28
|
"react": "*"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@types/react": "*"
|
|
31
|
+
"@types/react": "*",
|
|
32
|
+
"react": "*"
|
|
32
33
|
},
|
|
33
34
|
"engines": {
|
|
34
|
-
"npm": ">=
|
|
35
|
-
"node": ">=
|
|
35
|
+
"npm": ">=9.0.0",
|
|
36
|
+
"node": ">=18.0.0"
|
|
36
37
|
}
|
|
37
38
|
}
|