@openapi-qraft/react 1.1.4 → 1.2.0

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 (150) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +83 -31
  3. package/dist/QraftContext.d.ts +16 -5
  4. package/dist/QraftContext.d.ts.map +1 -1
  5. package/dist/QraftContext.js.map +1 -1
  6. package/dist/RequestClient.d.ts +2 -18
  7. package/dist/RequestClient.d.ts.map +1 -1
  8. package/dist/ServiceOperation.d.ts +41 -2
  9. package/dist/ServiceOperation.d.ts.map +1 -1
  10. package/dist/callbacks/cancelQueries.d.ts +2 -2
  11. package/dist/callbacks/cancelQueries.d.ts.map +1 -1
  12. package/dist/callbacks/cancelQueries.js.map +1 -1
  13. package/dist/callbacks/getInfiniteQueryData.d.ts +2 -2
  14. package/dist/callbacks/getInfiniteQueryData.d.ts.map +1 -1
  15. package/dist/callbacks/getInfiniteQueryData.js.map +1 -1
  16. package/dist/callbacks/getInfiniteQueryKey.d.ts +2 -2
  17. package/dist/callbacks/getInfiniteQueryKey.d.ts.map +1 -1
  18. package/dist/callbacks/getInfiniteQueryKey.js.map +1 -1
  19. package/dist/callbacks/getMutationKey.d.ts +2 -2
  20. package/dist/callbacks/getMutationKey.d.ts.map +1 -1
  21. package/dist/callbacks/getMutationKey.js.map +1 -1
  22. package/dist/callbacks/getQueryData.d.ts +2 -2
  23. package/dist/callbacks/getQueryData.d.ts.map +1 -1
  24. package/dist/callbacks/getQueryData.js.map +1 -1
  25. package/dist/callbacks/getQueryKey.d.ts +2 -2
  26. package/dist/callbacks/getQueryKey.d.ts.map +1 -1
  27. package/dist/callbacks/getQueryKey.js.map +1 -1
  28. package/dist/callbacks/invalidateQueries.d.ts +2 -2
  29. package/dist/callbacks/invalidateQueries.d.ts.map +1 -1
  30. package/dist/callbacks/invalidateQueries.js.map +1 -1
  31. package/dist/callbacks/isFetching.d.ts +5 -0
  32. package/dist/callbacks/isFetching.d.ts.map +1 -0
  33. package/dist/callbacks/isFetching.js +5 -0
  34. package/dist/callbacks/isFetching.js.map +1 -0
  35. package/dist/callbacks/mutationFn.d.ts +2 -2
  36. package/dist/callbacks/mutationFn.d.ts.map +1 -1
  37. package/dist/callbacks/mutationFn.js.map +1 -1
  38. package/dist/callbacks/refetchQueries.d.ts +5 -0
  39. package/dist/callbacks/refetchQueries.d.ts.map +1 -0
  40. package/dist/callbacks/refetchQueries.js +5 -0
  41. package/dist/callbacks/refetchQueries.js.map +1 -0
  42. package/dist/callbacks/resetQueries.d.ts +2 -2
  43. package/dist/callbacks/resetQueries.d.ts.map +1 -1
  44. package/dist/callbacks/resetQueries.js.map +1 -1
  45. package/dist/callbacks/setInfiniteQueryData.d.ts +2 -2
  46. package/dist/callbacks/setInfiniteQueryData.d.ts.map +1 -1
  47. package/dist/callbacks/setInfiniteQueryData.js.map +1 -1
  48. package/dist/callbacks/setQueryData.d.ts +2 -2
  49. package/dist/callbacks/setQueryData.d.ts.map +1 -1
  50. package/dist/callbacks/setQueryData.js.map +1 -1
  51. package/dist/callbacks/useInfiniteQuery.d.ts +2 -2
  52. package/dist/callbacks/useInfiniteQuery.d.ts.map +1 -1
  53. package/dist/callbacks/useInfiniteQuery.js +7 -6
  54. package/dist/callbacks/useInfiniteQuery.js.map +1 -1
  55. package/dist/callbacks/useIsFetching.d.ts +5 -0
  56. package/dist/callbacks/useIsFetching.d.ts.map +1 -0
  57. package/dist/callbacks/useIsFetching.js +12 -0
  58. package/dist/callbacks/useIsFetching.js.map +1 -0
  59. package/dist/callbacks/useMutation.d.ts +2 -2
  60. package/dist/callbacks/useMutation.d.ts.map +1 -1
  61. package/dist/callbacks/useMutation.js +8 -7
  62. package/dist/callbacks/useMutation.js.map +1 -1
  63. package/dist/callbacks/useMutationState.d.ts +2 -2
  64. package/dist/callbacks/useMutationState.d.ts.map +1 -1
  65. package/dist/callbacks/useMutationState.js +3 -7
  66. package/dist/callbacks/useMutationState.js.map +1 -1
  67. package/dist/callbacks/useQueries.d.ts +2 -2
  68. package/dist/callbacks/useQueries.d.ts.map +1 -1
  69. package/dist/callbacks/useQueries.js +7 -6
  70. package/dist/callbacks/useQueries.js.map +1 -1
  71. package/dist/callbacks/useQuery.d.ts +3 -3
  72. package/dist/callbacks/useQuery.d.ts.map +1 -1
  73. package/dist/callbacks/useQuery.js +7 -6
  74. package/dist/callbacks/useQuery.js.map +1 -1
  75. package/dist/callbacks/useSuspenseInfiniteQuery.d.ts +2 -2
  76. package/dist/callbacks/useSuspenseInfiniteQuery.d.ts.map +1 -1
  77. package/dist/callbacks/useSuspenseInfiniteQuery.js +7 -6
  78. package/dist/callbacks/useSuspenseInfiniteQuery.js.map +1 -1
  79. package/dist/callbacks/useSuspenseQueries.d.ts +2 -2
  80. package/dist/callbacks/useSuspenseQueries.d.ts.map +1 -1
  81. package/dist/callbacks/useSuspenseQueries.js +7 -6
  82. package/dist/callbacks/useSuspenseQueries.js.map +1 -1
  83. package/dist/callbacks/useSuspenseQuery.d.ts +2 -2
  84. package/dist/callbacks/useSuspenseQuery.d.ts.map +1 -1
  85. package/dist/callbacks/useSuspenseQuery.js +7 -6
  86. package/dist/callbacks/useSuspenseQuery.js.map +1 -1
  87. package/dist/index.d.ts +3 -7
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +1 -1
  90. package/dist/index.js.map +1 -1
  91. package/dist/lib/callQueryClientMethodWithQueryFilters.d.ts +2 -2
  92. package/dist/lib/callQueryClientMethodWithQueryFilters.d.ts.map +1 -1
  93. package/dist/lib/callQueryClientMethodWithQueryFilters.js +2 -29
  94. package/dist/lib/callQueryClientMethodWithQueryFilters.js.map +1 -1
  95. package/dist/lib/composeInfiniteQueryKey.d.ts +3 -3
  96. package/dist/lib/composeInfiniteQueryKey.d.ts.map +1 -1
  97. package/dist/lib/composeMutationKey.d.ts +4 -4
  98. package/dist/lib/composeMutationKey.d.ts.map +1 -1
  99. package/dist/lib/composeQueryFilters.d.ts +11 -0
  100. package/dist/lib/composeQueryFilters.d.ts.map +1 -0
  101. package/dist/lib/composeQueryFilters.js +32 -0
  102. package/dist/lib/composeQueryFilters.js.map +1 -0
  103. package/dist/lib/composeQueryKey.d.ts +3 -3
  104. package/dist/lib/composeQueryKey.d.ts.map +1 -1
  105. package/dist/lib/composeQueryKey.js.map +1 -1
  106. package/dist/lib/request.d.ts +50 -17
  107. package/dist/lib/request.d.ts.map +1 -1
  108. package/dist/lib/request.js +42 -31
  109. package/dist/lib/request.js.map +1 -1
  110. package/dist/lib/useQueryClient.d.ts +9 -0
  111. package/dist/lib/useQueryClient.d.ts.map +1 -0
  112. package/dist/lib/useQueryClient.js +15 -0
  113. package/dist/lib/useQueryClient.js.map +1 -0
  114. package/dist/qraftAPIClient.d.ts +7 -7
  115. package/dist/qraftAPIClient.d.ts.map +1 -1
  116. package/package.json +3 -3
  117. package/src/QraftContext.ts +24 -9
  118. package/src/RequestClient.ts +10 -31
  119. package/src/ServiceOperation.ts +93 -1
  120. package/src/callbacks/cancelQueries.ts +3 -3
  121. package/src/callbacks/getInfiniteQueryData.ts +3 -3
  122. package/src/callbacks/getInfiniteQueryKey.ts +3 -3
  123. package/src/callbacks/getMutationKey.ts +3 -3
  124. package/src/callbacks/getQueryData.ts +7 -3
  125. package/src/callbacks/getQueryKey.ts +7 -3
  126. package/src/callbacks/invalidateQueries.ts +3 -3
  127. package/src/callbacks/isFetching.ts +22 -0
  128. package/src/callbacks/mutationFn.ts +3 -3
  129. package/src/callbacks/refetchQueries.ts +22 -0
  130. package/src/callbacks/resetQueries.ts +3 -3
  131. package/src/callbacks/setInfiniteQueryData.ts +4 -4
  132. package/src/callbacks/setQueryData.ts +8 -4
  133. package/src/callbacks/useInfiniteQuery.ts +17 -15
  134. package/src/callbacks/useIsFetching.ts +35 -0
  135. package/src/callbacks/useMutation.ts +23 -17
  136. package/src/callbacks/useMutationState.ts +5 -11
  137. package/src/callbacks/useQueries.ts +20 -14
  138. package/src/callbacks/useQuery.ts +22 -17
  139. package/src/callbacks/useSuspenseInfiniteQuery.ts +17 -15
  140. package/src/callbacks/useSuspenseQueries.ts +16 -14
  141. package/src/callbacks/useSuspenseQuery.ts +17 -15
  142. package/src/index.ts +12 -7
  143. package/src/lib/callQueryClientMethodWithQueryFilters.ts +4 -40
  144. package/src/lib/composeInfiniteQueryKey.ts +3 -3
  145. package/src/lib/composeMutationKey.ts +5 -5
  146. package/src/lib/composeQueryFilters.ts +44 -0
  147. package/src/lib/composeQueryKey.ts +6 -3
  148. package/src/lib/request.ts +136 -74
  149. package/src/lib/useQueryClient.ts +26 -0
  150. package/src/qraftAPIClient.ts +8 -8
