@openapi-qraft/react 1.1.5 → 1.3.2

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.
Files changed (193) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +142 -46
  3. package/dist/QraftContext.d.ts +14 -5
  4. package/dist/QraftContext.d.ts.map +1 -1
  5. package/dist/QraftContext.js.map +1 -1
  6. package/dist/ServiceOperation.d.ts +112 -3
  7. package/dist/ServiceOperation.d.ts.map +1 -1
  8. package/dist/callbacks/cancelQueries.d.ts +2 -2
  9. package/dist/callbacks/cancelQueries.d.ts.map +1 -1
  10. package/dist/callbacks/cancelQueries.js.map +1 -1
  11. package/dist/callbacks/fetchInfiniteQuery.d.ts +7 -0
  12. package/dist/callbacks/fetchInfiniteQuery.d.ts.map +1 -0
  13. package/dist/callbacks/fetchInfiniteQuery.js +5 -0
  14. package/dist/callbacks/fetchInfiniteQuery.js.map +1 -0
  15. package/dist/callbacks/fetchQuery.d.ts +7 -0
  16. package/dist/callbacks/fetchQuery.d.ts.map +1 -0
  17. package/dist/callbacks/fetchQuery.js +5 -0
  18. package/dist/callbacks/fetchQuery.js.map +1 -0
  19. package/dist/callbacks/getInfiniteQueryData.d.ts +4 -4
  20. package/dist/callbacks/getInfiniteQueryData.d.ts.map +1 -1
  21. package/dist/callbacks/getInfiniteQueryData.js +3 -6
  22. package/dist/callbacks/getInfiniteQueryData.js.map +1 -1
  23. package/dist/callbacks/getInfiniteQueryKey.d.ts +2 -2
  24. package/dist/callbacks/getInfiniteQueryKey.d.ts.map +1 -1
  25. package/dist/callbacks/getInfiniteQueryKey.js.map +1 -1
  26. package/dist/callbacks/getMutationKey.d.ts +2 -2
  27. package/dist/callbacks/getMutationKey.d.ts.map +1 -1
  28. package/dist/callbacks/getMutationKey.js.map +1 -1
  29. package/dist/callbacks/getQueryData.d.ts +3 -3
  30. package/dist/callbacks/getQueryData.d.ts.map +1 -1
  31. package/dist/callbacks/getQueryData.js +3 -4
  32. package/dist/callbacks/getQueryData.js.map +1 -1
  33. package/dist/callbacks/getQueryKey.d.ts +2 -2
  34. package/dist/callbacks/getQueryKey.d.ts.map +1 -1
  35. package/dist/callbacks/getQueryKey.js.map +1 -1
  36. package/dist/callbacks/invalidateQueries.d.ts +2 -2
  37. package/dist/callbacks/invalidateQueries.d.ts.map +1 -1
  38. package/dist/callbacks/invalidateQueries.js.map +1 -1
  39. package/dist/callbacks/isFetching.d.ts +2 -2
  40. package/dist/callbacks/isFetching.d.ts.map +1 -1
  41. package/dist/callbacks/isFetching.js.map +1 -1
  42. package/dist/callbacks/mutationFn.d.ts +2 -2
  43. package/dist/callbacks/mutationFn.d.ts.map +1 -1
  44. package/dist/callbacks/mutationFn.js.map +1 -1
  45. package/dist/callbacks/prefetchInfiniteQuery.d.ts +7 -0
  46. package/dist/callbacks/prefetchInfiniteQuery.d.ts.map +1 -0
  47. package/dist/callbacks/prefetchInfiniteQuery.js +5 -0
  48. package/dist/callbacks/prefetchInfiniteQuery.js.map +1 -0
  49. package/dist/callbacks/prefetchQuery.d.ts +7 -0
  50. package/dist/callbacks/prefetchQuery.d.ts.map +1 -0
  51. package/dist/callbacks/prefetchQuery.js +5 -0
  52. package/dist/callbacks/prefetchQuery.js.map +1 -0
  53. package/dist/callbacks/queryFn.js.map +1 -1
  54. package/dist/callbacks/refetchQueries.d.ts +3 -3
  55. package/dist/callbacks/refetchQueries.d.ts.map +1 -1
  56. package/dist/callbacks/refetchQueries.js.map +1 -1
  57. package/dist/callbacks/resetQueries.d.ts +2 -2
  58. package/dist/callbacks/resetQueries.d.ts.map +1 -1
  59. package/dist/callbacks/resetQueries.js.map +1 -1
  60. package/dist/callbacks/setInfiniteQueryData.d.ts +2 -2
  61. package/dist/callbacks/setInfiniteQueryData.d.ts.map +1 -1
  62. package/dist/callbacks/setInfiniteQueryData.js +2 -6
  63. package/dist/callbacks/setInfiniteQueryData.js.map +1 -1
  64. package/dist/callbacks/setQueryData.d.ts +3 -3
  65. package/dist/callbacks/setQueryData.d.ts.map +1 -1
  66. package/dist/callbacks/setQueryData.js +3 -7
  67. package/dist/callbacks/setQueryData.js.map +1 -1
  68. package/dist/callbacks/useInfiniteQuery.d.ts +4 -4
  69. package/dist/callbacks/useInfiniteQuery.d.ts.map +1 -1
  70. package/dist/callbacks/useInfiniteQuery.js +5 -24
  71. package/dist/callbacks/useInfiniteQuery.js.map +1 -1
  72. package/dist/callbacks/useIsFetching.d.ts +2 -2
  73. package/dist/callbacks/useIsFetching.d.ts.map +1 -1
  74. package/dist/callbacks/useIsFetching.js +3 -8
  75. package/dist/callbacks/useIsFetching.js.map +1 -1
  76. package/dist/callbacks/useMutation.d.ts +2 -2
  77. package/dist/callbacks/useMutation.d.ts.map +1 -1
  78. package/dist/callbacks/useMutation.js +11 -8
  79. package/dist/callbacks/useMutation.js.map +1 -1
  80. package/dist/callbacks/useMutationState.d.ts +2 -2
  81. package/dist/callbacks/useMutationState.d.ts.map +1 -1
  82. package/dist/callbacks/useMutationState.js +3 -7
  83. package/dist/callbacks/useMutationState.js.map +1 -1
  84. package/dist/callbacks/useQueries.d.ts +2 -2
  85. package/dist/callbacks/useQueries.d.ts.map +1 -1
  86. package/dist/callbacks/useQueries.js +9 -6
  87. package/dist/callbacks/useQueries.js.map +1 -1
  88. package/dist/callbacks/useQuery.d.ts +4 -4
  89. package/dist/callbacks/useQuery.d.ts.map +1 -1
  90. package/dist/callbacks/useQuery.js +5 -23
  91. package/dist/callbacks/useQuery.js.map +1 -1
  92. package/dist/callbacks/useSuspenseInfiniteQuery.d.ts +4 -4
  93. package/dist/callbacks/useSuspenseInfiniteQuery.d.ts.map +1 -1
  94. package/dist/callbacks/useSuspenseInfiniteQuery.js +5 -24
  95. package/dist/callbacks/useSuspenseInfiniteQuery.js.map +1 -1
  96. package/dist/callbacks/useSuspenseQueries.d.ts +2 -2
  97. package/dist/callbacks/useSuspenseQueries.d.ts.map +1 -1
  98. package/dist/callbacks/useSuspenseQueries.js +9 -6
  99. package/dist/callbacks/useSuspenseQueries.js.map +1 -1
  100. package/dist/callbacks/useSuspenseQuery.d.ts +4 -4
  101. package/dist/callbacks/useSuspenseQuery.d.ts.map +1 -1
  102. package/dist/callbacks/useSuspenseQuery.js +5 -23
  103. package/dist/callbacks/useSuspenseQuery.js.map +1 -1
  104. package/dist/index.d.ts +3 -7
  105. package/dist/index.d.ts.map +1 -1
  106. package/dist/index.js +1 -1
  107. package/dist/index.js.map +1 -1
  108. package/dist/lib/callQueryClientFetchMethod.d.ts +20 -0
  109. package/dist/lib/callQueryClientFetchMethod.d.ts.map +1 -0
  110. package/dist/lib/callQueryClientFetchMethod.js +48 -0
  111. package/dist/lib/callQueryClientFetchMethod.js.map +1 -0
  112. package/dist/lib/callQueryClientMethodWithQueryFilters.d.ts +2 -2
  113. package/dist/lib/callQueryClientMethodWithQueryFilters.d.ts.map +1 -1
  114. package/dist/lib/callQueryClientMethodWithQueryFilters.js +5 -13
  115. package/dist/lib/callQueryClientMethodWithQueryFilters.js.map +1 -1
  116. package/dist/lib/callQueryClientMethodWithQueryKey.d.ts +11 -0
  117. package/dist/lib/callQueryClientMethodWithQueryKey.d.ts.map +1 -0
  118. package/dist/lib/callQueryClientMethodWithQueryKey.js +22 -0
  119. package/dist/lib/callQueryClientMethodWithQueryKey.js.map +1 -0
  120. package/dist/lib/composeInfiniteQueryKey.d.ts +3 -3
  121. package/dist/lib/composeInfiniteQueryKey.d.ts.map +1 -1
  122. package/dist/lib/composeMutationKey.d.ts +4 -4
  123. package/dist/lib/composeMutationKey.d.ts.map +1 -1
  124. package/dist/lib/composeMutationKey.js.map +1 -1
  125. package/dist/lib/composeQueryFilters.d.ts +3 -3
  126. package/dist/lib/composeQueryFilters.d.ts.map +1 -1
  127. package/dist/lib/composeQueryFilters.js.map +1 -1
  128. package/dist/lib/composeQueryKey.d.ts +3 -3
  129. package/dist/lib/composeQueryKey.d.ts.map +1 -1
  130. package/dist/lib/requestFn.d.ts +75 -0
  131. package/dist/lib/requestFn.d.ts.map +1 -0
  132. package/dist/lib/{request.js → requestFn.js} +40 -34
  133. package/dist/lib/requestFn.js.map +1 -0
  134. package/dist/lib/useComposeUseQueryOptions.d.ts +16 -0
  135. package/dist/lib/useComposeUseQueryOptions.d.ts.map +1 -0
  136. package/dist/lib/useComposeUseQueryOptions.js +40 -0
  137. package/dist/lib/useComposeUseQueryOptions.js.map +1 -0
  138. package/dist/lib/useQueryClient.d.ts +9 -0
  139. package/dist/lib/useQueryClient.d.ts.map +1 -0
  140. package/dist/lib/useQueryClient.js +15 -0
  141. package/dist/lib/useQueryClient.js.map +1 -0
  142. package/dist/qraftAPIClient.d.ts +7 -7
  143. package/dist/qraftAPIClient.d.ts.map +1 -1
  144. package/package.json +2 -2
  145. package/src/QraftContext.ts +22 -10
  146. package/src/ServiceOperation.ts +261 -4
  147. package/src/callbacks/cancelQueries.ts +3 -3
  148. package/src/callbacks/fetchInfiniteQuery.ts +22 -0
  149. package/src/callbacks/fetchQuery.ts +20 -0
  150. package/src/callbacks/getInfiniteQueryData.ts +13 -16
  151. package/src/callbacks/getInfiniteQueryKey.ts +3 -3
  152. package/src/callbacks/getMutationKey.ts +3 -3
  153. package/src/callbacks/getQueryData.ts +12 -10
  154. package/src/callbacks/getQueryKey.ts +3 -3
  155. package/src/callbacks/invalidateQueries.ts +3 -3
  156. package/src/callbacks/isFetching.ts +3 -3
  157. package/src/callbacks/mutationFn.ts +3 -3
  158. package/src/callbacks/prefetchInfiniteQuery.ts +22 -0
  159. package/src/callbacks/prefetchQuery.ts +22 -0
  160. package/src/callbacks/queryFn.ts +2 -2
  161. package/src/callbacks/refetchQueries.ts +4 -4
  162. package/src/callbacks/resetQueries.ts +3 -3
  163. package/src/callbacks/setInfiniteQueryData.ts +11 -18
  164. package/src/callbacks/setQueryData.ts +16 -17
  165. package/src/callbacks/useInfiniteQuery.ts +8 -46
  166. package/src/callbacks/useIsFetching.ts +6 -20
  167. package/src/callbacks/useMutation.ts +13 -12
  168. package/src/callbacks/useMutationState.ts +5 -11
  169. package/src/callbacks/useQueries.ts +11 -10
  170. package/src/callbacks/useQuery.ts +8 -39
  171. package/src/callbacks/useSuspenseInfiniteQuery.ts +8 -42
  172. package/src/callbacks/useSuspenseQueries.ts +11 -10
  173. package/src/callbacks/useSuspenseQuery.ts +8 -43
  174. package/src/index.ts +12 -7
  175. package/src/lib/callQueryClientFetchMethod.ts +90 -0
  176. package/src/lib/callQueryClientMethodWithQueryFilters.ts +10 -23
  177. package/src/lib/callQueryClientMethodWithQueryKey.ts +46 -0
  178. package/src/lib/composeInfiniteQueryKey.ts +3 -3
  179. package/src/lib/composeMutationKey.ts +5 -8
  180. package/src/lib/composeQueryFilters.ts +2 -2
  181. package/src/lib/composeQueryKey.ts +3 -3
  182. package/src/lib/{request.ts → requestFn.ts} +143 -79
  183. package/src/lib/useComposeUseQueryOptions.ts +64 -0
  184. package/src/lib/useQueryClient.ts +26 -0
  185. package/src/qraftAPIClient.ts +8 -8
  186. package/dist/RequestClient.d.ts +0 -19
  187. package/dist/RequestClient.d.ts.map +0 -1
  188. package/dist/RequestClient.js +0 -2
  189. package/dist/RequestClient.js.map +0 -1
  190. package/dist/lib/request.d.ts +0 -32
  191. package/dist/lib/request.d.ts.map +0 -1
  192. package/dist/lib/request.js.map +0 -1
  193. package/src/RequestClient.ts +0 -32
