@openapi-qraft/tanstack-query-react-plugin 2.0.0-next.7 → 2.0.0-next.8

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 (152) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/plugin.d.ts.map +1 -1
  3. package/dist/plugin.js +0 -2
  4. package/dist/plugin.js.map +1 -1
  5. package/dist/ts-factory/getServiceFactory.d.ts +1 -2
  6. package/dist/ts-factory/getServiceFactory.d.ts.map +1 -1
  7. package/dist/ts-factory/getServiceFactory.js +177 -14
  8. package/dist/ts-factory/getServiceFactory.js.map +1 -1
  9. package/dist/ts-factory/service-operation.generated/ServiceOperationCancelQueries.d.ts +4 -0
  10. package/dist/ts-factory/service-operation.generated/ServiceOperationCancelQueries.d.ts.map +1 -0
  11. package/dist/ts-factory/service-operation.generated/ServiceOperationCancelQueries.js +38 -0
  12. package/dist/ts-factory/service-operation.generated/ServiceOperationCancelQueries.js.map +1 -0
  13. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchInfiniteQuery.d.ts +4 -0
  14. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchInfiniteQuery.d.ts.map +1 -0
  15. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchInfiniteQuery.js +89 -0
  16. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchInfiniteQuery.js.map +1 -0
  17. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchQuery.d.ts +4 -0
  18. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchQuery.d.ts.map +1 -0
  19. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchQuery.js +48 -0
  20. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchQuery.js.map +1 -0
  21. package/dist/ts-factory/service-operation.generated/ServiceOperationGetInfiniteQueryData.d.ts +4 -0
  22. package/dist/ts-factory/service-operation.generated/ServiceOperationGetInfiniteQueryData.d.ts.map +1 -0
  23. package/dist/ts-factory/service-operation.generated/ServiceOperationGetInfiniteQueryData.js +38 -0
  24. package/dist/ts-factory/service-operation.generated/ServiceOperationGetInfiniteQueryData.js.map +1 -0
  25. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueriesData.d.ts +4 -0
  26. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueriesData.d.ts.map +1 -0
  27. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueriesData.js +59 -0
  28. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueriesData.js.map +1 -0
  29. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryData.d.ts +4 -0
  30. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryData.d.ts.map +1 -0
  31. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryData.js +34 -0
  32. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryData.js.map +1 -0
  33. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryState.d.ts +4 -0
  34. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryState.d.ts.map +1 -0
  35. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryState.js +66 -0
  36. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryState.js.map +1 -0
  37. package/dist/ts-factory/service-operation.generated/ServiceOperationInvalidateQueries.d.ts +4 -0
  38. package/dist/ts-factory/service-operation.generated/ServiceOperationInvalidateQueries.d.ts.map +1 -0
  39. package/dist/ts-factory/service-operation.generated/ServiceOperationInvalidateQueries.js +26 -0
  40. package/dist/ts-factory/service-operation.generated/ServiceOperationInvalidateQueries.js.map +1 -0
  41. package/dist/ts-factory/service-operation.generated/ServiceOperationIsFetchingQueries.d.ts +4 -0
  42. package/dist/ts-factory/service-operation.generated/ServiceOperationIsFetchingQueries.d.ts.map +1 -0
  43. package/dist/ts-factory/service-operation.generated/ServiceOperationIsFetchingQueries.js +34 -0
  44. package/dist/ts-factory/service-operation.generated/ServiceOperationIsFetchingQueries.js.map +1 -0
  45. package/dist/ts-factory/service-operation.generated/ServiceOperationIsMutatingQueries.d.ts +4 -0
  46. package/dist/ts-factory/service-operation.generated/ServiceOperationIsMutatingQueries.d.ts.map +1 -0
  47. package/dist/ts-factory/service-operation.generated/ServiceOperationIsMutatingQueries.js +36 -0
  48. package/dist/ts-factory/service-operation.generated/ServiceOperationIsMutatingQueries.js.map +1 -0
  49. package/dist/ts-factory/service-operation.generated/ServiceOperationMutationFn.d.ts +4 -0
  50. package/dist/ts-factory/service-operation.generated/ServiceOperationMutationFn.d.ts.map +1 -0
  51. package/dist/ts-factory/service-operation.generated/ServiceOperationMutationFn.js +35 -0
  52. package/dist/ts-factory/service-operation.generated/ServiceOperationMutationFn.js.map +1 -0
  53. package/dist/ts-factory/service-operation.generated/ServiceOperationQueryFn.d.ts +4 -0
  54. package/dist/ts-factory/service-operation.generated/ServiceOperationQueryFn.d.ts.map +1 -0
  55. package/dist/ts-factory/service-operation.generated/ServiceOperationQueryFn.js +68 -0
  56. package/dist/ts-factory/service-operation.generated/ServiceOperationQueryFn.js.map +1 -0
  57. package/dist/ts-factory/service-operation.generated/ServiceOperationRefetchQueries.d.ts +4 -0
  58. package/dist/ts-factory/service-operation.generated/ServiceOperationRefetchQueries.d.ts.map +1 -0
  59. package/dist/ts-factory/service-operation.generated/ServiceOperationRefetchQueries.js +38 -0
  60. package/dist/ts-factory/service-operation.generated/ServiceOperationRefetchQueries.js.map +1 -0
  61. package/dist/ts-factory/service-operation.generated/ServiceOperationRemoveQueries.d.ts +4 -0
  62. package/dist/ts-factory/service-operation.generated/ServiceOperationRemoveQueries.d.ts.map +1 -0
  63. package/dist/ts-factory/service-operation.generated/ServiceOperationRemoveQueries.js +34 -0
  64. package/dist/ts-factory/service-operation.generated/ServiceOperationRemoveQueries.js.map +1 -0
  65. package/dist/ts-factory/service-operation.generated/ServiceOperationResetQueries.d.ts +4 -0
  66. package/dist/ts-factory/service-operation.generated/ServiceOperationResetQueries.d.ts.map +1 -0
  67. package/dist/ts-factory/service-operation.generated/ServiceOperationResetQueries.js +38 -0
  68. package/dist/ts-factory/service-operation.generated/ServiceOperationResetQueries.js.map +1 -0
  69. package/dist/ts-factory/service-operation.generated/ServiceOperationSetInfiniteQueryData.d.ts +4 -0
  70. package/dist/ts-factory/service-operation.generated/ServiceOperationSetInfiniteQueryData.d.ts.map +1 -0
  71. package/dist/ts-factory/service-operation.generated/ServiceOperationSetInfiniteQueryData.js +54 -0
  72. package/dist/ts-factory/service-operation.generated/ServiceOperationSetInfiniteQueryData.js.map +1 -0
  73. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueriesData.d.ts +4 -0
  74. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueriesData.d.ts.map +1 -0
  75. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueriesData.js +55 -0
  76. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueriesData.js.map +1 -0
  77. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueryData.d.ts +4 -0
  78. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueryData.d.ts.map +1 -0
  79. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueryData.js +42 -0
  80. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueryData.js.map +1 -0
  81. package/dist/ts-factory/service-operation.generated/ServiceOperationUseInfiniteQuery.d.ts +4 -0
  82. package/dist/ts-factory/service-operation.generated/ServiceOperationUseInfiniteQuery.d.ts.map +1 -0
  83. package/dist/ts-factory/service-operation.generated/ServiceOperationUseInfiniteQuery.js +138 -0
  84. package/dist/ts-factory/service-operation.generated/ServiceOperationUseInfiniteQuery.js.map +1 -0
  85. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsFetchingQueries.d.ts +4 -0
  86. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsFetchingQueries.d.ts.map +1 -0
  87. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsFetchingQueries.js +34 -0
  88. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsFetchingQueries.js.map +1 -0
  89. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsMutating.d.ts +4 -0
  90. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsMutating.d.ts.map +1 -0
  91. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsMutating.js +36 -0
  92. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsMutating.js.map +1 -0
  93. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutation.d.ts +4 -0
  94. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutation.d.ts.map +1 -0
  95. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutation.js +84 -0
  96. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutation.js.map +1 -0
  97. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutationState.d.ts +4 -0
  98. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutationState.d.ts.map +1 -0
  99. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutationState.js +63 -0
  100. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutationState.js.map +1 -0
  101. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQueries.d.ts +4 -0
  102. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQueries.d.ts.map +1 -0
  103. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQueries.js +34 -0
  104. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQueries.js.map +1 -0
  105. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQuery.d.ts +4 -0
  106. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQuery.d.ts.map +1 -0
  107. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQuery.js +93 -0
  108. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQuery.js.map +1 -0
  109. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseInfiniteQuery.d.ts +4 -0
  110. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseInfiniteQuery.d.ts.map +1 -0
  111. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseInfiniteQuery.js +77 -0
  112. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseInfiniteQuery.js.map +1 -0
  113. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQueries.d.ts +4 -0
  114. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQueries.d.ts.map +1 -0
  115. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQueries.js +40 -0
  116. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQueries.js.map +1 -0
  117. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQuery.d.ts +4 -0
  118. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQuery.d.ts.map +1 -0
  119. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQuery.js +52 -0
  120. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQuery.js.map +1 -0
  121. package/package.json +5 -2
  122. package/src/plugin.ts +0 -6
  123. package/src/ts-factory/getServiceFactory.ts +319 -30
  124. package/src/ts-factory/service-operation.generated/.gitkeep +0 -0
  125. package/src/ts-factory/service-operation.generated/ServiceOperationCancelQueries.ts +171 -0
  126. package/src/ts-factory/service-operation.generated/ServiceOperationFetchInfiniteQuery.ts +340 -0
  127. package/src/ts-factory/service-operation.generated/ServiceOperationFetchQuery.ts +219 -0
  128. package/src/ts-factory/service-operation.generated/ServiceOperationGetInfiniteQueryData.ts +147 -0
  129. package/src/ts-factory/service-operation.generated/ServiceOperationGetQueriesData.ts +258 -0
  130. package/src/ts-factory/service-operation.generated/ServiceOperationGetQueryData.ts +133 -0
  131. package/src/ts-factory/service-operation.generated/ServiceOperationGetQueryState.ts +261 -0
  132. package/src/ts-factory/service-operation.generated/ServiceOperationInvalidateQueries.ts +137 -0
  133. package/src/ts-factory/service-operation.generated/ServiceOperationIsFetchingQueries.ts +141 -0
  134. package/src/ts-factory/service-operation.generated/ServiceOperationIsMutatingQueries.ts +151 -0
  135. package/src/ts-factory/service-operation.generated/ServiceOperationMutationFn.ts +175 -0
  136. package/src/ts-factory/service-operation.generated/ServiceOperationQueryFn.ts +299 -0
  137. package/src/ts-factory/service-operation.generated/ServiceOperationRefetchQueries.ts +171 -0
  138. package/src/ts-factory/service-operation.generated/ServiceOperationRemoveQueries.ts +141 -0
  139. package/src/ts-factory/service-operation.generated/ServiceOperationResetQueries.ts +171 -0
  140. package/src/ts-factory/service-operation.generated/ServiceOperationSetInfiniteQueryData.ts +201 -0
  141. package/src/ts-factory/service-operation.generated/ServiceOperationSetQueriesData.ts +221 -0
  142. package/src/ts-factory/service-operation.generated/ServiceOperationSetQueryData.ts +167 -0
  143. package/src/ts-factory/service-operation.generated/ServiceOperationUseInfiniteQuery.ts +534 -0
  144. package/src/ts-factory/service-operation.generated/ServiceOperationUseIsFetchingQueries.ts +141 -0
  145. package/src/ts-factory/service-operation.generated/ServiceOperationUseIsMutating.ts +151 -0
  146. package/src/ts-factory/service-operation.generated/ServiceOperationUseMutation.ts +371 -0
  147. package/src/ts-factory/service-operation.generated/ServiceOperationUseMutationState.ts +276 -0
  148. package/src/ts-factory/service-operation.generated/ServiceOperationUseQueries.ts +191 -0
  149. package/src/ts-factory/service-operation.generated/ServiceOperationUseQuery.ts +392 -0
  150. package/src/ts-factory/service-operation.generated/ServiceOperationUseSuspenseInfiniteQuery.ts +299 -0
  151. package/src/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQueries.ts +204 -0
  152. package/src/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQuery.ts +212 -0
