@openapi-qraft/tanstack-query-react-plugin 2.0.0-next.1 → 2.0.0-next.11

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 (218) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/dist/lib/createOperationCommonTSDoc.d.ts +3 -0
  3. package/dist/lib/createOperationCommonTSDoc.d.ts.map +1 -0
  4. package/dist/lib/createOperationCommonTSDoc.js +8 -0
  5. package/dist/lib/createOperationCommonTSDoc.js.map +1 -0
  6. package/dist/plugin.d.ts.map +1 -1
  7. package/dist/plugin.js +0 -2
  8. package/dist/plugin.js.map +1 -1
  9. package/dist/ts-factory/getClientFactory.js +33 -1
  10. package/dist/ts-factory/getClientFactory.js.map +1 -1
  11. package/dist/ts-factory/getCreatePredefinedParametersRequestFnFactory.js +2 -2
  12. package/dist/ts-factory/getCreatePredefinedParametersRequestFnFactory.js.map +1 -1
  13. package/dist/ts-factory/getServiceFactory.d.ts +4 -3
  14. package/dist/ts-factory/getServiceFactory.d.ts.map +1 -1
  15. package/dist/ts-factory/getServiceFactory.js +264 -55
  16. package/dist/ts-factory/getServiceFactory.js.map +1 -1
  17. package/dist/ts-factory/service-operation.generated/ServiceOperationCancelQueries.d.ts +4 -0
  18. package/dist/ts-factory/service-operation.generated/ServiceOperationCancelQueries.d.ts.map +1 -0
  19. package/dist/ts-factory/service-operation.generated/ServiceOperationCancelQueries.js +38 -0
  20. package/dist/ts-factory/service-operation.generated/ServiceOperationCancelQueries.js.map +1 -0
  21. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchInfiniteQuery.d.ts +4 -0
  22. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchInfiniteQuery.d.ts.map +1 -0
  23. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchInfiniteQuery.js +89 -0
  24. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchInfiniteQuery.js.map +1 -0
  25. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchQuery.d.ts +4 -0
  26. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchQuery.d.ts.map +1 -0
  27. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchQuery.js +48 -0
  28. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchQuery.js.map +1 -0
  29. package/dist/ts-factory/service-operation.generated/ServiceOperationGetInfiniteQueryData.d.ts +4 -0
  30. package/dist/ts-factory/service-operation.generated/ServiceOperationGetInfiniteQueryData.d.ts.map +1 -0
  31. package/dist/ts-factory/service-operation.generated/ServiceOperationGetInfiniteQueryData.js +34 -0
  32. package/dist/ts-factory/service-operation.generated/ServiceOperationGetInfiniteQueryData.js.map +1 -0
  33. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueriesData.d.ts +4 -0
  34. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueriesData.d.ts.map +1 -0
  35. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueriesData.js +59 -0
  36. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueriesData.js.map +1 -0
  37. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryData.d.ts +4 -0
  38. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryData.d.ts.map +1 -0
  39. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryData.js +30 -0
  40. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryData.js.map +1 -0
  41. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryState.d.ts +4 -0
  42. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryState.d.ts.map +1 -0
  43. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryState.js +62 -0
  44. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryState.js.map +1 -0
  45. package/dist/ts-factory/service-operation.generated/ServiceOperationInvalidateQueries.d.ts +4 -0
  46. package/dist/ts-factory/service-operation.generated/ServiceOperationInvalidateQueries.d.ts.map +1 -0
  47. package/dist/ts-factory/service-operation.generated/ServiceOperationInvalidateQueries.js +26 -0
  48. package/dist/ts-factory/service-operation.generated/ServiceOperationInvalidateQueries.js.map +1 -0
  49. package/dist/ts-factory/service-operation.generated/ServiceOperationIsFetchingQueries.d.ts +4 -0
  50. package/dist/ts-factory/service-operation.generated/ServiceOperationIsFetchingQueries.d.ts.map +1 -0
  51. package/dist/ts-factory/service-operation.generated/ServiceOperationIsFetchingQueries.js +34 -0
  52. package/dist/ts-factory/service-operation.generated/ServiceOperationIsFetchingQueries.js.map +1 -0
  53. package/dist/ts-factory/service-operation.generated/ServiceOperationIsMutatingQueries.d.ts +4 -0
  54. package/dist/ts-factory/service-operation.generated/ServiceOperationIsMutatingQueries.d.ts.map +1 -0
  55. package/dist/ts-factory/service-operation.generated/ServiceOperationIsMutatingQueries.js +36 -0
  56. package/dist/ts-factory/service-operation.generated/ServiceOperationIsMutatingQueries.js.map +1 -0
  57. package/dist/ts-factory/service-operation.generated/ServiceOperationMutationFn.d.ts +4 -0
  58. package/dist/ts-factory/service-operation.generated/ServiceOperationMutationFn.d.ts.map +1 -0
  59. package/dist/ts-factory/service-operation.generated/ServiceOperationMutationFn.js +35 -0
  60. package/dist/ts-factory/service-operation.generated/ServiceOperationMutationFn.js.map +1 -0
  61. package/dist/ts-factory/service-operation.generated/ServiceOperationQueryFn.d.ts +4 -0
  62. package/dist/ts-factory/service-operation.generated/ServiceOperationQueryFn.d.ts.map +1 -0
  63. package/dist/ts-factory/service-operation.generated/ServiceOperationQueryFn.js +62 -0
  64. package/dist/ts-factory/service-operation.generated/ServiceOperationQueryFn.js.map +1 -0
  65. package/dist/ts-factory/service-operation.generated/ServiceOperationRefetchQueries.d.ts +4 -0
  66. package/dist/ts-factory/service-operation.generated/ServiceOperationRefetchQueries.d.ts.map +1 -0
  67. package/dist/ts-factory/service-operation.generated/ServiceOperationRefetchQueries.js +38 -0
  68. package/dist/ts-factory/service-operation.generated/ServiceOperationRefetchQueries.js.map +1 -0
  69. package/dist/ts-factory/service-operation.generated/ServiceOperationRemoveQueries.d.ts +4 -0
  70. package/dist/ts-factory/service-operation.generated/ServiceOperationRemoveQueries.d.ts.map +1 -0
  71. package/dist/ts-factory/service-operation.generated/ServiceOperationRemoveQueries.js +34 -0
  72. package/dist/ts-factory/service-operation.generated/ServiceOperationRemoveQueries.js.map +1 -0
  73. package/dist/ts-factory/service-operation.generated/ServiceOperationResetQueries.d.ts +4 -0
  74. package/dist/ts-factory/service-operation.generated/ServiceOperationResetQueries.d.ts.map +1 -0
  75. package/dist/ts-factory/service-operation.generated/ServiceOperationResetQueries.js +38 -0
  76. package/dist/ts-factory/service-operation.generated/ServiceOperationResetQueries.js.map +1 -0
  77. package/dist/ts-factory/service-operation.generated/ServiceOperationSetInfiniteQueryData.d.ts +4 -0
  78. package/dist/ts-factory/service-operation.generated/ServiceOperationSetInfiniteQueryData.d.ts.map +1 -0
  79. package/dist/ts-factory/service-operation.generated/ServiceOperationSetInfiniteQueryData.js +54 -0
  80. package/dist/ts-factory/service-operation.generated/ServiceOperationSetInfiniteQueryData.js.map +1 -0
  81. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueriesData.d.ts +4 -0
  82. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueriesData.d.ts.map +1 -0
  83. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueriesData.js +55 -0
  84. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueriesData.js.map +1 -0
  85. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueryData.d.ts +4 -0
  86. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueryData.d.ts.map +1 -0
  87. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueryData.js +42 -0
  88. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueryData.js.map +1 -0
  89. package/dist/ts-factory/service-operation.generated/ServiceOperationUseInfiniteQuery.d.ts +4 -0
  90. package/dist/ts-factory/service-operation.generated/ServiceOperationUseInfiniteQuery.d.ts.map +1 -0
  91. package/dist/ts-factory/service-operation.generated/ServiceOperationUseInfiniteQuery.js +138 -0
  92. package/dist/ts-factory/service-operation.generated/ServiceOperationUseInfiniteQuery.js.map +1 -0
  93. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsFetchingQueries.d.ts +4 -0
  94. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsFetchingQueries.d.ts.map +1 -0
  95. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsFetchingQueries.js +34 -0
  96. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsFetchingQueries.js.map +1 -0
  97. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsMutating.d.ts +4 -0
  98. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsMutating.d.ts.map +1 -0
  99. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsMutating.js +36 -0
  100. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsMutating.js.map +1 -0
  101. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutation.d.ts +4 -0
  102. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutation.d.ts.map +1 -0
  103. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutation.js +81 -0
  104. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutation.js.map +1 -0
  105. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutationState.d.ts +4 -0
  106. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutationState.d.ts.map +1 -0
  107. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutationState.js +63 -0
  108. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutationState.js.map +1 -0
  109. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQueries.d.ts +4 -0
  110. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQueries.d.ts.map +1 -0
  111. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQueries.js +34 -0
  112. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQueries.js.map +1 -0
  113. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQuery.d.ts +4 -0
  114. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQuery.d.ts.map +1 -0
  115. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQuery.js +93 -0
  116. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQuery.js.map +1 -0
  117. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseInfiniteQuery.d.ts +4 -0
  118. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseInfiniteQuery.d.ts.map +1 -0
  119. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseInfiniteQuery.js +77 -0
  120. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseInfiniteQuery.js.map +1 -0
  121. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQueries.d.ts +4 -0
  122. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQueries.d.ts.map +1 -0
  123. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQueries.js +40 -0
  124. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQueries.js.map +1 -0
  125. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQuery.d.ts +4 -0
  126. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQuery.d.ts.map +1 -0
  127. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQuery.js +52 -0
  128. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQuery.js.map +1 -0
  129. package/dist/ts-factory/tsdoc/createOperationMethodTSDocExample.d.ts +6 -0
  130. package/dist/ts-factory/tsdoc/createOperationMethodTSDocExample.d.ts.map +1 -0
  131. package/dist/ts-factory/tsdoc/createOperationMethodTSDocExample.js +31 -0
  132. package/dist/ts-factory/tsdoc/createOperationMethodTSDocExample.js.map +1 -0
  133. package/dist/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.d.ts +5 -0
  134. package/dist/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.d.ts.map +1 -0
  135. package/dist/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.js +53 -0
  136. package/dist/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.js.map +1 -0
  137. package/dist/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.d.ts +3 -0
  138. package/dist/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.d.ts.map +1 -0
  139. package/dist/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.js +41 -0
  140. package/dist/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.js.map +1 -0
  141. package/dist/ts-factory/tsdoc/createUseIsMutatingOperationTSDocExample.d.ts +3 -0
  142. package/dist/ts-factory/tsdoc/createUseIsMutatingOperationTSDocExample.d.ts.map +1 -0
  143. package/dist/ts-factory/tsdoc/createUseIsMutatingOperationTSDocExample.js +41 -0
  144. package/dist/ts-factory/tsdoc/createUseIsMutatingOperationTSDocExample.js.map +1 -0
  145. package/dist/ts-factory/tsdoc/createUseMutationOperationTSDocExample.d.ts +3 -0
  146. package/dist/ts-factory/tsdoc/createUseMutationOperationTSDocExample.d.ts.map +1 -0
  147. package/dist/ts-factory/tsdoc/createUseMutationOperationTSDocExample.js +44 -0
  148. package/dist/ts-factory/tsdoc/createUseMutationOperationTSDocExample.js.map +1 -0
  149. package/dist/ts-factory/tsdoc/createUseMutationStateOperationTSDocExample.d.ts +3 -0
  150. package/dist/ts-factory/tsdoc/createUseMutationStateOperationTSDocExample.d.ts.map +1 -0
  151. package/dist/ts-factory/tsdoc/createUseMutationStateOperationTSDocExample.js +55 -0
  152. package/dist/ts-factory/tsdoc/createUseMutationStateOperationTSDocExample.js.map +1 -0
  153. package/dist/ts-factory/tsdoc/createUseQueriesOperationTSDocExample.d.ts +3 -0
  154. package/dist/ts-factory/tsdoc/createUseQueriesOperationTSDocExample.d.ts.map +1 -0
  155. package/dist/ts-factory/tsdoc/createUseQueriesOperationTSDocExample.js +88 -0
  156. package/dist/ts-factory/tsdoc/createUseQueriesOperationTSDocExample.js.map +1 -0
  157. package/dist/ts-factory/tsdoc/createUseQueryOperationTSDocExample.d.ts +3 -0
  158. package/dist/ts-factory/tsdoc/createUseQueryOperationTSDocExample.d.ts.map +1 -0
  159. package/dist/ts-factory/tsdoc/createUseQueryOperationTSDocExample.js +37 -0
  160. package/dist/ts-factory/tsdoc/createUseQueryOperationTSDocExample.js.map +1 -0
  161. package/dist/ts-factory/tsdoc/createUseSuspenseInfiniteQueryOperationTSDocExample.d.ts +3 -0
  162. package/dist/ts-factory/tsdoc/createUseSuspenseInfiniteQueryOperationTSDocExample.d.ts.map +1 -0
  163. package/dist/ts-factory/tsdoc/createUseSuspenseInfiniteQueryOperationTSDocExample.js +39 -0
  164. package/dist/ts-factory/tsdoc/createUseSuspenseInfiniteQueryOperationTSDocExample.js.map +1 -0
  165. package/dist/ts-factory/tsdoc/lib/createOperationMethodCallExpressionExampleNode.d.ts +7 -0
  166. package/dist/ts-factory/tsdoc/lib/createOperationMethodCallExpressionExampleNode.d.ts.map +1 -0
  167. package/dist/ts-factory/tsdoc/lib/createOperationMethodCallExpressionExampleNode.js +6 -0
  168. package/dist/ts-factory/tsdoc/lib/createOperationMethodCallExpressionExampleNode.js.map +1 -0
  169. package/dist/ts-factory/tsdoc/lib/createOperationMethodParametersExampleNodes.d.ts +4 -0
  170. package/dist/ts-factory/tsdoc/lib/createOperationMethodParametersExampleNodes.d.ts.map +1 -0
  171. package/dist/ts-factory/tsdoc/lib/createOperationMethodParametersExampleNodes.js +47 -0
  172. package/dist/ts-factory/tsdoc/lib/createOperationMethodParametersExampleNodes.js.map +1 -0
  173. package/package.json +9 -6
  174. package/src/lib/createOperationCommonTSDoc.ts +11 -0
  175. package/src/plugin.ts +0 -6
  176. package/src/ts-factory/getClientFactory.ts +125 -1
  177. package/src/ts-factory/getCreatePredefinedParametersRequestFnFactory.ts +2 -2
  178. package/src/ts-factory/getServiceFactory.ts +474 -122
  179. package/src/ts-factory/service-operation.generated/.gitkeep +0 -0
  180. package/src/ts-factory/service-operation.generated/ServiceOperationCancelQueries.ts +171 -0
  181. package/src/ts-factory/service-operation.generated/ServiceOperationFetchInfiniteQuery.ts +340 -0
  182. package/src/ts-factory/service-operation.generated/ServiceOperationFetchQuery.ts +219 -0
  183. package/src/ts-factory/service-operation.generated/ServiceOperationGetInfiniteQueryData.ts +134 -0
  184. package/src/ts-factory/service-operation.generated/ServiceOperationGetQueriesData.ts +258 -0
  185. package/src/ts-factory/service-operation.generated/ServiceOperationGetQueryData.ts +120 -0
  186. package/src/ts-factory/service-operation.generated/ServiceOperationGetQueryState.ts +248 -0
  187. package/src/ts-factory/service-operation.generated/ServiceOperationInvalidateQueries.ts +137 -0
  188. package/src/ts-factory/service-operation.generated/ServiceOperationIsFetchingQueries.ts +141 -0
  189. package/src/ts-factory/service-operation.generated/ServiceOperationIsMutatingQueries.ts +151 -0
  190. package/src/ts-factory/service-operation.generated/ServiceOperationMutationFn.ts +175 -0
  191. package/src/ts-factory/service-operation.generated/ServiceOperationQueryFn.ts +278 -0
  192. package/src/ts-factory/service-operation.generated/ServiceOperationRefetchQueries.ts +171 -0
  193. package/src/ts-factory/service-operation.generated/ServiceOperationRemoveQueries.ts +141 -0
  194. package/src/ts-factory/service-operation.generated/ServiceOperationResetQueries.ts +171 -0
  195. package/src/ts-factory/service-operation.generated/ServiceOperationSetInfiniteQueryData.ts +201 -0
  196. package/src/ts-factory/service-operation.generated/ServiceOperationSetQueriesData.ts +221 -0
  197. package/src/ts-factory/service-operation.generated/ServiceOperationSetQueryData.ts +167 -0
  198. package/src/ts-factory/service-operation.generated/ServiceOperationUseInfiniteQuery.ts +534 -0
  199. package/src/ts-factory/service-operation.generated/ServiceOperationUseIsFetchingQueries.ts +141 -0
  200. package/src/ts-factory/service-operation.generated/ServiceOperationUseIsMutating.ts +151 -0
  201. package/src/ts-factory/service-operation.generated/ServiceOperationUseMutation.ts +354 -0
  202. package/src/ts-factory/service-operation.generated/ServiceOperationUseMutationState.ts +276 -0
  203. package/src/ts-factory/service-operation.generated/ServiceOperationUseQueries.ts +191 -0
  204. package/src/ts-factory/service-operation.generated/ServiceOperationUseQuery.ts +392 -0
  205. package/src/ts-factory/service-operation.generated/ServiceOperationUseSuspenseInfiniteQuery.ts +299 -0
  206. package/src/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQueries.ts +204 -0
  207. package/src/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQuery.ts +212 -0
  208. package/src/ts-factory/tsdoc/createOperationMethodTSDocExample.ts +65 -0
  209. package/src/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.ts +135 -0
  210. package/src/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.ts +81 -0
  211. package/src/ts-factory/tsdoc/createUseIsMutatingOperationTSDocExample.ts +74 -0
  212. package/src/ts-factory/tsdoc/createUseMutationOperationTSDocExample.ts +88 -0
  213. package/src/ts-factory/tsdoc/createUseMutationStateOperationTSDocExample.ts +154 -0
  214. package/src/ts-factory/tsdoc/createUseQueriesOperationTSDocExample.ts +292 -0
  215. package/src/ts-factory/tsdoc/createUseQueryOperationTSDocExample.ts +76 -0
  216. package/src/ts-factory/tsdoc/createUseSuspenseInfiniteQueryOperationTSDocExample.ts +63 -0
  217. package/src/ts-factory/tsdoc/lib/createOperationMethodCallExpressionExampleNode.ts +28 -0
  218. package/src/ts-factory/tsdoc/lib/createOperationMethodParametersExampleNodes.ts +83 -0