@@ -1,32 +1,25 @@
1
1
  import { InfiniteData } from '@tanstack/query-core';
2
2
 
3
- import { composeInfiniteQueryKey } from '../lib/composeInfiniteQueryKey.js';
3
+ import { callQueryClientMethodWithQueryKey } from '../lib/callQueryClientMethodWithQueryKey.js';
4
+ import type { OperationSchema } from '../lib/requestFn.js';
4
5
  import type { QraftClientOptions } from '../qraftAPIClient.js';
5
- import type { RequestClientSchema } from '../RequestClient.js';
6
- import type {
7
- ServiceOperationInfiniteQueryKey,
8
- ServiceOperationQuery,
9
- } from '../ServiceOperation.js';
6
+ import type { ServiceOperationQuery } from '../ServiceOperation.js';
10
7
 
11
8
  export function setInfiniteQueryData<TData>(
12
9
  qraftOptions: QraftClientOptions | undefined,
13
- schema: RequestClientSchema,
10
+ schema: OperationSchema,
14
11
  args: Parameters<
15
12
  ServiceOperationQuery<
16
- RequestClientSchema,
13
+ OperationSchema,
17
14
  unknown,
18
15
  TData
19
16
  >['setInfiniteQueryData']
20
17
  >
21
18
  ): InfiniteData<TData> | undefined {
22
- const [parameters, updater, queryClient, options] = args;
23
-
24
- const queryKey: ServiceOperationInfiniteQueryKey<
25
- RequestClientSchema,
26
- unknown
27
- > = Array.isArray(parameters)
28
- ? parameters
29
- : composeInfiniteQueryKey(schema, parameters);
30
-
31
- return queryClient.setQueryData(queryKey, updater as never, options);
19
+ return callQueryClientMethodWithQueryKey(
20
+ 'setQueryData',
21
+ schema,
22
+ true,
23
+ args as never
24
+ ) as never;
32
25
  }
