@faasjs/react 3.0.0-canary.2 → 3.0.0-canary.4

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 CHANGED
@@ -11,8 +11,19 @@ React plugin for FaasJS.
11
11
 
12
12
  - Support [FaasJS Request Specifications](https://faasjs.com/guide/request-spec.html).
13
13
  - Support global and per-request configurations.
14
- - Capiable with [why-did-you-render](https://github.com/welldone-software/why-did-you-render).
15
- - Additional functions for React.
14
+ - Support [React Server Actions](https://react.dev/reference/rsc/server-actions).
15
+ - Compatible with [why-did-you-render](https://github.com/welldone-software/why-did-you-render).
16
+ - Additional React functions:
17
+ - Utils:
18
+ - [useConstant](functions/useConstant.md): Create a constant value with hooks.
19
+ - [createSplittingContext](functions/createSplittingContext.md): Create a context for code splitting.
20
+ - [OptionalWrapper](functions/OptionalWrapper.md): Render a component optionally.
21
+ - [ErrorBoundary](classes/ErrorBoundary.md): Catch errors in the component tree.
22
+ - Fetch Data:
23
+ - [faas](functions/faas.md): Fetch data from FaasJS.
24
+ - [useFaas](functions/useFaas.md): Fetch data from FaasJS with hooks.
25
+ - [FaasDataWrapper](functions/FaasDataWrapper.md): Fetch data from FaasJS with a wrapper component.
26
+ - [withFaasData](functions/withFaasData.md): Fetch data from FaasJS using a higher-order component (HOC).
16
27
 
17
28
  ## Install
18
29
 
@@ -20,19 +31,17 @@ React plugin for FaasJS.
20
31
  npm install @faasjs/react
21
32
  ```
22
33
 
23
- ## Usage
24
-
25
- 1. Initialize [FaasReactClient](#faasreactclient)
26
-
27
- ```ts
28
- import { FaasReactClient } from '@faasjs/react'
29
-
30
- const client = FaasReactClient({
31
- baseUrl: 'localhost:8080/api/'
32
- })
33
- ```
34
+ ## Functions
34
35
 
35
- 2. Use [faas](#faas), [useFaas](#usefaas) or [FaasDataWrapper](#faasdatawrapper).
36
+ - [createSplittingContext](functions/createSplittingContext.md)
37
+ - [faas](functions/faas.md)
38
+ - [FaasDataWrapper](functions/FaasDataWrapper.md)
39
+ - [FaasReactClient](functions/FaasReactClient.md)
40
+ - [getClient](functions/getClient.md)
41
+ - [OptionalWrapper](functions/OptionalWrapper.md)
42
+ - [useConstant](functions/useConstant.md)
43
+ - [useFaas](functions/useFaas.md)
44
+ - [withFaasData](functions/withFaasData.md)
36
45
 
37
46
  ## Classes
38
47
 
@@ -59,15 +68,3 @@ const client = FaasReactClient({
59
68
  - [Options](type-aliases/Options.md)
60
69
  - [ResponseHeaders](type-aliases/ResponseHeaders.md)
61
70
  - [useFaasOptions](type-aliases/useFaasOptions.md)
62
-
63
- ## Functions
64
-
65
- - [createSplittingContext](functions/createSplittingContext.md)
66
- - [faas](functions/faas.md)
67
- - [FaasDataWrapper](functions/FaasDataWrapper.md)
68
- - [FaasReactClient](functions/FaasReactClient.md)
69
- - [getClient](functions/getClient.md)
70
- - [OptionalWrapper](functions/OptionalWrapper.md)
71
- - [useConstant](functions/useConstant.md)
72
- - [useFaas](functions/useFaas.md)
73
- - [withFaasData](functions/withFaasData.md)
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
- import { FaasAction, FaasParams, FaasData } from '@faasjs/types';
1
+ import { FaasAction, FaasData, FaasParams } from '@faasjs/types';
2
2
  export { FaasAction, FaasData, FaasParams } from '@faasjs/types';
3
- import { Options, FaasBrowserClient, ResponseError, BaseUrl, Response as Response$1 } from '@faasjs/browser';
3
+ import { Response, ResponseError, BaseUrl, Options, FaasBrowserClient } from '@faasjs/browser';
4
4
  export { Options, Response, ResponseError, ResponseHeaders } from '@faasjs/browser';
5
5
  import * as react from 'react';
6
6
  import { ReactNode, ReactElement, Component, ComponentType, ComponentProps } from 'react';
@@ -68,76 +68,94 @@ declare function createSplittingContext<T extends Record<string, any>>(defaultVa
68
68
  use: () => Readonly<T>;
69
69
  };
70
70
 
71
- type FaasReactClientInstance = {
72
- id: string
73
- faas: <PathOrData extends FaasAction>(
74
- action: string | PathOrData,
75
- params: FaasParams<PathOrData>,
76
- options?: Options
77
- ) => Promise<Response<FaasData<PathOrData>>>
78
- useFaas: <PathOrData extends FaasAction>(
79
- action: string | PathOrData,
80
- defaultParams: FaasParams<PathOrData>,
81
- options?: useFaasOptions<PathOrData>
82
- ) => FaasDataInjection<FaasData<PathOrData>>
83
- FaasDataWrapper<PathOrData extends FaasAction>(
84
- props: FaasDataWrapperProps<PathOrData>
85
- ): JSX.Element
86
- onError: OnError
87
- browserClient: FaasBrowserClient
88
- }
89
-
90
71
  /**
91
72
  * Injects FaasData props.
92
73
  */
93
- type FaasDataInjection<Data = any> = {
94
- action: string | any
95
- params: Record<string, any>
96
- loading: boolean
97
- reloadTimes: number
98
- data: Data
99
- error: any
100
- promise: Promise<Response<Data>>
101
- reload(params?: Record<string, any>): Promise<Response<Data>>
102
- setData: React.Dispatch<React.SetStateAction<Data>>
103
- setLoading: React.Dispatch<React.SetStateAction<boolean>>
104
- setPromise: React.Dispatch<React.SetStateAction<Promise<Response<Data>>>>
105
- setError: React.Dispatch<React.SetStateAction<any>>
106
- }
107
-
74
+ type FaasDataInjection<PathOrData extends FaasAction = any> = {
75
+ action: PathOrData | string;
76
+ params: Record<string, any>;
77
+ loading: boolean;
78
+ reloadTimes: number;
79
+ data: FaasData<PathOrData>;
80
+ error: any;
81
+ promise: Promise<Response<FaasData<PathOrData>>>;
82
+ reload(params?: Record<string, any>): Promise<Response<PathOrData>>;
83
+ setData: React.Dispatch<React.SetStateAction<FaasData<PathOrData>>>;
84
+ setLoading: React.Dispatch<React.SetStateAction<boolean>>;
85
+ setPromise: React.Dispatch<React.SetStateAction<Promise<Response<FaasData<PathOrData>>>>>;
86
+ setError: React.Dispatch<React.SetStateAction<any>>;
87
+ };
108
88
  type FaasDataWrapperProps<PathOrData extends FaasAction> = {
109
- render?(
110
- args: FaasDataInjection<FaasData<PathOrData>>
111
- ): JSX.Element | JSX.Element[]
112
- children?: React.ReactElement<Partial<FaasDataInjection>>
113
- fallback?: JSX.Element | false
114
- action: PathOrData | string
115
- params?: FaasParams<PathOrData>
116
- onDataChange?(args: FaasDataInjection<FaasData<PathOrData>>): void
117
- /** use custom data, should work with setData */
118
- data?: FaasData<PathOrData>
119
- /** use custom setData, should work with data */
120
- setData?: React.Dispatch<React.SetStateAction<FaasData<PathOrData>>>
121
- baseUrl?: string
89
+ render?(args: FaasDataInjection<PathOrData>): JSX.Element | JSX.Element[];
90
+ children?: React.ReactElement<Partial<FaasDataInjection<PathOrData>>>;
91
+ fallback?: JSX.Element | false;
92
+ action: PathOrData | string;
93
+ params?: FaasParams<PathOrData>;
94
+ onDataChange?(args: FaasDataInjection<PathOrData>): void;
95
+ /** use custom data, should work with setData */
96
+ data?: FaasData<PathOrData>;
97
+ /** use custom setData, should work with data */
98
+ setData?: React.Dispatch<React.SetStateAction<FaasData<PathOrData>>>;
99
+ baseUrl?: string;
100
+ };
101
+ declare function FaasDataWrapper<PathOrData extends FaasAction>({ action, params, fallback, render, children, onDataChange, data, setData, baseUrl, }: FaasDataWrapperProps<PathOrData>): JSX.Element;
102
+ declare namespace FaasDataWrapper {
103
+ var whyDidYouRender: boolean;
122
104
  }
105
+ /**
106
+ * HOC to wrap a component with FaasDataWrapper
107
+ *
108
+ * @example
109
+ * ```tsx
110
+ * const MyComponent = withFaasData(({ data }) => <div>{data.name}</div>, { action: 'test', params: { a: 1 } })
111
+ * ```
112
+ */
113
+ declare function withFaasData<PathOrData extends FaasAction, TComponentProps extends FaasDataInjection<PathOrData> = FaasDataInjection<PathOrData>>(Component: React.FC<TComponentProps & Record<string, any>>, faasProps: FaasDataWrapperProps<PathOrData>): React.FC<Omit<TComponentProps, keyof FaasDataInjection<PathOrData>> & Record<string, any>>;
123
114
 
124
115
  type useFaasOptions<PathOrData extends FaasAction> = {
125
- params?: FaasParams<PathOrData>
126
- data?: FaasData<PathOrData>
127
- setData?: React.Dispatch<React.SetStateAction<FaasData<PathOrData>>>
128
- /** if skip is true, will not send request */
129
- skip?: boolean | ((params: FaasParams<PathOrData>) => boolean)
130
- /** send the last request after milliseconds */
131
- debounce?: number
132
- baseUrl?: string
116
+ params?: FaasParams<PathOrData>;
117
+ data?: FaasData<PathOrData>;
118
+ setData?: React.Dispatch<React.SetStateAction<FaasData<PathOrData>>>;
119
+ /** if skip is true, will not send request */
120
+ skip?: boolean | ((params: FaasParams<PathOrData>) => boolean);
121
+ /** send the last request after milliseconds */
122
+ debounce?: number;
123
+ baseUrl?: string;
124
+ };
125
+ /**
126
+ * Request faas server with React hook
127
+ *
128
+ * @param action {string} action name
129
+ * @param defaultParams {object} initial action params
130
+ * @returns {FaasDataInjection<any>}
131
+ *
132
+ * @example
133
+ * ```tsx
134
+ * function Post ({ id }) {
135
+ * const { data } = useFaas<{ title: string }>('post/get', { id })
136
+ * return <h1>{data.title}</h1>
137
+ * }
138
+ * ```
139
+ */
140
+ declare function useFaas<PathOrData extends FaasAction>(action: PathOrData | string, defaultParams: FaasParams<PathOrData>, options?: useFaasOptions<PathOrData>): FaasDataInjection<PathOrData>;
141
+ declare namespace useFaas {
142
+ var whyDidYouRender: boolean;
133
143
  }
134
144
 
135
- type OnError$1 = (action: string, params: Record<string, any>) => (res: ResponseError) => Promise<void>;
145
+ type OnError = (action: string, params: Record<string, any>) => (res: ResponseError) => Promise<void>;
136
146
  type FaasReactClientOptions = {
137
147
  /** @default `/` */
138
148
  baseUrl?: BaseUrl;
139
149
  options?: Options;
140
- onError?: OnError$1;
150
+ onError?: OnError;
151
+ };
152
+ type FaasReactClientInstance = {
153
+ id: string;
154
+ faas: <PathOrData extends FaasAction>(action: PathOrData | string, params: FaasParams<PathOrData>, options?: Options) => Promise<Response<FaasData<PathOrData>>>;
155
+ useFaas: <PathOrData extends FaasAction>(action: PathOrData | string, defaultParams: FaasParams<PathOrData>, options?: useFaasOptions<PathOrData>) => FaasDataInjection<PathOrData>;
156
+ FaasDataWrapper<PathOrData extends FaasAction>(props: FaasDataWrapperProps<PathOrData>): JSX.Element;
157
+ onError: OnError;
158
+ browserClient: FaasBrowserClient;
141
159
  };
142
160
  /**
143
161
  * Before use faas, you should initialize a FaasReactClient.
@@ -183,7 +201,7 @@ declare function getClient(host?: string): FaasReactClientInstance;
183
201
  * })
184
202
  * ```
185
203
  */
186
- declare function faas<PathOrData extends FaasAction>(action: PathOrData | string, params: FaasParams<PathOrData>, options?: Options): Promise<Response$1<FaasData<PathOrData>>>;
204
+ declare function faas<PathOrData extends FaasAction>(action: PathOrData | string, params: FaasParams<PathOrData>, options?: Options): Promise<Response<FaasData<PathOrData>>>;
187
205
 
188
206
  interface ErrorBoundaryProps {
189
207
  children?: ReactNode;
@@ -208,20 +226,6 @@ declare class ErrorBoundary extends Component<ErrorBoundaryProps, {
208
226
  render(): string | number | boolean | Iterable<ReactNode> | react_jsx_runtime.JSX.Element;
209
227
  }
210
228
 
211
- declare function FaasDataWrapper<PathOrData extends FaasAction>({ action, params, fallback, render, children, onDataChange, data, setData, baseUrl, }: FaasDataWrapperProps<PathOrData>): JSX.Element;
212
- declare namespace FaasDataWrapper {
213
- var whyDidYouRender: boolean;
214
- }
215
- /**
216
- * HOC to wrap a component with FaasDataWrapper
217
- *
218
- * @example
219
- * ```tsx
220
- * const MyComponent = withFaasData(({ data }) => <div>{data.name}</div>, { action: 'test', params: { a: 1 } })
221
- * ```
222
- */
223
- declare function withFaasData<PathOrData extends FaasAction, TComponentProps extends FaasDataInjection<PathOrData> = FaasDataInjection<PathOrData>>(Component: React.FC<TComponentProps & Record<string, any>>, faasProps: FaasDataWrapperProps<PathOrData>): React.FC<Omit<TComponentProps, keyof FaasDataInjection> & Record<string, any>>;
224
-
225
229
  type OptionalWrapperProps<TWrapper extends ComponentType<{
226
230
  children: ReactNode;
227
231
  }> = any> = {
@@ -252,24 +256,4 @@ declare const OptionalWrapper: React.FC<OptionalWrapperProps> & {
252
256
  whyDidYouRender: boolean;
253
257
  };
254
258
 
255
- /**
256
- * Request faas server with React hook
257
- *
258
- * @param action {string} action name
259
- * @param defaultParams {object} initial action params
260
- * @returns {FaasDataInjection<any>}
261
- *
262
- * @example
263
- * ```tsx
264
- * function Post ({ id }) {
265
- * const { data } = useFaas<{ title: string }>('post/get', { id })
266
- * return <h1>{data.title}</h1>
267
- * }
268
- * ```
269
- */
270
- declare function useFaas<PathOrData extends FaasAction>(action: PathOrData | string, defaultParams: FaasParams<PathOrData>, options?: useFaasOptions<PathOrData>): FaasDataInjection<FaasData<PathOrData>>;
271
- declare namespace useFaas {
272
- var whyDidYouRender: boolean;
273
- }
274
-
275
- export { ErrorBoundary, type ErrorBoundaryProps, type ErrorChildrenProps, type FaasDataInjection, FaasDataWrapper, type FaasDataWrapperProps, FaasReactClient, type FaasReactClientInstance, type FaasReactClientOptions, type OnError$1 as OnError, OptionalWrapper, type OptionalWrapperProps, createSplittingContext, faas, getClient, useConstant, useFaas, type useFaasOptions, withFaasData };
259
+ export { ErrorBoundary, type ErrorBoundaryProps, type ErrorChildrenProps, type FaasDataInjection, FaasDataWrapper, type FaasDataWrapperProps, FaasReactClient, type FaasReactClientInstance, type FaasReactClientOptions, type OnError, OptionalWrapper, type OptionalWrapperProps, createSplittingContext, faas, getClient, useConstant, useFaas, type useFaasOptions, withFaasData };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { FaasAction, FaasParams, FaasData } from '@faasjs/types';
1
+ import { FaasAction, FaasData, FaasParams } from '@faasjs/types';
2
2
  export { FaasAction, FaasData, FaasParams } from '@faasjs/types';
3
- import { Options, FaasBrowserClient, ResponseError, BaseUrl, Response as Response$1 } from '@faasjs/browser';
3
+ import { Response, ResponseError, BaseUrl, Options, FaasBrowserClient } from '@faasjs/browser';
4
4
  export { Options, Response, ResponseError, ResponseHeaders } from '@faasjs/browser';
5
5
  import * as react from 'react';
6
6
  import { ReactNode, ReactElement, Component, ComponentType, ComponentProps } from 'react';
@@ -68,76 +68,94 @@ declare function createSplittingContext<T extends Record<string, any>>(defaultVa
68
68
  use: () => Readonly<T>;
69
69
  };
70
70
 
71
- type FaasReactClientInstance = {
72
- id: string
73
- faas: <PathOrData extends FaasAction>(
74
- action: string | PathOrData,
75
- params: FaasParams<PathOrData>,
76
- options?: Options
77
- ) => Promise<Response<FaasData<PathOrData>>>
78
- useFaas: <PathOrData extends FaasAction>(
79
- action: string | PathOrData,
80
- defaultParams: FaasParams<PathOrData>,
81
- options?: useFaasOptions<PathOrData>
82
- ) => FaasDataInjection<FaasData<PathOrData>>
83
- FaasDataWrapper<PathOrData extends FaasAction>(
84
- props: FaasDataWrapperProps<PathOrData>
85
- ): JSX.Element
86
- onError: OnError
87
- browserClient: FaasBrowserClient
88
- }
89
-
90
71
  /**
91
72
  * Injects FaasData props.
92
73
  */
93
- type FaasDataInjection<Data = any> = {
94
- action: string | any
95
- params: Record<string, any>
96
- loading: boolean
97
- reloadTimes: number
98
- data: Data
99
- error: any
100
- promise: Promise<Response<Data>>
101
- reload(params?: Record<string, any>): Promise<Response<Data>>
102
- setData: React.Dispatch<React.SetStateAction<Data>>
103
- setLoading: React.Dispatch<React.SetStateAction<boolean>>
104
- setPromise: React.Dispatch<React.SetStateAction<Promise<Response<Data>>>>
105
- setError: React.Dispatch<React.SetStateAction<any>>
106
- }
107
-
74
+ type FaasDataInjection<PathOrData extends FaasAction = any> = {
75
+ action: PathOrData | string;
76
+ params: Record<string, any>;
77
+ loading: boolean;
78
+ reloadTimes: number;
79
+ data: FaasData<PathOrData>;
80
+ error: any;
81
+ promise: Promise<Response<FaasData<PathOrData>>>;
82
+ reload(params?: Record<string, any>): Promise<Response<PathOrData>>;
83
+ setData: React.Dispatch<React.SetStateAction<FaasData<PathOrData>>>;
84
+ setLoading: React.Dispatch<React.SetStateAction<boolean>>;
85
+ setPromise: React.Dispatch<React.SetStateAction<Promise<Response<FaasData<PathOrData>>>>>;
86
+ setError: React.Dispatch<React.SetStateAction<any>>;
87
+ };
108
88
  type FaasDataWrapperProps<PathOrData extends FaasAction> = {
109
- render?(
110
- args: FaasDataInjection<FaasData<PathOrData>>
111
- ): JSX.Element | JSX.Element[]
112
- children?: React.ReactElement<Partial<FaasDataInjection>>
113
- fallback?: JSX.Element | false
114
- action: PathOrData | string
115
- params?: FaasParams<PathOrData>
116
- onDataChange?(args: FaasDataInjection<FaasData<PathOrData>>): void
117
- /** use custom data, should work with setData */
118
- data?: FaasData<PathOrData>
119
- /** use custom setData, should work with data */
120
- setData?: React.Dispatch<React.SetStateAction<FaasData<PathOrData>>>
121
- baseUrl?: string
89
+ render?(args: FaasDataInjection<PathOrData>): JSX.Element | JSX.Element[];
90
+ children?: React.ReactElement<Partial<FaasDataInjection<PathOrData>>>;
91
+ fallback?: JSX.Element | false;
92
+ action: PathOrData | string;
93
+ params?: FaasParams<PathOrData>;
94
+ onDataChange?(args: FaasDataInjection<PathOrData>): void;
95
+ /** use custom data, should work with setData */
96
+ data?: FaasData<PathOrData>;
97
+ /** use custom setData, should work with data */
98
+ setData?: React.Dispatch<React.SetStateAction<FaasData<PathOrData>>>;
99
+ baseUrl?: string;
100
+ };
101
+ declare function FaasDataWrapper<PathOrData extends FaasAction>({ action, params, fallback, render, children, onDataChange, data, setData, baseUrl, }: FaasDataWrapperProps<PathOrData>): JSX.Element;
102
+ declare namespace FaasDataWrapper {
103
+ var whyDidYouRender: boolean;
122
104
  }
105
+ /**
106
+ * HOC to wrap a component with FaasDataWrapper
107
+ *
108
+ * @example
109
+ * ```tsx
110
+ * const MyComponent = withFaasData(({ data }) => <div>{data.name}</div>, { action: 'test', params: { a: 1 } })
111
+ * ```
112
+ */
113
+ declare function withFaasData<PathOrData extends FaasAction, TComponentProps extends FaasDataInjection<PathOrData> = FaasDataInjection<PathOrData>>(Component: React.FC<TComponentProps & Record<string, any>>, faasProps: FaasDataWrapperProps<PathOrData>): React.FC<Omit<TComponentProps, keyof FaasDataInjection<PathOrData>> & Record<string, any>>;
123
114
 
124
115
  type useFaasOptions<PathOrData extends FaasAction> = {
125
- params?: FaasParams<PathOrData>
126
- data?: FaasData<PathOrData>
127
- setData?: React.Dispatch<React.SetStateAction<FaasData<PathOrData>>>
128
- /** if skip is true, will not send request */
129
- skip?: boolean | ((params: FaasParams<PathOrData>) => boolean)
130
- /** send the last request after milliseconds */
131
- debounce?: number
132
- baseUrl?: string
116
+ params?: FaasParams<PathOrData>;
117
+ data?: FaasData<PathOrData>;
118
+ setData?: React.Dispatch<React.SetStateAction<FaasData<PathOrData>>>;
119
+ /** if skip is true, will not send request */
120
+ skip?: boolean | ((params: FaasParams<PathOrData>) => boolean);
121
+ /** send the last request after milliseconds */
122
+ debounce?: number;
123
+ baseUrl?: string;
124
+ };
125
+ /**
126
+ * Request faas server with React hook
127
+ *
128
+ * @param action {string} action name
129
+ * @param defaultParams {object} initial action params
130
+ * @returns {FaasDataInjection<any>}
131
+ *
132
+ * @example
133
+ * ```tsx
134
+ * function Post ({ id }) {
135
+ * const { data } = useFaas<{ title: string }>('post/get', { id })
136
+ * return <h1>{data.title}</h1>
137
+ * }
138
+ * ```
139
+ */
140
+ declare function useFaas<PathOrData extends FaasAction>(action: PathOrData | string, defaultParams: FaasParams<PathOrData>, options?: useFaasOptions<PathOrData>): FaasDataInjection<PathOrData>;
141
+ declare namespace useFaas {
142
+ var whyDidYouRender: boolean;
133
143
  }
134
144
 
135
- type OnError$1 = (action: string, params: Record<string, any>) => (res: ResponseError) => Promise<void>;
145
+ type OnError = (action: string, params: Record<string, any>) => (res: ResponseError) => Promise<void>;
136
146
  type FaasReactClientOptions = {
137
147
  /** @default `/` */
138
148
  baseUrl?: BaseUrl;
139
149
  options?: Options;
140
- onError?: OnError$1;
150
+ onError?: OnError;
151
+ };
152
+ type FaasReactClientInstance = {
153
+ id: string;
154
+ faas: <PathOrData extends FaasAction>(action: PathOrData | string, params: FaasParams<PathOrData>, options?: Options) => Promise<Response<FaasData<PathOrData>>>;
155
+ useFaas: <PathOrData extends FaasAction>(action: PathOrData | string, defaultParams: FaasParams<PathOrData>, options?: useFaasOptions<PathOrData>) => FaasDataInjection<PathOrData>;
156
+ FaasDataWrapper<PathOrData extends FaasAction>(props: FaasDataWrapperProps<PathOrData>): JSX.Element;
157
+ onError: OnError;
158
+ browserClient: FaasBrowserClient;
141
159
  };
142
160
  /**
143
161
  * Before use faas, you should initialize a FaasReactClient.
@@ -183,7 +201,7 @@ declare function getClient(host?: string): FaasReactClientInstance;
183
201
  * })
184
202
  * ```
185
203
  */
186
- declare function faas<PathOrData extends FaasAction>(action: PathOrData | string, params: FaasParams<PathOrData>, options?: Options): Promise<Response$1<FaasData<PathOrData>>>;
204
+ declare function faas<PathOrData extends FaasAction>(action: PathOrData | string, params: FaasParams<PathOrData>, options?: Options): Promise<Response<FaasData<PathOrData>>>;
187
205
 
188
206
  interface ErrorBoundaryProps {
189
207
  children?: ReactNode;
@@ -208,20 +226,6 @@ declare class ErrorBoundary extends Component<ErrorBoundaryProps, {
208
226
  render(): string | number | boolean | Iterable<ReactNode> | react_jsx_runtime.JSX.Element;
209
227
  }
210
228
 
211
- declare function FaasDataWrapper<PathOrData extends FaasAction>({ action, params, fallback, render, children, onDataChange, data, setData, baseUrl, }: FaasDataWrapperProps<PathOrData>): JSX.Element;
212
- declare namespace FaasDataWrapper {
213
- var whyDidYouRender: boolean;
214
- }
215
- /**
216
- * HOC to wrap a component with FaasDataWrapper
217
- *
218
- * @example
219
- * ```tsx
220
- * const MyComponent = withFaasData(({ data }) => <div>{data.name}</div>, { action: 'test', params: { a: 1 } })
221
- * ```
222
- */
223
- declare function withFaasData<PathOrData extends FaasAction, TComponentProps extends FaasDataInjection<PathOrData> = FaasDataInjection<PathOrData>>(Component: React.FC<TComponentProps & Record<string, any>>, faasProps: FaasDataWrapperProps<PathOrData>): React.FC<Omit<TComponentProps, keyof FaasDataInjection> & Record<string, any>>;
224
-
225
229
  type OptionalWrapperProps<TWrapper extends ComponentType<{
226
230
  children: ReactNode;
227
231
  }> = any> = {
@@ -252,24 +256,4 @@ declare const OptionalWrapper: React.FC<OptionalWrapperProps> & {
252
256
  whyDidYouRender: boolean;
253
257
  };
254
258
 
255
- /**
256
- * Request faas server with React hook
257
- *
258
- * @param action {string} action name
259
- * @param defaultParams {object} initial action params
260
- * @returns {FaasDataInjection<any>}
261
- *
262
- * @example
263
- * ```tsx
264
- * function Post ({ id }) {
265
- * const { data } = useFaas<{ title: string }>('post/get', { id })
266
- * return <h1>{data.title}</h1>
267
- * }
268
- * ```
269
- */
270
- declare function useFaas<PathOrData extends FaasAction>(action: PathOrData | string, defaultParams: FaasParams<PathOrData>, options?: useFaasOptions<PathOrData>): FaasDataInjection<FaasData<PathOrData>>;
271
- declare namespace useFaas {
272
- var whyDidYouRender: boolean;
273
- }
274
-
275
- export { ErrorBoundary, type ErrorBoundaryProps, type ErrorChildrenProps, type FaasDataInjection, FaasDataWrapper, type FaasDataWrapperProps, FaasReactClient, type FaasReactClientInstance, type FaasReactClientOptions, type OnError$1 as OnError, OptionalWrapper, type OptionalWrapperProps, createSplittingContext, faas, getClient, useConstant, useFaas, type useFaasOptions, withFaasData };
259
+ export { ErrorBoundary, type ErrorBoundaryProps, type ErrorChildrenProps, type FaasDataInjection, FaasDataWrapper, type FaasDataWrapperProps, FaasReactClient, type FaasReactClientInstance, type FaasReactClientOptions, type OnError, OptionalWrapper, type OptionalWrapperProps, createSplittingContext, faas, getClient, useConstant, useFaas, type useFaasOptions, withFaasData };
package/dist/index.js CHANGED
@@ -201,8 +201,8 @@ function FaasReactClient({ baseUrl, options, onError } = {
201
201
  const client = new browser.FaasBrowserClient(baseUrl, options);
202
202
  const reactClient = {
203
203
  id: client.id,
204
- faas: async (action, params, options2) => faas(action, params, options2),
205
- useFaas: (action, defaultParams, options2) => useFaas(action, defaultParams, options2),
204
+ faas: async (action, params, options2) => faas(action, params, { baseUrl, ...options2 }),
205
+ useFaas: (action, defaultParams, options2) => useFaas(action, defaultParams, { baseUrl, ...options2 }),
206
206
  FaasDataWrapper: (props) => /* @__PURE__ */ jsxRuntime.jsx(FaasDataWrapper, { baseUrl, ...props }),
207
207
  onError,
208
208
  browserClient: client
package/dist/index.mjs CHANGED
@@ -199,8 +199,8 @@ function FaasReactClient({ baseUrl, options, onError } = {
199
199
  const client = new FaasBrowserClient(baseUrl, options);
200
200
  const reactClient = {
201
201
  id: client.id,
202
- faas: async (action, params, options2) => faas(action, params, options2),
203
- useFaas: (action, defaultParams, options2) => useFaas(action, defaultParams, options2),
202
+ faas: async (action, params, options2) => faas(action, params, { baseUrl, ...options2 }),
203
+ useFaas: (action, defaultParams, options2) => useFaas(action, defaultParams, { baseUrl, ...options2 }),
204
204
  FaasDataWrapper: (props) => /* @__PURE__ */ jsx(FaasDataWrapper, { baseUrl, ...props }),
205
205
  onError,
206
206
  browserClient: client
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faasjs/react",
3
- "version": "3.0.0-canary.2",
3
+ "version": "3.0.0-canary.4",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -34,7 +34,7 @@
34
34
  "dist"
35
35
  ],
36
36
  "dependencies": {
37
- "@faasjs/browser": "3.0.0-canary.2"
37
+ "@faasjs/browser": "3.0.0-canary.4"
38
38
  },
39
39
  "peerDependencies": {
40
40
  "react": "*"