@@ -1,32 +1,56 @@
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 { createOperationCommonTSDoc } from '../lib/createOperationCommonTSDoc.js';
5
+ import { createServiceOperationCancelQueriesNodes } from './service-operation.generated/ServiceOperationCancelQueries.js';
6
+ import { createServiceOperationFetchInfiniteQueryNodes } from './service-operation.generated/ServiceOperationFetchInfiniteQuery.js';
7
+ import { createServiceOperationFetchQueryNodes } from './service-operation.generated/ServiceOperationFetchQuery.js';
8
+ import { createServiceOperationGetInfiniteQueryDataNodes } from './service-operation.generated/ServiceOperationGetInfiniteQueryData.js';
9
+ import { createServiceOperationGetQueriesDataNodes } from './service-operation.generated/ServiceOperationGetQueriesData.js';
10
+ import { createServiceOperationGetQueryDataNodes } from './service-operation.generated/ServiceOperationGetQueryData.js';
11
+ import { createServiceOperationGetQueryStateNodes } from './service-operation.generated/ServiceOperationGetQueryState.js';
12
+ import { createServiceOperationInvalidateQueriesNodes } from './service-operation.generated/ServiceOperationInvalidateQueries.js';
13
+ import { createServiceOperationIsFetchingQueriesNodes } from './service-operation.generated/ServiceOperationIsFetchingQueries.js';
14
+ import { createServiceOperationIsMutatingQueriesNodes } from './service-operation.generated/ServiceOperationIsMutatingQueries.js';
15
+ import { createServiceOperationMutationFnNodes } from './service-operation.generated/ServiceOperationMutationFn.js';
16
+ import { createServiceOperationQueryFnNodes } from './service-operation.generated/ServiceOperationQueryFn.js';
17
+ import { createServiceOperationRefetchQueriesNodes } from './service-operation.generated/ServiceOperationRefetchQueries.js';
18
+ import { createServiceOperationRemoveQueriesNodes } from './service-operation.generated/ServiceOperationRemoveQueries.js';
19
+ import { createServiceOperationResetQueriesNodes } from './service-operation.generated/ServiceOperationResetQueries.js';
20
+ import { createServiceOperationSetInfiniteQueryDataNodes } from './service-operation.generated/ServiceOperationSetInfiniteQueryData.js';
21
+ import { createServiceOperationSetQueriesDataNodes } from './service-operation.generated/ServiceOperationSetQueriesData.js';
22
+ import { createServiceOperationSetQueryDataNodes } from './service-operation.generated/ServiceOperationSetQueryData.js';
23
+ import { createServiceOperationUseInfiniteQueryNodes } from './service-operation.generated/ServiceOperationUseInfiniteQuery.js';
24
+ import { createServiceOperationUseIsFetchingQueriesNodes } from './service-operation.generated/ServiceOperationUseIsFetchingQueries.js';
25
+ import { createServiceOperationUseIsMutatingNodes } from './service-operation.generated/ServiceOperationUseIsMutating.js';
26
+ import { createServiceOperationUseMutationNodes } from './service-operation.generated/ServiceOperationUseMutation.js';
27
+ import { createServiceOperationUseMutationStateNodes } from './service-operation.generated/ServiceOperationUseMutationState.js';
28
+ import { createServiceOperationUseQueriesNodes } from './service-operation.generated/ServiceOperationUseQueries.js';
29
+ import { createServiceOperationUseQueryNodes } from './service-operation.generated/ServiceOperationUseQuery.js';
30
+ import { createServiceOperationUseSuspenseInfiniteQueryNodes } from './service-operation.generated/ServiceOperationUseSuspenseInfiniteQuery.js';
31
+ import { createServiceOperationUseSuspenseQueriesNodes } from './service-operation.generated/ServiceOperationUseSuspenseQueries.js';
32
+ import { createServiceOperationUseSuspenseQueryNodes } from './service-operation.generated/ServiceOperationUseSuspenseQuery.js';
33
+ import { createOperationMethodTSDocExample } from './tsdoc/createOperationMethodTSDocExample.js';
6
34
 