@@ -1,24 +1,23 @@
1
- import { composeQueryKey } from '../lib/composeQueryKey.js';
1
+ import { callQueryClientMethodWithQueryKey } from '../lib/callQueryClientMethodWithQueryKey.js';
2
+ import type { OperationSchema } from '../lib/requestFn.js';
2
3
  import type { QraftClientOptions } from '../qraftAPIClient.js';
3
- import type { RequestClientSchema } from '../RequestClient.js';
4
- import {
5
- ServiceOperationQuery,
6
- ServiceOperationQueryKey,
7
- } from '../ServiceOperation.js';
4
+ import type { ServiceOperationSetQueryDataCallback } from '../ServiceOperation.js';
8
5
 
9
6
  export function setQueryData<TData>(
10
- qraftOptions: QraftClientOptions | undefined,
11
- schema: RequestClientSchema,
7
+ _: QraftClientOptions | undefined,
8
+ schema: OperationSchema,
12
9
  args: Parameters<
13
- ServiceOperationQuery<RequestClientSchema, unknown, TData>['setQueryData']
10
+ ServiceOperationSetQueryDataCallback<
11
+ OperationSchema,
12
+ unknown,
13
+ TData
14
+ >['setQueryData']
14
15
  >
15
16
  ): TData | undefined {
16
- const [parameters, updater, queryClient, options] = args;
17
-
18
- const queryKey: ServiceOperationQueryKey<RequestClientSchema, unknown> =
19
- Array.isArray(parameters)
20
- ? parameters
21
- : composeQueryKey(schema, parameters);
22
-
23
- return queryClient.setQueryData(queryKey, updater as never, options);
17
+ return callQueryClientMethodWithQueryKey(
18
+ 'setQueryData',
19
+ schema,
20
+ false,
21
+ args as never
22
+ ) as never;
24
23
  }