@@ -1,32 +1,52 @@
1
1
  import { ServiceOperation } from '@openapi-qraft/plugin/lib/open-api/getServices';
2
+ import camelCase from 'camelcase';
2
3
  import ts from 'typescript';
3
-
4
- const SERVICE_OPERATION_QUERY = 'ServiceOperationQuery';
5
- const SERVICE_OPERATION_MUTATION = 'ServiceOperationMutation';
4
+ import { createServiceOperationCancelQueriesNodes } from './service-operation.generated/ServiceOperationCancelQueries.js';
5
+ import { createServiceOperationFetchInfiniteQueryNodes } from './service-operation.generated/ServiceOperationFetchInfiniteQuery.js';
6
+ import { createServiceOperationFetchQueryNodes } from './service-operation.generated/ServiceOperationFetchQuery.js';
7
+ import { createServiceOperationGetInfiniteQueryDataNodes } from './service-operation.generated/ServiceOperationGetInfiniteQueryData.js';
8
+ import { createServiceOperationGetQueriesDataNodes } from './service-operation.generated/ServiceOperationGetQueriesData.js';
9
+ import { createServiceOperationGetQueryDataNodes } from './service-operation.generated/ServiceOperationGetQueryData.js';
10
+ import { createServiceOperationGetQueryStateNodes } from './service-operation.generated/ServiceOperationGetQueryState.js';
11
+ import { createServiceOperationInvalidateQueriesNodes } from './service-operation.generated/ServiceOperationInvalidateQueries.js';
12
+ import { createServiceOperationIsFetchingQueriesNodes } from './service-operation.generated/ServiceOperationIsFetchingQueries.js';
13
+ import { createServiceOperationIsMutatingQueriesNodes } from './service-operation.generated/ServiceOperationIsMutatingQueries.js';
14
+ import { createServiceOperationMutationFnNodes } from './service-operation.generated/ServiceOperationMutationFn.js';
15
+ import { createServiceOperationQueryFnNodes } from './service-operation.generated/ServiceOperationQueryFn.js';
16
+ import { createServiceOperationRefetchQueriesNodes } from './service-operation.generated/ServiceOperationRefetchQueries.js';
17
+ import { createServiceOperationRemoveQueriesNodes } from './service-operation.generated/ServiceOperationRemoveQueries.js';
18
+ import { createServiceOperationResetQueriesNodes } from './service-operation.generated/ServiceOperationResetQueries.js';
19
+ import { createServiceOperationSetInfiniteQueryDataNodes } from './service-operation.generated/ServiceOperationSetInfiniteQueryData.js';
20
+ import { createServiceOperationSetQueriesDataNodes } from './service-operation.generated/ServiceOperationSetQueriesData.js';
21
+ import { createServiceOperationSetQueryDataNodes } from './service-operation.generated/ServiceOperationSetQueryData.js';
22
+ import { createServiceOperationUseInfiniteQueryNodes } from './service-operation.generated/ServiceOperationUseInfiniteQuery.js';
23
+ import { createServiceOperationUseIsFetchingQueriesNodes } from './service-operation.generated/ServiceOperationUseIsFetchingQueries.js';
24
+ import { createServiceOperationUseIsMutatingNodes } from './service-operation.generated/ServiceOperationUseIsMutating.js';
25
+ import { createServiceOperationUseMutationNodes } from './service-operation.generated/ServiceOperationUseMutation.js';
26
+ import { createServiceOperationUseMutationStateNodes } from './service-operation.generated/ServiceOperationUseMutationState.js';
27
+ import { createServiceOperationUseQueriesNodes } from './service-operation.generated/ServiceOperationUseQueries.js';
28
+ import { createServiceOperationUseQueryNodes } from './service-operation.generated/ServiceOperationUseQuery.js';
29
+ import { createServiceOperationUseSuspenseInfiniteQueryNodes } from './service-operation.generated/ServiceOperationUseSuspenseInfiniteQuery.js';
30
+ import { createServiceOperationUseSuspenseQueriesNodes } from './service-operation.generated/ServiceOperationUseSuspenseQueries.js';
31
+ import { createServiceOperationUseSuspenseQueryNodes } from './service-operation.generated/ServiceOperationUseSuspenseQuery.js';
6
32
 