@@ -1,14 +1,14 @@
1
- import { Context } from 'react';
2
- import { QraftContextValue } from './QraftContext.js';
3
- import type { RequestClientSchema } from './RequestClient.js';
4
- export type QraftClientOptions = {
1
+ import type { Context } from 'react';
2
+ import type { OperationRequestSchema } from './lib/request.js';
3
+ import type { QraftContextValue } from './QraftContext.js';
4
+ export interface QraftClientOptions {
5
5
  context?: Context<QraftContextValue>;
6
- };
6
+ }
7
7
  export declare const qraftAPIClient: <Services extends ServicesOutput<Services>, Callbacks extends ServicesCallbacks>(services: ServicesDeclaration<Services>, callbacks: Callbacks, options?: QraftClientOptions) => ServicesCallbacksFilter<Services, keyof Callbacks>;
8
8
  type ServicesOutput<Services> = {
9
9
  [service in keyof Services]: {
10
10
  [method in keyof Services[service]]: {
11
- schema: RequestClientSchema;
11
+ schema: OperationRequestSchema;
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: RequestClientSchema;
26
+ schema: OperationRequestSchema;
27
27
  };
28
28
  };
29
29
  } ? {
@@ -1 +1 @@
1
- {"version":3,"file":"qraftAPIClient.d.ts","sourceRoot":"","sources":["../src/qraftAPIClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACtC,CAAC;AAEF,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,mBAAmB,CAAA;SAAE;KACrE;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,mBAAmB,CAAA;SAAE;KACzE;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,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openapi-qraft/react",
3
- "version": "1.1.4",
3
+ "version": "1.2.0",
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",
@@ -8,13 +8,13 @@
8
8
  "test": "vitest run",
9
9
  "test:coverage": "vitest run --coverage",
10
10
  "typecheck": "tsc --noEmit",
11
- "generate-qraft": "openapi-qraft src/tests/fixtures/openapi.json --clean -o src/tests/fixtures/api --openapi-types-import-path '../../openapi.js' --explicit-import-extensions && prettier --write src/tests/fixtures/api/**/*.ts",
11
+ "generate-qraft": "openapi-qraft src/tests/fixtures/openapi.json --clean -o src/tests/fixtures/api --openapi-types-import-path '../../openapi.js' --explicit-import-extensions --filter-services '/approval_policies/**,/entities/**,/files/**,!/internal/**' && prettier --write src/tests/fixtures/api/**/*.ts",
12
12
  "generate-types": "openapi-qraft-typescript src/tests/fixtures/openapi.json -o src/tests/fixtures/openapi.ts"
13
13
  },
14
14
  "type": "module",
15
15
  "sideEffects": false,
16
16
  "devDependencies": {
17
- "@openapi-qraft/cli": "~1.1.4",
17
+ "@openapi-qraft/cli": "~1.2.0",
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,15 +4,30 @@ import { createContext } from 'react';
4
4
 
5
5
  import type { QueryClient } from '@tanstack/react-query';
6
6
 
7
- import type { RequestClient } from './RequestClient.js';
7
+ import type {
8
+ OperationRequestInfo,
9
+ OperationRequestSchema,
10
+ } from './lib/request.js';
8
11
 
9
- export type QraftContextValue =
10
- | {
11
- /** The request client to use for making requests. Will be invoked with every request. */
12
- requestClient: RequestClient;
13
- /** The QueryClient to use in Hooks */
14
- queryClient?: QueryClient;
15
- }
16
- | undefined;
12
+ 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
+ /**
25
+ * The base URL to use for all requests.
26
+ * @example 'https://api.example.com'
27
+ */
28
+ baseUrl: string;
29
+ }
30
+
31
+ export type QraftContextValue = QraftContextValueBase | undefined;
17
32
 
18
33
  export const QraftContext = createContext<QraftContextValue>(undefined);
@@ -1,32 +1,11 @@
1
- export type RequestClient = <T>(
2
- schema: RequestClientSchema,
3
- options: RequestClientOptions
4
- ) => Promise<T>;
5
-
6
- export type RequestClientSchema = {
7
- url: string;
8
- method:
9
- | 'get'
10
- | 'put'
11
- | 'post'
12
- | 'patch'
13
- | 'delete'
14
- | 'options'
15
- | 'head'
16
- | 'trace';
17
- mediaType?: string;
18
- };
1
+ import type {
2
+ OperationRequestInfo,
3
+ OperationRequestSchema,
4
+ RequestOptions,
5
+ } from './lib/request.js';
19
6
 
20
- export type RequestClientOptions = {
21
- body?: BodyInit | Record<string, unknown> | null;
22
- parameters?: RequestClientParams;
23
- signal?: AbortSignal;
24
- meta?: Record<string, unknown>;
25
- };
26
-
27
- export type RequestClientParams = {
28
- header?: Record<string, any>;
29
- path?: Record<string, any>;
30
- query?: Record<string, any>;
31
- cookie?: Record<string, any>;
32
- };
7
+ export type RequestClient<T> = (
8
+ options: RequestOptions,
9
+ requestSchema: OperationRequestSchema,
10
+ requestInfo: OperationRequestInfo
11
+ ) => Promise<T>;
@@ -12,6 +12,7 @@ import {
12
12
  QueriesPlaceholderDataFunction,
13
13
  Query,
14
14
  QueryClient,
15
+ RefetchOptions,
15
16
  ResetOptions,
16
17
  SetDataOptions,
17
18
  Updater,
@@ -60,6 +61,7 @@ export interface ServiceOperationQuery<
60
61
  ServiceOperationUseInfiniteQuery<TSchema, TData, TParams, TError>,
61
62
  ServiceOperationUseSuspenseQueryQuery<TSchema, TData, TParams, TError>,
62
63
  ServiceOperationUseSuspenseInfiniteQuery<TSchema, TData, TParams, TError>,
64
+ ServiceOperationUseIsFetchingQueries<TSchema, TData, TParams, TError>,
63
65
  ServiceOperationQueryFn<TSchema, TData, TParams>,
64
66
  ServiceOperationGetQueryData<TSchema, TData, TParams>,
65
67
  ServiceOperationGetInfiniteQueryData<TSchema, TData, TParams>,
@@ -67,7 +69,9 @@ export interface ServiceOperationQuery<
67
69
  ServiceOperationSetInfiniteQueryData<TSchema, TData, TParams>,
68
70
  ServiceOperationInvalidateQueries<TSchema, TData, TParams, TError>,
69
71
  ServiceOperationCancelQueries<TSchema, TData, TParams, TError>,
70
- ServiceOperationResetQueries<TSchema, TData, TParams, TError> {
72
+ ServiceOperationResetQueries<TSchema, TData, TParams, TError>,
73
+ ServiceOperationRefetchQueries<TSchema, TData, TParams, TError>,
74
+ ServiceOperationIsFetchingQueries<TSchema, TData, TParams, TError> {
71
75
  schema: TSchema;
72
76
  types: {
73
77
  parameters: TParams;
@@ -339,6 +343,94 @@ export interface ServiceOperationResetQueriesCallback<
339
343
  ): Promise<void>;
340
344
  }
341
345
 
346
+ interface ServiceOperationRefetchQueries<
347
+ TSchema extends { url: string; method: string },
348
+ TData,
349
+ TParams = {},
350
+ TError = DefaultError,
351
+ > {
352
+ refetchQueries(
353
+ filters:
354
+ | QueryFiltersByParameters<TSchema, TData, TParams, TError>
355
+ | QueryFiltersByQueryKey<TSchema, TData, TParams, TError>,
356
+ options: RefetchOptions,
357
+ queryClient: QueryClient
358
+ ): Promise<void>;
359
+ refetchQueries(
360
+ filters:
361
+ | QueryFiltersByParameters<TSchema, TData, TParams, TError>
362
+ | QueryFiltersByQueryKey<TSchema, TData, TParams, TError>,
363
+ queryClient: QueryClient
364
+ ): Promise<void>;
365
+ refetchQueries(queryClient: QueryClient): Promise<void>;
366
+ }
367
+
368
+ /**
369
+ * @internal
370
+ */
371
+ export interface ServiceOperationResetQueriesCallback<
372
+ TSchema extends { url: string; method: string },
373
+ TData,
374
+ TParams = {},
375
+ TError = DefaultError,
376
+ > extends ServiceOperationRefetchQueries<TSchema, TData, TParams, TError> {
377
+ refetchQueries(
378
+ filters:
379
+ | QueryFiltersByParameters<TSchema, TData, TParams, TError>
380
+ | QueryFiltersByQueryKey<TSchema, TData, TParams, TError>
381
+ | QueryClient,
382
+ options?: RefetchOptions | QueryClient,
383
+ queryClient?: QueryClient
384
+ ): Promise<void>;
385
+ }
386
+
387
+ interface ServiceOperationIsFetchingQueries<
388
+ TSchema extends { url: string; method: string },
389
+ TData,
390
+ TParams = {},
391
+ TError = DefaultError,
392
+ > {
393
+ isFetching(
394
+ filters:
395
+ | QueryFiltersByParameters<TSchema, TData, TParams, TError>
396
+ | QueryFiltersByQueryKey<TSchema, TData, TParams, TError>,
397
+ queryClient: QueryClient
398
+ ): number;
399
+ isFetching(queryClient: QueryClient): number;
400
+ }
401
+
402
+ /**
403
+ * @internal
404
+ */
405
+ export interface ServiceOperationIsFetchingQueriesCallback<
406
+ TSchema extends { url: string; method: string },
407
+ TData,
408
+ TParams = {},
409
+ TError = DefaultError,
410
+ > extends ServiceOperationIsFetchingQueries<TSchema, TData, TParams, TError> {
411
+ refetchQueries(
412
+ filters:
413
+ | QueryFiltersByParameters<TSchema, TData, TParams, TError>
414
+ | QueryFiltersByQueryKey<TSchema, TData, TParams, TError>
415
+ | QueryClient,
416
+ queryClient?: QueryClient
417
+ ): number;
418
+ }
419
+
420
+ interface ServiceOperationUseIsFetchingQueries<
421
+ TSchema extends { url: string; method: string },
422
+ TData,
423
+ TParams = {},
424
+ TError = DefaultError,
425
+ > {
426
+ useIsFetching(
427
+ filters?:
428
+ | QueryFiltersByParameters<TSchema, TData, TParams, TError>
429
+ | QueryFiltersByQueryKey<TSchema, TData, TParams, TError>,
430
+ queryClient?: QueryClient
431
+ ): number;
432
+ }
433
+
342
434
  interface ServiceOperationUseSuspenseQueries<
343
435
  TSchema extends { url: string; method: string },
344
436
  TData,
@@ -1,14 +1,14 @@
1
1
  import { callQueryClientMethodWithQueryFilters } from '../lib/callQueryClientMethodWithQueryFilters.js';
2
+ import type { OperationRequestSchema } from '../lib/request.js';
2
3
  import type { QraftClientOptions } from '../qraftAPIClient.js';
3
- import type { RequestClientSchema } from '../RequestClient.js';
4
4
  import { ServiceOperationCancelQueriesCallback } from '../ServiceOperation.js';
5
5
 
6
6
  export function cancelQueries<TData>(
7
7
  qraftOptions: QraftClientOptions | undefined,
8
- schema: RequestClientSchema,
8
+ schema: OperationRequestSchema,
9
9
  args: Parameters<
10
10
  ServiceOperationCancelQueriesCallback<
11
- RequestClientSchema,
11
+ OperationRequestSchema,
12
12
  unknown,
13
13
  TData
14
14
  >['cancelQueries']
@@ -1,8 +1,8 @@
1
1
  import { InfiniteData } from '@tanstack/query-core';
2
2
 
3
3
  import { composeInfiniteQueryKey } from '../lib/composeInfiniteQueryKey.js';
4
+ import type { OperationRequestSchema } from '../lib/request.js';
4
5
  import type { QraftClientOptions } from '../qraftAPIClient.js';
5
- import type { RequestClientSchema } from '../RequestClient.js';
6
6
  import {
7
7
  ServiceOperationInfiniteQueryKey,
8
8
  ServiceOperationQuery,
@@ -10,10 +10,10 @@ import {
10
10
 
11
11
  export function getInfiniteQueryData<TData>(
12
12
  qraftOptions: QraftClientOptions | undefined,
13
- schema: RequestClientSchema,
13
+ schema: OperationRequestSchema,
14
14
  args: Parameters<
15
15
  ServiceOperationQuery<
16
- RequestClientSchema,
16
+ OperationRequestSchema,
17
17
  unknown,
18
18
  TData
19
19
  >['getInfiniteQueryData']
@@ -1,14 +1,14 @@
1
1
  import { composeInfiniteQueryKey } from '../lib/composeInfiniteQueryKey.js';
2
+ import type { OperationRequestSchema } from '../lib/request.js';
2
3
  import type { QraftClientOptions } from '../qraftAPIClient.js';
3
- import type { RequestClientSchema } from '../RequestClient.js';
4
4
  import { ServiceOperationQuery } from '../ServiceOperation.js';
5
5
 
6
6
  export const getInfiniteQueryKey = (
7
7
  qraftOptions: QraftClientOptions | undefined,
8
- schema: RequestClientSchema,
8
+ schema: OperationRequestSchema,
9
9
  args: Parameters<
10
10
  ServiceOperationQuery<
11
- RequestClientSchema,
11
+ OperationRequestSchema,
12
12
  unknown,
13
13
  unknown
14
14
  >['getInfiniteQueryKey']
@@ -1,14 +1,14 @@
1
1
  import { composeMutationKey } from '../lib/composeMutationKey.js';
2
+ import type { OperationRequestSchema } from '../lib/request.js';
2
3
  import type { QraftClientOptions } from '../qraftAPIClient.js';
3
- import type { RequestClientSchema } from '../RequestClient.js';
4
4
  import { ServiceOperationMutation } from '../ServiceOperation.js';
5
5
 
6
6
  export const getMutationKey = (
7
7
  qraftOptions: QraftClientOptions | undefined,
8
- schema: RequestClientSchema,
8
+ schema: OperationRequestSchema,
9
9
  args: Parameters<
10
10
  ServiceOperationMutation<
11
- RequestClientSchema,
11
+ OperationRequestSchema,
12
12
  unknown,
13
13
  unknown,
14
14
  unknown
@@ -1,13 +1,17 @@
1
1
  import { composeQueryKey } from '../lib/composeQueryKey.js';
2
+ import type { OperationRequestSchema } from '../lib/request.js';
2
3
  import type { QraftClientOptions } from '../qraftAPIClient.js';
3
- import type { RequestClientSchema } from '../RequestClient.js';
4
4
  import { ServiceOperationQuery } from '../ServiceOperation.js';
5
5
 
6
6
  export function getQueryData<TData>(
7
7
  qraftOptions: QraftClientOptions | undefined,
8
- schema: RequestClientSchema,
8
+ schema: OperationRequestSchema,
9
9
  args: Parameters<
10
- ServiceOperationQuery<RequestClientSchema, unknown, TData>['getQueryData']
10
+ ServiceOperationQuery<
11
+ OperationRequestSchema,
12
+ unknown,
13
+ TData
14
+ >['getQueryData']
11
15
  >
12
16
  ): TData | undefined {
13
17
  const [parameters, queryClient] = args;
@@ -1,13 +1,17 @@
1
1
  import { composeQueryKey } from '../lib/composeQueryKey.js';
2
+ import type { OperationRequestSchema } from '../lib/request.js';
2
3
  import type { QraftClientOptions } from '../qraftAPIClient.js';
3
- import type { RequestClientSchema } from '../RequestClient.js';
4
4
  import { ServiceOperationQuery } from '../ServiceOperation.js';
5
5
 
6
6
  export const getQueryKey = (
7
7
  qraftOptions: QraftClientOptions | undefined,
8
- schema: RequestClientSchema,
8
+ schema: OperationRequestSchema,
9
9
  args: Parameters<
10
- ServiceOperationQuery<RequestClientSchema, unknown, unknown>['getQueryKey']
10
+ ServiceOperationQuery<
11
+ OperationRequestSchema,
12
+ unknown,
13
+ unknown
14
+ >['getQueryKey']
11
15
  >
12
16
  ) => {
13
17
  return composeQueryKey(schema, args[0]);
@@ -1,14 +1,14 @@
1
1
  import { callQueryClientMethodWithQueryFilters } from '../lib/callQueryClientMethodWithQueryFilters.js';
2
+ import type { OperationRequestSchema } from '../lib/request.js';
2
3
  import type { QraftClientOptions } from '../qraftAPIClient.js';
3
- import type { RequestClientSchema } from '../RequestClient.js';
4
4
  import type { ServiceOperationInvalidateQueriesCallback } from '../ServiceOperation.js';
5
5
 
6
6
  export function invalidateQueries<TData>(
7
7
  qraftOptions: QraftClientOptions | undefined,
8
- schema: RequestClientSchema,
8
+ schema: OperationRequestSchema,
9
9
  args: Parameters<
10
10
  ServiceOperationInvalidateQueriesCallback<
11
- RequestClientSchema,
11
+ OperationRequestSchema,
12
12
  unknown,
13
13
  TData
14
14
  >['invalidateQueries']
@@ -0,0 +1,22 @@
1
+ import { callQueryClientMethodWithQueryFilters } from '../lib/callQueryClientMethodWithQueryFilters.js';
2
+ import type { OperationRequestSchema } from '../lib/request.js';
3
+ import type { QraftClientOptions } from '../qraftAPIClient.js';
4
+ import { ServiceOperationIsFetchingQueriesCallback } from '../ServiceOperation.js';
5
+
6
+ export function isFetching<TData>(
7
+ qraftOptions: QraftClientOptions | undefined,
8
+ schema: OperationRequestSchema,
9
+ args: Parameters<
10
+ ServiceOperationIsFetchingQueriesCallback<
11
+ OperationRequestSchema,
12
+ unknown,
13
+ TData
14
+ >['isFetching']
15
+ >
16
+ ): Promise<void> {
17
+ return callQueryClientMethodWithQueryFilters(
18
+ 'isFetching',
19
+ schema,
20
+ args as never
21
+ ) as never;
22
+ }
@@ -1,15 +1,15 @@
1
+ import type { OperationRequestSchema } from '../lib/request.js';
1
2
  import type { QraftClientOptions } from '../qraftAPIClient.js';
2
- import type { RequestClientSchema } from '../RequestClient.js';
3
3
  import { ServiceOperationMutation } from '../ServiceOperation.js';
4
4
 
5
5
  export const mutationFn = (
6
6
  qraftOptions: QraftClientOptions | undefined,
7
- schema: RequestClientSchema,
7
+ schema: OperationRequestSchema,
8
8
  args: unknown
9
9
  ) => {
10
10
  const [client, options] = args as Parameters<
11
11
  ServiceOperationMutation<
12
- RequestClientSchema,
12
+ OperationRequestSchema,
13
13
  unknown,
14
14
  unknown,
15
15
  never
@@ -0,0 +1,22 @@
1
+ import { callQueryClientMethodWithQueryFilters } from '../lib/callQueryClientMethodWithQueryFilters.js';
2
+ import type { OperationRequestSchema } from '../lib/request.js';
3
+ import type { QraftClientOptions } from '../qraftAPIClient.js';
4
+ import type { ServiceOperationResetQueriesCallback } from '../ServiceOperation.js';
5
+
6
+ export function refetchQueries<TData>(
7
+ qraftOptions: QraftClientOptions | undefined,
8
+ schema: OperationRequestSchema,
9
+ args: Parameters<
10
+ ServiceOperationResetQueriesCallback<
11
+ OperationRequestSchema,
12
+ unknown,
13
+ TData
14
+ >['refetchQueries']
15
+ >
16
+ ): Promise<void> {
17
+ return callQueryClientMethodWithQueryFilters(
18
+ 'refetchQueries',
19
+ schema,
20
+ args as never
21
+ ) as never;
22
+ }
@@ -1,14 +1,14 @@
1
1
  import { callQueryClientMethodWithQueryFilters } from '../lib/callQueryClientMethodWithQueryFilters.js';
2
+ import type { OperationRequestSchema } from '../lib/request.js';
2
3
  import type { QraftClientOptions } from '../qraftAPIClient.js';
3
- import type { RequestClientSchema } from '../RequestClient.js';
4
4
  import type { ServiceOperationResetQueriesCallback } from '../ServiceOperation.js';
5
5
 
6
6
  export function resetQueries<TData>(
7
7
  qraftOptions: QraftClientOptions | undefined,
8
- schema: RequestClientSchema,
8
+ schema: OperationRequestSchema,
9
9
  args: Parameters<
10
10
  ServiceOperationResetQueriesCallback<
11
- RequestClientSchema,
11
+ OperationRequestSchema,
12
12
  unknown,
13
13
  TData
14
14
  >['resetQueries']
@@ -1,8 +1,8 @@
1
1
  import { InfiniteData } from '@tanstack/query-core';
2
2
 
3
3
  import { composeInfiniteQueryKey } from '../lib/composeInfiniteQueryKey.js';
4
+ import type { OperationRequestSchema } from '../lib/request.js';
4
5
  import type { QraftClientOptions } from '../qraftAPIClient.js';
5
- import type { RequestClientSchema } from '../RequestClient.js';
6
6
  import type {
7
7
  ServiceOperationInfiniteQueryKey,
8
8
  ServiceOperationQuery,
@@ -10,10 +10,10 @@ import type {
10
10
 
11
11
  export function setInfiniteQueryData<TData>(
12
12
  qraftOptions: QraftClientOptions | undefined,
13
- schema: RequestClientSchema,
13
+ schema: OperationRequestSchema,
14
14
  args: Parameters<
15
15
  ServiceOperationQuery<
16
- RequestClientSchema,
16
+ OperationRequestSchema,
17
17
  unknown,
18
18
  TData
19
19
  >['setInfiniteQueryData']
@@ -22,7 +22,7 @@ export function setInfiniteQueryData<TData>(
22
22
  const [parameters, updater, queryClient, options] = args;
23
23
 
24
24
  const queryKey: ServiceOperationInfiniteQueryKey<
25
- RequestClientSchema,
25
+ OperationRequestSchema,
26
26
  unknown
27
27
  > = Array.isArray(parameters)
28
28
  ? parameters
@@ -1,6 +1,6 @@
1
1
  import { composeQueryKey } from '../lib/composeQueryKey.js';
2
+ import type { OperationRequestSchema } from '../lib/request.js';
2
3
  import type { QraftClientOptions } from '../qraftAPIClient.js';
3
- import type { RequestClientSchema } from '../RequestClient.js';
4
4
  import {
5
5
  ServiceOperationQuery,
6
6
  ServiceOperationQueryKey,
@@ -8,14 +8,18 @@ import {
8
8
 
9
9
  export function setQueryData<TData>(
10
10
  qraftOptions: QraftClientOptions | undefined,
11
- schema: RequestClientSchema,
11
+ schema: OperationRequestSchema,
12
12
  args: Parameters<
13
- ServiceOperationQuery<RequestClientSchema, unknown, TData>['setQueryData']
13
+ ServiceOperationQuery<
14
+ OperationRequestSchema,
15
+ unknown,
16
+ TData
17
+ >['setQueryData']
14
18
  >
15
19
  ): TData | undefined {
16
20
  const [parameters, updater, queryClient, options] = args;
17
21
 
18
- const queryKey: ServiceOperationQueryKey<RequestClientSchema, unknown> =
22
+ const queryKey: ServiceOperationQueryKey<OperationRequestSchema, unknown> =
19
23
  Array.isArray(parameters)
20
24
  ? parameters
21
25
  : composeQueryKey(schema, parameters);
@@ -6,14 +6,14 @@ import type { DefaultError, InfiniteData } from '@tanstack/query-core';
6
6
  import {
7
7
  useInfiniteQuery as useInfiniteQueryBase,
8
8
  UseInfiniteQueryResult,
9
- useQueryClient,
10
9
  } from '@tanstack/react-query';
11
10
 
12
11
  import { composeInfiniteQueryKey } from '../lib/composeInfiniteQueryKey.js';
12
+ import type { OperationRequestSchema } from '../lib/request.js';
13
13
  import { shelfMerge } from '../lib/shelfMerge.js';
14
+ import { useQueryClient } from '../lib/useQueryClient.js';
14
15
  import type { QraftClientOptions } from '../qraftAPIClient.js';
15
16
  import { QraftContext } from '../QraftContext.js';
16
- import type { RequestClientSchema } from '../RequestClient.js';
17
17
  import {
18
18
  ServiceOperationInfiniteQueryKey,
19
19
  ServiceOperationQuery,
@@ -25,10 +25,10 @@ export const useInfiniteQuery: <
25
25
  TData = InfiniteData<TQueryFnData>,
26
26
  >(
27
27
  qraftOptions: QraftClientOptions | undefined,
28
- schema: RequestClientSchema,
28
+ schema: OperationRequestSchema,
29
29
  args: Parameters<
30
30
  ServiceOperationQuery<
31
- RequestClientSchema,
31
+ OperationRequestSchema,
32
32
  unknown,
33
33
  unknown
34
34
  >['useInfiniteQuery']
@@ -36,13 +36,11 @@ export const useInfiniteQuery: <
36
36
  ) => UseInfiniteQueryResult<TData, TError> = (qraftOptions, schema, args) => {
37
37
  const [parameters, options, queryClientByArg] = args;
38
38
 
39
- const { requestClient, queryClient: queryClientByContext } =
40
- useContext(qraftOptions?.context ?? QraftContext) ?? {};
41
-
42
- if (!requestClient) throw new Error(`QraftContext.requestClient not found`);
39
+ const contextValue = useContext(qraftOptions?.context ?? QraftContext);
40
+ if (!contextValue?.request) throw new Error(`QraftContext.request not found`);
43
41
 
44
42
  const queryKey: ServiceOperationInfiniteQueryKey<
45
- RequestClientSchema,
43
+ OperationRequestSchema,
46
44
  unknown
47
45
  > = Array.isArray(parameters)
48
46
  ? (parameters as never)
@@ -55,13 +53,17 @@ export const useInfiniteQuery: <
55
53
  queryFn:
56
54
  options?.queryFn ??
57
55
  function ({ queryKey: [, queryParams], signal, meta, pageParam }) {
58
- return requestClient(schema, {
59
- parameters: shelfMerge(2, queryParams, pageParam) as never,
60
- signal,
61
- meta,
62
- });
56
+ return contextValue.request(
57
+ { baseUrl: contextValue.baseUrl },
58
+ schema,
59
+ {
60
+ parameters: shelfMerge(2, queryParams, pageParam) as never,
61
+ signal,
62
+ meta,
63
+ }
64
+ );
63
65
  },
64
66
  },
65
- useQueryClient(queryClientByArg ?? queryClientByContext)
67
+ useQueryClient(qraftOptions, queryClientByArg)
66
68
  ) as never;
67
69
  };