@@ -1,23 +1,15 @@
1
1
  'use client';
2
2
 
3
- import { useContext } from 'react';
4
-
5
3
  import type { DefaultError, InfiniteData } from '@tanstack/query-core';
6
4
  import {
7
5
  useInfiniteQuery as useInfiniteQueryBase,
8
- UseInfiniteQueryResult,
9
- useQueryClient,
6
+ type UseInfiniteQueryResult,
10
7
  } from '@tanstack/react-query';
11
8
 
12
- import { composeInfiniteQueryKey } from '../lib/composeInfiniteQueryKey.js';
13
- import { shelfMerge } from '../lib/shelfMerge.js';
9
+ import type { OperationSchema } from '../lib/requestFn.js';
10
+ import { useComposeUseQueryOptions } from '../lib/useComposeUseQueryOptions.js';
14
11
  import type { QraftClientOptions } from '../qraftAPIClient.js';
15
- import { QraftContext } from '../QraftContext.js';
16
- import type { RequestClientSchema } from '../RequestClient.js';
17
- import {
18
- ServiceOperationInfiniteQueryKey,
19
- ServiceOperationQuery,
20
- } from '../ServiceOperation.js';
12
+ import type { ServiceOperationQuery } from '../ServiceOperation.js';
21
13
 
22
14
  export const useInfiniteQuery: <
23
15
  TQueryFnData,
@@ -25,43 +17,13 @@ export const useInfiniteQuery: <
25
17
  TData = InfiniteData<TQueryFnData>,
26
18
  >(
27
19
  qraftOptions: QraftClientOptions | undefined,
28
- schema: RequestClientSchema,
20
+ schema: OperationSchema,
29
21
  args: Parameters<
30
- ServiceOperationQuery<
31
- RequestClientSchema,
32
- unknown,
33
- unknown
34
- >['useInfiniteQuery']
22
+ ServiceOperationQuery<OperationSchema, unknown, unknown>['useInfiniteQuery']
35
23
  >
36
24
  ) => UseInfiniteQueryResult<TData, TError> = (qraftOptions, schema, args) => {
37
- const [parameters, options, queryClientByArg] = args;
38
-
39
- const { requestClient, queryClient: queryClientByContext } =
40
- useContext(qraftOptions?.context ?? QraftContext) ?? {};
41
-
42
- if (!requestClient) throw new Error(`QraftContext.requestClient not found`);
43
-
44
- const queryKey: ServiceOperationInfiniteQueryKey<
45
- RequestClientSchema,
46
- unknown
47
- > = Array.isArray(parameters)
48
- ? (parameters as never)
49
- : composeInfiniteQueryKey(schema, parameters);
50
-
51
25
  return useInfiniteQueryBase(
52
- {
53
- ...options,
54
- queryKey,
55
- queryFn:
56
- options?.queryFn ??
57
- function ({ queryKey: [, queryParams], signal, meta, pageParam }) {
58
- return requestClient(schema, {
59
- parameters: shelfMerge(2, queryParams, pageParam) as never,
60
- signal,
61
- meta,
62
- });
63
- },
64
- },
65
- useQueryClient(queryClientByArg ?? queryClientByContext)
26
+ // @ts-expect-error
27
+ ...useComposeUseQueryOptions(qraftOptions, schema, args, true)
66
28
  ) as never;
67
29
  };
@@ -1,24 +1,19 @@
1
1
  'use client';
2
2
 
3
- import { useContext } from 'react';
4
-
5
- import {
6
- useIsFetching as useIsFetchingTanstack,
7
- useQueryClient,
8
- } from '@tanstack/react-query';
3
+ import { useIsFetching as useIsFetchingTanstack } from '@tanstack/react-query';
9
4
 
10
5
  import { composeQueryFilters } from '../lib/composeQueryFilters.js';