7
33
  const factory = ts.factory;
8
34
 
9
35
  export type ServiceImportsFactoryOptions = {
10
36
  openapiTypesImportPath: string;
11
- operationGenericsImportPath: string;
12
37
  };
13
38
 
14
39
  export const getServiceFactory = (
15
40
  service: { typeName: string; variableName: string },
16
41
  operations: ServiceOperation[],
17
- {
18
- openapiTypesImportPath,
19
- operationGenericsImportPath,
20
- }: ServiceImportsFactoryOptions
42
+ { openapiTypesImportPath }: ServiceImportsFactoryOptions
21
43
  ) => {
22
44
  return [
23
45
  getOpenAPISchemaImportsFactory(openapiTypesImportPath),
24
- getServiceOperationGenericsPathImportsFactory(
25
- operationGenericsImportPath,
26
- operations
27
- ),
46
+ ...getServiceOperationImportsFactory(operations),
28
47
  getServiceInterfaceFactory(service, operations),
29
48
  getServiceVariableFactory(service, operations),
49
+ ...getOperationsTypes(operations),
30
50
  ];
31
51
  };
32
52
 
@@ -50,7 +70,42 @@ const getOpenAPISchemaImportsFactory = (schemaTypesPath: string) => {
50
70
  );
51
71
  };