7
35
  const factory = ts.factory;
8
36
 
9
37
  export type ServiceImportsFactoryOptions = {
10
38
  openapiTypesImportPath: string;
11
- operationGenericsImportPath: string;
12
39
  };
13
40
 
41
+ type Service = { typeName: string; variableName: string };
42
+
14
43
  export const getServiceFactory = (
15
- service: { typeName: string; variableName: string },
44
+ service: Service,
16
45
  operations: ServiceOperation[],
17
- {
18
- openapiTypesImportPath,
19
- operationGenericsImportPath,
20
- }: ServiceImportsFactoryOptions
46
+ { openapiTypesImportPath }: ServiceImportsFactoryOptions
21
47
  ) => {
22
48
  return [
23
49
  getOpenAPISchemaImportsFactory(openapiTypesImportPath),
24
- getServiceOperationGenericsPathImportsFactory(
25
- operationGenericsImportPath,
26
- operations
27
- ),
50
+ ...getServiceOperationImportsFactory(operations),
28
51
  getServiceInterfaceFactory(service, operations),
29
52
  getServiceVariableFactory(service, operations),
53
+ ...getOperationsTypes(operations),
30
54
  ];
31
55
  };
32
56
 
@@ -50,86 +74,173 @@ const getOpenAPISchemaImportsFactory = (schemaTypesPath: string) => {
50
74
  );