6
+ import type { OperationSchema } from '../lib/requestFn.js';
7
+ import { useQueryClient } from '../lib/useQueryClient.js';
11
8
  import type { QraftClientOptions } from '../qraftAPIClient.js';
12
- import { QraftContext } from '../QraftContext.js';
13
- import type { RequestClientSchema } from '../RequestClient.js';
14
9
  import type { ServiceOperationQuery } from '../ServiceOperation.js';
15
10
 
16
11
  export const useIsFetching: <TVariables = unknown>(
17
12
  qraftOptions: QraftClientOptions | undefined,
18
- schema: RequestClientSchema,
13
+ schema: OperationSchema,
19
14
  args: Parameters<
20
15
  ServiceOperationQuery<
21
- RequestClientSchema,
16
+ OperationSchema,
22
17
  object | undefined,
23
18
  TVariables,
24
19
  unknown
@@ -27,17 +22,8 @@ export const useIsFetching: <TVariables = unknown>(
27
22
  ) => number = (qraftOptions, schema, args) => {
28
23
  const [filters, queryClientByArg] = args;
29
24
 
30
- if (filters && 'parameters' in filters && 'mutationKey' in filters) {
31
- throw new Error(
32
- `'useMutationState': 'parameters' and 'mutationKey' cannot be used together`
33
- );
34
- }
35
-
36
- const { queryClient: queryClientByContext } =
37
- useContext(qraftOptions?.context ?? QraftContext) ?? {};
38
-
39
25
  return useIsFetchingTanstack(
40
26
  composeQueryFilters(schema, filters) as never,
41
- useQueryClient(queryClientByArg ?? queryClientByContext)
27
+ useQueryClient(qraftOptions, queryClientByArg)
42
28
  ) as never;
43
29
  };
@@ -6,13 +6,13 @@ import type { DefaultError } from '@tanstack/query-core';
6
6
  import {
7
7
  useMutation as useMutationBase,
8
8
  UseMutationResult,
9
- useQueryClient,
10
9
  } from '@tanstack/react-query';
11
10
 
12
11
  import { composeMutationKey } from '../lib/composeMutationKey.js';
12
+ import type { OperationSchema } from '../lib/requestFn.js';
13
+ import { useQueryClient } from '../lib/useQueryClient.js';
13
14
  import type { QraftClientOptions } from '../qraftAPIClient.js';
14
15
  import { QraftContext } from '../QraftContext.js';
15
- import type { RequestClientSchema } from '../RequestClient.js';
16
16
  import {
17
17
  ServiceOperationMutation,
18
18
  ServiceOperationMutationKey,
@@ -25,10 +25,10 @@ export const useMutation: <
25
25
  TContext = unknown,
26
26
  >(
27
27
  qraftOptions: QraftClientOptions | undefined,
28
- schema: RequestClientSchema,
28
+ schema: OperationSchema,
29
29
  args: Parameters<
30
30
  ServiceOperationMutation<
31
- RequestClientSchema,
31
+ OperationSchema,
32
32
  object | undefined,
33
33
  TVariables,
34
34
  TData
@@ -51,10 +51,9 @@ export const useMutation: <
51
51
  `'useMutation': parameters and 'options.mutationKey' cannot be used together`
52
52
  );
53
53
 
54
- const { requestClient, queryClient: queryClientByContext } =
55
- useContext(qraftOptions?.context ?? QraftContext) ?? {};
56
-
57
- if (!requestClient) throw new Error(`QraftContext.requestClient not found`);
54
+ const contextValue = useContext(qraftOptions?.context ?? QraftContext);
55
+ if (!contextValue?.requestFn)
56
+ throw new Error(`QraftContext.request not found`);
58
57
 
59
58
  const mutationKey =
60
59
  options && 'mutationKey' in options
@@ -72,8 +71,9 @@ export const useMutation: <
72
71
  options?.mutationFn ??
73
72
  (parameters
74
73
  ? function (bodyPayload) {
75
- return requestClient(schema, {
74
+ return contextValue.requestFn(schema, {
76
75
  parameters,
76
+ baseUrl: contextValue.baseUrl,
77
77
  body: bodyPayload as never,
78
78
  });
79
79
  }
@@ -82,12 +82,13 @@ export const useMutation: <
82
82
  body: unknown;
83
83
  };
84
84
 
85
- return requestClient(schema, {
86
- body,
85
+ return contextValue.requestFn(schema, {
87
86
  parameters,
87
+ baseUrl: contextValue.baseUrl,
88
+ body,
88
89
  } as never);
89
90
  }),
90
91
  },
91
- useQueryClient(queryClientByArg ?? queryClientByContext)
92
+ useQueryClient(qraftOptions, queryClientByArg)
92
93
  ) as never;
93
94
  };
@@ -6,13 +6,12 @@ import type { DefaultError } from '@tanstack/query-core';
6
6
  import {
7
7
  UseMutationResult,
8
8
  useMutationState as useMutationStateTanstack,
9
- useQueryClient,
10
9
  } from '@tanstack/react-query';
11
10
 
12
11
  import { composeMutationKey } from '../lib/composeMutationKey.js';
12
+ import type { OperationSchema } from '../lib/requestFn.js';
13
+ import { useQueryClient } from '../lib/useQueryClient.js';
13
14
  import type { QraftClientOptions } from '../qraftAPIClient.js';
14
- import { QraftContext } from '../QraftContext.js';
15
- import type { RequestClientSchema } from '../RequestClient.js';
16
15
  import { ServiceOperationMutation } from '../ServiceOperation.js';
17
16
 
18
17
  export const useMutationState: <
@@ -22,10 +21,10 @@ export const useMutationState: <
22
21
  TContext = unknown,
23
22
  >(
24
23
  qraftOptions: QraftClientOptions | undefined,
25
- schema: RequestClientSchema,
24
+ schema: OperationSchema,
26
25
  args: Parameters<
27
26
  ServiceOperationMutation<
28
- RequestClientSchema,
27
+ OperationSchema,
29
28
  object | undefined,
30
29
  TVariables,
31
30
  TData
@@ -48,11 +47,6 @@ export const useMutationState: <
48
47
  );
49
48
  }