52
72
 
53
- const getServiceOperationGenericsPathImportsFactory = (
73
+ const getServiceOperationImportsFactory = (operations: ServiceOperation[]) => {
74
+ const factory = ts.factory;
75
+
76
+ const moduleImports = getModuleTypeImports([
77
+ ...(operations.some((operation) => operation.method === 'get')
78
+ ? createServicesQueryOperationNodes()
79
+ : []),
80
+ ...(operations.some((operation) => operation.method !== 'get')
81
+ ? createServicesMutationOperationNodes()
82
+ : []),
83
+ ]);
84
+
85
+ return Object.entries(moduleImports).map(
86
+ ([moduleName, importSpecifierNames]) => {
87
+ return factory.createImportDeclaration(
88
+ undefined,
89
+ factory.createImportClause(
90
+ true,
91
+ undefined,
92
+ factory.createNamedImports(
93
+ importSpecifierNames.map((specifier) =>
94
+ factory.createImportSpecifier(
95
+ false,
96
+ undefined,
97
+ factory.createIdentifier(specifier)
98
+ )
99
+ )
100
+ )
101
+ ),
102
+ factory.createStringLiteral(moduleName)
103
+ );
104
+ }
105
+ );
106
+ };
107
+
108
+ const __getServiceOperationGenericsPathImportsFactory = (
54
109
  operationGenericsPath: string,
55
110
  operations: ServiceOperation[]
56
111
  ) => {
@@ -105,28 +160,78 @@ const getServiceInterfaceFactory = (
105
160
  };
106
161
 
107
162
  const getServiceInterfaceOperationFactory = (operation: ServiceOperation) => {
163
+ const operationMethodNodes = getMethodSignatureNodes(
164
+ operation.method === 'get'
165
+ ? createServicesQueryOperationNodes()
166
+ : createServicesMutationOperationNodes()
167
+ );
168
+ operationMethodNodes.forEach(
169
+ (node) => void addSyntheticLeadingOperationComment(node, operation)
170
+ );
171
+
108
172
  const node = factory.createPropertySignature(
109
173
  undefined,
110
174
  factory.createIdentifier(operation.name),
111
175
  undefined,
112
- factory.createTypeReferenceNode(
113
- factory.createIdentifier(
114
- operation.method === 'get'
115
- ? SERVICE_OPERATION_QUERY
116
- : SERVICE_OPERATION_MUTATION
176
+ factory.createTypeLiteralNode([
177
+ ...replaceGenericTypesWithOperationTypes(operationMethodNodes, operation),
178
+ factory.createPropertySignature(
179
+ undefined,
180
+ factory.createIdentifier('schema'),
181
+ undefined,
182
+ factory.createTypeReferenceNode(
183
+ getOperationSchemaTypeName(operation),
184
+ undefined
185
+ )
117
186
  ),
118
- [
119
- getOperationSchemaFactory(operation),
120
-
121
- operation.method !== 'get' ? getOperationBodyFactory(operation) : null,
122
-
123
- getOperationResponseFactory(operation, 'success'),
124
-
125
- getOperationParametersFactory(operation),
126
-
127
- getOperationResponseFactory(operation, 'errors'),
128
- ].filter((node): node is NonNullable<typeof node> => Boolean(node))
129
- )
187
+ factory.createPropertySignature(
188
+ undefined,
189
+ factory.createIdentifier('types'),
190
+ undefined,
191
+ factory.createTypeLiteralNode(
192
+ [
193
+ factory.createPropertySignature(
194
+ undefined,
195
+ factory.createIdentifier('parameters'),
196
+ undefined,
197
+ factory.createTypeReferenceNode(
198
+ getOperationParametersTypeName(operation),
199
+ undefined
200
+ )
201
+ ),
202
+ factory.createPropertySignature(
203
+ undefined,
204
+ factory.createIdentifier('data'),
205
+ undefined,
206
+ factory.createTypeReferenceNode(
207
+ getOperationDataTypeName(operation),
208
+ undefined
209
+ )
210
+ ),
211
+ factory.createPropertySignature(
212
+ undefined,
213
+ factory.createIdentifier('error'),
214
+ undefined,
215
+ factory.createTypeReferenceNode(
216
+ getOperationErrorTypeName(operation),
217
+ undefined
218
+ )
219
+ ),
220
+ operation.method !== 'get'
221
+ ? factory.createPropertySignature(
222
+ undefined,
223
+ factory.createIdentifier('body'),
224
+ undefined,
225
+ factory.createTypeReferenceNode(
226
+ getOperationBodyTypeName(operation),
227
+ undefined
228
+ )
229
+ )
230
+ : undefined,
231
+ ].filter((node) => !!node)
232
+ )
233
+ ),
234
+ ])
130
235
  );
131
236
 
132
237
  addSyntheticLeadingOperationComment(node, operation);
@@ -320,6 +425,65 @@ const getServiceVariableFactory = (
320
425
  );
321
426
  };
322
427
 
428
+ const getOperationsTypes = (operations: ServiceOperation[]) => {
429
+ return operations.flatMap((operation) => {
430
+ const nodes = [
431
+ factory.createTypeAliasDeclaration(
432
+ undefined,
433
+ factory.createIdentifier(getOperationSchemaTypeName(operation)),
434
+ undefined,
435
+ getOperationSchemaFactory(operation)
436
+ ),
437
+ factory.createTypeAliasDeclaration(
438
+ undefined,
439
+ factory.createIdentifier(getOperationParametersTypeName(operation)),
440
+ undefined,
441
+ getOperationParametersFactory(operation)
442
+ ),
443
+ factory.createTypeAliasDeclaration(
444
+ undefined,
445
+ factory.createIdentifier(getOperationDataTypeName(operation)),
446
+ undefined,
447
+ getOperationResponseFactory(operation, 'success')
448
+ ),
449
+ factory.createTypeAliasDeclaration(
450
+ undefined,
451
+ factory.createIdentifier(getOperationErrorTypeName(operation)),
452
+ undefined,
453
+ getOperationResponseFactory(operation, 'errors')
454
+ ),
455
+ ];
456
+
457
+ if (operation.method !== 'get') {
458
+ nodes.push(
459
+ factory.createTypeAliasDeclaration(
460
+ undefined,
461
+ factory.createIdentifier(getOperationBodyTypeName(operation)),
462
+ undefined,
463
+ getOperationBodyFactory(operation)
464
+ )
465
+ );
466
+ }
467
+
468
+ return nodes;
469
+ });
470
+ };
471
+
472
+ const getOperationSchemaTypeName = (operation: ServiceOperation) =>
473
+ camelCase(`${operation.name}-Schema`, { pascalCase: true });
474
+
475
+ const getOperationParametersTypeName = (operation: ServiceOperation) =>
476
+ camelCase(`${operation.name}-Parameters`, { pascalCase: true });
477
+
478
+ const getOperationDataTypeName = (operation: ServiceOperation) =>
479
+ camelCase(`${operation.name}-Data`, { pascalCase: true });
480
+
481
+ const getOperationErrorTypeName = (operation: ServiceOperation) =>
482
+ camelCase(`${operation.name}-Error`, { pascalCase: true });
483
+
484
+ const getOperationBodyTypeName = (operation: ServiceOperation) =>
485
+ camelCase(`${operation.name}-Body`, { pascalCase: true });
486
+
323
487
  const getServiceVariableTypeFactory = (operation: ServiceOperation) => {
324
488
  const node = factory.createPropertySignature(
325
489
  undefined,
@@ -435,3 +599,128 @@ const getOperationSecuritySchemas = (
435
599
  security.flatMap((security) =>
436
600
  Object.keys(security).map((securitySchemaName) => securitySchemaName)
437
601
  );
602
+
603
+ const createServicesQueryOperationNodes = () => [
604
+ ...createServiceOperationCancelQueriesNodes(),
605
+ ...createServiceOperationUseQueryNodes(),
606
+ ...createServiceOperationFetchInfiniteQueryNodes(),
607
+ ...createServiceOperationFetchQueryNodes(),
608
+ ...createServiceOperationGetInfiniteQueryDataNodes(),
609
+ ...createServiceOperationGetQueriesDataNodes(),
610
+ ...createServiceOperationGetQueryDataNodes(),
611
+ ...createServiceOperationGetQueryStateNodes(),
612
+ ...createServiceOperationInvalidateQueriesNodes(),
613
+ ...createServiceOperationIsFetchingQueriesNodes(),
614
+ ...createServiceOperationQueryFnNodes(),
615
+ ...createServiceOperationRefetchQueriesNodes(),
616
+ ...createServiceOperationRemoveQueriesNodes(),
617
+ ...createServiceOperationResetQueriesNodes(),
618
+ ...createServiceOperationSetInfiniteQueryDataNodes(),
619
+ ...createServiceOperationSetQueriesDataNodes(),
620
+ ...createServiceOperationSetQueryDataNodes(),
621
+ ...createServiceOperationUseInfiniteQueryNodes(),
622
+ ...createServiceOperationUseIsFetchingQueriesNodes(),
623
+ ...createServiceOperationUseQueriesNodes(),
624
+ ...createServiceOperationUseQueryNodes(),
625
+ ...createServiceOperationUseSuspenseInfiniteQueryNodes(),
626
+ ...createServiceOperationUseSuspenseQueriesNodes(),
627
+ ...createServiceOperationUseSuspenseQueryNodes(),
628
+ ];
629
+
630
+ const createServicesMutationOperationNodes = () => [
631
+ ...createServiceOperationUseMutationNodes(),
632
+ ...createServiceOperationUseIsMutatingNodes(),
633
+ ...createServiceOperationIsMutatingQueriesNodes(),
634
+ ...createServiceOperationMutationFnNodes(),
635
+ ...createServiceOperationUseMutationStateNodes(),
636
+ ];
637
+
638
+ const getMethodSignatureNodes = (
639
+ nodes: ts.Node[]
640
+ ): (ts.MethodSignature | ts.CallSignatureDeclaration)[] => {
641
+ return nodes.flatMap((node) =>
642
+ ts.isInterfaceDeclaration(node)
643
+ ? node.members.filter(
644
+ (node) =>
645
+ ts.isMethodSignature(node) || ts.isCallSignatureDeclaration(node)
646
+ )
647
+ : []
648
+ );
649
+ };
650
+
651
+ const getModuleTypeImports = (nodes: ts.Node[]) => {
652
+ return nodes
653
+ .map((node) => {
654
+ const foo =
655
+ ts.isImportDeclaration(node) &&
656
+ ts.isStringLiteral(node.moduleSpecifier) &&
657
+ node.importClause?.isTypeOnly &&
658
+ node.importClause.namedBindings &&
659
+ ts.isNamedImports(node.importClause.namedBindings)
660
+ ? {
661
+ module: node.moduleSpecifier.text,
662
+ imports: node.importClause.namedBindings.elements
663
+ .filter(ts.isImportSpecifier)
664
+ .map((specifier) => specifier.name.text),
665
+ }
666
+ : undefined;
667
+
668
+ return foo;
669
+ })
670
+ .reduce<Record<string, string[]>>((acc, item) => {
671
+ if (!item) return acc;
672
+ if (!acc[item.module])
673
+ acc[item.module] = item.imports.filter(arrayFilterUniqueCallback);
674
+ else
675
+ acc[item.module] = [...acc[item.module], ...item.imports].filter(
676
+ arrayFilterUniqueCallback
677
+ );
678
+
679
+ return acc;
680
+ }, {});
681
+ };
682
+
683
+ function replaceGenericTypesWithOperationTypes<T extends ts.Node>(
684
+ node: T[],
685
+ operation: ServiceOperation
686
+ ): T[] {
687
+ const transformer =
688
+ (context: ts.TransformationContext) => (rootNode: ts.Node) => {
689
+ function visit(node: ts.Node): ts.Node {
690
+ if (ts.isTypeReferenceNode(node) && ts.isIdentifier(node.typeName)) {
691
+ let newTypeName;
692
+
693
+ if (node.typeName.text === 'TSchema')
694
+ newTypeName = getOperationSchemaTypeName(operation);
695
+ else if (node.typeName.text === 'TParams')
696
+ newTypeName = getOperationParametersTypeName(operation);
697
+ else if (
698
+ node.typeName.text === 'TQueryFnData' ||
699
+ node.typeName.text === 'TMutationData'
700
+ )
701
+ newTypeName = getOperationDataTypeName(operation);
702
+ else if (node.typeName.text === 'TError')
703
+ newTypeName = getOperationErrorTypeName(operation);
704
+ else if (node.typeName.text === 'TBody')
705
+ newTypeName = getOperationBodyTypeName(operation);
706
+
707
+ if (newTypeName) {
708
+ return ts.factory.createTypeReferenceNode(
709
+ ts.factory.createIdentifier(newTypeName),
710
+ node.typeArguments
711
+ );
712
+ }
713
+ }
714
+ return ts.visitEachChild(node, visit, context);
715
+ }
716
+ return ts.visitNode(rootNode, visit);
717
+ };
718
+
719
+ const result = ts.transform(node, [transformer]);
720
+
721
+ return result.transformed as T[];
722
+ }
723
+
724
+ function arrayFilterUniqueCallback<T>(value: T, index: number, self: T[]) {
725
+ return self.indexOf(value) === index;
726
+ }
@@ -0,0 +1,171 @@
1
+ /** This file was auto-generated by "@openapi-qraft/tanstack-query-react-plugin" codegen script. */
2
+ import ts from "typescript";
3
+ const factory = ts.factory;
4
+ export const createServiceOperationCancelQueriesNodes = () => [
5
+ factory.createImportDeclaration(
6
+ undefined,
7
+ factory.createImportClause(
8
+ true,
9
+ undefined,
10
+ factory.createNamedImports([
11
+ factory.createImportSpecifier(
12
+ false,
13
+ undefined,
14
+ factory.createIdentifier("QueryFiltersByParameters")
15
+ ),
16
+ factory.createImportSpecifier(
17
+ false,
18
+ undefined,
19
+ factory.createIdentifier("QueryFiltersByQueryKey")
20
+ )
21
+ ])
22
+ ),
23
+ factory.createStringLiteral("@openapi-qraft/tanstack-query-react-types"),
24
+ undefined
25
+ ),
26
+ factory.createImportDeclaration(
27
+ undefined,
28
+ factory.createImportClause(
29
+ true,
30
+ undefined,
31
+ factory.createNamedImports([factory.createImportSpecifier(
32
+ false,
33
+ undefined,
34
+ factory.createIdentifier("CancelOptions")
35
+ )])
36
+ ),
37
+ factory.createStringLiteral("@tanstack/query-core"),
38
+ undefined
39
+ ),
40
+ factory.createInterfaceDeclaration(
41
+ [factory.createToken(ts.SyntaxKind.ExportKeyword)],
42
+ factory.createIdentifier("ServiceOperationCancelQueries"),
43
+ [
44
+ factory.createTypeParameterDeclaration(
45
+ undefined,
46
+ factory.createIdentifier("TSchema"),
47
+ factory.createTypeLiteralNode([
48
+ factory.createPropertySignature(
49
+ undefined,
50
+ factory.createIdentifier("url"),
51
+ undefined,
52
+ factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword)
53
+ ),
54
+ factory.createPropertySignature(
55
+ undefined,
56
+ factory.createIdentifier("method"),
57
+ undefined,
58
+ factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword)
59
+ )
60
+ ]),
61
+ undefined
62
+ ),
63
+ factory.createTypeParameterDeclaration(
64
+ undefined,
65
+ factory.createIdentifier("TQueryFnData"),
66
+ undefined,
67
+ undefined
68
+ ),
69
+ factory.createTypeParameterDeclaration(
70
+ undefined,
71
+ factory.createIdentifier("TParams"),
72
+ undefined,
73
+ undefined
74
+ ),
75
+ factory.createTypeParameterDeclaration(
76
+ undefined,
77
+ factory.createIdentifier("TError"),
78
+ undefined,
79
+ undefined
80
+ )
81
+ ],
82
+ undefined,
83
+ [factory.createMethodSignature(
84
+ undefined,
85
+ factory.createIdentifier("cancelQueries"),
86
+ undefined,
87
+ [factory.createTypeParameterDeclaration(
88
+ undefined,
89
+ factory.createIdentifier("TInfinite"),
90
+ factory.createKeywordTypeNode(ts.SyntaxKind.BooleanKeyword),
91
+ factory.createLiteralTypeNode(factory.createFalse())
92
+ )],
93
+ [
94
+ factory.createParameterDeclaration(
95
+ undefined,
96
+ undefined,
97
+ factory.createIdentifier("filters"),
98
+ factory.createToken(ts.SyntaxKind.QuestionToken),
99
+ factory.createUnionTypeNode([
100
+ factory.createTypeReferenceNode(
101
+ factory.createIdentifier("QueryFiltersByParameters"),
102
+ [
103
+ factory.createTypeReferenceNode(
104
+ factory.createIdentifier("TSchema"),
105
+ undefined
106
+ ),
107
+ factory.createTypeReferenceNode(
108
+ factory.createIdentifier("TQueryFnData"),
109
+ undefined
110
+ ),
111
+ factory.createTypeReferenceNode(
112
+ factory.createIdentifier("TInfinite"),
113
+ undefined
114
+ ),
115
+ factory.createTypeReferenceNode(
116
+ factory.createIdentifier("TParams"),
117
+ undefined
118
+ ),
119
+ factory.createTypeReferenceNode(
120
+ factory.createIdentifier("TError"),
121
+ undefined
122
+ )
123
+ ]
124
+ ),
125
+ factory.createTypeReferenceNode(
126
+ factory.createIdentifier("QueryFiltersByQueryKey"),
127
+ [
128
+ factory.createTypeReferenceNode(
129
+ factory.createIdentifier("TSchema"),
130
+ undefined
131
+ ),
132
+ factory.createTypeReferenceNode(
133
+ factory.createIdentifier("TQueryFnData"),
134
+ undefined
135
+ ),
136
+ factory.createTypeReferenceNode(
137
+ factory.createIdentifier("TInfinite"),
138
+ undefined
139
+ ),
140
+ factory.createTypeReferenceNode(
141
+ factory.createIdentifier("TParams"),
142
+ undefined
143
+ ),
144
+ factory.createTypeReferenceNode(
145
+ factory.createIdentifier("TError"),
146
+ undefined
147
+ )
148
+ ]
149
+ )
150
+ ]),
151
+ undefined
152
+ ),
153
+ factory.createParameterDeclaration(
154
+ undefined,
155
+ undefined,
156
+ factory.createIdentifier("options"),
157
+ factory.createToken(ts.SyntaxKind.QuestionToken),
158
+ factory.createTypeReferenceNode(
159
+ factory.createIdentifier("CancelOptions"),
160
+ undefined
161
+ ),
162
+ undefined
163
+ )
164
+ ],
165
+ factory.createTypeReferenceNode(
166
+ factory.createIdentifier("Promise"),
167
+ [factory.createKeywordTypeNode(ts.SyntaxKind.VoidKeyword)]
168
+ )
169
+ )]
170
+ )
171
+ ];