@openapi-qraft/react 1.2.0 → 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 (186) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +107 -27
  3. package/dist/QraftContext.d.ts +8 -10
  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 +2 -2
  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 +4 -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 +0 -3
  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 +6 -4
  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/useQueries.d.ts +2 -2
  83. package/dist/callbacks/useQueries.d.ts.map +1 -1
  84. package/dist/callbacks/useQueries.js +5 -3
  85. package/dist/callbacks/useQueries.js.map +1 -1
  86. package/dist/callbacks/useQuery.d.ts +3 -3
  87. package/dist/callbacks/useQuery.d.ts.map +1 -1
  88. package/dist/callbacks/useQuery.js +4 -23
  89. package/dist/callbacks/useQuery.js.map +1 -1
  90. package/dist/callbacks/useSuspenseInfiniteQuery.d.ts +4 -4
  91. package/dist/callbacks/useSuspenseInfiniteQuery.d.ts.map +1 -1
  92. package/dist/callbacks/useSuspenseInfiniteQuery.js +4 -24
  93. package/dist/callbacks/useSuspenseInfiniteQuery.js.map +1 -1
  94. package/dist/callbacks/useSuspenseQueries.d.ts +2 -2
  95. package/dist/callbacks/useSuspenseQueries.d.ts.map +1 -1
  96. package/dist/callbacks/useSuspenseQueries.js +5 -3
  97. package/dist/callbacks/useSuspenseQueries.js.map +1 -1
  98. package/dist/callbacks/useSuspenseQuery.d.ts +4 -4
  99. package/dist/callbacks/useSuspenseQuery.d.ts.map +1 -1
  100. package/dist/callbacks/useSuspenseQuery.js +4 -23
  101. package/dist/callbacks/useSuspenseQuery.js.map +1 -1
  102. package/dist/index.d.ts +1 -1
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +1 -1
  105. package/dist/index.js.map +1 -1
  106. package/dist/lib/callQueryClientFetchMethod.d.ts +20 -0
  107. package/dist/lib/callQueryClientFetchMethod.d.ts.map +1 -0
  108. package/dist/lib/callQueryClientFetchMethod.js +48 -0
  109. package/dist/lib/callQueryClientFetchMethod.js.map +1 -0
  110. package/dist/lib/callQueryClientMethodWithQueryFilters.d.ts +2 -2
  111. package/dist/lib/callQueryClientMethodWithQueryFilters.d.ts.map +1 -1
  112. package/dist/lib/callQueryClientMethodWithQueryFilters.js +5 -13
  113. package/dist/lib/callQueryClientMethodWithQueryFilters.js.map +1 -1
  114. package/dist/lib/callQueryClientMethodWithQueryKey.d.ts +11 -0
  115. package/dist/lib/callQueryClientMethodWithQueryKey.d.ts.map +1 -0
  116. package/dist/lib/callQueryClientMethodWithQueryKey.js +22 -0
  117. package/dist/lib/callQueryClientMethodWithQueryKey.js.map +1 -0
  118. package/dist/lib/composeInfiniteQueryKey.d.ts +2 -2
  119. package/dist/lib/composeInfiniteQueryKey.d.ts.map +1 -1
  120. package/dist/lib/composeMutationKey.d.ts +3 -3
  121. package/dist/lib/composeMutationKey.d.ts.map +1 -1
  122. package/dist/lib/composeMutationKey.js.map +1 -1
  123. package/dist/lib/composeQueryFilters.d.ts +3 -3
  124. package/dist/lib/composeQueryFilters.d.ts.map +1 -1
  125. package/dist/lib/composeQueryFilters.js.map +1 -1
  126. package/dist/lib/composeQueryKey.d.ts +2 -2
  127. package/dist/lib/composeQueryKey.d.ts.map +1 -1
  128. package/dist/lib/composeQueryKey.js.map +1 -1
  129. package/dist/lib/{request.d.ts → requestFn.d.ts} +28 -18
  130. package/dist/lib/requestFn.d.ts.map +1 -0
  131. package/dist/lib/{request.js → requestFn.js} +16 -21
  132. package/dist/lib/requestFn.js.map +1 -0
  133. package/dist/lib/useComposeUseQueryOptions.d.ts +16 -0
  134. package/dist/lib/useComposeUseQueryOptions.d.ts.map +1 -0
  135. package/dist/lib/useComposeUseQueryOptions.js +40 -0
  136. package/dist/lib/useComposeUseQueryOptions.js.map +1 -0
  137. package/dist/qraftAPIClient.d.ts +3 -3
  138. package/dist/qraftAPIClient.d.ts.map +1 -1
  139. package/package.json +2 -2
  140. package/src/QraftContext.ts +13 -16
  141. package/src/ServiceOperation.ts +261 -4
  142. package/src/callbacks/cancelQueries.ts +3 -3
  143. package/src/callbacks/fetchInfiniteQuery.ts +22 -0
  144. package/src/callbacks/fetchQuery.ts +20 -0
  145. package/src/callbacks/getInfiniteQueryData.ts +13 -16
  146. package/src/callbacks/getInfiniteQueryKey.ts +3 -3
  147. package/src/callbacks/getMutationKey.ts +3 -3
  148. package/src/callbacks/getQueryData.ts +12 -14
  149. package/src/callbacks/getQueryKey.ts +3 -7
  150. package/src/callbacks/invalidateQueries.ts +3 -3
  151. package/src/callbacks/isFetching.ts +3 -3
  152. package/src/callbacks/mutationFn.ts +3 -3
  153. package/src/callbacks/prefetchInfiniteQuery.ts +22 -0
  154. package/src/callbacks/prefetchQuery.ts +22 -0
  155. package/src/callbacks/queryFn.ts +2 -2
  156. package/src/callbacks/refetchQueries.ts +3 -3
  157. package/src/callbacks/resetQueries.ts +3 -3
  158. package/src/callbacks/setInfiniteQueryData.ts +11 -18
  159. package/src/callbacks/setQueryData.ts +13 -18
  160. package/src/callbacks/useInfiniteQuery.ts +8 -48
  161. package/src/callbacks/useIsFetching.ts +3 -9
  162. package/src/callbacks/useMutation.ts +15 -20
  163. package/src/callbacks/useMutationState.ts +3 -3
  164. package/src/callbacks/useQueries.ts +12 -17
  165. package/src/callbacks/useQuery.ts +7 -43
  166. package/src/callbacks/useSuspenseInfiniteQuery.ts +8 -44
  167. package/src/callbacks/useSuspenseQueries.ts +12 -13
  168. package/src/callbacks/useSuspenseQuery.ts +8 -45
  169. package/src/index.ts +6 -6
  170. package/src/lib/callQueryClientFetchMethod.ts +90 -0
  171. package/src/lib/callQueryClientMethodWithQueryFilters.ts +10 -23
  172. package/src/lib/callQueryClientMethodWithQueryKey.ts +46 -0
  173. package/src/lib/composeInfiniteQueryKey.ts +2 -2
  174. package/src/lib/composeMutationKey.ts +4 -7
  175. package/src/lib/composeQueryFilters.ts +2 -2
  176. package/src/lib/composeQueryKey.ts +2 -5
  177. package/src/lib/{request.ts → requestFn.ts} +61 -59
  178. package/src/lib/useComposeUseQueryOptions.ts +64 -0
  179. package/src/qraftAPIClient.ts +4 -4
  180. package/dist/RequestClient.d.ts +0 -3
  181. package/dist/RequestClient.d.ts.map +0 -1
  182. package/dist/RequestClient.js +0 -2
  183. package/dist/RequestClient.js.map +0 -1
  184. package/dist/lib/request.d.ts.map +0 -1
  185. package/dist/lib/request.js.map +0 -1
  186. package/src/RequestClient.ts +0 -11