50
49
 
51
- const { requestClient, queryClient: queryClientByContext } =
52
- useContext(qraftOptions?.context ?? QraftContext) ?? {};
53
-
54
- if (!requestClient) throw new Error(`QraftContext.requestClient not found`);
55
-
56
50
  const filters = options?.filters;
57
51
 
58
52
  return useMutationStateTanstack(
@@ -71,6 +65,6 @@ export const useMutationState: <
71
65
  ),
72
66
  },
73
67
  } as never,
74
- useQueryClient(queryClientByArg ?? queryClientByContext)
68
+ useQueryClient(qraftOptions, queryClientByArg)
75
69
  ) as never;
76
70
  };
@@ -5,28 +5,27 @@ import { useContext } from 'react';
5
5
  import {
6
6
  QueriesResults,
7
7
  useQueries as useQueriesTanstack,
8
- useQueryClient,
9
8
  } from '@tanstack/react-query';
10
9
 
11
10
  import { composeQueryKey } from '../lib/composeQueryKey.js';
11
+ import type { OperationSchema } from '../lib/requestFn.js';
12
+ import { useQueryClient } from '../lib/useQueryClient.js';
12
13
  import type { QraftClientOptions } from '../qraftAPIClient.js';
13
14
  import { QraftContext } from '../QraftContext.js';
14
- import type { RequestClientSchema } from '../RequestClient.js';
15
15
  import { ServiceOperationQuery } from '../ServiceOperation.js';
16
16
 
17
17
  export const useQueries: (
18
18
  qraftOptions: QraftClientOptions | undefined,
19
- schema: RequestClientSchema,
19
+ schema: OperationSchema,
20
20
  args: Parameters<
21
- ServiceOperationQuery<RequestClientSchema, unknown, unknown>['useQueries']
21
+ ServiceOperationQuery<OperationSchema, unknown, unknown>['useQueries']
22
22
  >
23
23
  ) => QueriesResults<never> = (qraftOptions, schema, args) => {
24
24
  const [options, queryClientByArg] = args;
25
25
 
26
- const { requestClient, queryClient: queryClientByContext } =
27
- useContext(qraftOptions?.context ?? QraftContext) ?? {};
28
-
29
- if (!requestClient) throw new Error(`QraftContext.requestClient not found`);
26
+ const contextValue = useContext(qraftOptions?.context ?? QraftContext);
27
+ if (!contextValue?.requestFn)
28
+ throw new Error(`QraftContext.requestFn not found`);
30
29
 
31
30
  return useQueriesTanstack(
32
31
  {
@@ -41,6 +40,7 @@ export const useQueries: (
41
40
  },
42
41
  queryOptions
43
42
  );
43
+ // @ts-expect-error
44
44
  delete queryOptionsCopy.parameters;
45
45
  return queryOptionsCopy;
46
46
  })()
@@ -51,8 +51,9 @@ export const useQueries: (
51
51
  queryFn:
52
52
  optionsWithQueryKey.queryFn ??
53
53
  function ({ queryKey: [, queryParams], signal, meta }) {
54
- return requestClient(schema, {
54
+ return contextValue.requestFn(schema, {
55
55
  parameters: queryParams as never,
56
+ baseUrl: contextValue.baseUrl,
56
57
  signal,
57
58
  meta,
58
59
  });
@@ -60,6 +61,6 @@ export const useQueries: (
60
61
  };
61
62
  }),
62
63
  },
63
- useQueryClient(queryClientByArg ?? queryClientByContext)
64
+ useQueryClient(qraftOptions, queryClientByArg)
64
65
  ) as never;
65
66
  };
@@ -1,56 +1,25 @@
1
1
  'use client';
2
2
 
3
- import { useContext } from 'react';
4
-
5
3
  import type { DefaultError } from '@tanstack/query-core';
6
4
  import {
7
5
  useQuery as useQueryTanstack,
8
- useQueryClient,
9
- UseQueryResult,
6
+ type UseQueryResult,
10
7
  } from '@tanstack/react-query';
11
8
 
12
- import { composeQueryKey } from '../lib/composeQueryKey.js';
9
+ import type { OperationSchema } from '../lib/requestFn.js';
10
+ import { useComposeUseQueryOptions } from '../lib/useComposeUseQueryOptions.js';
13
11
  import type { QraftClientOptions } from '../qraftAPIClient.js';
14
- import { QraftContext } from '../QraftContext.js';
15
- import type { RequestClientSchema } from '../RequestClient.js';
16
- import {
17
- ServiceOperationQuery,
18
- ServiceOperationQueryKey,
19
- } from '../ServiceOperation.js';
12
+ import type { ServiceOperationQuery } from '../ServiceOperation.js';
20
13
 
