@openapi-qraft/react 1.0.0-beta.3 → 1.0.0-beta.5
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/CHANGELOG.md +13 -0
- package/README.md +7 -0
- package/dist/ServiceOperation.d.ts +15 -3
- package/dist/ServiceOperation.d.ts.map +1 -1
- package/dist/callbacks/useInfiniteQuery.d.ts +0 -6
- package/dist/callbacks/useInfiniteQuery.d.ts.map +1 -1
- package/dist/callbacks/useInfiniteQuery.js +2 -27
- package/dist/callbacks/useInfiniteQuery.js.map +1 -1
- package/dist/callbacks/useMutation.d.ts.map +1 -1
- package/dist/callbacks/useMutation.js +1 -0
- package/dist/callbacks/useMutation.js.map +1 -1
- package/dist/callbacks/useQuery.d.ts.map +1 -1
- package/dist/callbacks/useQuery.js +1 -0
- package/dist/callbacks/useQuery.js.map +1 -1
- package/dist/callbacks/useSuspenseInfiniteQuery.d.ts +9 -0
- package/dist/callbacks/useSuspenseInfiniteQuery.d.ts.map +1 -0
- package/dist/callbacks/useSuspenseInfiniteQuery.js +25 -0
- package/dist/callbacks/useSuspenseInfiniteQuery.js.map +1 -0
- package/dist/callbacks/useSuspenseQuery.d.ts +9 -0
- package/dist/callbacks/useSuspenseQuery.d.ts.map +1 -0
- package/dist/callbacks/useSuspenseQuery.js +28 -0
- package/dist/callbacks/useSuspenseQuery.js.map +1 -0
- package/dist/lib/shelfMerge.d.ts +7 -0
- package/dist/lib/shelfMerge.d.ts.map +1 -0
- package/dist/lib/shelfMerge.js +28 -0
- package/dist/lib/shelfMerge.js.map +1 -0
- package/package.json +2 -2
- package/src/ServiceOperation.ts +58 -2
- package/src/callbacks/useInfiniteQuery.ts +3 -36
- package/src/callbacks/useMutation.ts +2 -0
- package/src/callbacks/useQuery.ts +2 -0
- package/src/callbacks/useSuspenseInfiniteQuery.ts +60 -0
- package/src/callbacks/useSuspenseQuery.ts +64 -0
- package/src/{callbacks → lib}/shelfMerge.test.ts +1 -1
- package/src/lib/shelfMerge.ts +35 -0
- package/src/qraftAPIClient.test.tsx +134 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @openapi-qraft/react
|
|
2
2
|
|
|
3
|
+
## 1.0.0-beta.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- cd66c2e: feature: add support of `useSuspenseQuery(..)` hook
|
|
8
|
+
- 1b93dc7: feature: add support of `useSuspenseInfiniteQuery(..)` hook
|
|
9
|
+
|
|
10
|
+
## 1.0.0-beta.4
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- c940886: Add 'use client' header for Next.js /app compatibility
|
|
15
|
+
|
|
3
16
|
## 1.0.0-beta.3
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -318,6 +318,13 @@ infiniteQuery.fetchNextPage();
|
|
|
318
318
|
infiniteQuery.fetchPreviousPage();
|
|
319
319
|
```
|
|
320
320
|
|
|
321
|
+
### Suspense Queries
|
|
322
|
+
|
|
323
|
+
Supported Suspense Queries are:
|
|
324
|
+
|
|
325
|
+
- [useSuspenseQuery 🔗](https://tanstack.com/query/latest/docs/framework/react/reference/useSuspenseQuery)
|
|
326
|
+
- [useSuspenseInfiniteQuery 🔗](https://tanstack.com/query/latest/docs/framework/react/reference/useSuspenseInfiniteQuery)
|
|
327
|
+
|
|
321
328
|
## Contributing
|
|
322
329
|
|
|
323
330
|
Contributions are welcome! If you have suggestions or want to improve `@openapi-qraft/react`, please feel free to submit
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DefaultError, InfiniteData,
|
|
2
|
-
import
|
|
1
|
+
import { DefaultError, InfiniteData, InfiniteQueryPageParamsOptions, NoInfer, QueryClient, SetDataOptions, Updater } from '@tanstack/query-core';
|
|
2
|
+
import { DefinedInitialDataInfiniteOptions, DefinedInitialDataOptions, DefinedUseInfiniteQueryResult, DefinedUseQueryResult, UndefinedInitialDataInfiniteOptions, UndefinedInitialDataOptions, UseInfiniteQueryResult, UseMutationOptions, UseMutationResult, UseQueryResult, UseSuspenseInfiniteQueryOptions, UseSuspenseInfiniteQueryResult, UseSuspenseQueryOptions, UseSuspenseQueryResult } from '@tanstack/react-query';
|
|
3
3
|
export type ServiceOperationQueryKey<S extends {
|
|
4
4
|
url: string;
|
|
5
5
|
}, T> = [
|
|
@@ -18,7 +18,7 @@ export type ServiceOperationMutationKey<S extends Record<'url' | 'method', strin
|
|
|
18
18
|
export interface ServiceOperationQuery<TSchema extends {
|
|
19
19
|
url: string;
|
|
20
20
|
method: string;
|
|
21
|
-
}, TData, TParams, TError = DefaultError> extends ServiceOperationUseQuery<TSchema, TData, TParams, TError>, ServiceOperationUseInfiniteQuery<TSchema, TData, TParams, TError>, ServiceOperationQueryFn<TSchema, TData, TParams>, ServiceOperationGetQueryData<TData, TParams>, ServiceOperationGetInfiniteQueryData<TData, TParams>, ServiceOperationSetQueryData<TData, TParams>, ServiceOperationSetInfiniteQueryData<TData, TParams> {
|
|
21
|
+
}, TData, TParams, TError = DefaultError> extends ServiceOperationUseQuery<TSchema, TData, TParams, TError>, ServiceOperationUseInfiniteQuery<TSchema, TData, TParams, TError>, ServiceOperationUseSuspenseQueryQuery<TSchema, TData, TParams, TError>, ServiceOperationUseSuspenseInfiniteQuery<TSchema, TData, TParams, TError>, ServiceOperationQueryFn<TSchema, TData, TParams>, ServiceOperationGetQueryData<TData, TParams>, ServiceOperationGetInfiniteQueryData<TData, TParams>, ServiceOperationSetQueryData<TData, TParams>, ServiceOperationSetInfiniteQueryData<TData, TParams> {
|
|
22
22
|
schema: TSchema;
|
|
23
23
|
}
|
|
24
24
|
interface ServiceOperationUseQuery<TSchema extends {
|
|
@@ -40,6 +40,18 @@ interface ServiceOperationUseInfiniteQuery<TSchema extends {
|
|
|
40
40
|
useInfiniteQuery<TPageParam extends TParams>(params: TParams, options: Omit<UndefinedInitialDataInfiniteOptions<TData, TError, InfiniteData<TData>, ServiceOperationInfiniteQueryKey<TSchema, TParams> | readonly [...ServiceOperationInfiniteQueryKey<TSchema, TParams>], PartialParams<TPageParam>>, 'queryKey' | 'getPreviousPageParam' | 'getNextPageParam' | 'initialPageParam'> & InfiniteQueryPageParamsOptions<TData, PartialParams<TPageParam>>, queryClient?: QueryClient): UseInfiniteQueryResult<InfiniteData<TData>, TError | Error>;
|
|
41
41
|
useInfiniteQuery<TPageParam extends TParams>(params: TParams, options: Omit<DefinedInitialDataInfiniteOptions<TData, TError, InfiniteData<TData>, ServiceOperationInfiniteQueryKey<TSchema, TParams> | readonly [...ServiceOperationInfiniteQueryKey<TSchema, TParams>], PartialParams<TPageParam>>, 'queryKey' | 'getPreviousPageParam' | 'getNextPageParam' | 'initialPageParam'> & InfiniteQueryPageParamsOptions<TData, PartialParams<TPageParam>>, queryClient?: QueryClient): DefinedUseInfiniteQueryResult<InfiniteData<TData>, TError | Error>;
|
|
42
42
|
}
|
|
43
|
+
interface ServiceOperationUseSuspenseInfiniteQuery<TSchema extends {
|
|
44
|
+
url: string;
|
|
45
|
+
method: string;
|
|
46
|
+
}, TData, TParams = {}, TError = DefaultError> {
|
|
47
|
+
useSuspenseInfiniteQuery<TPageParam extends TParams>(params: TParams, options: Omit<UseSuspenseInfiniteQueryOptions<TData, TError, InfiniteData<TData>, TData, ServiceOperationInfiniteQueryKey<TSchema, TParams> | readonly [...ServiceOperationInfiniteQueryKey<TSchema, TParams>], PartialParams<TPageParam>>, 'queryKey' | 'getPreviousPageParam' | 'getNextPageParam' | 'initialPageParam'> & InfiniteQueryPageParamsOptions<TData, PartialParams<TPageParam>>, queryClient?: QueryClient): UseSuspenseInfiniteQueryResult<InfiniteData<TData>, TError | Error>;
|
|
48
|
+
}
|
|
49
|
+
interface ServiceOperationUseSuspenseQueryQuery<TSchema extends {
|
|
50
|
+
url: string;
|
|
51
|
+
method: string;
|
|
52
|
+
}, TData, TParams = {}, TError = DefaultError> {
|
|
53
|
+
useSuspenseQuery(params: TParams, options?: Omit<UseSuspenseQueryOptions<TData, TError, TData, ServiceOperationQueryKey<TSchema, TParams> | readonly [...ServiceOperationQueryKey<TSchema, TParams>]>, 'queryKey'>, queryClient?: QueryClient): UseSuspenseQueryResult<TData, TError | Error>;
|
|
54
|
+
}
|
|
43
55
|
export interface ServiceOperationMutation<TSchema extends {
|
|
44
56
|
url: string;
|
|
45
57
|
method: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceOperation.d.ts","sourceRoot":"","sources":["../src/ServiceOperation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"ServiceOperation.d.ts","sourceRoot":"","sources":["../src/ServiceOperation.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,10 +4,4 @@ import type { QraftClientOptions } from '../qraftAPIClient.js';
|
|
|
4
4
|
import type { RequestClientSchema } from '../RequestClient.js';
|
|
5
5
|
import { ServiceOperationQuery } from '../ServiceOperation.js';
|
|
6
6
|
export declare const useInfiniteQuery: <TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>>(qraftOptions: QraftClientOptions | undefined, schema: RequestClientSchema, args: Parameters<ServiceOperationQuery<RequestClientSchema, unknown, unknown>['useInfiniteQuery']>) => UseInfiniteQueryResult<TData, TError>;
|
|
7
|
-
/**
|
|
8
|
-
* Merges objects with provided depth
|
|
9
|
-
* @param depth
|
|
10
|
-
* @param args
|
|
11
|
-
*/
|
|
12
|
-
export declare function shelfMerge<T>(depth?: number, ...args: T[]): T;
|
|
13
7
|
//# sourceMappingURL=useInfiniteQuery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInfiniteQuery.d.ts","sourceRoot":"","sources":["../../src/callbacks/useInfiniteQuery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useInfiniteQuery.d.ts","sourceRoot":"","sources":["../../src/callbacks/useInfiniteQuery.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAEL,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,eAAO,MAAM,gBAAgB,EAAE,CAC7B,YAAY,EACZ,MAAM,GAAG,YAAY,EACrB,KAAK,GAAG,YAAY,CAAC,YAAY,CAAC,EAElC,YAAY,EAAE,kBAAkB,GAAG,SAAS,EAC5C,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,UAAU,CACd,qBAAqB,CACnB,mBAAmB,EACnB,OAAO,EACP,OAAO,CACR,CAAC,kBAAkB,CAAC,CACtB,KACE,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAwBxC,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
'use client';
|
|
1
2
|
import { useContext } from 'react';
|
|
2
3
|
import { useInfiniteQuery as useInfiniteQueryBase, } from '@tanstack/react-query';
|
|
4
|
+
import { shelfMerge } from '../lib/shelfMerge.js';
|
|
3
5
|
import { QraftContext } from '../QraftContext.js';
|
|
4
6
|
export const useInfiniteQuery = (qraftOptions, schema, args) => {
|
|
5
7
|
const [params, options, ...restArgs] = args;
|
|
@@ -20,31 +22,4 @@ export const useInfiniteQuery = (qraftOptions, schema, args) => {
|
|
|
20
22
|
},
|
|
21
23
|
}, ...restArgs);
|
|
22
24
|
};
|
|
23
|
-
/**
|
|
24
|
-
* Merges objects with provided depth
|
|
25
|
-
* @param depth
|
|
26
|
-
* @param args
|
|
27
|
-
*/
|
|
28
|
-
export function shelfMerge(depth = 2, ...args) {
|
|
29
|
-
return args.reduce((acc, arg) => {
|
|
30
|
-
if (!arg || typeof arg !== 'object')
|
|
31
|
-
return acc;
|
|
32
|
-
Object.entries(arg).forEach(([key, value]) => {
|
|
33
|
-
if (typeof value !== 'object') {
|
|
34
|
-
acc[key] = value;
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
if (Array.isArray(value)) {
|
|
38
|
-
acc[key] = value;
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
if (depth > 1) {
|
|
42
|
-
acc[key] = shelfMerge(depth - 1, acc[key], value);
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
acc[key] = value;
|
|
46
|
-
});
|
|
47
|
-
return acc;
|
|
48
|
-
}, {});
|
|
49
|
-
}
|
|
50
25
|
//# sourceMappingURL=useInfiniteQuery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInfiniteQuery.js","sourceRoot":"","sources":["../../src/callbacks/useInfiniteQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGnC,OAAO,EACL,gBAAgB,IAAI,oBAAoB,GAEzC,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"useInfiniteQuery.js","sourceRoot":"","sources":["../../src/callbacks/useInfiniteQuery.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGnC,OAAO,EACL,gBAAgB,IAAI,oBAAoB,GAEzC,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlD,MAAM,CAAC,MAAM,gBAAgB,GAcgB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;IAC1E,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;IAE5C,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,IAAI,YAAY,CAAC;QACrE,EAAE,aAAa,CAAC;IAElB,IAAI,CAAC,aAAa;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAE5E,OAAO,oBAAoB,CACzB;QACE,GAAG,OAAO;QACV,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAe,CAAU;QACzE,OAAO,EACL,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC9D,OAAO,aAAa,CAAC,MAAM,EAAE;oBAC3B,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,CAAU;oBAC1D,MAAM;oBACN,IAAI;iBACL,CAAC,CAAC;YACL,CAAC;KACJ,EACD,GAAG,QAAQ,CACH,CAAC;AACb,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMutation.d.ts","sourceRoot":"","sources":["../../src/callbacks/useMutation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useMutation.d.ts","sourceRoot":"","sources":["../../src/callbacks/useMutation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EACL,wBAAwB,EAEzB,MAAM,wBAAwB,CAAC;AAEhC,eAAO,MAAM,WAAW,EAAE,CACxB,KAAK,GAAG,OAAO,EACf,MAAM,GAAG,YAAY,EACrB,UAAU,GAAG,IAAI,EACjB,QAAQ,GAAG,OAAO,EAElB,YAAY,EAAE,kBAAkB,GAAG,SAAS,EAC5C,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,UAAU,CACd,wBAAwB,CACtB,mBAAmB,EACnB,MAAM,GAAG,SAAS,EAClB,UAAU,EACV,KAAK,CACN,CAAC,aAAa,CAAC,CACjB,KACE,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAqEzD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMutation.js","sourceRoot":"","sources":["../../src/callbacks/useMutation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAInC,OAAO,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGvE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOlD,MAAM,CAAC,MAAM,WAAW,GAgBsC,CAC5D,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,EAAE;IACF,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;IAEhD,IACE,UAAU;QACV,OAAO,UAAU,KAAK,QAAQ;QAC9B,OAAO;QACP,aAAa,IAAI,OAAO;QAExB,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;IAEJ,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,IAAI,YAAY,CAAC;QACrE,EAAE,aAAa,CAAC;IAElB,IAAI,CAAC,aAAa;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAE5E,MAAM,WAAW,GACf,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ;QAC1C,CAAC,CAAE;YACC;gBACE,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB;YACD,UAAU;SACD;QACb,CAAC,CAAC,OAAO,IAAI,aAAa,IAAI,OAAO;YACnC,CAAC,CAAE,OAAO,CAAC,WAGP;YACJ,CAAC,CAAE;gBACC;oBACE,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB;aACQ,CAAC;IAEpB,OAAO,eAAe,CACpB;QACE,GAAG,OAAO;QACV,WAAW;QACX,UAAU,EACR,OAAO,EAAE,UAAU;YACnB,CAAC,UAAU;gBACT,CAAC,CAAC,UAAU,WAAW;oBACnB,OAAO,aAAa,CAAC,MAAM,EAAE;wBAC3B,UAAU;wBACV,IAAI,EAAE,WAAoB;qBAC3B,CAAC,CAAC;gBACL,CAAC;gBACH,CAAC,CAAC,UAAU,wBAAwB;oBAChC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,GAAG,wBAE/B,CAAC;oBAEF,OAAO,aAAa,CAAC,MAAM,EAAE;wBAC3B,IAAI;wBACJ,UAAU;qBACF,CAAC,CAAC;gBACd,CAAC,CAAC;KACT,EACD,GAAG,QAAQ,CACH,CAAC;AACb,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"useMutation.js","sourceRoot":"","sources":["../../src/callbacks/useMutation.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAInC,OAAO,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGvE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOlD,MAAM,CAAC,MAAM,WAAW,GAgBsC,CAC5D,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,EAAE;IACF,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;IAEhD,IACE,UAAU;QACV,OAAO,UAAU,KAAK,QAAQ;QAC9B,OAAO;QACP,aAAa,IAAI,OAAO;QAExB,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;IAEJ,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,IAAI,YAAY,CAAC;QACrE,EAAE,aAAa,CAAC;IAElB,IAAI,CAAC,aAAa;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAE5E,MAAM,WAAW,GACf,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ;QAC1C,CAAC,CAAE;YACC;gBACE,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB;YACD,UAAU;SACD;QACb,CAAC,CAAC,OAAO,IAAI,aAAa,IAAI,OAAO;YACnC,CAAC,CAAE,OAAO,CAAC,WAGP;YACJ,CAAC,CAAE;gBACC;oBACE,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB;aACQ,CAAC;IAEpB,OAAO,eAAe,CACpB;QACE,GAAG,OAAO;QACV,WAAW;QACX,UAAU,EACR,OAAO,EAAE,UAAU;YACnB,CAAC,UAAU;gBACT,CAAC,CAAC,UAAU,WAAW;oBACnB,OAAO,aAAa,CAAC,MAAM,EAAE;wBAC3B,UAAU;wBACV,IAAI,EAAE,WAAoB;qBAC3B,CAAC,CAAC;gBACL,CAAC;gBACH,CAAC,CAAC,UAAU,wBAAwB;oBAChC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,GAAG,wBAE/B,CAAC;oBAEF,OAAO,aAAa,CAAC,MAAM,EAAE;wBAC3B,IAAI;wBACJ,UAAU;qBACF,CAAC,CAAC;gBACd,CAAC,CAAC;KACT,EACD,GAAG,QAAQ,CACH,CAAC;AACb,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useQuery.d.ts","sourceRoot":"","sources":["../../src/callbacks/useQuery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useQuery.d.ts","sourceRoot":"","sources":["../../src/callbacks/useQuery.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAEhC,eAAO,MAAM,QAAQ,EAAE,CACrB,YAAY,GAAG,OAAO,EACtB,MAAM,GAAG,YAAY,EACrB,KAAK,GAAG,YAAY,EAEpB,YAAY,EAAE,kBAAkB,GAAG,SAAS,EAC5C,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,UAAU,CACd,qBAAqB,CAAC,mBAAmB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,CACzE,KACE,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG;IACnC,QAAQ,EAAE,wBAAwB,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;CA8BlE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useQuery.js","sourceRoot":"","sources":["../../src/callbacks/useQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAInC,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGjE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOlD,MAAM,CAAC,MAAM,QAAQ,GAYjB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;IACjC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;IAE5C,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,IAAI,YAAY,CAAC;QACrE,EAAE,aAAa,CAAC;IAElB,IAAI,CAAC,aAAa;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAE5E,MAAM,QAAQ,GAA2D;QACvE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE;QACnB,MAAM;KACP,CAAC;IAEF,OAAO,YAAY,CACjB;QACE,GAAG,OAAO;QACV,QAAQ;QACR,OAAO,EACL,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;gBACnD,OAAO,aAAa,CAAC,MAAM,EAAE;oBAC3B,UAAU,EAAE,WAAoB;oBAChC,MAAM;oBACN,IAAI;iBACL,CAAC,CAAC;YACL,CAAC;KACJ,EACD,GAAG,QAAQ,CACH,CAAC;AACb,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"useQuery.js","sourceRoot":"","sources":["../../src/callbacks/useQuery.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAInC,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGjE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOlD,MAAM,CAAC,MAAM,QAAQ,GAYjB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;IACjC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;IAE5C,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,IAAI,YAAY,CAAC;QACrE,EAAE,aAAa,CAAC;IAElB,IAAI,CAAC,aAAa;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAE5E,MAAM,QAAQ,GAA2D;QACvE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE;QACnB,MAAM;KACP,CAAC;IAEF,OAAO,YAAY,CACjB;QACE,GAAG,OAAO;QACV,QAAQ;QACR,OAAO,EACL,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;gBACnD,OAAO,aAAa,CAAC,MAAM,EAAE;oBAC3B,UAAU,EAAE,WAAoB;oBAChC,MAAM;oBACN,IAAI;iBACL,CAAC,CAAC;YACL,CAAC;KACJ,EACD,GAAG,QAAQ,CACH,CAAC;AACb,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { DefaultError, InfiniteData } from '@tanstack/query-core';
|
|
2
|
+
import { UseSuspenseInfiniteQueryResult } from '@tanstack/react-query';
|
|
3
|
+
import type { QraftClientOptions } from '../qraftAPIClient.js';
|
|
4
|
+
import type { RequestClientSchema } from '../RequestClient.js';
|
|
5
|
+
import { ServiceOperationQuery, ServiceOperationQueryKey } from '../ServiceOperation.js';
|
|
6
|
+
export declare const useSuspenseInfiniteQuery: <TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>>(qraftOptions: QraftClientOptions | undefined, schema: RequestClientSchema, args: Parameters<ServiceOperationQuery<RequestClientSchema, unknown, unknown>['useSuspenseInfiniteQuery']>) => UseSuspenseInfiniteQueryResult<TData, TError> & {
|
|
7
|
+
queryKey: ServiceOperationQueryKey<RequestClientSchema, unknown>;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=useSuspenseInfiniteQuery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSuspenseInfiniteQuery.d.ts","sourceRoot":"","sources":["../../src/callbacks/useSuspenseInfiniteQuery.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAEL,8BAA8B,EAC/B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAEhC,eAAO,MAAM,wBAAwB,EAAE,CACrC,YAAY,EACZ,MAAM,GAAG,YAAY,EACrB,KAAK,GAAG,YAAY,CAAC,YAAY,CAAC,EAElC,YAAY,EAAE,kBAAkB,GAAG,SAAS,EAC5C,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,UAAU,CACd,qBAAqB,CACnB,mBAAmB,EACnB,OAAO,EACP,OAAO,CACR,CAAC,0BAA0B,CAAC,CAC9B,KACE,8BAA8B,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG;IACnD,QAAQ,EAAE,wBAAwB,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;CAyBlE,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useContext } from 'react';
|
|
3
|
+
import { useSuspenseInfiniteQuery as useSuspenseInfiniteQueryTanstack, } from '@tanstack/react-query';
|
|
4
|
+
import { shelfMerge } from '../lib/shelfMerge.js';
|
|
5
|
+
import { QraftContext } from '../QraftContext.js';
|
|
6
|
+
export const useSuspenseInfiniteQuery = (qraftOptions, schema, args) => {
|
|
7
|
+
const [params, options, ...restArgs] = args;
|
|
8
|
+
const requestClient = useContext(qraftOptions?.context ?? QraftContext)
|
|
9
|
+
?.requestClient;
|
|
10
|
+
if (!requestClient)
|
|
11
|
+
throw new Error(`QraftContext.requestClient not found`);
|
|
12
|
+
return useSuspenseInfiniteQueryTanstack({
|
|
13
|
+
...options,
|
|
14
|
+
queryKey: [{ url: schema.url, infinite: true }, params],
|
|
15
|
+
queryFn: options?.queryFn ??
|
|
16
|
+
function ({ queryKey: [, queryParams], signal, meta, pageParam }) {
|
|
17
|
+
return requestClient(schema, {
|
|
18
|
+
parameters: shelfMerge(2, queryParams, pageParam),
|
|
19
|
+
signal,
|
|
20
|
+
meta,
|
|
21
|
+
});
|
|
22
|
+
},
|
|
23
|
+
}, ...restArgs);
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=useSuspenseInfiniteQuery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSuspenseInfiniteQuery.js","sourceRoot":"","sources":["../../src/callbacks/useSuspenseInfiniteQuery.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGnC,OAAO,EACL,wBAAwB,IAAI,gCAAgC,GAE7D,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOlD,MAAM,CAAC,MAAM,wBAAwB,GAgBjC,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;IACjC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;IAE5C,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,IAAI,YAAY,CAAC;QACrE,EAAE,aAAa,CAAC;IAElB,IAAI,CAAC,aAAa;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAE5E,OAAO,gCAAgC,CACrC;QACE,GAAG,OAAO;QACV,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAe,CAAU;QACzE,OAAO,EACL,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC9D,OAAO,aAAa,CAAC,MAAM,EAAE;oBAC3B,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,CAAU;oBAC1D,MAAM;oBACN,IAAI;iBACL,CAAC,CAAC;YACL,CAAC;KACJ,EACD,GAAG,QAAQ,CACH,CAAC;AACb,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { DefaultError } from '@tanstack/query-core';
|
|
2
|
+
import { UseQueryResult } from '@tanstack/react-query';
|
|
3
|
+
import type { QraftClientOptions } from '../qraftAPIClient.js';
|
|
4
|
+
import type { RequestClientSchema } from '../RequestClient.js';
|
|
5
|
+
import { ServiceOperationQuery, ServiceOperationQueryKey } from '../ServiceOperation.js';
|
|
6
|
+
export declare const useSuspenseQuery: <TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData>(qraftOptions: QraftClientOptions | undefined, schema: RequestClientSchema, args: Parameters<ServiceOperationQuery<RequestClientSchema, unknown, unknown>['useSuspenseQuery']>) => UseQueryResult<TData, TError> & {
|
|
7
|
+
queryKey: ServiceOperationQueryKey<RequestClientSchema, unknown>;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=useSuspenseQuery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSuspenseQuery.d.ts","sourceRoot":"","sources":["../../src/callbacks/useSuspenseQuery.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,cAAc,EAEf,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAEhC,eAAO,MAAM,gBAAgB,EAAE,CAC7B,YAAY,GAAG,OAAO,EACtB,MAAM,GAAG,YAAY,EACrB,KAAK,GAAG,YAAY,EAEpB,YAAY,EAAE,kBAAkB,GAAG,SAAS,EAC5C,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,UAAU,CACd,qBAAqB,CACnB,mBAAmB,EACnB,OAAO,EACP,OAAO,CACR,CAAC,kBAAkB,CAAC,CACtB,KACE,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG;IACnC,QAAQ,EAAE,wBAAwB,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;CA8BlE,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useContext } from 'react';
|
|
3
|
+
import { useSuspenseQuery as useSuspenseQueryTanstack, } from '@tanstack/react-query';
|
|
4
|
+
import { QraftContext } from '../QraftContext.js';
|
|
5
|
+
export const useSuspenseQuery = (qraftOptions, schema, args) => {
|
|
6
|
+
const [params, options, ...restArgs] = args;
|
|
7
|
+
const requestClient = useContext(qraftOptions?.context ?? QraftContext)
|
|
8
|
+
?.requestClient;
|
|
9
|
+
if (!requestClient)
|
|
10
|
+
throw new Error(`QraftContext.requestClient not found`);
|
|
11
|
+
const queryKey = [
|
|
12
|
+
{ url: schema.url },
|
|
13
|
+
params,
|
|
14
|
+
];
|
|
15
|
+
return useSuspenseQueryTanstack({
|
|
16
|
+
...options,
|
|
17
|
+
queryKey,
|
|
18
|
+
queryFn: options?.queryFn ??
|
|
19
|
+
function ({ queryKey: [, queryParams], signal, meta }) {
|
|
20
|
+
return requestClient(schema, {
|
|
21
|
+
parameters: queryParams,
|
|
22
|
+
signal,
|
|
23
|
+
meta,
|
|
24
|
+
});
|
|
25
|
+
},
|
|
26
|
+
}, ...restArgs);
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=useSuspenseQuery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSuspenseQuery.js","sourceRoot":"","sources":["../../src/callbacks/useSuspenseQuery.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGnC,OAAO,EAEL,gBAAgB,IAAI,wBAAwB,GAC7C,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOlD,MAAM,CAAC,MAAM,gBAAgB,GAgBzB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;IACjC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;IAE5C,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,IAAI,YAAY,CAAC;QACrE,EAAE,aAAa,CAAC;IAElB,IAAI,CAAC,aAAa;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAE5E,MAAM,QAAQ,GAA2D;QACvE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE;QACnB,MAAM;KACP,CAAC;IAEF,OAAO,wBAAwB,CAC7B;QACE,GAAG,OAAO;QACV,QAAQ;QACR,OAAO,EACL,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;gBACnD,OAAO,aAAa,CAAC,MAAM,EAAE;oBAC3B,UAAU,EAAE,WAAoB;oBAChC,MAAM;oBACN,IAAI;iBACL,CAAC,CAAC;YACL,CAAC;KACJ,EACD,GAAG,QAAQ,CACH,CAAC;AACb,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shelfMerge.d.ts","sourceRoot":"","sources":["../../src/lib/shelfMerge.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,SAAI,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CA6BxD"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merges objects with provided depth
|
|
3
|
+
* @param depth
|
|
4
|
+
* @param args
|
|
5
|
+
*/
|
|
6
|
+
export function shelfMerge(depth = 2, ...args) {
|
|
7
|
+
return args.reduce((acc, arg) => {
|
|
8
|
+
if (!arg || typeof arg !== 'object')
|
|
9
|
+
return acc;
|
|
10
|
+
Object.entries(arg).forEach(([key, value]) => {
|
|
11
|
+
if (typeof value !== 'object') {
|
|
12
|
+
acc[key] = value;
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (Array.isArray(value)) {
|
|
16
|
+
acc[key] = value;
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (depth > 1) {
|
|
20
|
+
acc[key] = shelfMerge(depth - 1, acc[key], value);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
acc[key] = value;
|
|
24
|
+
});
|
|
25
|
+
return acc;
|
|
26
|
+
}, {});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=shelfMerge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shelfMerge.js","sourceRoot":"","sources":["../../src/lib/shelfMerge.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAI,KAAK,GAAG,CAAC,EAAE,GAAG,IAAS;IACnD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC;QAEhD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,GAAG,CAAC,GAAY,CAAC,GAAG,KAAc,CAAC;gBACnC,OAAO;YACT,CAAC;YAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,GAAG,CAAC,GAAY,CAAC,GAAG,KAAc,CAAC;gBACnC,OAAO;YACT,CAAC;YAED,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,GAAG,CAAC,GAAY,CAAC,GAAG,UAAU,CAC5B,KAAK,GAAG,CAAC,EACT,GAAG,CAAC,GAAY,CAAC,EACjB,KAAK,CACG,CAAC;gBACX,OAAO;YACT,CAAC;YAED,GAAG,CAAC,GAAY,CAAC,GAAG,KAAc,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAO,CAAC,CAAC;AACd,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openapi-qraft/react",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.5",
|
|
4
4
|
"description": "API client for React, providing type-safe requests and dynamic Tanstack Query React Hooks via a modular, Proxy-based architecture.",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "rimraf dist/ && tsc --project tsconfig.build.json",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"type": "module",
|
|
14
14
|
"sideEffects": false,
|
|
15
15
|
"devDependencies": {
|
|
16
|
-
"@openapi-qraft/cli": "~1.0.0-beta.
|
|
16
|
+
"@openapi-qraft/cli": "~1.0.0-beta.3",
|
|
17
17
|
"@openapi-qraft/openapi-typescript": "^1.0.0-beta.1",
|
|
18
18
|
"@tanstack/react-query": "^5.17.3",
|
|
19
19
|
"@testing-library/jest-dom": "^5.17.0",
|
package/src/ServiceOperation.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DefaultError,
|
|
3
3
|
InfiniteData,
|
|
4
|
-
QueryClient,
|
|
5
4
|
InfiniteQueryPageParamsOptions,
|
|
6
5
|
NoInfer,
|
|
6
|
+
QueryClient,
|
|
7
7
|
SetDataOptions,
|
|
8
8
|
Updater,
|
|
9
9
|
} from '@tanstack/query-core';
|
|
10
|
-
import
|
|
10
|
+
import {
|
|
11
11
|
DefinedInitialDataInfiniteOptions,
|
|
12
12
|
DefinedInitialDataOptions,
|
|
13
13
|
DefinedUseInfiniteQueryResult,
|
|
@@ -18,6 +18,10 @@ import type {
|
|
|
18
18
|
UseMutationOptions,
|
|
19
19
|
UseMutationResult,
|
|
20
20
|
UseQueryResult,
|
|
21
|
+
UseSuspenseInfiniteQueryOptions,
|
|
22
|
+
UseSuspenseInfiniteQueryResult,
|
|
23
|
+
UseSuspenseQueryOptions,
|
|
24
|
+
UseSuspenseQueryResult,
|
|
21
25
|
} from '@tanstack/react-query';
|
|
22
26
|
|
|
23
27
|
export type ServiceOperationQueryKey<S extends { url: string }, T> = [
|
|
@@ -42,6 +46,8 @@ export interface ServiceOperationQuery<
|
|
|
42
46
|
TError = DefaultError,
|
|
43
47
|
> extends ServiceOperationUseQuery<TSchema, TData, TParams, TError>,
|
|
44
48
|
ServiceOperationUseInfiniteQuery<TSchema, TData, TParams, TError>,
|
|
49
|
+
ServiceOperationUseSuspenseQueryQuery<TSchema, TData, TParams, TError>,
|
|
50
|
+
ServiceOperationUseSuspenseInfiniteQuery<TSchema, TData, TParams, TError>,
|
|
45
51
|
ServiceOperationQueryFn<TSchema, TData, TParams>,
|
|
46
52
|
ServiceOperationGetQueryData<TData, TParams>,
|
|
47
53
|
ServiceOperationGetInfiniteQueryData<TData, TParams>,
|
|
@@ -144,6 +150,56 @@ interface ServiceOperationUseInfiniteQuery<
|
|
|
144
150
|
): DefinedUseInfiniteQueryResult<InfiniteData<TData>, TError | Error>;
|
|
145
151
|
}
|
|
146
152
|
|
|
153
|
+
interface ServiceOperationUseSuspenseInfiniteQuery<
|
|
154
|
+
TSchema extends { url: string; method: string },
|
|
155
|
+
TData,
|
|
156
|
+
TParams = {},
|
|
157
|
+
TError = DefaultError,
|
|
158
|
+
> {
|
|
159
|
+
useSuspenseInfiniteQuery<TPageParam extends TParams>(
|
|
160
|
+
params: TParams,
|
|
161
|
+
options: Omit<
|
|
162
|
+
UseSuspenseInfiniteQueryOptions<
|
|
163
|
+
TData,
|
|
164
|
+
TError,
|
|
165
|
+
InfiniteData<TData>,
|
|
166
|
+
TData,
|
|
167
|
+
| ServiceOperationInfiniteQueryKey<TSchema, TParams>
|
|
168
|
+
| readonly [...ServiceOperationInfiniteQueryKey<TSchema, TParams>],
|
|
169
|
+
PartialParams<TPageParam>
|
|
170
|
+
>,
|
|
171
|
+
| 'queryKey'
|
|
172
|
+
| 'getPreviousPageParam'
|
|
173
|
+
| 'getNextPageParam'
|
|
174
|
+
| 'initialPageParam'
|
|
175
|
+
> &
|
|
176
|
+
InfiniteQueryPageParamsOptions<TData, PartialParams<TPageParam>>,
|
|
177
|
+
queryClient?: QueryClient
|
|
178
|
+
): UseSuspenseInfiniteQueryResult<InfiniteData<TData>, TError | Error>;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
interface ServiceOperationUseSuspenseQueryQuery<
|
|
182
|
+
TSchema extends { url: string; method: string },
|
|
183
|
+
TData,
|
|
184
|
+
TParams = {},
|
|
185
|
+
TError = DefaultError,
|
|
186
|
+
> {
|
|
187
|
+
useSuspenseQuery(
|
|
188
|
+
params: TParams,
|
|
189
|
+
options?: Omit<
|
|
190
|
+
UseSuspenseQueryOptions<
|
|
191
|
+
TData,
|
|
192
|
+
TError,
|
|
193
|
+
TData,
|
|
194
|
+
| ServiceOperationQueryKey<TSchema, TParams>
|
|
195
|
+
| readonly [...ServiceOperationQueryKey<TSchema, TParams>]
|
|
196
|
+
>,
|
|
197
|
+
'queryKey'
|
|
198
|
+
>,
|
|
199
|
+
queryClient?: QueryClient
|
|
200
|
+
): UseSuspenseQueryResult<TData, TError | Error>;
|
|
201
|
+
}
|
|
202
|
+
|
|
147
203
|
export interface ServiceOperationMutation<
|
|
148
204
|
TSchema extends { url: string; method: string },
|
|
149
205
|
TBody,
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
1
3
|
import { useContext } from 'react';
|
|
2
4
|
|
|
3
5
|
import type { DefaultError, InfiniteData } from '@tanstack/query-core';
|
|
@@ -6,6 +8,7 @@ import {
|
|
|
6
8
|
UseInfiniteQueryResult,
|
|
7
9
|
} from '@tanstack/react-query';
|
|
8
10
|
|
|
11
|
+
import { shelfMerge } from '../lib/shelfMerge.js';
|
|
9
12
|
import type { QraftClientOptions } from '../qraftAPIClient.js';
|
|
10
13
|
import { QraftContext } from '../QraftContext.js';
|
|
11
14
|
import type { RequestClientSchema } from '../RequestClient.js';
|
|
@@ -50,39 +53,3 @@ export const useInfiniteQuery: <
|
|
|
50
53
|
...restArgs
|
|
51
54
|
) as never;
|
|
52
55
|
};
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Merges objects with provided depth
|
|
56
|
-
* @param depth
|
|
57
|
-
* @param args
|
|
58
|
-
*/
|
|
59
|
-
export function shelfMerge<T>(depth = 2, ...args: T[]): T {
|
|
60
|
-
return args.reduce((acc, arg) => {
|
|
61
|
-
if (!arg || typeof arg !== 'object') return acc;
|
|
62
|
-
|
|
63
|
-
Object.entries(arg).forEach(([key, value]) => {
|
|
64
|
-
if (typeof value !== 'object') {
|
|
65
|
-
acc[key as never] = value as never;
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
if (Array.isArray(value)) {
|
|
70
|
-
acc[key as never] = value as never;
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
if (depth > 1) {
|
|
75
|
-
acc[key as never] = shelfMerge(
|
|
76
|
-
depth - 1,
|
|
77
|
-
acc[key as never],
|
|
78
|
-
value
|
|
79
|
-
) as never;
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
acc[key as never] = value as never;
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
return acc;
|
|
87
|
-
}, {} as T);
|
|
88
|
-
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useContext } from 'react';
|
|
4
|
+
|
|
5
|
+
import type { DefaultError, InfiniteData } from '@tanstack/query-core';
|
|
6
|
+
import {
|
|
7
|
+
useSuspenseInfiniteQuery as useSuspenseInfiniteQueryTanstack,
|
|
8
|
+
UseSuspenseInfiniteQueryResult,
|
|
9
|
+
} from '@tanstack/react-query';
|
|
10
|
+
|
|
11
|
+
import { shelfMerge } from '../lib/shelfMerge.js';
|
|
12
|
+
import type { QraftClientOptions } from '../qraftAPIClient.js';
|
|
13
|
+
import { QraftContext } from '../QraftContext.js';
|
|
14
|
+
import type { RequestClientSchema } from '../RequestClient.js';
|
|
15
|
+
import {
|
|
16
|
+
ServiceOperationQuery,
|
|
17
|
+
ServiceOperationQueryKey,
|
|
18
|
+
} from '../ServiceOperation.js';
|
|
19
|
+
|
|
20
|
+
export const useSuspenseInfiniteQuery: <
|
|
21
|
+
TQueryFnData,
|
|
22
|
+
TError = DefaultError,
|
|
23
|
+
TData = InfiniteData<TQueryFnData>,
|
|
24
|
+
>(
|
|
25
|
+
qraftOptions: QraftClientOptions | undefined,
|
|
26
|
+
schema: RequestClientSchema,
|
|
27
|
+
args: Parameters<
|
|
28
|
+
ServiceOperationQuery<
|
|
29
|
+
RequestClientSchema,
|
|
30
|
+
unknown,
|
|
31
|
+
unknown
|
|
32
|
+
>['useSuspenseInfiniteQuery']
|
|
33
|
+
>
|
|
34
|
+
) => UseSuspenseInfiniteQueryResult<TData, TError> & {
|
|
35
|
+
queryKey: ServiceOperationQueryKey<RequestClientSchema, unknown>;
|
|
36
|
+
} = (qraftOptions, schema, args) => {
|
|
37
|
+
const [params, options, ...restArgs] = args;
|
|
38
|
+
|
|
39
|
+
const requestClient = useContext(qraftOptions?.context ?? QraftContext)
|
|
40
|
+
?.requestClient;
|
|
41
|
+
|
|
42
|
+
if (!requestClient) throw new Error(`QraftContext.requestClient not found`);
|
|
43
|
+
|
|
44
|
+
return useSuspenseInfiniteQueryTanstack(
|
|
45
|
+
{
|
|
46
|
+
...options,
|
|
47
|
+
queryKey: [{ url: schema.url, infinite: true }, params as never] as const,
|
|
48
|
+
queryFn:
|
|
49
|
+
options?.queryFn ??
|
|
50
|
+
function ({ queryKey: [, queryParams], signal, meta, pageParam }) {
|
|
51
|
+
return requestClient(schema, {
|
|
52
|
+
parameters: shelfMerge(2, queryParams, pageParam) as never,
|
|
53
|
+
signal,
|
|
54
|
+
meta,
|
|
55
|
+
});
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
...restArgs
|
|
59
|
+
) as never;
|
|
60
|
+
};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useContext } from 'react';
|
|
4
|
+
|
|
5
|
+
import type { DefaultError } from '@tanstack/query-core';
|
|
6
|
+
import {
|
|
7
|
+
UseQueryResult,
|
|
8
|
+
useSuspenseQuery as useSuspenseQueryTanstack,
|
|
9
|
+
} from '@tanstack/react-query';
|
|
10
|
+
|
|
11
|
+
import type { QraftClientOptions } from '../qraftAPIClient.js';
|
|
12
|
+
import { QraftContext } from '../QraftContext.js';
|
|
13
|
+
import type { RequestClientSchema } from '../RequestClient.js';
|
|
14
|
+
import {
|
|
15
|
+
ServiceOperationQuery,
|
|
16
|
+
ServiceOperationQueryKey,
|
|
17
|
+
} from '../ServiceOperation.js';
|
|
18
|
+
|
|
19
|
+
export const useSuspenseQuery: <
|
|
20
|
+
TQueryFnData = unknown,
|
|
21
|
+
TError = DefaultError,
|
|
22
|
+
TData = TQueryFnData,
|
|
23
|
+
>(
|
|
24
|
+
qraftOptions: QraftClientOptions | undefined,
|
|
25
|
+
schema: RequestClientSchema,
|
|
26
|
+
args: Parameters<
|
|
27
|
+
ServiceOperationQuery<
|
|
28
|
+
RequestClientSchema,
|
|
29
|
+
unknown,
|
|
30
|
+
unknown
|
|
31
|
+
>['useSuspenseQuery']
|
|
32
|
+
>
|
|
33
|
+
) => UseQueryResult<TData, TError> & {
|
|
34
|
+
queryKey: ServiceOperationQueryKey<RequestClientSchema, unknown>;
|
|
35
|
+
} = (qraftOptions, schema, args) => {
|
|
36
|
+
const [params, options, ...restArgs] = args;
|
|
37
|
+
|
|
38
|
+
const requestClient = useContext(qraftOptions?.context ?? QraftContext)
|
|
39
|
+
?.requestClient;
|
|
40
|
+
|
|
41
|
+
if (!requestClient) throw new Error(`QraftContext.requestClient not found`);
|
|
42
|
+
|
|
43
|
+
const queryKey: ServiceOperationQueryKey<RequestClientSchema, unknown> = [
|
|
44
|
+
{ url: schema.url },
|
|
45
|
+
params,
|
|
46
|
+
];
|
|
47
|
+
|
|
48
|
+
return useSuspenseQueryTanstack(
|
|
49
|
+
{
|
|
50
|
+
...options,
|
|
51
|
+
queryKey,
|
|
52
|
+
queryFn:
|
|
53
|
+
options?.queryFn ??
|
|
54
|
+
function ({ queryKey: [, queryParams], signal, meta }) {
|
|
55
|
+
return requestClient(schema, {
|
|
56
|
+
parameters: queryParams as never,
|
|
57
|
+
signal,
|
|
58
|
+
meta,
|
|
59
|
+
});
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
...restArgs
|
|
63
|
+
) as never;
|
|
64
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merges objects with provided depth
|
|
3
|
+
* @param depth
|
|
4
|
+
* @param args
|
|
5
|
+
*/
|
|
6
|
+
export function shelfMerge<T>(depth = 2, ...args: T[]): T {
|
|
7
|
+
return args.reduce((acc, arg) => {
|
|
8
|
+
if (!arg || typeof arg !== 'object') return acc;
|
|
9
|
+
|
|
10
|
+
Object.entries(arg).forEach(([key, value]) => {
|
|
11
|
+
if (typeof value !== 'object') {
|
|
12
|
+
acc[key as never] = value as never;
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
if (Array.isArray(value)) {
|
|
17
|
+
acc[key as never] = value as never;
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (depth > 1) {
|
|
22
|
+
acc[key as never] = shelfMerge(
|
|
23
|
+
depth - 1,
|
|
24
|
+
acc[key as never],
|
|
25
|
+
value
|
|
26
|
+
) as never;
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
acc[key as never] = value as never;
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
return acc;
|
|
34
|
+
}, {} as T);
|
|
35
|
+
}
|
|
@@ -9,8 +9,8 @@ import {
|
|
|
9
9
|
import { act, renderHook, waitFor } from '@testing-library/react';
|
|
10
10
|
|
|
11
11
|
import { createAPIClient } from './fixtures/api/index.js';
|
|
12
|
-
import { bodySerializer,
|
|
13
|
-
import {
|
|
12
|
+
import { bodySerializer, request, urlSerializer } from './lib/request.js';
|
|
13
|
+
import { QraftContextValue } from './QraftContext.js';
|
|
14
14
|
import type { RequestClient } from './RequestClient.js';
|
|
15
15
|
|
|
16
16
|
const qraft = createAPIClient();
|
|
@@ -130,6 +130,58 @@ describe('Qraft uses Queries', () => {
|
|
|
130
130
|
});
|
|
131
131
|
});
|
|
132
132
|
|
|
133
|
+
describe('Qraft uses Suspense Queries', () => {
|
|
134
|
+
it('supports useSuspenseQuery', async () => {
|
|
135
|
+
const hook = () => {
|
|
136
|
+
try {
|
|
137
|
+
return qraft.approvalPolicies.getApprovalPoliciesId.useSuspenseQuery({
|
|
138
|
+
header: {
|
|
139
|
+
'x-monite-version': '1.0.0',
|
|
140
|
+
},
|
|
141
|
+
path: {
|
|
142
|
+
approval_policy_id: '1',
|
|
143
|
+
},
|
|
144
|
+
query: {
|
|
145
|
+
items_order: ['asc', 'desc'],
|
|
146
|
+
},
|
|
147
|
+
});
|
|
148
|
+
} catch (error) {
|
|
149
|
+
return error as Promise<unknown>;
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
const queryClient = new QueryClient();
|
|
154
|
+
|
|
155
|
+
const { result: resultWithErrorPromise } = renderHook(hook, {
|
|
156
|
+
wrapper: (props) => <Providers {...props} queryClient={queryClient} />,
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
expect(resultWithErrorPromise.current).toBeInstanceOf(Promise); // Suspense throws a promise
|
|
160
|
+
|
|
161
|
+
await resultWithErrorPromise.current;
|
|
162
|
+
|
|
163
|
+
const { result: resultWithData } = renderHook(hook, {
|
|
164
|
+
wrapper: (props) => <Providers {...props} queryClient={queryClient} />,
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
if (resultWithData.current instanceof Promise) {
|
|
168
|
+
throw new Error('Promise should be resolved');
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
expect(resultWithData.current.data).toEqual({
|
|
172
|
+
header: {
|
|
173
|
+
'x-monite-version': '1.0.0',
|
|
174
|
+
},
|
|
175
|
+
path: {
|
|
176
|
+
approval_policy_id: '1',
|
|
177
|
+
},
|
|
178
|
+
query: {
|
|
179
|
+
items_order: ['asc', 'desc'],
|
|
180
|
+
},
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
|
|
133
185
|
describe('Qraft uses Infinite Queries', () => {
|
|
134
186
|
it('supports useInfiniteQuery', async () => {
|
|
135
187
|
const { result } = renderHook(
|
|
@@ -292,6 +344,86 @@ describe('Qraft uses Infinite Queries', () => {
|
|
|
292
344
|
});
|
|
293
345
|
});
|
|
294
346
|
|
|
347
|
+
describe('Qraft uses Suspense Infinite Queries', () => {
|
|
348
|
+
it('supports useSuspenseInfiniteQuery', async () => {
|
|
349
|
+
const hook = () => {
|
|
350
|
+
try {
|
|
351
|
+
return qraft.files.getFiles.useSuspenseInfiniteQuery(
|
|
352
|
+
{
|
|
353
|
+
header: {
|
|
354
|
+
'x-monite-version': '1.0.0',
|
|
355
|
+
},
|
|
356
|
+
query: {
|
|
357
|
+
id__in: ['1', '2'],
|
|
358
|
+
},
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
getNextPageParam: (lastPage, allPages, params) => {
|
|
362
|
+
return {
|
|
363
|
+
query: {
|
|
364
|
+
page: params.query?.page
|
|
365
|
+
? String(Number(params.query.page) + 1)
|
|
366
|
+
: undefined,
|
|
367
|
+
},
|
|
368
|
+
};
|
|
369
|
+
},
|
|
370
|
+
initialPageParam: {
|
|
371
|
+
query: {
|
|
372
|
+
page: '1',
|
|
373
|
+
},
|
|
374
|
+
},
|
|
375
|
+
}
|
|
376
|
+
);
|
|
377
|
+
} catch (error) {
|
|
378
|
+
return error as Promise<unknown>;
|
|
379
|
+
}
|
|
380
|
+
};
|
|
381
|
+
|
|
382
|
+
const queryClient = new QueryClient();
|
|
383
|
+
|
|
384
|
+
const { result } = renderHook(hook, {
|
|
385
|
+
wrapper: (props) => <Providers {...props} queryClient={queryClient} />,
|
|
386
|
+
});
|
|
387
|
+
|
|
388
|
+
const { result: resultWithErrorPromise } = renderHook(hook, {
|
|
389
|
+
wrapper: (props) => <Providers {...props} queryClient={queryClient} />,
|
|
390
|
+
});
|
|
391
|
+
|
|
392
|
+
expect(resultWithErrorPromise.current).toBeInstanceOf(Promise); // Suspense throws a promise
|
|
393
|
+
|
|
394
|
+
await resultWithErrorPromise.current;
|
|
395
|
+
|
|
396
|
+
const { result: resultWithData } = renderHook(hook, {
|
|
397
|
+
wrapper: (props) => <Providers {...props} queryClient={queryClient} />,
|
|
398
|
+
});
|
|
399
|
+
|
|
400
|
+
if (resultWithData.current instanceof Promise) {
|
|
401
|
+
throw new Error('Promise should be resolved');
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
expect(resultWithData.current.data).toEqual({
|
|
405
|
+
pageParams: [
|
|
406
|
+
{
|
|
407
|
+
query: {
|
|
408
|
+
page: '1',
|
|
409
|
+
},
|
|
410
|
+
},
|
|
411
|
+
],
|
|
412
|
+
pages: [
|
|
413
|
+
{
|
|
414
|
+
header: {
|
|
415
|
+
'x-monite-version': '1.0.0',
|
|
416
|
+
},
|
|
417
|
+
query: {
|
|
418
|
+
id__in: ['1', '2'],
|
|
419
|
+
page: '1',
|
|
420
|
+
},
|
|
421
|
+
},
|
|
422
|
+
],
|
|
423
|
+
});
|
|
424
|
+
});
|
|
425
|
+
});
|
|
426
|
+
|
|
295
427
|
describe('Qraft uses Mutations', () => {
|
|
296
428
|
it('supports useMutation without predefined parameters', async () => {
|
|
297
429
|
const { result } = renderHook(
|