@faasjs/react 0.0.2-beta.285 → 0.0.2-beta.293

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/lib/index.js CHANGED
@@ -111,67 +111,86 @@
111
111
 
112
112
  function FaasReactClient({ domain, options, onError }) {
113
113
  const client = new FaasBrowserClient(domain, options);
114
- return {
115
- async faas(action, params) {
116
- if (onError)
117
- return client.action(action, params).catch(onError(action, params));
118
- return client.action(action, params);
119
- },
120
- useFaas(action, defaultParams) {
121
- const [loading, setLoading] = React__default["default"].useState(false);
122
- const [data, setData] = React__default["default"].useState();
123
- const [error, setError] = React__default["default"].useState();
124
- const [promise, setPromise] = React__default["default"].useState();
125
- const [params, setParams] = React__default["default"].useState(defaultParams);
126
- const [reloadTimes, setReloadTimes] = React__default["default"].useState(0);
127
- React__default["default"].useEffect(function () {
128
- if (JSON.stringify(defaultParams) !== JSON.stringify(params)) {
129
- setParams(defaultParams);
130
- }
131
- }, [defaultParams]);
132
- React__default["default"].useEffect(function () {
133
- setLoading(true);
134
- const request = client.action(action, params);
135
- setPromise(request);
136
- request
137
- .then(r => {
138
- setData(r === null || r === void 0 ? void 0 : r.data);
139
- })
140
- .catch(async (e) => {
141
- if (onError)
142
- try {
143
- setData(await onError(action, params)(e));
144
- }
145
- catch (error) {
146
- setError(error);
147
- }
148
- setError(e);
149
- })
150
- .finally(() => setLoading(false));
151
- return () => {
152
- setLoading(false);
153
- };
154
- }, [
155
- action,
156
- JSON.stringify(params),
157
- reloadTimes
158
- ]);
159
- return {
160
- loading,
161
- data,
162
- error,
163
- promise,
164
- async reload(params) {
165
- if (params)
166
- setParams(params);
167
- setReloadTimes(reloadTimes + 1);
168
- return promise;
169
- },
170
- setData,
171
- setLoading,
172
- setPromise,
173
- setError,
114
+ // async function faas<Path extends keyof FaasActions> (action: Path, params: FaasActions[Path]['request']): Promise<Response<FaasActions[Path]['response']>>
115
+ async function faas(action, params) {
116
+ if (onError)
117
+ return client.action(action, params)
118
+ .catch(onError(action, params));
119
+ return client.action(action, params);
120
+ }
121
+ function useFaas(action, defaultParams) {
122
+ const [loading, setLoading] = React__default["default"].useState(true);
123
+ const [data, setData] = React__default["default"].useState();
124
+ const [error, setError] = React__default["default"].useState();
125
+ const [promise, setPromise] = React__default["default"].useState();
126
+ const [params, setParams] = React__default["default"].useState(defaultParams);
127
+ const [reloadTimes, setReloadTimes] = React__default["default"].useState(0);
128
+ React__default["default"].useEffect(function () {
129
+ if (JSON.stringify(defaultParams) !== JSON.stringify(params)) {
130
+ setParams(defaultParams);
131
+ }
132
+ }, [JSON.stringify(defaultParams)]);
133
+ React__default["default"].useEffect(function () {
134
+ setLoading(true);
135
+ const request = client.action(action, params);
136
+ setPromise(request);
137
+ request
138
+ .then(r => {
139
+ setData(r === null || r === void 0 ? void 0 : r.data);
140
+ })
141
+ .catch(async (e) => {
142
+ if (onError)
143
+ try {
144
+ setData(await onError(action, params)(e));
145
+ }
146
+ catch (error) {
147
+ setError(error);
148
+ }
149
+ setError(e);
150
+ })
151
+ .finally(() => setLoading(false));
152
+ return () => {
153
+ setLoading(false);
174
154
  };
155
+ }, [
156
+ action,
157
+ JSON.stringify(params),
158
+ reloadTimes
159
+ ]);
160
+ return {
161
+ loading,
162
+ data,
163
+ error,
164
+ promise,
165
+ async reload(params) {
166
+ if (params)
167
+ setParams(params);
168
+ setReloadTimes(reloadTimes + 1);
169
+ return promise;
170
+ },
171
+ setData,
172
+ setLoading,
173
+ setPromise,
174
+ setError,
175
+ };
176
+ }
177
+ return {
178
+ faas,
179
+ useFaas,
180
+ FaasData({ action, params, fallback, element, onDataChange }) {
181
+ const request = useFaas(action, params);
182
+ const [loaded, setLoaded] = React__default["default"].useState(false);
183
+ React.useEffect(function () {
184
+ if (!loaded && !request.loading)
185
+ setLoaded(true);
186
+ }, [request.loading]);
187
+ React.useEffect(() => {
188
+ if (onDataChange)
189
+ onDataChange(request);
190
+ }, [JSON.stringify(request.data)]);
191
+ if (loaded)
192
+ return element(request);
193
+ return fallback || null;
175
194
  }
176
195
  };
177
196
  }
@@ -1,7 +1,7 @@
1
+ /// <reference types="react" />
1
2
  import { Options, Params, Response, ResponseError } from '../../browser/src';
2
3
  export type { FaasBrowserClient, Options, Params, Response, ResponseHeaders, ResponseError } from '../../browser/src';
3
- export declare type faas = <T = any>(action: string, params: Params) => Promise<Response<T>>;
4
- export declare type useFaas = <T = any>(action: string, params: Params) => {
4
+ declare type FaasDataInjection<T = any> = {
5
5
  loading: boolean;
6
6
  data: T;
7
7
  error: any;
@@ -12,11 +12,25 @@ export declare type useFaas = <T = any>(action: string, params: Params) => {
12
12
  setPromise(promise: Promise<Response<T>>): void;
13
13
  setError(error: any): void;
14
14
  };
15
+ declare type FaasDataProps<T = any> = {
16
+ element(args: FaasDataInjection<T>): JSX.Element;
17
+ fallback?: JSX.Element | false;
18
+ action: string;
19
+ params?: Params;
20
+ onDataChange?(args: FaasDataInjection<T>): void;
21
+ };
22
+ export interface FaasActions {
23
+ [path: string]: {
24
+ request: any;
25
+ response: any;
26
+ };
27
+ }
15
28
  export declare function FaasReactClient({ domain, options, onError }: {
16
29
  domain: string;
17
30
  options?: Options;
18
31
  onError?: (action: string, params: Params) => (res: ResponseError) => Promise<any>;
19
32
  }): {
20
- faas: faas;
21
- useFaas: useFaas;
33
+ faas: <T = any>(action: string, params: Params) => Promise<Response<T>>;
34
+ useFaas: <T_1 = any>(action: string, defaultParams: Params) => FaasDataInjection<T_1>;
35
+ FaasData<T_2 = any>({ action, params, fallback, element, onDataChange }: FaasDataProps<T_2>): JSX.Element;
22
36
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faasjs/react",
3
- "version": "0.0.2-beta.285",
3
+ "version": "0.0.2-beta.293",
4
4
  "license": "MIT",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/react/src/index.d.ts",
@@ -27,5 +27,5 @@
27
27
  "rollup-plugin-typescript2": "*",
28
28
  "typescript": "*"
29
29
  },
30
- "gitHead": "1d4ddf33b9a267f7a2dc48ccbb888613b3727de3"
30
+ "gitHead": "e9f3f18f87e199d4d5d2fdee04225b993700018b"
31
31
  }