21
14
  export const useQuery: <TData = unknown, TError = DefaultError>(
22
15
  qraftOptions: QraftClientOptions | undefined,
23
- schema: RequestClientSchema,
16
+ schema: OperationSchema,
24
17
  args: Parameters<
25
- ServiceOperationQuery<RequestClientSchema, unknown, unknown>['useQuery']
18
+ ServiceOperationQuery<OperationSchema, unknown, unknown>['useQuery']
26
19
  >
27
20
  ) => UseQueryResult<TData, TError> = (qraftOptions, schema, args) => {
28
- const [parameters, options, queryClientByArg] = args;
29
-
30
- const { requestClient, queryClient: queryClientByContext } =
31
- useContext(qraftOptions?.context ?? QraftContext) ?? {};
32
-
33
- if (!requestClient) throw new Error(`QraftContext.requestClient not found`);
34
-
35
- const queryKey: ServiceOperationQueryKey<RequestClientSchema, unknown> =
36
- Array.isArray(parameters)
37
- ? (parameters as ServiceOperationQueryKey<RequestClientSchema, unknown>)
38
- : composeQueryKey(schema, parameters);
39
-
40
21
  return useQueryTanstack(
41
- {
42
- ...options,
43
- queryKey,
44
- queryFn:
45
- options?.queryFn ??
46
- function ({ queryKey: [, queryParams], signal, meta }) {
47
- return requestClient(schema, {
48
- parameters: queryParams as never,
49
- signal,
50
- meta,
51
- });
52
- },
53
- },
54
- useQueryClient(queryClientByArg ?? queryClientByContext)
22
+ // @ts-expect-error
23
+ ...useComposeUseQueryOptions(qraftOptions, schema, args, false)
55
24
  ) as never;
56
25
  };
@@ -1,23 +1,15 @@
1
1
  'use client';
2
2
 
3
- import { useContext } from 'react';
4
-
5
3
  import type { DefaultError, InfiniteData } from '@tanstack/query-core';
6
4
  import {
7
- useQueryClient,
8
5
  useSuspenseInfiniteQuery as useSuspenseInfiniteQueryTanstack,
9
- UseSuspenseInfiniteQueryResult,
6
+ type UseSuspenseInfiniteQueryResult,
10
7
  } from '@tanstack/react-query';
11
8
 
12
- import { composeInfiniteQueryKey } from '../lib/composeInfiniteQueryKey.js';
13
- import { shelfMerge } from '../lib/shelfMerge.js';
9
+ import type { OperationSchema } from '../lib/requestFn.js';
10
+ import { useComposeUseQueryOptions } from '../lib/useComposeUseQueryOptions.js';
14
11
  import type { QraftClientOptions } from '../qraftAPIClient.js';
15
- import { QraftContext } from '../QraftContext.js';
16
- import type { RequestClientSchema } from '../RequestClient.js';
17
- import {
18
- ServiceOperationInfiniteQueryKey,
19
- ServiceOperationQuery,
20
- } from '../ServiceOperation.js';
12
+ import type { ServiceOperationQuery } from '../ServiceOperation.js';
21
13
 
22
14
  export const useSuspenseInfiniteQuery: <
23
15
  TQueryFnData,
@@ -25,10 +17,10 @@ export const useSuspenseInfiniteQuery: <
25
17
  TData = InfiniteData<TQueryFnData>,
26
18
  >(
27
19
  qraftOptions: QraftClientOptions | undefined,
28
- schema: RequestClientSchema,
20
+ schema: OperationSchema,
29
21
  args: Parameters<
30
22
  ServiceOperationQuery<
31
- RequestClientSchema,
23
+ OperationSchema,
32
24
  unknown,
33
25
  unknown
34
26
  >['useSuspenseInfiniteQuery']
@@ -38,34 +30,8 @@ export const useSuspenseInfiniteQuery: <
38
30
  schema,
39
31
  args
40
32
  ) => {
41
- const [parameters, options, queryClientByArg] = args;
42
-
43
- const { requestClient, queryClient: queryClientByContext } =
44
- useContext(qraftOptions?.context ?? QraftContext) ?? {};
45
-
46
- if (!requestClient) throw new Error(`QraftContext.requestClient not found`);
47
-
48
- const queryKey: ServiceOperationInfiniteQueryKey<
49
- RequestClientSchema,
50
- unknown
51
- > = Array.isArray(parameters)
52
- ? (parameters as never)
53
- : composeInfiniteQueryKey(schema, parameters);
54
-
55
33
  return useSuspenseInfiniteQueryTanstack(
56
- {
57
- ...options,
58
- queryKey,
59
- queryFn:
60
- options?.queryFn ??
61
- function ({ queryKey: [, queryParams], signal, meta, pageParam }) {
62
- return requestClient(schema, {
63
- parameters: shelfMerge(2, queryParams, pageParam) as never,
64
- signal,
65
- meta,
66
- });
67
- },
68
- },
69
- useQueryClient(queryClientByArg ?? queryClientByContext)
34
+ // @ts-expect-error
35
+ ...useComposeUseQueryOptions(qraftOptions, schema, args, true)
70
36
  ) as never;
71
37
  };
@@ -4,22 +4,22 @@ import { useContext } from 'react';
4
4
 
5
5
  import {
6
6
  SuspenseQueriesResults,
7
- useQueryClient,
8
7
  useSuspenseQueries as useSuspenseQueriesTanstack,
9
8
  } from '@tanstack/react-query';
10
9
 
