@spoosh/react 0.1.4 → 0.2.1
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/dist/index.d.mts +23 -18
- package/dist/index.d.ts +23 -18
- package/dist/index.js +5 -2
- package/dist/index.mjs +5 -2
- package/package.json +5 -4
package/dist/index.d.mts
CHANGED
|
@@ -22,8 +22,9 @@ type BaseReadOptions = TagOptions & {
|
|
|
22
22
|
*
|
|
23
23
|
* @template TData - The response data type
|
|
24
24
|
* @template TError - The error type
|
|
25
|
+
* @template TPluginResult - Plugin-provided result fields
|
|
25
26
|
*/
|
|
26
|
-
type BaseReadResult<TData, TError
|
|
27
|
+
type BaseReadResult<TData, TError, TPluginResult = Record<string, unknown>> = {
|
|
27
28
|
/** True during the initial load (no data yet) */
|
|
28
29
|
loading: boolean;
|
|
29
30
|
/** True during any fetch operation */
|
|
@@ -32,6 +33,8 @@ type BaseReadResult<TData, TError> = {
|
|
|
32
33
|
data: TData | undefined;
|
|
33
34
|
/** Error from the last failed request */
|
|
34
35
|
error: TError | undefined;
|
|
36
|
+
/** Plugin-provided metadata */
|
|
37
|
+
meta: TPluginResult;
|
|
35
38
|
/** Abort the current fetch operation */
|
|
36
39
|
abort: () => void;
|
|
37
40
|
/** Manually trigger a refetch */
|
|
@@ -43,8 +46,9 @@ type BaseReadResult<TData, TError> = {
|
|
|
43
46
|
* @template TData - The response data type
|
|
44
47
|
* @template TError - The error type
|
|
45
48
|
* @template TOptions - The trigger options type
|
|
49
|
+
* @template TPluginResult - Plugin-provided result fields
|
|
46
50
|
*/
|
|
47
|
-
type BaseWriteResult<TData, TError, TOptions
|
|
51
|
+
type BaseWriteResult<TData, TError, TOptions, TPluginResult = Record<string, unknown>> = {
|
|
48
52
|
/** Execute the mutation with optional options */
|
|
49
53
|
trigger: (options?: TOptions) => Promise<SpooshResponse<TData, TError>>;
|
|
50
54
|
/** True while the mutation is in progress */
|
|
@@ -53,6 +57,8 @@ type BaseWriteResult<TData, TError, TOptions> = {
|
|
|
53
57
|
data: TData | undefined;
|
|
54
58
|
/** Error from the last failed request */
|
|
55
59
|
error: TError | undefined;
|
|
60
|
+
/** Plugin-provided metadata */
|
|
61
|
+
meta: TPluginResult;
|
|
56
62
|
/** Reset the state to initial values */
|
|
57
63
|
reset: () => void;
|
|
58
64
|
/** Abort the current mutation */
|
|
@@ -199,8 +205,9 @@ type BaseInfiniteReadOptions<TData, TItem, TRequest = AnyInfiniteRequestOptions>
|
|
|
199
205
|
* @template TData - The response data type for each page
|
|
200
206
|
* @template TError - The error type
|
|
201
207
|
* @template TItem - The item type after merging all responses
|
|
208
|
+
* @template TPluginResult - Plugin-provided result fields
|
|
202
209
|
*/
|
|
203
|
-
type BaseInfiniteReadResult<TData, TError, TItem
|
|
210
|
+
type BaseInfiniteReadResult<TData, TError, TItem, TPluginResult = Record<string, unknown>> = {
|
|
204
211
|
/** Merged items from all fetched responses */
|
|
205
212
|
data: TItem[] | undefined;
|
|
206
213
|
/** Array of all raw response data */
|
|
@@ -217,6 +224,8 @@ type BaseInfiniteReadResult<TData, TError, TItem> = {
|
|
|
217
224
|
canFetchNext: boolean;
|
|
218
225
|
/** Whether there's a previous page available to fetch */
|
|
219
226
|
canFetchPrev: boolean;
|
|
227
|
+
/** Plugin-provided metadata */
|
|
228
|
+
meta: TPluginResult;
|
|
220
229
|
/** Fetch the next page */
|
|
221
230
|
fetchNext: () => Promise<void>;
|
|
222
231
|
/** Fetch the previous page */
|
|
@@ -240,8 +249,8 @@ type ResolvedWriteOptions<TSchema, TPlugins extends PluginArray, TMethod, TDefau
|
|
|
240
249
|
type UseReadFn<TDefaultError, TSchema, TPlugins extends PluginArray> = <TReadFn extends (api: ReadApiClient<TSchema, TDefaultError>) => Promise<{
|
|
241
250
|
data?: unknown;
|
|
242
251
|
error?: unknown;
|
|
243
|
-
}
|
|
244
|
-
type UseWriteFn<TDefaultError, TSchema, TPlugins extends PluginArray> = <TMethod extends (...args: never[]) => Promise<SpooshResponse<unknown, unknown>>, TWriteOpts extends (TMethod extends (options: infer O) => unknown ? O : object) & ResolvedWriteOptions<TSchema, TPlugins, TMethod, TDefaultError> = (TMethod extends (options: infer O) => unknown ? O : object) & ResolvedWriteOptions<TSchema, TPlugins, TMethod, TDefaultError>>(writeFn: (api: WriteApiClient<TSchema, TDefaultError>) => TMethod) => BaseWriteResult<ExtractMethodData<TMethod>, InferError<ExtractMethodError<TMethod>, TDefaultError>, TWriteOpts> & WriteResponseInputFields<ExtractResponseQuery<TMethod>, ExtractResponseBody<TMethod>, ExtractResponseFormData<TMethod>, ExtractResponseParamNames<TMethod
|
|
252
|
+
}>>(readFn: TReadFn, readOptions?: BaseReadOptions & ResolvedReadOptions<TSchema, TPlugins, TReadFn, TDefaultError>) => BaseReadResult<ExtractMethodData<TReadFn>, InferError<ExtractMethodError<TReadFn>, TDefaultError>, ResolveResultTypes<MergePluginResults<TPlugins>["read"], BaseReadOptions & ResolvedReadOptions<TSchema, TPlugins, TReadFn, TDefaultError>>> & ResponseInputFields<ExtractResponseQuery<TReadFn>, ExtractResponseBody<TReadFn>, ExtractResponseFormData<TReadFn>, ExtractResponseParamNames<TReadFn>>;
|
|
253
|
+
type UseWriteFn<TDefaultError, TSchema, TPlugins extends PluginArray> = <TMethod extends (...args: never[]) => Promise<SpooshResponse<unknown, unknown>>, TWriteOpts extends (TMethod extends (options: infer O) => unknown ? O : object) & ResolvedWriteOptions<TSchema, TPlugins, TMethod, TDefaultError> = (TMethod extends (options: infer O) => unknown ? O : object) & ResolvedWriteOptions<TSchema, TPlugins, TMethod, TDefaultError>>(writeFn: (api: WriteApiClient<TSchema, TDefaultError>) => TMethod) => BaseWriteResult<ExtractMethodData<TMethod>, InferError<ExtractMethodError<TMethod>, TDefaultError>, TWriteOpts, ResolveResultTypes<MergePluginResults<TPlugins>["write"], TWriteOpts>> & WriteResponseInputFields<ExtractResponseQuery<TMethod>, ExtractResponseBody<TMethod>, ExtractResponseFormData<TMethod>, ExtractResponseParamNames<TMethod>>;
|
|
245
254
|
type InfiniteReadResolverContext<TSchema, TData, TError, TRequest> = ResolverContext<TSchema, TData, TError, TRequest extends {
|
|
246
255
|
query: infer Q;
|
|
247
256
|
} ? Q : never, TRequest extends {
|
|
@@ -250,7 +259,7 @@ type InfiniteReadResolverContext<TSchema, TData, TError, TRequest> = ResolverCon
|
|
|
250
259
|
params: infer P;
|
|
251
260
|
} ? P : never, never>;
|
|
252
261
|
type ResolvedInfiniteReadOptions<TSchema, TPlugins extends PluginArray, TData, TError, TRequest> = _spoosh_core.ResolveTypes<MergePluginOptions<TPlugins>["infiniteRead"], InfiniteReadResolverContext<TSchema, TData, TError, TRequest>>;
|
|
253
|
-
type UseInfiniteReadFn<TDefaultError, TSchema, TPlugins extends PluginArray> = <TData, TItem, TError = TDefaultError, TRequest extends AnyInfiniteRequestOptions = AnyInfiniteRequestOptions>(readFn: (api: InfiniteReadApiClient<TSchema, TDefaultError>) => Promise<SpooshResponse<TData, TError>>, readOptions: BaseInfiniteReadOptions<TData, TItem, TRequest> & ResolvedInfiniteReadOptions<TSchema, TPlugins, TData, TError, TRequest>) => BaseInfiniteReadResult<TData, TError, TItem
|
|
262
|
+
type UseInfiniteReadFn<TDefaultError, TSchema, TPlugins extends PluginArray> = <TData, TItem, TError = TDefaultError, TRequest extends AnyInfiniteRequestOptions = AnyInfiniteRequestOptions>(readFn: (api: InfiniteReadApiClient<TSchema, TDefaultError>) => Promise<SpooshResponse<TData, TError>>, readOptions: BaseInfiniteReadOptions<TData, TItem, TRequest> & ResolvedInfiniteReadOptions<TSchema, TPlugins, TData, TError, TRequest>) => BaseInfiniteReadResult<TData, TError, TItem, MergePluginResults<TPlugins>["read"]>;
|
|
254
263
|
/**
|
|
255
264
|
* Spoosh React hooks interface containing useRead, useWrite, and useInfiniteRead.
|
|
256
265
|
*
|
|
@@ -271,7 +280,7 @@ type SpooshReactHooks<TDefaultError, TSchema, TPlugins extends PluginArray> = {
|
|
|
271
280
|
* const { data, loading, error } = useRead((api) => api.posts.$get());
|
|
272
281
|
*
|
|
273
282
|
* const { data: post } = useRead(
|
|
274
|
-
* (api) => api.posts
|
|
283
|
+
* (api) => api.posts(postId).$get(),
|
|
275
284
|
* { enabled: !!postId }
|
|
276
285
|
* );
|
|
277
286
|
* ```
|
|
@@ -374,17 +383,17 @@ declare function createUseRead<TSchema, TDefaultError, TPlugins extends readonly
|
|
|
374
383
|
error: infer E;
|
|
375
384
|
}> ? E : unknown] extends [unknown] ? TDefaultError : TReadFn extends (...args: unknown[]) => Promise<{
|
|
376
385
|
error: infer E;
|
|
377
|
-
}> ? E : unknown
|
|
386
|
+
}> ? E : unknown, ResolveResultTypes<((TPlugins[number] extends infer T ? T extends TPlugins[number] ? T extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
|
|
378
387
|
readResult: infer R;
|
|
379
388
|
} ? R : object : object : never : never) extends infer T_1 ? T_1 extends (TPlugins[number] extends infer T_2 ? T_2 extends TPlugins[number] ? T_2 extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
|
|
380
389
|
readResult: infer R;
|
|
381
|
-
} ? R : object : object : never : never) ? T_1 extends unknown ? (x: T_1) => void : never : never : never) extends (x: infer I) => void ? I : never, TReadOpts
|
|
390
|
+
} ? R : object : object : never : never) ? T_1 extends unknown ? (x: T_1) => void : never : never : never) extends (x: infer I) => void ? I : never, TReadOpts>> & ResponseInputFields<ExtractResponseQuery<TReadFn>, ExtractResponseBody<TReadFn>, ExtractResponseFormData<TReadFn>, ExtractResponseParamNames<TReadFn>>;
|
|
382
391
|
|
|
383
392
|
declare function createUseWrite<TSchema, TDefaultError, TPlugins extends readonly SpooshPlugin<PluginTypeConfig>[]>(options: Omit<SpooshInstanceShape<unknown, TSchema, TDefaultError, TPlugins>, "_types">): <TMethod extends (...args: never[]) => Promise<SpooshResponse<unknown, unknown>>>(writeFn: (api: WriteApiClient<TSchema, TDefaultError>) => TMethod) => BaseWriteResult<ExtractMethodData<TMethod>, [ExtractMethodError<TMethod>] extends [unknown] ? TDefaultError : ExtractMethodError<TMethod>, ExtractMethodOptions<TMethod> & _spoosh_core.ResolveTypes<((TPlugins[number] extends infer T ? T extends TPlugins[number] ? T extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
|
|
384
393
|
writeOptions: infer W;
|
|
385
394
|
} ? W : object : object : never : never) extends infer T_1 ? T_1 extends (TPlugins[number] extends infer T_2 ? T_2 extends TPlugins[number] ? T_2 extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
|
|
386
395
|
writeOptions: infer W;
|
|
387
|
-
} ? W : object : object : never : never) ? T_1 extends unknown ? (x: T_1) => void : never : never : never) extends (x: infer I) => void ? I : never, ResolverContext<TSchema, ExtractMethodData<TMethod>, [ExtractMethodError<TMethod>] extends [unknown] ? TDefaultError : ExtractMethodError<TMethod>, ExtractMethodQuery<TMethod>, ExtractMethodBody<TMethod>, ExtractResponseParamNames<TMethod> extends never ? never : Record<ExtractResponseParamNames<TMethod>, string | number>, ExtractMethodFormData<TMethod>, ExtractMethodUrlEncoded<TMethod
|
|
396
|
+
} ? W : object : object : never : never) ? T_1 extends unknown ? (x: T_1) => void : never : never : never) extends (x: infer I) => void ? I : never, ResolverContext<TSchema, ExtractMethodData<TMethod>, [ExtractMethodError<TMethod>] extends [unknown] ? TDefaultError : ExtractMethodError<TMethod>, ExtractMethodQuery<TMethod>, ExtractMethodBody<TMethod>, ExtractResponseParamNames<TMethod> extends never ? never : Record<ExtractResponseParamNames<TMethod>, string | number>, ExtractMethodFormData<TMethod>, ExtractMethodUrlEncoded<TMethod>>>, ResolveResultTypes<((TPlugins[number] extends infer T_3 ? T_3 extends TPlugins[number] ? T_3 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
|
|
388
397
|
writeResult: infer W_1;
|
|
389
398
|
} ? W_1 : object : object : never : never) extends infer T_4 ? T_4 extends (TPlugins[number] extends infer T_5 ? T_5 extends TPlugins[number] ? T_5 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
|
|
390
399
|
writeResult: infer W_1;
|
|
@@ -392,20 +401,16 @@ declare function createUseWrite<TSchema, TDefaultError, TPlugins extends readonl
|
|
|
392
401
|
writeOptions: infer W;
|
|
393
402
|
} ? W : object : object : never : never) extends infer T_7 ? T_7 extends (TPlugins[number] extends infer T_8 ? T_8 extends TPlugins[number] ? T_8 extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
|
|
394
403
|
writeOptions: infer W;
|
|
395
|
-
} ? W : object : object : never : never) ? T_7 extends unknown ? (x: T_7) => void : never : never : never) extends (x: infer I) => void ? I : never, ResolverContext<TSchema, ExtractMethodData<TMethod>, [ExtractMethodError<TMethod>] extends [unknown] ? TDefaultError : ExtractMethodError<TMethod>, ExtractMethodQuery<TMethod>, ExtractMethodBody<TMethod>, ExtractResponseParamNames<TMethod> extends never ? never : Record<ExtractResponseParamNames<TMethod>, string | number>, ExtractMethodFormData<TMethod>, ExtractMethodUrlEncoded<TMethod
|
|
404
|
+
} ? W : object : object : never : never) ? T_7 extends unknown ? (x: T_7) => void : never : never : never) extends (x: infer I) => void ? I : never, ResolverContext<TSchema, ExtractMethodData<TMethod>, [ExtractMethodError<TMethod>] extends [unknown] ? TDefaultError : ExtractMethodError<TMethod>, ExtractMethodQuery<TMethod>, ExtractMethodBody<TMethod>, ExtractResponseParamNames<TMethod> extends never ? never : Record<ExtractResponseParamNames<TMethod>, string | number>, ExtractMethodFormData<TMethod>, ExtractMethodUrlEncoded<TMethod>>>>> & WriteResponseInputFields<ExtractResponseQuery<TMethod>, ExtractResponseBody<TMethod>, ExtractResponseFormData<TMethod>, ExtractResponseParamNames<TMethod>>;
|
|
396
405
|
|
|
397
|
-
declare function createUseInfiniteRead<TSchema, TDefaultError, TPlugins extends readonly SpooshPlugin<PluginTypeConfig>[]>(options: Omit<SpooshInstanceShape<unknown, TSchema, TDefaultError, TPlugins>, "_types">): <TData, TItem, TError = TDefaultError, TRequest extends AnyInfiniteRequestOptions = AnyInfiniteRequestOptions,
|
|
406
|
+
declare function createUseInfiniteRead<TSchema, TDefaultError, TPlugins extends readonly SpooshPlugin<PluginTypeConfig>[]>(options: Omit<SpooshInstanceShape<unknown, TSchema, TDefaultError, TPlugins>, "_types">): <TData, TItem, TError = TDefaultError, TRequest extends AnyInfiniteRequestOptions = AnyInfiniteRequestOptions>(readFn: (api: InfiniteReadApiClient<TSchema, TDefaultError>) => Promise<SpooshResponse<TData, TError>>, readOptions: BaseInfiniteReadOptions<TData, TItem, TRequest> & (((TPlugins[number] extends infer T_3 ? T_3 extends TPlugins[number] ? T_3 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
|
|
398
407
|
infiniteReadOptions: infer I_1;
|
|
399
408
|
} ? I_1 : object : object : never : never) extends infer T_4 ? T_4 extends (TPlugins[number] extends infer T_5 ? T_5 extends TPlugins[number] ? T_5 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
|
|
400
409
|
infiniteReadOptions: infer I_1;
|
|
401
|
-
} ? I_1 : object : object : never : never) ? T_4 extends unknown ? (x: T_4) => void : never : never : never) extends (x: infer I) => void ? I : never)
|
|
402
|
-
infiniteReadOptions: infer I_1;
|
|
403
|
-
} ? I_1 : object : object : never : never) extends infer T_7 ? T_7 extends (TPlugins[number] extends infer T_8 ? T_8 extends TPlugins[number] ? T_8 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
|
|
404
|
-
infiniteReadOptions: infer I_1;
|
|
405
|
-
} ? I_1 : object : object : never : never) ? T_7 extends unknown ? (x: T_7) => void : never : never : never) extends (x: infer I) => void ? I : never)>(readFn: (api: InfiniteReadApiClient<TSchema, TDefaultError>) => Promise<SpooshResponse<TData, TError>>, readOptions: TReadOpts) => BaseInfiniteReadResult<TData, TError, TItem> & ResolveResultTypes<((TPlugins[number] extends infer T ? T extends TPlugins[number] ? T extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
|
|
410
|
+
} ? I_1 : object : object : never : never) ? T_4 extends unknown ? (x: T_4) => void : never : never : never) extends (x: infer I) => void ? I : never)) => BaseInfiniteReadResult<TData, TError, TItem, ((TPlugins[number] extends infer T ? T extends TPlugins[number] ? T extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
|
|
406
411
|
readResult: infer R;
|
|
407
412
|
} ? R : object : object : never : never) extends infer T_1 ? T_1 extends (TPlugins[number] extends infer T_2 ? T_2 extends TPlugins[number] ? T_2 extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
|
|
408
413
|
readResult: infer R;
|
|
409
|
-
} ? R : object : object : never : never) ? T_1 extends unknown ? (x: T_1) => void : never : never : never) extends (x: infer I) => void ? I : never
|
|
414
|
+
} ? R : object : object : never : never) ? T_1 extends unknown ? (x: T_1) => void : never : never : never) extends (x: infer I) => void ? I : never>;
|
|
410
415
|
|
|
411
416
|
export { type BaseInfiniteReadOptions, type BaseInfiniteReadResult, type BaseReadOptions, type BaseReadResult, type BaseWriteResult, type PluginHooksConfig, type SpooshReactHooks, type UseInfiniteReadResult, type UseReadResult, type UseWriteResult, createReactSpoosh, createUseInfiniteRead, createUseRead, createUseWrite };
|
package/dist/index.d.ts
CHANGED
|
@@ -22,8 +22,9 @@ type BaseReadOptions = TagOptions & {
|
|
|
22
22
|
*
|
|
23
23
|
* @template TData - The response data type
|
|
24
24
|
* @template TError - The error type
|
|
25
|
+
* @template TPluginResult - Plugin-provided result fields
|
|
25
26
|
*/
|
|
26
|
-
type BaseReadResult<TData, TError
|
|
27
|
+
type BaseReadResult<TData, TError, TPluginResult = Record<string, unknown>> = {
|
|
27
28
|
/** True during the initial load (no data yet) */
|
|
28
29
|
loading: boolean;
|
|
29
30
|
/** True during any fetch operation */
|
|
@@ -32,6 +33,8 @@ type BaseReadResult<TData, TError> = {
|
|
|
32
33
|
data: TData | undefined;
|
|
33
34
|
/** Error from the last failed request */
|
|
34
35
|
error: TError | undefined;
|
|
36
|
+
/** Plugin-provided metadata */
|
|
37
|
+
meta: TPluginResult;
|
|
35
38
|
/** Abort the current fetch operation */
|
|
36
39
|
abort: () => void;
|
|
37
40
|
/** Manually trigger a refetch */
|
|
@@ -43,8 +46,9 @@ type BaseReadResult<TData, TError> = {
|
|
|
43
46
|
* @template TData - The response data type
|
|
44
47
|
* @template TError - The error type
|
|
45
48
|
* @template TOptions - The trigger options type
|
|
49
|
+
* @template TPluginResult - Plugin-provided result fields
|
|
46
50
|
*/
|
|
47
|
-
type BaseWriteResult<TData, TError, TOptions
|
|
51
|
+
type BaseWriteResult<TData, TError, TOptions, TPluginResult = Record<string, unknown>> = {
|
|
48
52
|
/** Execute the mutation with optional options */
|
|
49
53
|
trigger: (options?: TOptions) => Promise<SpooshResponse<TData, TError>>;
|
|
50
54
|
/** True while the mutation is in progress */
|
|
@@ -53,6 +57,8 @@ type BaseWriteResult<TData, TError, TOptions> = {
|
|
|
53
57
|
data: TData | undefined;
|
|
54
58
|
/** Error from the last failed request */
|
|
55
59
|
error: TError | undefined;
|
|
60
|
+
/** Plugin-provided metadata */
|
|
61
|
+
meta: TPluginResult;
|
|
56
62
|
/** Reset the state to initial values */
|
|
57
63
|
reset: () => void;
|
|
58
64
|
/** Abort the current mutation */
|
|
@@ -199,8 +205,9 @@ type BaseInfiniteReadOptions<TData, TItem, TRequest = AnyInfiniteRequestOptions>
|
|
|
199
205
|
* @template TData - The response data type for each page
|
|
200
206
|
* @template TError - The error type
|
|
201
207
|
* @template TItem - The item type after merging all responses
|
|
208
|
+
* @template TPluginResult - Plugin-provided result fields
|
|
202
209
|
*/
|
|
203
|
-
type BaseInfiniteReadResult<TData, TError, TItem
|
|
210
|
+
type BaseInfiniteReadResult<TData, TError, TItem, TPluginResult = Record<string, unknown>> = {
|
|
204
211
|
/** Merged items from all fetched responses */
|
|
205
212
|
data: TItem[] | undefined;
|
|
206
213
|
/** Array of all raw response data */
|
|
@@ -217,6 +224,8 @@ type BaseInfiniteReadResult<TData, TError, TItem> = {
|
|
|
217
224
|
canFetchNext: boolean;
|
|
218
225
|
/** Whether there's a previous page available to fetch */
|
|
219
226
|
canFetchPrev: boolean;
|
|
227
|
+
/** Plugin-provided metadata */
|
|
228
|
+
meta: TPluginResult;
|
|
220
229
|
/** Fetch the next page */
|
|
221
230
|
fetchNext: () => Promise<void>;
|
|
222
231
|
/** Fetch the previous page */
|
|
@@ -240,8 +249,8 @@ type ResolvedWriteOptions<TSchema, TPlugins extends PluginArray, TMethod, TDefau
|
|
|
240
249
|
type UseReadFn<TDefaultError, TSchema, TPlugins extends PluginArray> = <TReadFn extends (api: ReadApiClient<TSchema, TDefaultError>) => Promise<{
|
|
241
250
|
data?: unknown;
|
|
242
251
|
error?: unknown;
|
|
243
|
-
}
|
|
244
|
-
type UseWriteFn<TDefaultError, TSchema, TPlugins extends PluginArray> = <TMethod extends (...args: never[]) => Promise<SpooshResponse<unknown, unknown>>, TWriteOpts extends (TMethod extends (options: infer O) => unknown ? O : object) & ResolvedWriteOptions<TSchema, TPlugins, TMethod, TDefaultError> = (TMethod extends (options: infer O) => unknown ? O : object) & ResolvedWriteOptions<TSchema, TPlugins, TMethod, TDefaultError>>(writeFn: (api: WriteApiClient<TSchema, TDefaultError>) => TMethod) => BaseWriteResult<ExtractMethodData<TMethod>, InferError<ExtractMethodError<TMethod>, TDefaultError>, TWriteOpts> & WriteResponseInputFields<ExtractResponseQuery<TMethod>, ExtractResponseBody<TMethod>, ExtractResponseFormData<TMethod>, ExtractResponseParamNames<TMethod
|
|
252
|
+
}>>(readFn: TReadFn, readOptions?: BaseReadOptions & ResolvedReadOptions<TSchema, TPlugins, TReadFn, TDefaultError>) => BaseReadResult<ExtractMethodData<TReadFn>, InferError<ExtractMethodError<TReadFn>, TDefaultError>, ResolveResultTypes<MergePluginResults<TPlugins>["read"], BaseReadOptions & ResolvedReadOptions<TSchema, TPlugins, TReadFn, TDefaultError>>> & ResponseInputFields<ExtractResponseQuery<TReadFn>, ExtractResponseBody<TReadFn>, ExtractResponseFormData<TReadFn>, ExtractResponseParamNames<TReadFn>>;
|
|
253
|
+
type UseWriteFn<TDefaultError, TSchema, TPlugins extends PluginArray> = <TMethod extends (...args: never[]) => Promise<SpooshResponse<unknown, unknown>>, TWriteOpts extends (TMethod extends (options: infer O) => unknown ? O : object) & ResolvedWriteOptions<TSchema, TPlugins, TMethod, TDefaultError> = (TMethod extends (options: infer O) => unknown ? O : object) & ResolvedWriteOptions<TSchema, TPlugins, TMethod, TDefaultError>>(writeFn: (api: WriteApiClient<TSchema, TDefaultError>) => TMethod) => BaseWriteResult<ExtractMethodData<TMethod>, InferError<ExtractMethodError<TMethod>, TDefaultError>, TWriteOpts, ResolveResultTypes<MergePluginResults<TPlugins>["write"], TWriteOpts>> & WriteResponseInputFields<ExtractResponseQuery<TMethod>, ExtractResponseBody<TMethod>, ExtractResponseFormData<TMethod>, ExtractResponseParamNames<TMethod>>;
|
|
245
254
|
type InfiniteReadResolverContext<TSchema, TData, TError, TRequest> = ResolverContext<TSchema, TData, TError, TRequest extends {
|
|
246
255
|
query: infer Q;
|
|
247
256
|
} ? Q : never, TRequest extends {
|
|
@@ -250,7 +259,7 @@ type InfiniteReadResolverContext<TSchema, TData, TError, TRequest> = ResolverCon
|
|
|
250
259
|
params: infer P;
|
|
251
260
|
} ? P : never, never>;
|
|
252
261
|
type ResolvedInfiniteReadOptions<TSchema, TPlugins extends PluginArray, TData, TError, TRequest> = _spoosh_core.ResolveTypes<MergePluginOptions<TPlugins>["infiniteRead"], InfiniteReadResolverContext<TSchema, TData, TError, TRequest>>;
|
|
253
|
-
type UseInfiniteReadFn<TDefaultError, TSchema, TPlugins extends PluginArray> = <TData, TItem, TError = TDefaultError, TRequest extends AnyInfiniteRequestOptions = AnyInfiniteRequestOptions>(readFn: (api: InfiniteReadApiClient<TSchema, TDefaultError>) => Promise<SpooshResponse<TData, TError>>, readOptions: BaseInfiniteReadOptions<TData, TItem, TRequest> & ResolvedInfiniteReadOptions<TSchema, TPlugins, TData, TError, TRequest>) => BaseInfiniteReadResult<TData, TError, TItem
|
|
262
|
+
type UseInfiniteReadFn<TDefaultError, TSchema, TPlugins extends PluginArray> = <TData, TItem, TError = TDefaultError, TRequest extends AnyInfiniteRequestOptions = AnyInfiniteRequestOptions>(readFn: (api: InfiniteReadApiClient<TSchema, TDefaultError>) => Promise<SpooshResponse<TData, TError>>, readOptions: BaseInfiniteReadOptions<TData, TItem, TRequest> & ResolvedInfiniteReadOptions<TSchema, TPlugins, TData, TError, TRequest>) => BaseInfiniteReadResult<TData, TError, TItem, MergePluginResults<TPlugins>["read"]>;
|
|
254
263
|
/**
|
|
255
264
|
* Spoosh React hooks interface containing useRead, useWrite, and useInfiniteRead.
|
|
256
265
|
*
|
|
@@ -271,7 +280,7 @@ type SpooshReactHooks<TDefaultError, TSchema, TPlugins extends PluginArray> = {
|
|
|
271
280
|
* const { data, loading, error } = useRead((api) => api.posts.$get());
|
|
272
281
|
*
|
|
273
282
|
* const { data: post } = useRead(
|
|
274
|
-
* (api) => api.posts
|
|
283
|
+
* (api) => api.posts(postId).$get(),
|
|
275
284
|
* { enabled: !!postId }
|
|
276
285
|
* );
|
|
277
286
|
* ```
|
|
@@ -374,17 +383,17 @@ declare function createUseRead<TSchema, TDefaultError, TPlugins extends readonly
|
|
|
374
383
|
error: infer E;
|
|
375
384
|
}> ? E : unknown] extends [unknown] ? TDefaultError : TReadFn extends (...args: unknown[]) => Promise<{
|
|
376
385
|
error: infer E;
|
|
377
|
-
}> ? E : unknown
|
|
386
|
+
}> ? E : unknown, ResolveResultTypes<((TPlugins[number] extends infer T ? T extends TPlugins[number] ? T extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
|
|
378
387
|
readResult: infer R;
|
|
379
388
|
} ? R : object : object : never : never) extends infer T_1 ? T_1 extends (TPlugins[number] extends infer T_2 ? T_2 extends TPlugins[number] ? T_2 extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
|
|
380
389
|
readResult: infer R;
|
|
381
|
-
} ? R : object : object : never : never) ? T_1 extends unknown ? (x: T_1) => void : never : never : never) extends (x: infer I) => void ? I : never, TReadOpts
|
|
390
|
+
} ? R : object : object : never : never) ? T_1 extends unknown ? (x: T_1) => void : never : never : never) extends (x: infer I) => void ? I : never, TReadOpts>> & ResponseInputFields<ExtractResponseQuery<TReadFn>, ExtractResponseBody<TReadFn>, ExtractResponseFormData<TReadFn>, ExtractResponseParamNames<TReadFn>>;
|
|
382
391
|
|
|
383
392
|
declare function createUseWrite<TSchema, TDefaultError, TPlugins extends readonly SpooshPlugin<PluginTypeConfig>[]>(options: Omit<SpooshInstanceShape<unknown, TSchema, TDefaultError, TPlugins>, "_types">): <TMethod extends (...args: never[]) => Promise<SpooshResponse<unknown, unknown>>>(writeFn: (api: WriteApiClient<TSchema, TDefaultError>) => TMethod) => BaseWriteResult<ExtractMethodData<TMethod>, [ExtractMethodError<TMethod>] extends [unknown] ? TDefaultError : ExtractMethodError<TMethod>, ExtractMethodOptions<TMethod> & _spoosh_core.ResolveTypes<((TPlugins[number] extends infer T ? T extends TPlugins[number] ? T extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
|
|
384
393
|
writeOptions: infer W;
|
|
385
394
|
} ? W : object : object : never : never) extends infer T_1 ? T_1 extends (TPlugins[number] extends infer T_2 ? T_2 extends TPlugins[number] ? T_2 extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
|
|
386
395
|
writeOptions: infer W;
|
|
387
|
-
} ? W : object : object : never : never) ? T_1 extends unknown ? (x: T_1) => void : never : never : never) extends (x: infer I) => void ? I : never, ResolverContext<TSchema, ExtractMethodData<TMethod>, [ExtractMethodError<TMethod>] extends [unknown] ? TDefaultError : ExtractMethodError<TMethod>, ExtractMethodQuery<TMethod>, ExtractMethodBody<TMethod>, ExtractResponseParamNames<TMethod> extends never ? never : Record<ExtractResponseParamNames<TMethod>, string | number>, ExtractMethodFormData<TMethod>, ExtractMethodUrlEncoded<TMethod
|
|
396
|
+
} ? W : object : object : never : never) ? T_1 extends unknown ? (x: T_1) => void : never : never : never) extends (x: infer I) => void ? I : never, ResolverContext<TSchema, ExtractMethodData<TMethod>, [ExtractMethodError<TMethod>] extends [unknown] ? TDefaultError : ExtractMethodError<TMethod>, ExtractMethodQuery<TMethod>, ExtractMethodBody<TMethod>, ExtractResponseParamNames<TMethod> extends never ? never : Record<ExtractResponseParamNames<TMethod>, string | number>, ExtractMethodFormData<TMethod>, ExtractMethodUrlEncoded<TMethod>>>, ResolveResultTypes<((TPlugins[number] extends infer T_3 ? T_3 extends TPlugins[number] ? T_3 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
|
|
388
397
|
writeResult: infer W_1;
|
|
389
398
|
} ? W_1 : object : object : never : never) extends infer T_4 ? T_4 extends (TPlugins[number] extends infer T_5 ? T_5 extends TPlugins[number] ? T_5 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
|
|
390
399
|
writeResult: infer W_1;
|
|
@@ -392,20 +401,16 @@ declare function createUseWrite<TSchema, TDefaultError, TPlugins extends readonl
|
|
|
392
401
|
writeOptions: infer W;
|
|
393
402
|
} ? W : object : object : never : never) extends infer T_7 ? T_7 extends (TPlugins[number] extends infer T_8 ? T_8 extends TPlugins[number] ? T_8 extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
|
|
394
403
|
writeOptions: infer W;
|
|
395
|
-
} ? W : object : object : never : never) ? T_7 extends unknown ? (x: T_7) => void : never : never : never) extends (x: infer I) => void ? I : never, ResolverContext<TSchema, ExtractMethodData<TMethod>, [ExtractMethodError<TMethod>] extends [unknown] ? TDefaultError : ExtractMethodError<TMethod>, ExtractMethodQuery<TMethod>, ExtractMethodBody<TMethod>, ExtractResponseParamNames<TMethod> extends never ? never : Record<ExtractResponseParamNames<TMethod>, string | number>, ExtractMethodFormData<TMethod>, ExtractMethodUrlEncoded<TMethod
|
|
404
|
+
} ? W : object : object : never : never) ? T_7 extends unknown ? (x: T_7) => void : never : never : never) extends (x: infer I) => void ? I : never, ResolverContext<TSchema, ExtractMethodData<TMethod>, [ExtractMethodError<TMethod>] extends [unknown] ? TDefaultError : ExtractMethodError<TMethod>, ExtractMethodQuery<TMethod>, ExtractMethodBody<TMethod>, ExtractResponseParamNames<TMethod> extends never ? never : Record<ExtractResponseParamNames<TMethod>, string | number>, ExtractMethodFormData<TMethod>, ExtractMethodUrlEncoded<TMethod>>>>> & WriteResponseInputFields<ExtractResponseQuery<TMethod>, ExtractResponseBody<TMethod>, ExtractResponseFormData<TMethod>, ExtractResponseParamNames<TMethod>>;
|
|
396
405
|
|
|
397
|
-
declare function createUseInfiniteRead<TSchema, TDefaultError, TPlugins extends readonly SpooshPlugin<PluginTypeConfig>[]>(options: Omit<SpooshInstanceShape<unknown, TSchema, TDefaultError, TPlugins>, "_types">): <TData, TItem, TError = TDefaultError, TRequest extends AnyInfiniteRequestOptions = AnyInfiniteRequestOptions,
|
|
406
|
+
declare function createUseInfiniteRead<TSchema, TDefaultError, TPlugins extends readonly SpooshPlugin<PluginTypeConfig>[]>(options: Omit<SpooshInstanceShape<unknown, TSchema, TDefaultError, TPlugins>, "_types">): <TData, TItem, TError = TDefaultError, TRequest extends AnyInfiniteRequestOptions = AnyInfiniteRequestOptions>(readFn: (api: InfiniteReadApiClient<TSchema, TDefaultError>) => Promise<SpooshResponse<TData, TError>>, readOptions: BaseInfiniteReadOptions<TData, TItem, TRequest> & (((TPlugins[number] extends infer T_3 ? T_3 extends TPlugins[number] ? T_3 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
|
|
398
407
|
infiniteReadOptions: infer I_1;
|
|
399
408
|
} ? I_1 : object : object : never : never) extends infer T_4 ? T_4 extends (TPlugins[number] extends infer T_5 ? T_5 extends TPlugins[number] ? T_5 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
|
|
400
409
|
infiniteReadOptions: infer I_1;
|
|
401
|
-
} ? I_1 : object : object : never : never) ? T_4 extends unknown ? (x: T_4) => void : never : never : never) extends (x: infer I) => void ? I : never)
|
|
402
|
-
infiniteReadOptions: infer I_1;
|
|
403
|
-
} ? I_1 : object : object : never : never) extends infer T_7 ? T_7 extends (TPlugins[number] extends infer T_8 ? T_8 extends TPlugins[number] ? T_8 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
|
|
404
|
-
infiniteReadOptions: infer I_1;
|
|
405
|
-
} ? I_1 : object : object : never : never) ? T_7 extends unknown ? (x: T_7) => void : never : never : never) extends (x: infer I) => void ? I : never)>(readFn: (api: InfiniteReadApiClient<TSchema, TDefaultError>) => Promise<SpooshResponse<TData, TError>>, readOptions: TReadOpts) => BaseInfiniteReadResult<TData, TError, TItem> & ResolveResultTypes<((TPlugins[number] extends infer T ? T extends TPlugins[number] ? T extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
|
|
410
|
+
} ? I_1 : object : object : never : never) ? T_4 extends unknown ? (x: T_4) => void : never : never : never) extends (x: infer I) => void ? I : never)) => BaseInfiniteReadResult<TData, TError, TItem, ((TPlugins[number] extends infer T ? T extends TPlugins[number] ? T extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
|
|
406
411
|
readResult: infer R;
|
|
407
412
|
} ? R : object : object : never : never) extends infer T_1 ? T_1 extends (TPlugins[number] extends infer T_2 ? T_2 extends TPlugins[number] ? T_2 extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
|
|
408
413
|
readResult: infer R;
|
|
409
|
-
} ? R : object : object : never : never) ? T_1 extends unknown ? (x: T_1) => void : never : never : never) extends (x: infer I) => void ? I : never
|
|
414
|
+
} ? R : object : object : never : never) ? T_1 extends unknown ? (x: T_1) => void : never : never : never) extends (x: infer I) => void ? I : never>;
|
|
410
415
|
|
|
411
416
|
export { type BaseInfiniteReadOptions, type BaseInfiniteReadResult, type BaseReadOptions, type BaseReadResult, type BaseWriteResult, type PluginHooksConfig, type SpooshReactHooks, type UseInfiniteReadResult, type UseReadResult, type UseWriteResult, createReactSpoosh, createUseInfiniteRead, createUseRead, createUseWrite };
|
package/dist/index.js
CHANGED
|
@@ -197,7 +197,7 @@ function createUseRead(options) {
|
|
|
197
197
|
const loading = requestState.isPending && !hasData;
|
|
198
198
|
const fetching = requestState.isPending;
|
|
199
199
|
const result = {
|
|
200
|
-
|
|
200
|
+
meta: pluginResultData,
|
|
201
201
|
...inputField,
|
|
202
202
|
data: state.data,
|
|
203
203
|
error: requestState.error ?? state.error,
|
|
@@ -322,7 +322,7 @@ function createUseWrite(options) {
|
|
|
322
322
|
const loading = requestState.isPending;
|
|
323
323
|
const result = {
|
|
324
324
|
trigger,
|
|
325
|
-
|
|
325
|
+
meta: pluginResultData,
|
|
326
326
|
...inputField,
|
|
327
327
|
data: state.data,
|
|
328
328
|
error: requestState.error ?? state.error,
|
|
@@ -494,7 +494,10 @@ function createUseInfiniteRead(options) {
|
|
|
494
494
|
const prevContext = controller.getContext();
|
|
495
495
|
controller.update(prevContext);
|
|
496
496
|
}, [JSON.stringify(pluginOpts)]);
|
|
497
|
+
const entry = stateManager.getCache(queryKey);
|
|
498
|
+
const pluginResultData = entry?.pluginResult ? Object.fromEntries(entry.pluginResult) : {};
|
|
497
499
|
const result = {
|
|
500
|
+
meta: pluginResultData,
|
|
498
501
|
data: state.data,
|
|
499
502
|
allResponses: state.allResponses,
|
|
500
503
|
loading,
|
package/dist/index.mjs
CHANGED
|
@@ -181,7 +181,7 @@ function createUseRead(options) {
|
|
|
181
181
|
const loading = requestState.isPending && !hasData;
|
|
182
182
|
const fetching = requestState.isPending;
|
|
183
183
|
const result = {
|
|
184
|
-
|
|
184
|
+
meta: pluginResultData,
|
|
185
185
|
...inputField,
|
|
186
186
|
data: state.data,
|
|
187
187
|
error: requestState.error ?? state.error,
|
|
@@ -317,7 +317,7 @@ function createUseWrite(options) {
|
|
|
317
317
|
const loading = requestState.isPending;
|
|
318
318
|
const result = {
|
|
319
319
|
trigger,
|
|
320
|
-
|
|
320
|
+
meta: pluginResultData,
|
|
321
321
|
...inputField,
|
|
322
322
|
data: state.data,
|
|
323
323
|
error: requestState.error ?? state.error,
|
|
@@ -500,7 +500,10 @@ function createUseInfiniteRead(options) {
|
|
|
500
500
|
const prevContext = controller.getContext();
|
|
501
501
|
controller.update(prevContext);
|
|
502
502
|
}, [JSON.stringify(pluginOpts)]);
|
|
503
|
+
const entry = stateManager.getCache(queryKey);
|
|
504
|
+
const pluginResultData = entry?.pluginResult ? Object.fromEntries(entry.pluginResult) : {};
|
|
503
505
|
const result = {
|
|
506
|
+
meta: pluginResultData,
|
|
504
507
|
data: state.data,
|
|
505
508
|
allResponses: state.allResponses,
|
|
506
509
|
loading,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spoosh/react",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "React hooks for Spoosh API client",
|
|
6
6
|
"keywords": [
|
|
@@ -33,12 +33,13 @@
|
|
|
33
33
|
"require": "./dist/index.js"
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
|
-
"dependencies": {
|
|
37
|
-
"@spoosh/core": "0.3.0"
|
|
38
|
-
},
|
|
39
36
|
"peerDependencies": {
|
|
37
|
+
"@spoosh/core": ">=0.4.0",
|
|
40
38
|
"react": "^18 || ^19"
|
|
41
39
|
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@spoosh/core": "0.4.0"
|
|
42
|
+
},
|
|
42
43
|
"scripts": {
|
|
43
44
|
"dev": "tsup --watch",
|
|
44
45
|
"build": "tsup",
|