@@ -1 +1 @@
1
- {"version":3,"file":"composeQueryKey.d.ts","sourceRoot":"","sources":["../../src/lib/composeQueryKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE3D,wBAAgB,eAAe,CAC7B,OAAO,SAAS,sBAAsB,EACtC,OAAO,EAEP,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,OAAO,GAAG,SAAS,GAC9B,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,CAE5C"}
1
+ {"version":3,"file":"composeQueryKey.d.ts","sourceRoot":"","sources":["../../src/lib/composeQueryKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,wBAAgB,eAAe,CAAC,OAAO,SAAS,eAAe,EAAE,OAAO,EACtE,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,OAAO,GAAG,SAAS,GAC9B,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,CAE5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"composeQueryKey.js","sourceRoot":"","sources":["../../src/lib/composeQueryKey.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,eAAe,CAI7B,MAAe,EACf,UAA+B;IAE/B,OAAO,CAAC,MAAM,EAAE,UAAU,IAAK,EAAc,CAAC,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"composeQueryKey.js","sourceRoot":"","sources":["../../src/lib/composeQueryKey.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,eAAe,CAC7B,MAAe,EACf,UAA+B;IAE/B,OAAO,CAAC,MAAM,EAAE,UAAU,IAAK,EAAc,CAAC,CAAC;AACjD,CAAC"}
@@ -1,22 +1,15 @@
1
1
  /**
2
2
  * @throws {error: object|string, response: Response} if the request fails
3
3
  */
4
- export declare function request<T>(options: RequestOptions, schema: OperationRequestSchema, requestInfo: OperationRequestInfo): Promise<T>;
5
- export interface RequestOptions {
6
- baseUrl: string;
7
- urlSerializer?: URLSerializer;
8
- bodySerializer?: BodySerializer;
9
- }
10
- type URLSerializer = typeof urlSerializer;
11
- type BodySerializer = typeof bodySerializer;
4
+ export declare function requestFn<T>(schema: OperationSchema, requestInfo: RequestFnInfo, options?: RequestFnOptions): Promise<T>;
12
5
  /**
13
6
  * @throws {error: object|string, response: Response} if the request fails
14
7
  */
15
- export declare function baseRequest<T>(options: Required<RequestOptions>, schema: OperationRequestSchema, requestInfo: OperationRequestInfo, customFetch?: typeof fetch): Promise<T>;
16
- export declare function urlSerializer(baseUrl: string, schema: OperationRequestSchema, info: OperationRequestInfo): string;
17
- export declare function bodySerializer(schema: OperationRequestSchema, info: OperationRequestInfo): string | Blob | FormData | undefined;
8
+ export declare function baseRequestFn<T>(requestSchema: OperationSchema, requestInfo: RequestFnInfo, options: WithRequired<RequestFnOptions, 'urlSerializer' | 'bodySerializer'>): Promise<T>;
9
+ export declare function urlSerializer(schema: OperationSchema, info: RequestFnPayload): string;
10
+ export declare function bodySerializer(schema: OperationSchema, info: RequestFnPayload): string | Blob | FormData | undefined;
18
11
  export type HeadersOptions = HeadersInit | Record<string, string | number | boolean | null | undefined>;
19
- export interface OperationRequestSchema {
12
+ export interface OperationSchema {
20
13
  /**
21
14
  * Operation path
22
15
  * @example /user/{id}
@@ -32,7 +25,11 @@ export interface OperationRequestSchema {
32
25
  */
33
26
  readonly mediaType?: string;
34
27
  }
35
- export interface OperationRequestInfo extends Omit<RequestInit, 'headers' | 'method' | 'body'> {
28
+ export interface RequestFnPayload {
29
+ /**
30
+ * Base URL to use for the request
31
+ */
32
+ baseUrl: string | undefined;
36
33
  /**
37
34
  * OpenAPI parameters
38
35
  * @example
@@ -51,15 +48,28 @@ export interface OperationRequestInfo extends Omit<RequestInit, 'headers' | 'met
51
48
  * @example { name: 'John' }
52
49
  */
53
50
  readonly body?: BodyInit | Record<string, unknown> | null;
51
+ /**
52
+ * Tanstack Query Meta
53
+ */
54
+ meta?: Record<string, unknown>;
55
+ /** An AbortSignal to set request's signal. */
56
+ signal?: AbortSignal | null;
57
+ }
58
+ interface RequestFnInfo extends RequestFnPayload, Omit<RequestInit, 'headers' | 'method' | 'body' | 'signal'> {
54
59
  /**
55
60
  * Request headers
56
61
  * @example { 'X-Auth': '123' }
57
62
  */
58
63
  readonly headers?: HeadersOptions;
59
- /**
60
- * Tanstack Query Meta
61
- */
62
- meta?: Record<string, unknown>;
63
64
  }
65
+ export interface RequestFnOptions {
66
+ urlSerializer?: typeof urlSerializer;
67
+ bodySerializer?: typeof bodySerializer;
68
+ fetch?: typeof fetch;
69
+ }
70
+ export type RequestFn<T> = typeof requestFn<T>;
71
+ type WithRequired<T, K extends keyof T> = T & {
72
+ [_ in K]: {};
73
+ };
64
74
  export {};
65
- //# sourceMappingURL=request.d.ts.map
75
+ //# sourceMappingURL=requestFn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestFn.d.ts","sourceRoot":"","sources":["../../src/lib/requestFn.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,aAAa,EAC1B,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,CAAC,CAAC,CAMZ;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,aAAa,EAAE,eAAe,EAC9B,WAAW,EAAE,aAAa,EAC1B,OAAO,EAAE,YAAY,CAAC,gBAAgB,EAAE,eAAe,GAAG,gBAAgB,CAAC,GAC1E,OAAO,CAAC,CAAC,CAAC,CAoCZ;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,gBAAgB,GACrB,MAAM,CAkBR;AA6DD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,gBAAgB,wCAwBvB;AA+ED,MAAM,MAAM,cAAc,GACtB,WAAW,GACX,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAEjE,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,MAAM,EACX,KAAK,GACL,KAAK,GACL,MAAM,GACN,OAAO,GACP,QAAQ,GACR,SAAS,GACT,MAAM,GACN,OAAO,CAAC;IAEZ;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAE5B;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE;QACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACtC,CAAC;IAEF;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAE1D;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE/B,8CAA8C;IAC9C,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B;AAED,UAAU,aACR,SAAQ,gBAAgB,EACtB,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC7D;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,EAAE,OAAO,aAAa,CAAC;IACrC,cAAc,CAAC,EAAE,OAAO,cAAc,CAAC;IACvC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;AAE/C,KAAK,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG;KAC3C,CAAC,IAAI,CAAC,GAAG,EAAE;CACb,CAAC"}
@@ -1,27 +1,26 @@
1
1
  /**
2
2
  * @throws {error: object|string, response: Response} if the request fails
3
3
  */
4
- export async function request(options, schema, requestInfo) {
5
- return baseRequest(isRequiredRequestOptions(options)
6
- ? options
7
- : {
8
- urlSerializer,
9
- bodySerializer,
10
- ...options,
11
- }, schema, requestInfo);
4
+ export async function requestFn(schema, requestInfo, options) {
5
+ return baseRequestFn(schema, requestInfo, {
6
+ urlSerializer,
7
+ bodySerializer,
8
+ ...options,
9
+ });
12
10
  }
13
11
  /**
14
12
  * @throws {error: object|string, response: Response} if the request fails
15
13
  */
16
- export async function baseRequest(options, schema, requestInfo, customFetch = fetch) {
14
+ export async function baseRequestFn(requestSchema, requestInfo, options) {
17
15
  const { parameters, headers, body, ...requestInfoRest } = requestInfo;
18
- const requestBody = options.bodySerializer(schema, requestInfo);
19
- const response = await customFetch(options.urlSerializer(options.baseUrl, schema, requestInfo), {
20
- method: schema.method.toUpperCase(),
16
+ const requestBody = options.bodySerializer(requestSchema, requestInfo);
17
+ const baseFetch = options.fetch ?? fetch;
18
+ const response = await baseFetch(options.urlSerializer(requestSchema, requestInfo), {
19
+ method: requestSchema.method.toUpperCase(),
21
20
  body: requestBody,
22
21
  headers: mergeHeaders({
23
22
  Accept: 'application/json',
24
- 'Content-Type': schema.mediaType ?? getBodyContentType(body),
23
+ 'Content-Type': requestSchema.mediaType ?? getBodyContentType(body),
25
24
  }, headers, parameters?.header, requestBody instanceof FormData
26
25
  ? // remove `Content-Type` if serialized body is FormData; browser will correctly set Content-Type & boundary expression
27
26
  { 'Content-Type': null }
@@ -35,13 +34,14 @@ export async function baseRequest(options, schema, requestInfo, customFetch = fe
35
34
  }
36
35
  return (await getResponseBody(clonedResponse));
37
36
  }
38
- export function urlSerializer(baseUrl, schema, info) {
37
+ export function urlSerializer(schema, info) {
39
38
  const path = schema.url.replace(/{(.*?)}/g, (substring, group) => {
40
39
  if (info.parameters?.path?.hasOwnProperty(group)) {
41
40
  return encodeURI(String(info.parameters?.path[group]));
42
41
  }
43
42
  return substring;
44
43
  });
44
+ const baseUrl = info.baseUrl ?? '';
45
45
  if (info.parameters?.query) {
46
46
  return `${baseUrl}${path}${getQueryString(info.parameters.query)}`;
47
47
  }
@@ -173,9 +173,7 @@ async function getResponseBody(response) {
173
173
  return response.json();
174
174
  const errorFallbackResponse = response.clone(); // clone to allow multiple reads
175
175
  return response.json().catch(() => {
176
- if (typeof process !== 'undefined' &&
177
- typeof process.env !== 'undefined' &&
178
- process.env.NODE_ENV === 'development') {
176
+ if (process.env.NODE_ENV === 'development') {
179
177
  console.warn('Failed to parse response body as JSON. Falling back to .text()');
180
178
  }
181
179
  // falling back to .text() when necessary for error messages
@@ -184,7 +182,4 @@ async function getResponseBody(response) {
184
182
  }
185
183
  return response.text();
186
184
  }
187
- function isRequiredRequestOptions(options) {
188
- return Boolean(options.urlSerializer && options.bodySerializer);
189
- }
190
- //# sourceMappingURL=request.js.map
185
+ //# sourceMappingURL=requestFn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestFn.js","sourceRoot":"","sources":["../../src/lib/requestFn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { QueryClient } from '@tanstack/query-core';
2
+ import type { UseQueryOptions } from '@tanstack/react-query';
3
+ import type { QraftClientOptions } from '../qraftAPIClient.js';
4
+ import type { OperationSchema } from './requestFn.js';
5
+ /**
6
+ * Composes the options for useQuery, useInfiniteQuery, useSuspenseQuery, and useSuspenseQueries.
7
+ * @internal
8
+ */
9
+ export declare function useComposeUseQueryOptions(qraftOptions: QraftClientOptions | undefined, schema: OperationSchema, args: UseQueryOptionsArgs, infinite: boolean): never;
10
+ type UseQueryOptionsArgs = [
11
+ parameters: unknown,
12
+ options?: UseQueryOptions,
13
+ queryClient?: QueryClient
14
+ ];
15
+ export {};
16
+ //# sourceMappingURL=useComposeUseQueryOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useComposeUseQueryOptions.d.ts","sourceRoot":"","sources":["../../src/lib/useComposeUseQueryOptions.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAItD;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,kBAAkB,GAAG,SAAS,EAC5C,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,mBAAmB,EACzB,QAAQ,EAAE,OAAO,GAChB,KAAK,CAgCP;AAED,KAAK,mBAAmB,GAAG;IACzB,UAAU,EAAE,OAAO;IACnB,OAAO,CAAC,EAAE,eAAe;IACzB,WAAW,CAAC,EAAE,WAAW;CAC1B,CAAC"}
@@ -0,0 +1,40 @@
1
+ 'use client';
2
+ import { useContext } from 'react';
3
+ import { QraftContext } from '../QraftContext.js';
4
+ import { composeInfiniteQueryKey } from './composeInfiniteQueryKey.js';
5
+ import { composeQueryKey } from './composeQueryKey.js';
6
+ import { shelfMerge } from './shelfMerge.js';
7
+ import { useQueryClient } from './useQueryClient.js';
8
+ /**
9
+ * Composes the options for useQuery, useInfiniteQuery, useSuspenseQuery, and useSuspenseQueries.
10
+ * @internal
11
+ */
12
+ export function useComposeUseQueryOptions(qraftOptions, schema, args, infinite) {
13
+ const [parameters, options, queryClient] = args;
14
+ const contextValue = useContext(qraftOptions?.context ?? QraftContext);
15
+ if (!contextValue?.requestFn)
16
+ throw new Error(`QraftContext.requestFn not found`);
17
+ const queryFn = options?.queryFn ??
18
+ // @ts-expect-error
19
+ function ({ queryKey: [, queryParams], signal, meta, pageParam }) {
20
+ return contextValue.requestFn(schema, {
21
+ // @ts-expect-error
22
+ parameters: infinite
23
+ ? shelfMerge(2, queryParams, pageParam)
24
+ : queryParams,
25
+ baseUrl: contextValue.baseUrl,
26
+ signal,
27
+ meta,
28
+ });
29
+ };
30
+ const queryKey = Array.isArray(parameters)
31
+ ? parameters
32
+ : infinite
33
+ ? composeInfiniteQueryKey(schema, parameters)
34
+ : composeQueryKey(schema, parameters);
35
+ return [
36
+ { ...options, queryFn, queryKey },
37
+ useQueryClient(qraftOptions, queryClient),
38
+ ];
39
+ }
40
+ //# sourceMappingURL=useComposeUseQueryOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useComposeUseQueryOptions.js","sourceRoot":"","sources":["../../src/lib/useComposeUseQueryOptions.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAMnC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CACvC,YAA4C,EAC5C,MAAuB,EACvB,IAAyB,EACzB,QAAiB;IAEjB,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC;IAEhD,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,IAAI,YAAY,CAAC,CAAC;IACvE,IAAI,CAAC,YAAY,EAAE,SAAS;QAC1B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAEtD,MAAM,OAAO,GACX,OAAO,EAAE,OAAO;QAChB,mBAAmB;QACnB,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;YAC9D,OAAO,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE;gBACpC,mBAAmB;gBACnB,UAAU,EAAE,QAAQ;oBAClB,CAAC,CAAE,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,CAAW;oBAClD,CAAC,CAAC,WAAW;gBACf,OAAO,EAAE,YAAY,CAAC,OAAO;gBAC7B,MAAM;gBACN,IAAI;aACL,CAAC,CAAC;QACL,CAAC,CAAC;IAEJ,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;QACxC,CAAC,CAAE,UAAiE;QACpE,CAAC,CAAC,QAAQ;YACR,CAAC,CAAC,uBAAuB,CAAC,MAAM,EAAE,UAAU,CAAC;YAC7C,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAE1C,OAAO;QACL,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;QACjC,cAAc,CAAC,YAAY,EAAE,WAAW,CAAC;KACjC,CAAC;AACb,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { Context } from 'react';
2
- import type { OperationRequestSchema } from './lib/request.js';
2
+ import type { OperationSchema } from './lib/requestFn.js';
3
3
  import type { QraftContextValue } from './QraftContext.js';
4
4
  export interface QraftClientOptions {
5
5
  context?: Context<QraftContextValue>;
@@ -8,7 +8,7 @@ export declare const qraftAPIClient: <Services extends ServicesOutput<Services>,
8
8
  type ServicesOutput<Services> = {
9
9
  [service in keyof Services]: {
10
10
  [method in keyof Services[service]]: {
11
- schema: OperationRequestSchema;
11
+ schema: OperationSchema;
12
12
  };
13
13
  };
14
14
  };
@@ -23,7 +23,7 @@ type ServicesCallbacks = Record<string, (...rest: any[]) => any>;
23
23
  type ServicesCallbacksFilter<Services extends ServicesOutput<Services>, Callbacks> = Services extends {
24
24
  [serviceName in keyof Services]: {
25
25
  [method in keyof Services[serviceName]]: {
26
- schema: OperationRequestSchema;
26
+ schema: OperationSchema;
27
27
  };
28
28
  };
29
29
  } ? {
@@ -1 +1 @@
1
- {"version":3,"file":"qraftAPIClient.d.ts","sourceRoot":"","sources":["../src/qraftAPIClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGrC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACtC;AAED,eAAO,MAAM,cAAc,4JAMf,kBAAkB,uDAgC7B,CAAC;AAeF,KAAK,cAAc,CAAC,QAAQ,IAAI;KAC7B,OAAO,IAAI,MAAM,QAAQ,GAAG;SAC1B,MAAM,IAAI,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG;YAAE,MAAM,EAAE,sBAAsB,CAAA;SAAE;KACxE;CACF,CAAC;AAEF,KAAK,mBAAmB,CAAC,QAAQ,SAAS,cAAc,CAAC,QAAQ,CAAC,IAAI;KACnE,OAAO,IAAI,MAAM,QAAQ,GAAG;SAC1B,MAAM,IAAI,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG;YACnC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;SAC7C;KACF;CACF,CAAC;AAEF,KAAK,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC;AAEjE,KAAK,uBAAuB,CAC1B,QAAQ,SAAS,cAAc,CAAC,QAAQ,CAAC,EACzC,SAAS,IACP,QAAQ,SAAS;KAClB,WAAW,IAAI,MAAM,QAAQ,GAAG;SAC9B,MAAM,IAAI,MAAM,QAAQ,CAAC,WAAW,CAAC,GAAG;YAAE,MAAM,EAAE,sBAAsB,CAAA;SAAE;KAC5E;CACF,GACG;KACG,WAAW,IAAI,MAAM,QAAQ,GAAG;SAC9B,MAAM,IAAI,MAAM,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CAC3C,QAAQ,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,EAC7B,UAAU,CACR,MAAM,QAAQ,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,EACnC,SAAS,GAAG,QAAQ,GAAG,OAAO,CAC/B,CACF;KACF;CACF,GACD,KAAK,CAAC;AAEV,KAAK,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC"}
1
+ {"version":3,"file":"qraftAPIClient.d.ts","sourceRoot":"","sources":["../src/qraftAPIClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGrC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACtC;AAED,eAAO,MAAM,cAAc,4JAMf,kBAAkB,uDAgC7B,CAAC;AAeF,KAAK,cAAc,CAAC,QAAQ,IAAI;KAC7B,OAAO,IAAI,MAAM,QAAQ,GAAG;SAC1B,MAAM,IAAI,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG;YAAE,MAAM,EAAE,eAAe,CAAA;SAAE;KACjE;CACF,CAAC;AAEF,KAAK,mBAAmB,CAAC,QAAQ,SAAS,cAAc,CAAC,QAAQ,CAAC,IAAI;KACnE,OAAO,IAAI,MAAM,QAAQ,GAAG;SAC1B,MAAM,IAAI,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG;YACnC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;SAC7C;KACF;CACF,CAAC;AAEF,KAAK,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC;AAEjE,KAAK,uBAAuB,CAC1B,QAAQ,SAAS,cAAc,CAAC,QAAQ,CAAC,EACzC,SAAS,IACP,QAAQ,SAAS;KAClB,WAAW,IAAI,MAAM,QAAQ,GAAG;SAC9B,MAAM,IAAI,MAAM,QAAQ,CAAC,WAAW,CAAC,GAAG;YAAE,MAAM,EAAE,eAAe,CAAA;SAAE;KACrE;CACF,GACG;KACG,WAAW,IAAI,MAAM,QAAQ,GAAG;SAC9B,MAAM,IAAI,MAAM,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CAC3C,QAAQ,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,EAC7B,UAAU,CACR,MAAM,QAAQ,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,EACnC,SAAS,GAAG,QAAQ,GAAG,OAAO,CAC/B,CACF;KACF;CACF,GACD,KAAK,CAAC;AAEV,KAAK,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openapi-qraft/react",
3
- "version": "1.2.0",
3
+ "version": "1.3.2",
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",
@@ -14,7 +14,7 @@
14
14
  "type": "module",
15
15
  "sideEffects": false,
16
16
  "devDependencies": {
17
- "@openapi-qraft/cli": "~1.2.0",
17
+ "@openapi-qraft/cli": "~1.3.2",
18
18
  "@openapi-qraft/openapi-typescript": "^1.0.0",
19
19
  "@tanstack/react-query": "^5.17.3",
20
20
  "@testing-library/jest-dom": "^5.17.0",
@@ -4,28 +4,25 @@ import { createContext } from 'react';
4
4
 
5
5
  import type { QueryClient } from '@tanstack/react-query';
6
6
 
7
- import type {
8
- OperationRequestInfo,
9
- OperationRequestSchema,
10
- } from './lib/request.js';
7
+ import type { OperationSchema, RequestFnPayload } from './lib/requestFn.js';
11
8
 
12
9
  interface QraftContextValueBase {
13
- /** The QueryClient to use in Hooks */
14
- queryClient?: QueryClient;
15
-
16
- /**
17
- * The request client to use for making requests. Will be invoked with every request.
18
- */
19
- request<T>(
20
- options: { baseUrl: string },
21
- schema: OperationRequestSchema,
22
- requestInfo: OperationRequestInfo
23
- ): Promise<T>;
24
10
  /**
25
11
  * The base URL to use for all requests.
26
12
  * @example 'https://api.example.com'
27
13
  */
28
- baseUrl: string;
14
+ baseUrl?: string;
15
+
16
+ /**
17
+ * The `requestFn` will be invoked with every request.
18
+ */
19
+ requestFn<T>(
20
+ requestSchema: OperationSchema,
21
+ requestInfo: RequestFnPayload
22
+ ): Promise<T>;
23
+
24
+ /** The QueryClient to use in Hooks */
25
+ queryClient?: QueryClient;
29
26
  }
30
27
 
31
28
  export type QraftContextValue = QraftContextValueBase | undefined;
@@ -12,10 +12,14 @@ import {
12
12
  QueriesPlaceholderDataFunction,
13
13
  Query,
14
14
  QueryClient,
15
+ FetchQueryOptions,
15
16
  RefetchOptions,
16
17
  ResetOptions,
17
18
  SetDataOptions,
18
19
  Updater,
20
+ QueryFunction,
21
+ InitialPageParam,
22
+ GetNextPageParamFunction,
19
23
  } from '@tanstack/query-core';
20
24
  import type {
21
25
  DefinedInitialDataInfiniteOptions,
@@ -35,6 +39,8 @@ import type {
35
39
  UseSuspenseQueryResult,
36
40
  } from '@tanstack/react-query';
37
41
 
42
+ import type { RequestFn } from './lib/requestFn.js';
43
+
38
44
  export type ServiceOperationQueryKey<
39
45
  S extends { url: string; method: string },
40
46
  T,
@@ -63,6 +69,8 @@ export interface ServiceOperationQuery<
63
69
  ServiceOperationUseSuspenseInfiniteQuery<TSchema, TData, TParams, TError>,
64
70
  ServiceOperationUseIsFetchingQueries<TSchema, TData, TParams, TError>,
65
71
  ServiceOperationQueryFn<TSchema, TData, TParams>,
72
+ ServiceOperationFetchQuery<TSchema, TData, TParams, TError>,
73
+ ServiceOperationFetchInfiniteQuery<TSchema, TData, TParams, TError>,
66
74
  ServiceOperationGetQueryData<TSchema, TData, TParams>,
67
75
  ServiceOperationGetInfiniteQueryData<TSchema, TData, TParams>,
68
76
  ServiceOperationSetQueryData<TSchema, TData, TParams>,
@@ -118,6 +126,232 @@ interface ServiceOperationUseQuery<
118
126
  ): DefinedUseQueryResult<TData, TError | Error>;
119
127
  }
120
128
 
129
+ type FetchQueryOptionsBase<
130
+ TSchema extends { url: string; method: string },
131
+ TData,
132
+ TParams = {},
133
+ TError = DefaultError,
134
+ > = Omit<
135
+ FetchQueryOptions<
136
+ TData,
137
+ TError,
138
+ TData,
139
+ ServiceOperationQueryKey<TSchema, TParams>
140
+ >,
141
+ 'queryKey' | 'queryFn'
142
+ >;
143
+
144
+ interface FetchQueryOptionsByQueryKey<
145
+ TSchema extends { url: string; method: string },
146
+ TData,
147
+ TParams = {},
148
+ TError = DefaultError,
149
+ > extends FetchQueryOptionsBase<TSchema, TData, TParams, TError> {
150
+ /**
151
+ * Fetch Queries by query key
152
+ */
153
+ queryKey?: ServiceOperationQueryKey<TSchema, TParams>;
154
+ }
155
+
156
+ interface FetchQueryOptionsByParameters<
157
+ TSchema extends { url: string; method: string },
158
+ TData,
159
+ TParams = {},
160
+ TError = DefaultError,
161
+ > extends FetchQueryOptionsBase<TSchema, TData, TParams, TError> {
162
+ /**
163
+ * Fetch Queries by parameters
164
+ */
165
+ parameters?: TParams;
166
+ queryKey?: never;
167
+ }
168
+
169
+ type FetchQueryOptionsQueryFn<
170
+ TSchema extends { url: string; method: string },
171
+ TData,
172
+ TParams = {},
173
+ > =
174
+ | {
175
+ queryFn?: QueryFunction<
176
+ TData,
177
+ ServiceOperationQueryKey<TSchema, TParams>
178
+ >;
179
+ }
180
+ | {
181
+ requestFn: RequestFn<TData>;
182
+ /**
183
+ * Base URL to use for the request (used in the `queryFn`)
184
+ * @example 'https://api.example.com'
185
+ */
186
+ baseUrl: string | undefined;
187
+ queryFn?: never; // Workaround to fix union type error
188
+ };
189
+
190
+ interface ServiceOperationFetchQuery<
191
+ TSchema extends { url: string; method: string },
192
+ TData,
193
+ TParams = {},
194
+ TError = DefaultError,
195
+ > {
196
+ fetchQuery(
197
+ options:
198
+ | (FetchQueryOptionsByQueryKey<TSchema, TData, TParams, TError> &
199
+ FetchQueryOptionsQueryFn<TSchema, TData, TParams>)
200
+ | (FetchQueryOptionsByParameters<TSchema, TData, TParams, TError> &
201
+ FetchQueryOptionsQueryFn<TSchema, TData, TParams>),
202
+ queryClient: QueryClient
203
+ ): Promise<TData>;
204
+ prefetchQuery(
205
+ options:
206
+ | (FetchQueryOptionsByQueryKey<TSchema, TData, TParams, TError> &
207
+ FetchQueryOptionsQueryFn<TSchema, TData, TParams>)
208
+ | (FetchQueryOptionsByParameters<TSchema, TData, TParams, TError> &
209
+ FetchQueryOptionsQueryFn<TSchema, TData, TParams>),
210
+ queryClient: QueryClient
211
+ ): Promise<void>;
212
+ }
213
+
214
+ type FetchInfiniteQueryOptionsBase<
215
+ TSchema extends { url: string; method: string },
216
+ TData,
217
+ TParams = {},
218
+ TPageParam = unknown,
219
+ TError = DefaultError,
220
+ > = Omit<
221
+ FetchQueryOptions<
222
+ TData,
223
+ TError,
224
+ InfiniteData<TData, TPageParam>,
225
+ ServiceOperationQueryKey<TSchema, TParams>,
226
+ TPageParam
227
+ >,
228
+ 'queryKey'
229
+ > &
230
+ InitialPageParam<PartialParameters<TPageParam>> &
231
+ FetchInfiniteQueryPages<TData, TPageParam>;
232
+
233
+ type FetchInfiniteQueryPages<TData = unknown, TPageParam = unknown> =
234
+ | {
235
+ pages?: never;
236
+ }
237
+ | {
238
+ pages: number;
239
+ getNextPageParam: GetNextPageParamFunction<
240
+ PartialParameters<TPageParam>,
241
+ TData
242
+ >;
243
+ };
244
+
245
+ type FetchInfiniteQueryOptionsByQueryKey<
246
+ TSchema extends { url: string; method: string },
247
+ TData,
248
+ TParams = {},
249
+ TPageParam = {},
250
+ TError = DefaultError,
251
+ > = FetchInfiniteQueryOptionsBase<
252
+ TSchema,
253
+ TData,
254
+ TParams,
255
+ TPageParam,
256
+ TError
257
+ > & {
258
+ /**
259
+ * Fetch Queries by query key
260
+ */
261
+ queryKey?: ServiceOperationInfiniteQueryKey<TSchema, TParams>;
262
+ parameters?: never;
263
+ };
264
+
265
+ type FetchInfiniteQueryOptionsByParameters<
266
+ TSchema extends { url: string; method: string },
267
+ TData,
268
+ TParams = {},
269
+ TPageParam = {},
270
+ TError = DefaultError,
271
+ > = FetchInfiniteQueryOptionsBase<
272
+ TSchema,
273
+ TData,
274
+ TParams,
275
+ TPageParam,
276
+ TError
277
+ > & {
278
+ /**
279
+ * Fetch Queries by parameters
280
+ */
281
+ parameters?: TParams;
282
+ queryKey?: never;
283
+ };
284
+
285
+ type FetchInfiniteQueryOptionsQueryFn<
286
+ TSchema extends { url: string; method: string },
287
+ TData,
288
+ TParams = {},
289
+ > =
290
+ | {
291
+ queryFn?: QueryFunction<
292
+ TData,
293
+ ServiceOperationInfiniteQueryKey<TSchema, TParams>
294
+ >;
295
+ }
296
+ | {
297
+ requestFn: RequestFn<TData>;
298
+ /**
299
+ * Base URL to use for the request (used in the `queryFn`)
300
+ * @example 'https://api.example.com'
301
+ */
302
+ baseUrl: string | undefined;
303
+ queryFn?: never; // Workaround to fix union type error
304
+ };
305
+
306
+ interface ServiceOperationFetchInfiniteQuery<
307
+ TSchema extends { url: string; method: string },
308
+ TData,
309
+ TParams = {},
310
+ TError = DefaultError,
311
+ > {
312
+ fetchInfiniteQuery<TPageParam extends TParams>(
313
+ options:
314
+ | (FetchInfiniteQueryOptionsByQueryKey<
315
+ TSchema,
316
+ TData,
317
+ TParams,
318
+ TPageParam,
319
+ TError
320
+ > &
321
+ FetchInfiniteQueryOptionsQueryFn<TSchema, TData, TParams>)
322
+ | (FetchInfiniteQueryOptionsByParameters<
323
+ TSchema,
324
+ TData,
325
+ TParams,
326
+ TPageParam,
327
+ TError
328
+ > &
329
+ FetchInfiniteQueryOptionsQueryFn<TSchema, TData, TParams>),
330
+ queryClient: QueryClient
331
+ ): Promise<InfiniteData<TData, TPageParam>>;
332
+
333
+ prefetchInfiniteQuery<TPageParam extends TParams>(
334
+ options:
335
+ | (FetchInfiniteQueryOptionsByQueryKey<
336
+ TSchema,
337
+ TData,
338
+ TParams,
339
+ TPageParam,
340
+ TError
341
+ > &
342
+ FetchInfiniteQueryOptionsQueryFn<TSchema, TData, TParams>)
343
+ | (FetchInfiniteQueryOptionsByParameters<
344
+ TSchema,
345
+ TData,
346
+ TParams,
347
+ TPageParam,
348
+ TError
349
+ > &
350
+ FetchInfiniteQueryOptionsQueryFn<TSchema, TData, TParams>),
351
+ queryClient: QueryClient
352
+ ): Promise<void>;
353
+ }
354
+
121
355
  interface ServiceOperationUseQueries<
122
356
  TSchema extends { url: string; method: string },
123
357
  TData,
@@ -138,7 +372,7 @@ interface ServiceOperationUseQueries<
138
372
  > & {
139
373
  placeholderData?: TData | QueriesPlaceholderDataFunction<TData>;
140
374
  } & (
141
- | { parameters: TParams }
375
+ | { parameters: TParams; queryKey?: never }
142
376
  | { queryKey: ServiceOperationQueryKey<TSchema, TParams> }
143
377
  )
144
378
  >;
@@ -452,7 +686,7 @@ interface ServiceOperationUseSuspenseQueries<
452
686
  'queryKey'
453
687
  > &
454
688
  (
455
- | { parameters: TParams }
689
+ | { parameters: TParams; queryKey?: never }
456
690
  | { queryKey: ServiceOperationQueryKey<TSchema, TParams> }
457
691
  )
458
692
  >;
@@ -736,6 +970,7 @@ interface QueryFnOptionsByParameters<
736
970
  TSignal extends AbortSignal = AbortSignal,
737
971
  > extends QueryFnOptionsBase<TMeta, TSignal> {
738
972
  parameters: TParams;
973
+ queryKey?: never;
739
974
  }
740
975
 
741
976
  interface QueryFnOptionsByQueryKey<
@@ -795,8 +1030,30 @@ interface ServiceOperationSetQueryData<
795
1030
  setQueryData(
796
1031
  parameters: TParams | ServiceOperationQueryKey<TSchema, TParams>,
797
1032
  updater: Updater<NoInfer<TData> | undefined, NoInfer<TData> | undefined>,
798
- queryClient: QueryClient,
799
- options?: SetDataOptions
1033
+ options: SetDataOptions,
1034
+ queryClient: QueryClient
1035
+ ): TData | undefined;
1036
+
1037
+ setQueryData(
1038
+ parameters: TParams | ServiceOperationQueryKey<TSchema, TParams>,
1039
+ updater: Updater<NoInfer<TData> | undefined, NoInfer<TData> | undefined>,
1040
+ queryClient: QueryClient
1041
+ ): TData | undefined;
1042
+ }
1043
+
1044
+ /**
1045
+ * @internal
1046
+ */
1047
+ export interface ServiceOperationSetQueryDataCallback<
1048
+ TSchema extends { url: string; method: string },
1049
+ TData,
1050
+ TParams = {},
1051
+ > extends ServiceOperationSetQueryData<TSchema, TData, TParams> {
1052
+ setQueryData(
1053
+ parameters: TParams | ServiceOperationQueryKey<TSchema, TParams>,
1054
+ updater: Updater<NoInfer<TData> | undefined, NoInfer<TData> | undefined>,
1055
+ options: SetDataOptions | QueryClient,
1056
+ queryClient?: QueryClient
800
1057
  ): TData | undefined;
801
1058
  }
802
1059