11
10
  import { composeQueryKey } from '../lib/composeQueryKey.js';
11
+ import type { OperationSchema } from '../lib/requestFn.js';
12
+ import { useQueryClient } from '../lib/useQueryClient.js';
12
13
  import type { QraftClientOptions } from '../qraftAPIClient.js';
13
14
  import { QraftContext } from '../QraftContext.js';
14
- import type { RequestClientSchema } from '../RequestClient.js';
15
15
  import { ServiceOperationQuery } from '../ServiceOperation.js';
16
16
 
17
17
  export const useSuspenseQueries: (
18
18
  qraftOptions: QraftClientOptions | undefined,
19
- schema: RequestClientSchema,
19
+ schema: OperationSchema,
20
20
  args: Parameters<
21
21
  ServiceOperationQuery<
22
- RequestClientSchema,
22
+ OperationSchema,
23
23
  unknown,
24
24
  unknown
25
25
  >['useSuspenseQueries']
@@ -27,10 +27,9 @@ export const useSuspenseQueries: (
27
27
  ) => SuspenseQueriesResults<never> = (qraftOptions, schema, args) => {
28
28
  const [options, queryClientByArg] = args;
29
29
 
30
- const { requestClient, queryClient: queryClientByContext } =
31
- useContext(qraftOptions?.context ?? QraftContext) ?? {};
32
-
33
- if (!requestClient) throw new Error(`QraftContext.requestClient not found`);
30
+ const contextValue = useContext(qraftOptions?.context ?? QraftContext);
31
+ if (!contextValue?.requestFn)
32
+ throw new Error(`QraftContext.requestFn not found`);
34
33
 
35
34
  return useSuspenseQueriesTanstack(
36
35
  {
@@ -45,6 +44,7 @@ export const useSuspenseQueries: (
45
44
  },
46
45
  queryOptions
47
46
  );
47
+ // @ts-expect-error
48
48
  delete queryOptionsCopy.parameters;
49
49
  return queryOptionsCopy;
50
50
  })()
@@ -55,8 +55,9 @@ export const useSuspenseQueries: (
55
55
  queryFn:
56
56
  optionsWithQueryKey.queryFn ??
57
57
  function ({ queryKey: [, queryParams], signal, meta }) {
58
- return requestClient(schema, {
58
+ return contextValue.requestFn(schema, {
59
59
  parameters: queryParams as never,
60
+ baseUrl: contextValue.baseUrl,
60
61
  signal,
61
62
  meta,
62
63
  });
@@ -64,6 +65,6 @@ export const useSuspenseQueries: (
64
65
  };
65
66
  }),
66
67
  },
67
- useQueryClient(queryClientByArg ?? queryClientByContext)
68
+ useQueryClient(qraftOptions, queryClientByArg)
68
69
  ) as never;
69
70
  };
@@ -1,22 +1,15 @@
1
1
  'use client';
2
2
 
3
- import { useContext } from 'react';
4
-
5
3
  import type { DefaultError } from '@tanstack/query-core';
6
4
  import {
7
- useQueryClient,
8
- UseQueryResult,
5
+ type UseQueryResult,
9
6
  useSuspenseQuery as useSuspenseQueryTanstack,
10
7
  } from '@tanstack/react-query';
11
8
 
12
- import { composeQueryKey } from '../lib/composeQueryKey.js';
9
+ import type { OperationSchema } from '../lib/requestFn.js';
10
+ import { useComposeUseQueryOptions } from '../lib/useComposeUseQueryOptions.js';
13
11
  import type { QraftClientOptions } from '../qraftAPIClient.js';
14
- import { QraftContext } from '../QraftContext.js';
15
- import type { RequestClientSchema } from '../RequestClient.js';
16
- import {
17
- ServiceOperationQuery,
18
- ServiceOperationQueryKey,
19
- } from '../ServiceOperation.js';
12
+ import type { ServiceOperationQuery } from '../ServiceOperation.js';
20
13
 
21
14
  export const useSuspenseQuery: <
22
15
  TQueryFnData = unknown,
@@ -24,41 +17,13 @@ export const useSuspenseQuery: <
24
17
  TData = TQueryFnData,
25
18
  >(
26
19
  qraftOptions: QraftClientOptions | undefined,
27
- schema: RequestClientSchema,
20
+ schema: OperationSchema,
28
21
  args: Parameters<
29
- ServiceOperationQuery<
30
- RequestClientSchema,
31
- unknown,
32
- unknown
33
- >['useSuspenseQuery']
22
+ ServiceOperationQuery<OperationSchema, unknown, unknown>['useSuspenseQuery']
34
23
  >
35
24
  ) => UseQueryResult<TData, TError> = (qraftOptions, schema, args) => {
36
- const [parameters, options, queryClientByArg] = args;
37
-
38
- const { requestClient, queryClient: queryClientByContext } =
39
- useContext(qraftOptions?.context ?? QraftContext) ?? {};
40
-
41
- if (!requestClient) throw new Error(`QraftContext.requestClient not found`);
42
-
43
- const queryKey: ServiceOperationQueryKey<RequestClientSchema, unknown> =
44
- Array.isArray(parameters)
45
- ? (parameters as never)
46
- : composeQueryKey(schema, parameters);
47
-
48
25
  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
- useQueryClient(queryClientByArg ?? queryClientByContext)
26
+ // @ts-expect-error
27
+ ...useComposeUseQueryOptions(qraftOptions, schema, args, false)
63
28
  ) as never;
64
29
  };