51
75
  };
52
76
 
53
- const getServiceOperationGenericsPathImportsFactory = (
54
- operationGenericsPath: string,
55
- operations: ServiceOperation[]
56
- ) => {
77
+ const getServiceOperationImportsFactory = (operations: ServiceOperation[]) => {
57
78
  const factory = ts.factory;
58
79
 
59
- const queryMethods = ['get', 'head', 'options'] as const; // todo::make it shared
60
-
61
- return factory.createImportDeclaration(
62
- undefined,
63
- factory.createImportClause(
64
- true,
65
- undefined,
66
- factory.createNamedImports(
67
- [
68
- operations.some((operation) =>
69
- queryMethods.some((method) => method === operation.method)
70
- )
71
- ? factory.createImportSpecifier(
80
+ const moduleImports = getModuleTypeImports([
81
+ ...(operations.some((operation) => operation.method === 'get')
82
+ ? createServicesQueryOperationNodes()
83
+ : []),
84
+ ...(operations.some((operation) => operation.method !== 'get')
85
+ ? createServicesMutationOperationNodes()
86
+ : []),
87
+ ]);
88
+
89
+ return Object.entries(moduleImports).map(
90
+ ([moduleName, importSpecifierNames]) => {
91
+ return factory.createImportDeclaration(
92
+ undefined,
93
+ factory.createImportClause(
94
+ true,
95
+ undefined,
96
+ factory.createNamedImports(
97
+ importSpecifierNames.map((specifier) =>
98
+ factory.createImportSpecifier(
72
99
  false,
73
100
  undefined,
74
- factory.createIdentifier('ServiceOperationQuery')
101
+ factory.createIdentifier(specifier)
75
102
  )
76
- : null,
77
- operations.some(
78
- (operation) =>
79
- !queryMethods.some((method) => method === operation.method)
103
+ )
80
104
  )
81
- ? factory.createImportSpecifier(
82
- false,
83
- undefined,
84
- factory.createIdentifier('ServiceOperationMutation')
85
- )
86
- : null,
87
- ].filter((node): node is NonNullable<typeof node> => Boolean(node))
88
- )
89
- ),
90
- factory.createStringLiteral(operationGenericsPath)
105
+ ),
106
+ factory.createStringLiteral(moduleName)
107
+ );
108
+ }
91
109
  );
92
110
  };
93
111
 
94
112
  const getServiceInterfaceFactory = (
95
- { typeName }: { typeName: string },
113
+ service: Service,
96
114
  operations: ServiceOperation[]
97
115
  ) => {
98
116
  return factory.createInterfaceDeclaration(
99
117
  [factory.createToken(ts.SyntaxKind.ExportKeyword)],
100
- factory.createIdentifier(typeName),
118
+ factory.createIdentifier(service.typeName),
101
119
  undefined,
102
120
  undefined,
103
- operations.map(getServiceInterfaceOperationFactory)
121
+ operations.map((operation) =>
122
+ getServiceInterfaceOperationFactory(operation, service)
123
+ )
104
124
  );
105
125
  };
106
126
 
107
- const getServiceInterfaceOperationFactory = (operation: ServiceOperation) => {
127
+ const getServiceInterfaceOperationFactory = (
128
+ operation: ServiceOperation,
129
+ service: Service
130
+ ) => {
131
+ const operationMethodNodes = getMethodSignatureNodes(
132
+ operation.method === 'get'
133
+ ? createServicesQueryOperationNodes()
134
+ : createServicesMutationOperationNodes()
135
+ );
136
+
137
+ operationMethodNodes.forEach((node) => {
138
+ if (
139
+ ts.isMethodSignature(node) &&
140
+ ts.isIdentifier(node.name) &&
141
+ node.name.text
142
+ ) {
143
+ const operationCustomTSDoc = createOperationMethodTSDocExample(
144
+ operation,
145
+ {
146
+ serviceVariableName: service.variableName,
147
+ operationMethodName: node.name.text,
148
+ }
149
+ );
150
+ // Query and Mutation methods (hooks and QueryClient methods)
151
+ ts.addSyntheticLeadingComment(
152
+ node,
153
+ ts.SyntaxKind.MultiLineCommentTrivia,
154
+ createMultilineComment(
155
+ operationCustomTSDoc
156
+ ? operationCustomTSDoc
157
+ : createOperationCommonTSDoc(operation)
158
+ ),
159
+ true
160
+ );
161
+ } else if (ts.isCallSignatureDeclaration(node)) {
162
+ // Query and Mutation functions (invoke methods)
163
+ ts.addSyntheticLeadingComment(
164
+ node,
165
+ ts.SyntaxKind.MultiLineCommentTrivia,
166
+ createMultilineComment([...createOperationCommonTSDoc(operation)]),
167
+ true
168
+ );
169
+ }
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(
178
+ reduceAreAllOptionalConditionalTParamsType(
179
+ operationMethodNodes,
180
+ operation
181
+ ),
182
+ operation
117
183
  ),
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
- )
184
+ factory.createPropertySignature(
185
+ undefined,
186
+ factory.createIdentifier('schema'),
187
+ undefined,
188
+ factory.createTypeReferenceNode(
189
+ getOperationSchemaTypeName(operation),
190
+ undefined
191
+ )
192
+ ),
193
+ factory.createPropertySignature(
194
+ undefined,
195
+ factory.createIdentifier('types'),
196
+ undefined,
197
+ factory.createTypeLiteralNode(
198
+ [
199
+ factory.createPropertySignature(
200
+ undefined,
201
+ factory.createIdentifier('parameters'),
202
+ undefined,
203
+ factory.createTypeReferenceNode(
204
+ getOperationParametersTypeName(operation),
205
+ undefined
206
+ )
207
+ ),
208
+ factory.createPropertySignature(
209
+ undefined,
210
+ factory.createIdentifier('data'),
211
+ undefined,
212
+ factory.createTypeReferenceNode(
213
+ getOperationDataTypeName(operation),
214
+ undefined
215
+ )
216
+ ),
217
+ factory.createPropertySignature(
218
+ undefined,
219
+ factory.createIdentifier('error'),
220
+ undefined,
221
+ factory.createTypeReferenceNode(
222
+ getOperationErrorTypeName(operation),
223
+ undefined
224
+ )
225
+ ),
226
+ operation.method !== 'get'
227
+ ? factory.createPropertySignature(
228
+ undefined,
229
+ factory.createIdentifier('body'),
230
+ undefined,
231
+ factory.createTypeReferenceNode(
232
+ getOperationBodyTypeName(operation),
233
+ undefined
234
+ )
235
+ )
236
+ : undefined,
237
+ ].filter((node) => !!node)
238
+ )
239
+ ),
240
+ ])
130
241
  );
131
242
 
132
- addSyntheticLeadingOperationComment(node, operation);
243
+ addOperationTSDoc(node, operation);
133
244
 
134
245
  return node;
135
246
  };
@@ -155,13 +266,17 @@ const getOperationSchemaFactory = (operation: ServiceOperation) => {
155
266
  )
156
267
  ),
157
268
 
158
- operation.mediaType
269
+ operation.requestBody
159
270
  ? factory.createPropertySignature(
160
271
  undefined,
161
272
  factory.createIdentifier('mediaType'),
162
273
  undefined,
163
- factory.createLiteralTypeNode(
164
- factory.createStringLiteral(operation.mediaType)
274
+ factory.createTupleTypeNode(
275
+ Object.keys(operation.requestBody.content).map((mediaType) =>
276
+ factory.createLiteralTypeNode(
277
+ factory.createStringLiteral(mediaType)
278
+ )
279
+ )
165
280
  )
166
281
  )
167
282
  : null,
@@ -237,44 +352,57 @@ const getOperationResponseFactory = (
237
352
  };
238
353
 
239
354
  const getOperationBodyFactory = (operation: ServiceOperation) => {
240
- if (!operation.mediaType)
355
+ if (!operation.requestBody)
241
356
  return factory.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword);
242
357
 
243
- return factory.createIndexedAccessTypeNode(
244
- factory.createIndexedAccessTypeNode(
245
- factory.createTypeReferenceNode(factory.createIdentifier('NonNullable'), [
358
+ const mediaTypes = Object.keys(operation.requestBody.content);
359
+
360
+ return factory.createUnionTypeNode([
361
+ ...mediaTypes.map((mediaType) =>
362
+ factory.createIndexedAccessTypeNode(
246
363
  factory.createIndexedAccessTypeNode(
247
- factory.createIndexedAccessTypeNode(
248
- factory.createIndexedAccessTypeNode(
249
- factory.createTypeReferenceNode(
250
- factory.createIdentifier('paths'),
251
- undefined
364
+ factory.createTypeReferenceNode(
365
+ factory.createIdentifier('NonNullable'),
366
+ [
367
+ factory.createIndexedAccessTypeNode(
368
+ factory.createIndexedAccessTypeNode(
369
+ factory.createIndexedAccessTypeNode(
370
+ factory.createTypeReferenceNode(
371
+ factory.createIdentifier('paths'),
372
+ undefined
373
+ ),
374
+ factory.createLiteralTypeNode(
375
+ factory.createStringLiteral(operation.path)
376
+ )
377
+ ),
378
+ factory.createLiteralTypeNode(
379
+ factory.createStringLiteral(operation.method)
380
+ )
381
+ ),
382
+ factory.createLiteralTypeNode(
383
+ factory.createStringLiteral('requestBody')
384
+ )
252
385
  ),
253
- factory.createLiteralTypeNode(
254
- factory.createStringLiteral(operation.path)
255
- )
256
- ),
257
- factory.createLiteralTypeNode(
258
- factory.createStringLiteral(operation.method)
259
- )
386
+ ]
260
387
  ),
261
- factory.createLiteralTypeNode(
262
- factory.createStringLiteral('requestBody')
263
- )
388
+ // todo::Add optional NonNullable inference, see `POST /entities/{entity_id}/documents`
389
+ factory.createLiteralTypeNode(factory.createStringLiteral('content'))
264
390
  ),
265
- ]),
266
- // todo::Add optional NonNullable inference, see `POST /entities/{entity_id}/documents`
267
- factory.createLiteralTypeNode(factory.createStringLiteral('content'))
391
+ factory.createLiteralTypeNode(factory.createStringLiteral(mediaType))
392
+ )
268
393
  ),
269
- factory.createLiteralTypeNode(
270
- factory.createStringLiteral(operation.mediaType)
271
- )
272
- );
394
+ ...(mediaTypes.some((mediaType) => mediaType.includes('/form-data'))
395
+ ? [factory.createTypeReferenceNode(factory.createIdentifier('FormData'))]
396
+ : []),
397
+ ]);
273
398
  };
274
399
 
275
- const getOperationParametersFactory = (operation: ServiceOperation) => {
276
- if (!operation.parameters)
277
- return factory.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword);
400
+ const createOperationParametersFactory = (operation: ServiceOperation) => {
401
+ if (!operation.parameters?.length)
402
+ return operation.method === 'get'
403
+ ? factory.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword)
404
+ : // mutation with predefined parameters fallback to an empty object
405
+ factory.createTypeLiteralNode([]);
278
406
 
279
407
  return factory.createIndexedAccessTypeNode(
280
408
  factory.createIndexedAccessTypeNode(
@@ -296,7 +424,7 @@ const getOperationParametersFactory = (operation: ServiceOperation) => {
296
424
  };
297
425
 
298
426
  const getServiceVariableFactory = (
299
- { variableName }: { variableName: string },
427
+ service: Service,
300
428
  operations: ServiceOperation[]
301
429
  ) => {
302
430
  return factory.createVariableStatement(
@@ -304,10 +432,12 @@ const getServiceVariableFactory = (
304
432
  factory.createVariableDeclarationList(
305
433
  [
306
434
  factory.createVariableDeclaration(
307
- factory.createIdentifier(variableName),
435
+ factory.createIdentifier(service.variableName),
308
436
  undefined,
309
437
  factory.createTypeLiteralNode(
310
- operations.map(getServiceVariableTypeFactory)
438
+ operations.map((operation) =>
439
+ getServiceVariableTypeFactory(operation)
440
+ )
311
441
  ),
312
442
  factory.createObjectLiteralExpression(
313
443
  operations.map(getServiceVariablePropertyFactory),
@@ -320,6 +450,65 @@ const getServiceVariableFactory = (
320
450
  );
321
451
  };
322
452
 
453
+ const getOperationsTypes = (operations: ServiceOperation[]) => {
454
+ return operations.flatMap((operation) => {
455
+ const nodes = [
456
+ factory.createTypeAliasDeclaration(
457
+ undefined,
458
+ factory.createIdentifier(getOperationSchemaTypeName(operation)),
459
+ undefined,
460
+ getOperationSchemaFactory(operation)
461
+ ),
462
+ factory.createTypeAliasDeclaration(
463
+ undefined,
464
+ factory.createIdentifier(getOperationParametersTypeName(operation)),
465
+ undefined,
466
+ createOperationParametersFactory(operation)
467
+ ),
468
+ factory.createTypeAliasDeclaration(
469
+ undefined,
470
+ factory.createIdentifier(getOperationDataTypeName(operation)),
471
+ undefined,
472
+ getOperationResponseFactory(operation, 'success')
473
+ ),
474
+ factory.createTypeAliasDeclaration(
475
+ undefined,
476
+ factory.createIdentifier(getOperationErrorTypeName(operation)),
477
+ undefined,
478
+ getOperationResponseFactory(operation, 'errors')
479
+ ),
480
+ ];
481
+
482
+ if (operation.method !== 'get') {
483
+ nodes.push(
484
+ factory.createTypeAliasDeclaration(
485
+ undefined,
486
+ factory.createIdentifier(getOperationBodyTypeName(operation)),
487
+ undefined,
488
+ getOperationBodyFactory(operation)
489
+ )
490
+ );
491
+ }
492
+
493
+ return nodes;
494
+ });
495
+ };
496
+
497
+ const getOperationSchemaTypeName = (operation: ServiceOperation) =>
498
+ camelCase(`${operation.name}-Schema`, { pascalCase: true });
499
+
500
+ const getOperationParametersTypeName = (operation: ServiceOperation) =>
501
+ camelCase(`${operation.name}-Parameters`, { pascalCase: true });
502
+
503
+ const getOperationDataTypeName = (operation: ServiceOperation) =>
504
+ camelCase(`${operation.name}-Data`, { pascalCase: true });
505
+
506
+ const getOperationErrorTypeName = (operation: ServiceOperation) =>
507
+ camelCase(`${operation.name}-Error`, { pascalCase: true });
508
+
509
+ const getOperationBodyTypeName = (operation: ServiceOperation) =>
510
+ camelCase(`${operation.name}-Body`, { pascalCase: true });
511
+
323
512
  const getServiceVariableTypeFactory = (operation: ServiceOperation) => {
324
513
  const node = factory.createPropertySignature(
325
514
  undefined,
@@ -335,7 +524,7 @@ const getServiceVariableTypeFactory = (operation: ServiceOperation) => {
335
524
  ])
336
525
  );
337
526
 
338
- addSyntheticLeadingOperationComment(node, operation);
527
+ addOperationTSDoc(node, operation);
339
528
 
340
529
  return node;
341
530
  };
@@ -357,10 +546,14 @@ const getServiceVariablePropertyFactory = (operation: ServiceOperation) => {
357
546
  factory.createIdentifier('url'),
358
547
  factory.createStringLiteral(operation.path)
359
548
  ),
360
- operation.mediaType
549
+ operation.requestBody
361
550
  ? factory.createPropertyAssignment(
362
551
  factory.createIdentifier('mediaType'),
363
- factory.createStringLiteral(operation.mediaType)
552
+ factory.createArrayLiteralExpression(
553
+ Object.keys(operation.requestBody.content).map(
554
+ (mediaType) => factory.createStringLiteral(mediaType)
555
+ )
556
+ )
364
557
  )
365
558
  : null,
366
559
 
@@ -402,23 +595,8 @@ const createMultilineComment = (comment: string[]) => {
402
595
  return '';
403
596
  };
404
597
 
405
- const createOperationComment = (operation: ServiceOperation) => {
406
- return createMultilineComment(
407
- [
408
- operation.deprecated ? '@deprecated' : null,
409
- operation.summary ? `@summary ${operation.summary}` : null,
410
- operation.description ? `@description ${operation.description}` : null,
411
- ].filter((comment): comment is NonNullable<typeof comment> =>
412
- Boolean(comment)
413
- )
414
- );
415
- };
416
-
417
- const addSyntheticLeadingOperationComment = (
418
- node: ts.Node,
419
- operation: ServiceOperation
420
- ) => {
421
- const comment = createOperationComment(operation);
598
+ const addOperationTSDoc = (node: ts.Node, operation: ServiceOperation) => {
599
+ const comment = createMultilineComment(createOperationCommonTSDoc(operation));
422
600
 
423
601
  if (comment)
424
602
  ts.addSyntheticLeadingComment(
@@ -435,3 +613,177 @@ const getOperationSecuritySchemas = (
435
613
  security.flatMap((security) =>
436
614
  Object.keys(security).map((securitySchemaName) => securitySchemaName)
437
615
  );
616
+
617
+ const createServicesQueryOperationNodes = () => [
618
+ ...createServiceOperationCancelQueriesNodes(),
619
+ ...createServiceOperationUseQueryNodes(),
620
+ ...createServiceOperationFetchInfiniteQueryNodes(),
621
+ ...createServiceOperationFetchQueryNodes(),
622
+ ...createServiceOperationGetInfiniteQueryDataNodes(),
623
+ ...createServiceOperationGetQueriesDataNodes(),
624
+ ...createServiceOperationGetQueryDataNodes(),
625
+ ...createServiceOperationGetQueryStateNodes(),
626
+ ...createServiceOperationInvalidateQueriesNodes(),
627
+ ...createServiceOperationIsFetchingQueriesNodes(),
628
+ ...createServiceOperationQueryFnNodes(),
629
+ ...createServiceOperationRefetchQueriesNodes(),
630
+ ...createServiceOperationRemoveQueriesNodes(),
631
+ ...createServiceOperationResetQueriesNodes(),
632
+ ...createServiceOperationSetInfiniteQueryDataNodes(),
633
+ ...createServiceOperationSetQueriesDataNodes(),
634
+ ...createServiceOperationSetQueryDataNodes(),
635
+ ...createServiceOperationUseInfiniteQueryNodes(),
636
+ ...createServiceOperationUseIsFetchingQueriesNodes(),
637
+ ...createServiceOperationUseQueriesNodes(),
638
+ ...createServiceOperationUseQueryNodes(),
639
+ ...createServiceOperationUseSuspenseInfiniteQueryNodes(),
640
+ ...createServiceOperationUseSuspenseQueriesNodes(),
641
+ ...createServiceOperationUseSuspenseQueryNodes(),
642
+ ];
643
+
644
+ const createServicesMutationOperationNodes = () => [
645
+ ...createServiceOperationUseMutationNodes(),
646
+ ...createServiceOperationUseIsMutatingNodes(),
647
+ ...createServiceOperationIsMutatingQueriesNodes(),
648
+ ...createServiceOperationMutationFnNodes(),
649
+ ...createServiceOperationUseMutationStateNodes(),
650
+ ];
651
+
652
+ const getMethodSignatureNodes = (
653
+ nodes: ts.Node[]
654
+ ): (ts.MethodSignature | ts.CallSignatureDeclaration)[] => {
655
+ return nodes.flatMap((node) =>
656
+ ts.isInterfaceDeclaration(node)
657
+ ? node.members.filter(
658
+ (node) =>
659
+ ts.isMethodSignature(node) || ts.isCallSignatureDeclaration(node)
660
+ )
661
+ : []
662
+ );
663
+ };
664
+
665
+ const getModuleTypeImports = (nodes: ts.Node[]) => {
666
+ return nodes
667
+ .map((node) => {
668
+ const foo =
669
+ ts.isImportDeclaration(node) &&
670
+ ts.isStringLiteral(node.moduleSpecifier) &&
671
+ node.importClause?.isTypeOnly &&
672
+ node.importClause.namedBindings &&
673
+ ts.isNamedImports(node.importClause.namedBindings)
674
+ ? {
675
+ module: node.moduleSpecifier.text,
676
+ imports: node.importClause.namedBindings.elements
677
+ .filter(ts.isImportSpecifier)
678
+ .map((specifier) => specifier.name.text),
679
+ }
680
+ : undefined;
681
+
682
+ return foo;
683
+ })
684
+ .reduce<Record<string, string[]>>((acc, item) => {
685
+ if (!item) return acc;
686
+ if (!acc[item.module])
687
+ acc[item.module] = item.imports.filter(arrayFilterUniqueCallback);
688
+ else
689
+ acc[item.module] = [...acc[item.module], ...item.imports].filter(
690
+ arrayFilterUniqueCallback
691
+ );
692
+
693
+ return acc;
694
+ }, {});
695
+ };
696
+
697
+ /**
698
+ * Replaces generic types with operation types with named types.
699
+ *
700
+ * For example, replaces `TParams` and `TQueryFnData` will be
701
+ * replaced with `GetEntitiesSchemaParameters` and `GetEntitiesSchemaData`.
702
+ */
703
+ function replaceGenericTypesWithOperationTypes<T extends ts.Node>(
704
+ node: T[],
705
+ operation: ServiceOperation
706
+ ): T[] {
707
+ const transformer =
708
+ (context: ts.TransformationContext) => (rootNode: ts.Node) => {
709
+ function visit(node: ts.Node): ts.Node {
710
+ if (ts.isTypeReferenceNode(node) && ts.isIdentifier(node.typeName)) {
711
+ let newTypeName;
712
+
713
+ if (node.typeName.text === 'TSchema')
714
+ newTypeName = getOperationSchemaTypeName(operation);
715
+ else if (node.typeName.text === 'TParams')
716
+ newTypeName = getOperationParametersTypeName(operation);
717
+ else if (
718
+ node.typeName.text === 'TQueryFnData' ||
719
+ node.typeName.text === 'TMutationData'
720
+ )
721
+ newTypeName = getOperationDataTypeName(operation);
722
+ else if (node.typeName.text === 'TError')
723
+ newTypeName = getOperationErrorTypeName(operation);
724
+ else if (node.typeName.text === 'TBody')
725
+ newTypeName = getOperationBodyTypeName(operation);
726
+
727
+ if (newTypeName) {
728
+ return ts.factory.createTypeReferenceNode(
729
+ ts.factory.createIdentifier(newTypeName),
730
+ node.typeArguments
731
+ );
732
+ }
733
+ }
734
+ return ts.visitEachChild(node, visit, context);
735
+ }
736
+ return ts.visitNode(rootNode, visit);
737
+ };
738
+
739
+ const result = ts.transform(node, [transformer]);
740
+
741
+ return result.transformed as T[];
742
+ }
743
+
744
+ /**
745
+ * Replaces `AreAllOptional<TParams>` with `TParams | void` if `TParams` is optional,
746
+ * and with `TParams` when at least one parameter is required.
747
+ */
748
+ function reduceAreAllOptionalConditionalTParamsType<T extends ts.Node>(
749
+ node: T[],
750
+ operation: ServiceOperation
751
+ ): T[] {
752
+ const transformer =
753
+ (context: ts.TransformationContext) => (rootNode: ts.Node) => {
754
+ function visit(node: ts.Node): ts.Node {
755
+ if (
756
+ ts.isConditionalTypeNode(node) &&
757
+ ts.isTypeReferenceNode(node.checkType) &&
758
+ ts.isIdentifier(node.checkType.typeName) &&
759
+ node.checkType.typeName.text === 'AreAllOptional' &&
760
+ node.checkType.typeArguments?.every((node) => {
761
+ return (
762
+ ts.isTypeReferenceNode(node) &&
763
+ ts.isIdentifier(node.typeName) &&
764
+ node.typeName.text === 'TParams'
765
+ );
766
+ })
767
+ ) {
768
+ if (
769
+ !operation.parameters?.length ||
770
+ operation.parameters.every((parameter) => !parameter.required)
771
+ ) {
772
+ return node.trueType;
773
+ } else {
774
+ return node.falseType;
775
+ }
776
+ }
777
+ return ts.visitEachChild(node, visit, context);
778
+ }
779
+ return ts.visitNode(rootNode, visit);
780
+ };
781
+
782
+ const result = ts.transform(node, [transformer]);
783
+
784
+ return result.transformed as T[];
785
+ }
786
+
787
+ function arrayFilterUniqueCallback<T>(value: T, index: number, self: T[]) {
788
+ return self.indexOf(value) === index;
789
+ }