@faasjs/react 1.5.0 → 1.7.0
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 +1 -0
- package/dist/index.d.mts +12 -3
- package/dist/index.d.ts +12 -3
- package/dist/index.js +52 -33
- package/dist/index.mjs +53 -35
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -70,5 +70,6 @@ const client = FaasReactClient({
|
|
|
70
70
|
- [faas](functions/faas.md)
|
|
71
71
|
- [getClient](functions/getClient.md)
|
|
72
72
|
- [signal](functions/signal.md)
|
|
73
|
+
- [useConstant](functions/useConstant.md)
|
|
73
74
|
- [useFaas](functions/useFaas.md)
|
|
74
75
|
- [useSignalState](functions/useSignalState.md)
|
package/dist/index.d.mts
CHANGED
|
@@ -8,6 +8,11 @@ import * as _preact_signals_core from '@preact/signals-core';
|
|
|
8
8
|
export { batch, computed, effect, signal as originSignal } from '@preact/signals-react';
|
|
9
9
|
export { useSignal as originUseSignal, useComputed, useSignalEffect, useSignals } from '@preact/signals-react/runtime';
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Returns a constant value that is created by the given function.
|
|
13
|
+
*/
|
|
14
|
+
declare function useConstant<T>(fn: () => T): T;
|
|
15
|
+
|
|
11
16
|
type FaasReactClientInstance = {
|
|
12
17
|
id: string
|
|
13
18
|
faas: <PathOrData extends FaasAction>(
|
|
@@ -35,7 +40,7 @@ type FaasDataInjection<Data = any> = {
|
|
|
35
40
|
data: Data
|
|
36
41
|
error: any
|
|
37
42
|
promise: Promise<Response<Data>>
|
|
38
|
-
reload(params?: Record<string, any>):
|
|
43
|
+
reload(params?: Record<string, any>): void
|
|
39
44
|
setData: React.Dispatch<React.SetStateAction<Data>>
|
|
40
45
|
setLoading: React.Dispatch<React.SetStateAction<boolean>>
|
|
41
46
|
setPromise: React.Dispatch<React.SetStateAction<Promise<Response<Data>>>>
|
|
@@ -149,6 +154,9 @@ declare function useFaas<PathOrData extends FaasAction$1>(action: string | PathO
|
|
|
149
154
|
* ```
|
|
150
155
|
*/
|
|
151
156
|
declare function FaasDataWrapper<PathOrData extends FaasAction$1>(props: FaasDataWrapperProps<PathOrData>): JSX.Element;
|
|
157
|
+
declare namespace FaasDataWrapper {
|
|
158
|
+
var whyDidYouRender: boolean;
|
|
159
|
+
}
|
|
152
160
|
|
|
153
161
|
interface ErrorBoundaryProps {
|
|
154
162
|
children?: ReactNode;
|
|
@@ -167,9 +175,10 @@ declare class ErrorBoundary extends Component<ErrorBoundaryProps, {
|
|
|
167
175
|
componentStack?: string;
|
|
168
176
|
};
|
|
169
177
|
}> {
|
|
178
|
+
static whyDidYouRender: boolean;
|
|
170
179
|
constructor(props: ErrorBoundaryProps);
|
|
171
180
|
componentDidCatch(error: Error | null, info: any): void;
|
|
172
|
-
render(): string | number | boolean | react_jsx_runtime.JSX.Element
|
|
181
|
+
render(): string | number | boolean | Iterable<ReactNode> | react_jsx_runtime.JSX.Element;
|
|
173
182
|
}
|
|
174
183
|
|
|
175
184
|
type SignalOptions = {
|
|
@@ -212,4 +221,4 @@ declare function signal<T = any>(initialValue: any, options?: SignalOptions): _p
|
|
|
212
221
|
*/
|
|
213
222
|
declare function useSignalState<T = any>(initialValue: T, options?: SignalOptions): readonly [T, (changes: SetStateAction<T>) => void];
|
|
214
223
|
|
|
215
|
-
export { ErrorBoundary, type ErrorBoundaryProps, type ErrorChildrenProps, type FaasDataInjection, FaasDataWrapper, type FaasDataWrapperProps, FaasReactClient, type FaasReactClientInstance, type FaasReactClientOptions, type SignalOptions, faas, getClient, signal, useFaas, type useFaasOptions, useSignalState };
|
|
224
|
+
export { ErrorBoundary, type ErrorBoundaryProps, type ErrorChildrenProps, type FaasDataInjection, FaasDataWrapper, type FaasDataWrapperProps, FaasReactClient, type FaasReactClientInstance, type FaasReactClientOptions, type SignalOptions, faas, getClient, signal, useConstant, useFaas, type useFaasOptions, useSignalState };
|
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,11 @@ import * as _preact_signals_core from '@preact/signals-core';
|
|
|
8
8
|
export { batch, computed, effect, signal as originSignal } from '@preact/signals-react';
|
|
9
9
|
export { useSignal as originUseSignal, useComputed, useSignalEffect, useSignals } from '@preact/signals-react/runtime';
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Returns a constant value that is created by the given function.
|
|
13
|
+
*/
|
|
14
|
+
declare function useConstant<T>(fn: () => T): T;
|
|
15
|
+
|
|
11
16
|
type FaasReactClientInstance = {
|
|
12
17
|
id: string
|
|
13
18
|
faas: <PathOrData extends FaasAction>(
|
|
@@ -35,7 +40,7 @@ type FaasDataInjection<Data = any> = {
|
|
|
35
40
|
data: Data
|
|
36
41
|
error: any
|
|
37
42
|
promise: Promise<Response<Data>>
|
|
38
|
-
reload(params?: Record<string, any>):
|
|
43
|
+
reload(params?: Record<string, any>): void
|
|
39
44
|
setData: React.Dispatch<React.SetStateAction<Data>>
|
|
40
45
|
setLoading: React.Dispatch<React.SetStateAction<boolean>>
|
|
41
46
|
setPromise: React.Dispatch<React.SetStateAction<Promise<Response<Data>>>>
|
|
@@ -149,6 +154,9 @@ declare function useFaas<PathOrData extends FaasAction$1>(action: string | PathO
|
|
|
149
154
|
* ```
|
|
150
155
|
*/
|
|
151
156
|
declare function FaasDataWrapper<PathOrData extends FaasAction$1>(props: FaasDataWrapperProps<PathOrData>): JSX.Element;
|
|
157
|
+
declare namespace FaasDataWrapper {
|
|
158
|
+
var whyDidYouRender: boolean;
|
|
159
|
+
}
|
|
152
160
|
|
|
153
161
|
interface ErrorBoundaryProps {
|
|
154
162
|
children?: ReactNode;
|
|
@@ -167,9 +175,10 @@ declare class ErrorBoundary extends Component<ErrorBoundaryProps, {
|
|
|
167
175
|
componentStack?: string;
|
|
168
176
|
};
|
|
169
177
|
}> {
|
|
178
|
+
static whyDidYouRender: boolean;
|
|
170
179
|
constructor(props: ErrorBoundaryProps);
|
|
171
180
|
componentDidCatch(error: Error | null, info: any): void;
|
|
172
|
-
render(): string | number | boolean | react_jsx_runtime.JSX.Element
|
|
181
|
+
render(): string | number | boolean | Iterable<ReactNode> | react_jsx_runtime.JSX.Element;
|
|
173
182
|
}
|
|
174
183
|
|
|
175
184
|
type SignalOptions = {
|
|
@@ -212,4 +221,4 @@ declare function signal<T = any>(initialValue: any, options?: SignalOptions): _p
|
|
|
212
221
|
*/
|
|
213
222
|
declare function useSignalState<T = any>(initialValue: T, options?: SignalOptions): readonly [T, (changes: SetStateAction<T>) => void];
|
|
214
223
|
|
|
215
|
-
export { ErrorBoundary, type ErrorBoundaryProps, type ErrorChildrenProps, type FaasDataInjection, FaasDataWrapper, type FaasDataWrapperProps, FaasReactClient, type FaasReactClientInstance, type FaasReactClientOptions, type SignalOptions, faas, getClient, signal, useFaas, type useFaasOptions, useSignalState };
|
|
224
|
+
export { ErrorBoundary, type ErrorBoundaryProps, type ErrorChildrenProps, type FaasDataInjection, FaasDataWrapper, type FaasDataWrapperProps, FaasReactClient, type FaasReactClientInstance, type FaasReactClientOptions, type SignalOptions, faas, getClient, signal, useConstant, useFaas, type useFaasOptions, useSignalState };
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,14 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
6
6
|
var signalsReact = require('@preact/signals-react');
|
|
7
7
|
var runtime = require('@preact/signals-react/runtime');
|
|
8
8
|
|
|
9
|
-
// src/
|
|
9
|
+
// src/constant.ts
|
|
10
|
+
function useConstant(fn) {
|
|
11
|
+
const ref = react.useRef();
|
|
12
|
+
if (!ref.current) {
|
|
13
|
+
ref.current = { v: fn() };
|
|
14
|
+
}
|
|
15
|
+
return ref.current.v;
|
|
16
|
+
}
|
|
10
17
|
var clients = {};
|
|
11
18
|
function FaasReactClient({
|
|
12
19
|
domain,
|
|
@@ -96,6 +103,14 @@ function FaasReactClient({
|
|
|
96
103
|
setLoading(false);
|
|
97
104
|
};
|
|
98
105
|
}, [action, JSON.stringify(options2.params || params), reloadTimes, skip]);
|
|
106
|
+
const reload = react.useCallback(
|
|
107
|
+
(params2) => {
|
|
108
|
+
if (params2)
|
|
109
|
+
setParams(params2);
|
|
110
|
+
setReloadTimes((prev) => prev + 1);
|
|
111
|
+
},
|
|
112
|
+
[params]
|
|
113
|
+
);
|
|
99
114
|
return {
|
|
100
115
|
action,
|
|
101
116
|
params,
|
|
@@ -104,45 +119,38 @@ function FaasReactClient({
|
|
|
104
119
|
reloadTimes,
|
|
105
120
|
error,
|
|
106
121
|
promise,
|
|
107
|
-
|
|
108
|
-
if (params2)
|
|
109
|
-
setParams(params2);
|
|
110
|
-
setReloadTimes(reloadTimes + 1);
|
|
111
|
-
return promise;
|
|
112
|
-
},
|
|
122
|
+
reload,
|
|
113
123
|
setData: (options2 == null ? void 0 : options2.setData) || setData,
|
|
114
124
|
setLoading,
|
|
115
125
|
setPromise,
|
|
116
126
|
setError
|
|
117
127
|
};
|
|
118
128
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
129
|
+
useFaas2.whyDidYouRender = true;
|
|
130
|
+
function FaasDataWrapper2({
|
|
131
|
+
action,
|
|
132
|
+
params,
|
|
133
|
+
fallback,
|
|
134
|
+
render,
|
|
135
|
+
children,
|
|
136
|
+
onDataChange,
|
|
137
|
+
data,
|
|
138
|
+
setData
|
|
139
|
+
}) {
|
|
140
|
+
const request = useFaas2(action, params, {
|
|
130
141
|
data,
|
|
131
142
|
setData
|
|
132
|
-
})
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
if (onDataChange)
|
|
144
|
-
onDataChange(request);
|
|
145
|
-
}, [JSON.stringify(request.data)]);
|
|
143
|
+
});
|
|
144
|
+
const [loaded, setLoaded] = react.useState(false);
|
|
145
|
+
react.useEffect(() => {
|
|
146
|
+
if (!loaded && !request.loading)
|
|
147
|
+
setLoaded(true);
|
|
148
|
+
}, [request.loading]);
|
|
149
|
+
react.useEffect(() => {
|
|
150
|
+
if (onDataChange)
|
|
151
|
+
onDataChange(request);
|
|
152
|
+
}, [JSON.stringify(request.data)]);
|
|
153
|
+
const child = react.useMemo(() => {
|
|
146
154
|
if (loaded) {
|
|
147
155
|
if (children)
|
|
148
156
|
return react.cloneElement(children, request);
|
|
@@ -150,7 +158,15 @@ function FaasReactClient({
|
|
|
150
158
|
return render(request);
|
|
151
159
|
}
|
|
152
160
|
return fallback || null;
|
|
153
|
-
}
|
|
161
|
+
}, [loaded, request.action, request.params, request.data, request.error]);
|
|
162
|
+
return child;
|
|
163
|
+
}
|
|
164
|
+
FaasDataWrapper2.whyDidYouRender = true;
|
|
165
|
+
const reactClient = {
|
|
166
|
+
id: client.id,
|
|
167
|
+
faas: faas2,
|
|
168
|
+
useFaas: useFaas2,
|
|
169
|
+
FaasDataWrapper: FaasDataWrapper2
|
|
154
170
|
};
|
|
155
171
|
clients[domain] = reactClient;
|
|
156
172
|
return reactClient;
|
|
@@ -178,6 +194,7 @@ function FaasDataWrapper(props) {
|
|
|
178
194
|
return props.fallback || null;
|
|
179
195
|
return /* @__PURE__ */ jsxRuntime.jsx(client.FaasDataWrapper, { ...props });
|
|
180
196
|
}
|
|
197
|
+
FaasDataWrapper.whyDidYouRender = true;
|
|
181
198
|
var ErrorBoundary = class extends react.Component {
|
|
182
199
|
constructor(props) {
|
|
183
200
|
super(props);
|
|
@@ -214,6 +231,7 @@ var ErrorBoundary = class extends react.Component {
|
|
|
214
231
|
return this.props.children;
|
|
215
232
|
}
|
|
216
233
|
};
|
|
234
|
+
ErrorBoundary.whyDidYouRender = true;
|
|
217
235
|
function signal(initialValue, options = {}) {
|
|
218
236
|
const state = signalsReact.signal(initialValue);
|
|
219
237
|
if (options.debugName)
|
|
@@ -271,5 +289,6 @@ exports.FaasReactClient = FaasReactClient;
|
|
|
271
289
|
exports.faas = faas;
|
|
272
290
|
exports.getClient = getClient;
|
|
273
291
|
exports.signal = signal;
|
|
292
|
+
exports.useConstant = useConstant;
|
|
274
293
|
exports.useFaas = useFaas;
|
|
275
294
|
exports.useSignalState = useSignalState;
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useState, useEffect, cloneElement,
|
|
1
|
+
import { useRef, useState, useEffect, Component, cloneElement, useCallback, useMemo } from 'react';
|
|
2
2
|
import { FaasBrowserClient } from '@faasjs/browser';
|
|
3
3
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
4
4
|
import { signal as signal$1, effect } from '@preact/signals-react';
|
|
@@ -6,7 +6,14 @@ export { batch, computed, effect, signal as originSignal } from '@preact/signals
|
|
|
6
6
|
import { useSignal, useSignalEffect } from '@preact/signals-react/runtime';
|
|
7
7
|
export { useSignal as originUseSignal, useComputed, useSignalEffect, useSignals } from '@preact/signals-react/runtime';
|
|
8
8
|
|
|
9
|
-
// src/
|
|
9
|
+
// src/constant.ts
|
|
10
|
+
function useConstant(fn) {
|
|
11
|
+
const ref = useRef();
|
|
12
|
+
if (!ref.current) {
|
|
13
|
+
ref.current = { v: fn() };
|
|
14
|
+
}
|
|
15
|
+
return ref.current.v;
|
|
16
|
+
}
|
|
10
17
|
var clients = {};
|
|
11
18
|
function FaasReactClient({
|
|
12
19
|
domain,
|
|
@@ -96,6 +103,14 @@ function FaasReactClient({
|
|
|
96
103
|
setLoading(false);
|
|
97
104
|
};
|
|
98
105
|
}, [action, JSON.stringify(options2.params || params), reloadTimes, skip]);
|
|
106
|
+
const reload = useCallback(
|
|
107
|
+
(params2) => {
|
|
108
|
+
if (params2)
|
|
109
|
+
setParams(params2);
|
|
110
|
+
setReloadTimes((prev) => prev + 1);
|
|
111
|
+
},
|
|
112
|
+
[params]
|
|
113
|
+
);
|
|
99
114
|
return {
|
|
100
115
|
action,
|
|
101
116
|
params,
|
|
@@ -104,45 +119,38 @@ function FaasReactClient({
|
|
|
104
119
|
reloadTimes,
|
|
105
120
|
error,
|
|
106
121
|
promise,
|
|
107
|
-
|
|
108
|
-
if (params2)
|
|
109
|
-
setParams(params2);
|
|
110
|
-
setReloadTimes(reloadTimes + 1);
|
|
111
|
-
return promise;
|
|
112
|
-
},
|
|
122
|
+
reload,
|
|
113
123
|
setData: (options2 == null ? void 0 : options2.setData) || setData,
|
|
114
124
|
setLoading,
|
|
115
125
|
setPromise,
|
|
116
126
|
setError
|
|
117
127
|
};
|
|
118
128
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
129
|
+
useFaas2.whyDidYouRender = true;
|
|
130
|
+
function FaasDataWrapper2({
|
|
131
|
+
action,
|
|
132
|
+
params,
|
|
133
|
+
fallback,
|
|
134
|
+
render,
|
|
135
|
+
children,
|
|
136
|
+
onDataChange,
|
|
137
|
+
data,
|
|
138
|
+
setData
|
|
139
|
+
}) {
|
|
140
|
+
const request = useFaas2(action, params, {
|
|
130
141
|
data,
|
|
131
142
|
setData
|
|
132
|
-
})
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
if (onDataChange)
|
|
144
|
-
onDataChange(request);
|
|
145
|
-
}, [JSON.stringify(request.data)]);
|
|
143
|
+
});
|
|
144
|
+
const [loaded, setLoaded] = useState(false);
|
|
145
|
+
useEffect(() => {
|
|
146
|
+
if (!loaded && !request.loading)
|
|
147
|
+
setLoaded(true);
|
|
148
|
+
}, [request.loading]);
|
|
149
|
+
useEffect(() => {
|
|
150
|
+
if (onDataChange)
|
|
151
|
+
onDataChange(request);
|
|
152
|
+
}, [JSON.stringify(request.data)]);
|
|
153
|
+
const child = useMemo(() => {
|
|
146
154
|
if (loaded) {
|
|
147
155
|
if (children)
|
|
148
156
|
return cloneElement(children, request);
|
|
@@ -150,7 +158,15 @@ function FaasReactClient({
|
|
|
150
158
|
return render(request);
|
|
151
159
|
}
|
|
152
160
|
return fallback || null;
|
|
153
|
-
}
|
|
161
|
+
}, [loaded, request.action, request.params, request.data, request.error]);
|
|
162
|
+
return child;
|
|
163
|
+
}
|
|
164
|
+
FaasDataWrapper2.whyDidYouRender = true;
|
|
165
|
+
const reactClient = {
|
|
166
|
+
id: client.id,
|
|
167
|
+
faas: faas2,
|
|
168
|
+
useFaas: useFaas2,
|
|
169
|
+
FaasDataWrapper: FaasDataWrapper2
|
|
154
170
|
};
|
|
155
171
|
clients[domain] = reactClient;
|
|
156
172
|
return reactClient;
|
|
@@ -178,6 +194,7 @@ function FaasDataWrapper(props) {
|
|
|
178
194
|
return props.fallback || null;
|
|
179
195
|
return /* @__PURE__ */ jsx(client.FaasDataWrapper, { ...props });
|
|
180
196
|
}
|
|
197
|
+
FaasDataWrapper.whyDidYouRender = true;
|
|
181
198
|
var ErrorBoundary = class extends Component {
|
|
182
199
|
constructor(props) {
|
|
183
200
|
super(props);
|
|
@@ -214,6 +231,7 @@ var ErrorBoundary = class extends Component {
|
|
|
214
231
|
return this.props.children;
|
|
215
232
|
}
|
|
216
233
|
};
|
|
234
|
+
ErrorBoundary.whyDidYouRender = true;
|
|
217
235
|
function signal(initialValue, options = {}) {
|
|
218
236
|
const state = signal$1(initialValue);
|
|
219
237
|
if (options.debugName)
|
|
@@ -233,4 +251,4 @@ function useSignalState(initialValue, options = {}) {
|
|
|
233
251
|
];
|
|
234
252
|
}
|
|
235
253
|
|
|
236
|
-
export { ErrorBoundary, FaasDataWrapper, FaasReactClient, faas, getClient, signal, useFaas, useSignalState };
|
|
254
|
+
export { ErrorBoundary, FaasDataWrapper, FaasReactClient, faas, getClient, signal, useConstant, useFaas, useSignalState };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@faasjs/react",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"dist"
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@faasjs/browser": "1.
|
|
25
|
+
"@faasjs/browser": "1.7.0"
|
|
26
26
|
},
|
|
27
27
|
"peerDependencies": {
|
|
28
28
|
"react": "*",
|