@openapi-qraft/tanstack-query-react-plugin 2.0.0-next.0 → 2.0.0-next.10

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 (235) hide show
  1. package/CHANGELOG.md +86 -0
  2. package/dist/generateCode.d.ts +2 -0
  3. package/dist/generateCode.d.ts.map +1 -1
  4. package/dist/generateCode.js +25 -0
  5. package/dist/generateCode.js.map +1 -1
  6. package/dist/lib/createOperationCommonTSDoc.d.ts +3 -0
  7. package/dist/lib/createOperationCommonTSDoc.d.ts.map +1 -0
  8. package/dist/lib/createOperationCommonTSDoc.js +8 -0
  9. package/dist/lib/createOperationCommonTSDoc.js.map +1 -0
  10. package/dist/lib/maybeResolveImport.d.ts +9 -0
  11. package/dist/lib/maybeResolveImport.d.ts.map +1 -0
  12. package/dist/lib/maybeResolveImport.js +14 -0
  13. package/dist/lib/maybeResolveImport.js.map +1 -0
  14. package/dist/plugin.d.ts.map +1 -1
  15. package/dist/plugin.js +5 -3
  16. package/dist/plugin.js.map +1 -1
  17. package/dist/ts-factory/getClientFactory.js +33 -1
  18. package/dist/ts-factory/getClientFactory.js.map +1 -1
  19. package/dist/ts-factory/getCreatePredefinedParametersRequestFnFactory.d.ts +10 -0
  20. package/dist/ts-factory/getCreatePredefinedParametersRequestFnFactory.d.ts.map +1 -0
  21. package/dist/ts-factory/getCreatePredefinedParametersRequestFnFactory.js +89 -0
  22. package/dist/ts-factory/getCreatePredefinedParametersRequestFnFactory.js.map +1 -0
  23. package/dist/ts-factory/getIndexFactory.d.ts +0 -8
  24. package/dist/ts-factory/getIndexFactory.d.ts.map +1 -1
  25. package/dist/ts-factory/getIndexFactory.js +1 -13
  26. package/dist/ts-factory/getIndexFactory.js.map +1 -1
  27. package/dist/ts-factory/getServiceFactory.d.ts +4 -3
  28. package/dist/ts-factory/getServiceFactory.d.ts.map +1 -1
  29. package/dist/ts-factory/getServiceFactory.js +247 -44
  30. package/dist/ts-factory/getServiceFactory.js.map +1 -1
  31. package/dist/ts-factory/service-operation.generated/ServiceOperationCancelQueries.d.ts +4 -0
  32. package/dist/ts-factory/service-operation.generated/ServiceOperationCancelQueries.d.ts.map +1 -0
  33. package/dist/ts-factory/service-operation.generated/ServiceOperationCancelQueries.js +38 -0
  34. package/dist/ts-factory/service-operation.generated/ServiceOperationCancelQueries.js.map +1 -0
  35. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchInfiniteQuery.d.ts +4 -0
  36. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchInfiniteQuery.d.ts.map +1 -0
  37. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchInfiniteQuery.js +89 -0
  38. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchInfiniteQuery.js.map +1 -0
  39. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchQuery.d.ts +4 -0
  40. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchQuery.d.ts.map +1 -0
  41. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchQuery.js +48 -0
  42. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchQuery.js.map +1 -0
  43. package/dist/ts-factory/service-operation.generated/ServiceOperationGetInfiniteQueryData.d.ts +4 -0
  44. package/dist/ts-factory/service-operation.generated/ServiceOperationGetInfiniteQueryData.d.ts.map +1 -0
  45. package/dist/ts-factory/service-operation.generated/ServiceOperationGetInfiniteQueryData.js +34 -0
  46. package/dist/ts-factory/service-operation.generated/ServiceOperationGetInfiniteQueryData.js.map +1 -0
  47. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueriesData.d.ts +4 -0
  48. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueriesData.d.ts.map +1 -0
  49. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueriesData.js +59 -0
  50. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueriesData.js.map +1 -0
  51. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryData.d.ts +4 -0
  52. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryData.d.ts.map +1 -0
  53. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryData.js +30 -0
  54. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryData.js.map +1 -0
  55. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryState.d.ts +4 -0
  56. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryState.d.ts.map +1 -0
  57. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryState.js +62 -0
  58. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryState.js.map +1 -0
  59. package/dist/ts-factory/service-operation.generated/ServiceOperationInvalidateQueries.d.ts +4 -0
  60. package/dist/ts-factory/service-operation.generated/ServiceOperationInvalidateQueries.d.ts.map +1 -0
  61. package/dist/ts-factory/service-operation.generated/ServiceOperationInvalidateQueries.js +26 -0
  62. package/dist/ts-factory/service-operation.generated/ServiceOperationInvalidateQueries.js.map +1 -0
  63. package/dist/ts-factory/service-operation.generated/ServiceOperationIsFetchingQueries.d.ts +4 -0
  64. package/dist/ts-factory/service-operation.generated/ServiceOperationIsFetchingQueries.d.ts.map +1 -0
  65. package/dist/ts-factory/service-operation.generated/ServiceOperationIsFetchingQueries.js +34 -0
  66. package/dist/ts-factory/service-operation.generated/ServiceOperationIsFetchingQueries.js.map +1 -0
  67. package/dist/ts-factory/service-operation.generated/ServiceOperationIsMutatingQueries.d.ts +4 -0
  68. package/dist/ts-factory/service-operation.generated/ServiceOperationIsMutatingQueries.d.ts.map +1 -0
  69. package/dist/ts-factory/service-operation.generated/ServiceOperationIsMutatingQueries.js +36 -0
  70. package/dist/ts-factory/service-operation.generated/ServiceOperationIsMutatingQueries.js.map +1 -0
  71. package/dist/ts-factory/service-operation.generated/ServiceOperationMutationFn.d.ts +4 -0
  72. package/dist/ts-factory/service-operation.generated/ServiceOperationMutationFn.d.ts.map +1 -0
  73. package/dist/ts-factory/service-operation.generated/ServiceOperationMutationFn.js +35 -0
  74. package/dist/ts-factory/service-operation.generated/ServiceOperationMutationFn.js.map +1 -0
  75. package/dist/ts-factory/service-operation.generated/ServiceOperationQueryFn.d.ts +4 -0
  76. package/dist/ts-factory/service-operation.generated/ServiceOperationQueryFn.d.ts.map +1 -0
  77. package/dist/ts-factory/service-operation.generated/ServiceOperationQueryFn.js +62 -0
  78. package/dist/ts-factory/service-operation.generated/ServiceOperationQueryFn.js.map +1 -0
  79. package/dist/ts-factory/service-operation.generated/ServiceOperationRefetchQueries.d.ts +4 -0
  80. package/dist/ts-factory/service-operation.generated/ServiceOperationRefetchQueries.d.ts.map +1 -0
  81. package/dist/ts-factory/service-operation.generated/ServiceOperationRefetchQueries.js +38 -0
  82. package/dist/ts-factory/service-operation.generated/ServiceOperationRefetchQueries.js.map +1 -0
  83. package/dist/ts-factory/service-operation.generated/ServiceOperationRemoveQueries.d.ts +4 -0
  84. package/dist/ts-factory/service-operation.generated/ServiceOperationRemoveQueries.d.ts.map +1 -0
  85. package/dist/ts-factory/service-operation.generated/ServiceOperationRemoveQueries.js +34 -0
  86. package/dist/ts-factory/service-operation.generated/ServiceOperationRemoveQueries.js.map +1 -0
  87. package/dist/ts-factory/service-operation.generated/ServiceOperationResetQueries.d.ts +4 -0
  88. package/dist/ts-factory/service-operation.generated/ServiceOperationResetQueries.d.ts.map +1 -0
  89. package/dist/ts-factory/service-operation.generated/ServiceOperationResetQueries.js +38 -0
  90. package/dist/ts-factory/service-operation.generated/ServiceOperationResetQueries.js.map +1 -0
  91. package/dist/ts-factory/service-operation.generated/ServiceOperationSetInfiniteQueryData.d.ts +4 -0
  92. package/dist/ts-factory/service-operation.generated/ServiceOperationSetInfiniteQueryData.d.ts.map +1 -0
  93. package/dist/ts-factory/service-operation.generated/ServiceOperationSetInfiniteQueryData.js +54 -0
  94. package/dist/ts-factory/service-operation.generated/ServiceOperationSetInfiniteQueryData.js.map +1 -0
  95. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueriesData.d.ts +4 -0
  96. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueriesData.d.ts.map +1 -0
  97. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueriesData.js +55 -0
  98. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueriesData.js.map +1 -0
  99. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueryData.d.ts +4 -0
  100. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueryData.d.ts.map +1 -0
  101. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueryData.js +42 -0
  102. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueryData.js.map +1 -0
  103. package/dist/ts-factory/service-operation.generated/ServiceOperationUseInfiniteQuery.d.ts +4 -0
  104. package/dist/ts-factory/service-operation.generated/ServiceOperationUseInfiniteQuery.d.ts.map +1 -0
  105. package/dist/ts-factory/service-operation.generated/ServiceOperationUseInfiniteQuery.js +138 -0
  106. package/dist/ts-factory/service-operation.generated/ServiceOperationUseInfiniteQuery.js.map +1 -0
  107. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsFetchingQueries.d.ts +4 -0
  108. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsFetchingQueries.d.ts.map +1 -0
  109. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsFetchingQueries.js +34 -0
  110. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsFetchingQueries.js.map +1 -0
  111. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsMutating.d.ts +4 -0
  112. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsMutating.d.ts.map +1 -0
  113. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsMutating.js +36 -0
  114. package/dist/ts-factory/service-operation.generated/ServiceOperationUseIsMutating.js.map +1 -0
  115. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutation.d.ts +4 -0
  116. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutation.d.ts.map +1 -0
  117. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutation.js +81 -0
  118. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutation.js.map +1 -0
  119. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutationState.d.ts +4 -0
  120. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutationState.d.ts.map +1 -0
  121. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutationState.js +63 -0
  122. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutationState.js.map +1 -0
  123. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQueries.d.ts +4 -0
  124. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQueries.d.ts.map +1 -0
  125. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQueries.js +34 -0
  126. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQueries.js.map +1 -0
  127. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQuery.d.ts +4 -0
  128. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQuery.d.ts.map +1 -0
  129. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQuery.js +93 -0
  130. package/dist/ts-factory/service-operation.generated/ServiceOperationUseQuery.js.map +1 -0
  131. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseInfiniteQuery.d.ts +4 -0
  132. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseInfiniteQuery.d.ts.map +1 -0
  133. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseInfiniteQuery.js +77 -0
  134. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseInfiniteQuery.js.map +1 -0
  135. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQueries.d.ts +4 -0
  136. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQueries.d.ts.map +1 -0
  137. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQueries.js +40 -0
  138. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQueries.js.map +1 -0
  139. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQuery.d.ts +4 -0
  140. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQuery.d.ts.map +1 -0
  141. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQuery.js +52 -0
  142. package/dist/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQuery.js.map +1 -0
  143. package/dist/ts-factory/tsdoc/createOperationMethodTSDocExample.d.ts +6 -0
  144. package/dist/ts-factory/tsdoc/createOperationMethodTSDocExample.d.ts.map +1 -0
  145. package/dist/ts-factory/tsdoc/createOperationMethodTSDocExample.js +31 -0
  146. package/dist/ts-factory/tsdoc/createOperationMethodTSDocExample.js.map +1 -0
  147. package/dist/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.d.ts +5 -0
  148. package/dist/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.d.ts.map +1 -0
  149. package/dist/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.js +53 -0
  150. package/dist/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.js.map +1 -0
  151. package/dist/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.d.ts +3 -0
  152. package/dist/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.d.ts.map +1 -0
  153. package/dist/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.js +41 -0
  154. package/dist/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.js.map +1 -0
  155. package/dist/ts-factory/tsdoc/createUseIsMutatingOperationTSDocExample.d.ts +3 -0
  156. package/dist/ts-factory/tsdoc/createUseIsMutatingOperationTSDocExample.d.ts.map +1 -0
  157. package/dist/ts-factory/tsdoc/createUseIsMutatingOperationTSDocExample.js +41 -0
  158. package/dist/ts-factory/tsdoc/createUseIsMutatingOperationTSDocExample.js.map +1 -0
  159. package/dist/ts-factory/tsdoc/createUseMutationOperationTSDocExample.d.ts +3 -0
  160. package/dist/ts-factory/tsdoc/createUseMutationOperationTSDocExample.d.ts.map +1 -0
  161. package/dist/ts-factory/tsdoc/createUseMutationOperationTSDocExample.js +44 -0
  162. package/dist/ts-factory/tsdoc/createUseMutationOperationTSDocExample.js.map +1 -0
  163. package/dist/ts-factory/tsdoc/createUseMutationStateOperationTSDocExample.d.ts +3 -0
  164. package/dist/ts-factory/tsdoc/createUseMutationStateOperationTSDocExample.d.ts.map +1 -0
  165. package/dist/ts-factory/tsdoc/createUseMutationStateOperationTSDocExample.js +55 -0
  166. package/dist/ts-factory/tsdoc/createUseMutationStateOperationTSDocExample.js.map +1 -0
  167. package/dist/ts-factory/tsdoc/createUseQueriesOperationTSDocExample.d.ts +3 -0
  168. package/dist/ts-factory/tsdoc/createUseQueriesOperationTSDocExample.d.ts.map +1 -0
  169. package/dist/ts-factory/tsdoc/createUseQueriesOperationTSDocExample.js +88 -0
  170. package/dist/ts-factory/tsdoc/createUseQueriesOperationTSDocExample.js.map +1 -0
  171. package/dist/ts-factory/tsdoc/createUseQueryOperationTSDocExample.d.ts +3 -0
  172. package/dist/ts-factory/tsdoc/createUseQueryOperationTSDocExample.d.ts.map +1 -0
  173. package/dist/ts-factory/tsdoc/createUseQueryOperationTSDocExample.js +37 -0
  174. package/dist/ts-factory/tsdoc/createUseQueryOperationTSDocExample.js.map +1 -0
  175. package/dist/ts-factory/tsdoc/createUseSuspenseInfiniteQueryOperationTSDocExample.d.ts +3 -0
  176. package/dist/ts-factory/tsdoc/createUseSuspenseInfiniteQueryOperationTSDocExample.d.ts.map +1 -0
  177. package/dist/ts-factory/tsdoc/createUseSuspenseInfiniteQueryOperationTSDocExample.js +39 -0
  178. package/dist/ts-factory/tsdoc/createUseSuspenseInfiniteQueryOperationTSDocExample.js.map +1 -0
  179. package/dist/ts-factory/tsdoc/lib/createOperationMethodCallExpressionExampleNode.d.ts +7 -0
  180. package/dist/ts-factory/tsdoc/lib/createOperationMethodCallExpressionExampleNode.d.ts.map +1 -0
  181. package/dist/ts-factory/tsdoc/lib/createOperationMethodCallExpressionExampleNode.js +6 -0
  182. package/dist/ts-factory/tsdoc/lib/createOperationMethodCallExpressionExampleNode.js.map +1 -0
  183. package/dist/ts-factory/tsdoc/lib/createOperationMethodParametersExampleNodes.d.ts +4 -0
  184. package/dist/ts-factory/tsdoc/lib/createOperationMethodParametersExampleNodes.d.ts.map +1 -0
  185. package/dist/ts-factory/tsdoc/lib/createOperationMethodParametersExampleNodes.js +47 -0
  186. package/dist/ts-factory/tsdoc/lib/createOperationMethodParametersExampleNodes.js.map +1 -0
  187. package/package.json +9 -6
  188. package/src/generateCode.ts +49 -0
  189. package/src/lib/createOperationCommonTSDoc.ts +11 -0
  190. package/src/lib/maybeResolveImport.ts +19 -0
  191. package/src/plugin.ts +13 -7
  192. package/src/ts-factory/getClientFactory.ts +125 -1
  193. package/src/ts-factory/getCreatePredefinedParametersRequestFnFactory.ts +346 -0
  194. package/src/ts-factory/getIndexFactory.ts +1 -20
  195. package/src/ts-factory/getServiceFactory.ts +425 -91
  196. package/src/ts-factory/service-operation.generated/.gitkeep +0 -0
  197. package/src/ts-factory/service-operation.generated/ServiceOperationCancelQueries.ts +171 -0
  198. package/src/ts-factory/service-operation.generated/ServiceOperationFetchInfiniteQuery.ts +340 -0
  199. package/src/ts-factory/service-operation.generated/ServiceOperationFetchQuery.ts +219 -0
  200. package/src/ts-factory/service-operation.generated/ServiceOperationGetInfiniteQueryData.ts +134 -0
  201. package/src/ts-factory/service-operation.generated/ServiceOperationGetQueriesData.ts +258 -0
  202. package/src/ts-factory/service-operation.generated/ServiceOperationGetQueryData.ts +120 -0
  203. package/src/ts-factory/service-operation.generated/ServiceOperationGetQueryState.ts +248 -0
  204. package/src/ts-factory/service-operation.generated/ServiceOperationInvalidateQueries.ts +137 -0
  205. package/src/ts-factory/service-operation.generated/ServiceOperationIsFetchingQueries.ts +141 -0
  206. package/src/ts-factory/service-operation.generated/ServiceOperationIsMutatingQueries.ts +151 -0
  207. package/src/ts-factory/service-operation.generated/ServiceOperationMutationFn.ts +175 -0
  208. package/src/ts-factory/service-operation.generated/ServiceOperationQueryFn.ts +278 -0
  209. package/src/ts-factory/service-operation.generated/ServiceOperationRefetchQueries.ts +171 -0
  210. package/src/ts-factory/service-operation.generated/ServiceOperationRemoveQueries.ts +141 -0
  211. package/src/ts-factory/service-operation.generated/ServiceOperationResetQueries.ts +171 -0
  212. package/src/ts-factory/service-operation.generated/ServiceOperationSetInfiniteQueryData.ts +201 -0
  213. package/src/ts-factory/service-operation.generated/ServiceOperationSetQueriesData.ts +221 -0
  214. package/src/ts-factory/service-operation.generated/ServiceOperationSetQueryData.ts +167 -0
  215. package/src/ts-factory/service-operation.generated/ServiceOperationUseInfiniteQuery.ts +534 -0
  216. package/src/ts-factory/service-operation.generated/ServiceOperationUseIsFetchingQueries.ts +141 -0
  217. package/src/ts-factory/service-operation.generated/ServiceOperationUseIsMutating.ts +151 -0
  218. package/src/ts-factory/service-operation.generated/ServiceOperationUseMutation.ts +354 -0
  219. package/src/ts-factory/service-operation.generated/ServiceOperationUseMutationState.ts +276 -0
  220. package/src/ts-factory/service-operation.generated/ServiceOperationUseQueries.ts +191 -0
  221. package/src/ts-factory/service-operation.generated/ServiceOperationUseQuery.ts +392 -0
  222. package/src/ts-factory/service-operation.generated/ServiceOperationUseSuspenseInfiniteQuery.ts +299 -0
  223. package/src/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQueries.ts +204 -0
  224. package/src/ts-factory/service-operation.generated/ServiceOperationUseSuspenseQuery.ts +212 -0
  225. package/src/ts-factory/tsdoc/createOperationMethodTSDocExample.ts +65 -0
  226. package/src/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.ts +135 -0
  227. package/src/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.ts +81 -0
  228. package/src/ts-factory/tsdoc/createUseIsMutatingOperationTSDocExample.ts +74 -0
  229. package/src/ts-factory/tsdoc/createUseMutationOperationTSDocExample.ts +88 -0
  230. package/src/ts-factory/tsdoc/createUseMutationStateOperationTSDocExample.ts +154 -0
  231. package/src/ts-factory/tsdoc/createUseQueriesOperationTSDocExample.ts +292 -0
  232. package/src/ts-factory/tsdoc/createUseQueryOperationTSDocExample.ts +76 -0
  233. package/src/ts-factory/tsdoc/createUseSuspenseInfiniteQueryOperationTSDocExample.ts +63 -0
  234. package/src/ts-factory/tsdoc/lib/createOperationMethodCallExpressionExampleNode.ts +28 -0
  235. 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
  };
@@ -272,9 +383,12 @@ const getOperationBodyFactory = (operation: ServiceOperation) => {
272
383
  );
273
384
  };
274
385
 
275
- const getOperationParametersFactory = (operation: ServiceOperation) => {
276
- if (!operation.parameters)
277
- return factory.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword);
386
+ const createOperationParametersFactory = (operation: ServiceOperation) => {
387
+ if (!operation.parameters?.length)
388
+ return operation.method === 'get'
389
+ ? factory.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword)
390
+ : // mutation with predefined parameters fallback to an empty object
391
+ factory.createTypeLiteralNode([]);
278
392
 
279
393
  return factory.createIndexedAccessTypeNode(
280
394
  factory.createIndexedAccessTypeNode(
@@ -296,7 +410,7 @@ const getOperationParametersFactory = (operation: ServiceOperation) => {
296
410
  };
297
411
 
298
412
  const getServiceVariableFactory = (
299
- { variableName }: { variableName: string },
413
+ service: Service,
300
414
  operations: ServiceOperation[]
301
415
  ) => {
302
416
  return factory.createVariableStatement(
@@ -304,10 +418,12 @@ const getServiceVariableFactory = (
304
418
  factory.createVariableDeclarationList(
305
419
  [
306
420
  factory.createVariableDeclaration(
307
- factory.createIdentifier(variableName),
421
+ factory.createIdentifier(service.variableName),
308
422
  undefined,
309
423
  factory.createTypeLiteralNode(
310
- operations.map(getServiceVariableTypeFactory)
424
+ operations.map((operation) =>
425
+ getServiceVariableTypeFactory(operation)
426
+ )
311
427
  ),
312
428
  factory.createObjectLiteralExpression(
313
429
  operations.map(getServiceVariablePropertyFactory),
@@ -320,6 +436,65 @@ const getServiceVariableFactory = (
320
436
  );
321
437
  };
322
438
 
439
+ const getOperationsTypes = (operations: ServiceOperation[]) => {
440
+ return operations.flatMap((operation) => {
441
+ const nodes = [
442
+ factory.createTypeAliasDeclaration(
443
+ undefined,
444
+ factory.createIdentifier(getOperationSchemaTypeName(operation)),
445
+ undefined,
446
+ getOperationSchemaFactory(operation)
447
+ ),
448
+ factory.createTypeAliasDeclaration(
449
+ undefined,
450
+ factory.createIdentifier(getOperationParametersTypeName(operation)),
451
+ undefined,
452
+ createOperationParametersFactory(operation)
453
+ ),
454
+ factory.createTypeAliasDeclaration(
455
+ undefined,
456
+ factory.createIdentifier(getOperationDataTypeName(operation)),
457
+ undefined,
458
+ getOperationResponseFactory(operation, 'success')
459
+ ),
460
+ factory.createTypeAliasDeclaration(
461
+ undefined,
462
+ factory.createIdentifier(getOperationErrorTypeName(operation)),
463
+ undefined,
464
+ getOperationResponseFactory(operation, 'errors')
465
+ ),
466
+ ];
467
+
468
+ if (operation.method !== 'get') {
469
+ nodes.push(
470
+ factory.createTypeAliasDeclaration(
471
+ undefined,
472
+ factory.createIdentifier(getOperationBodyTypeName(operation)),
473
+ undefined,
474
+ getOperationBodyFactory(operation)
475
+ )
476
+ );
477
+ }
478
+
479
+ return nodes;
480
+ });
481
+ };
482
+
483
+ const getOperationSchemaTypeName = (operation: ServiceOperation) =>
484
+ camelCase(`${operation.name}-Schema`, { pascalCase: true });
485
+
486
+ const getOperationParametersTypeName = (operation: ServiceOperation) =>
487
+ camelCase(`${operation.name}-Parameters`, { pascalCase: true });
488
+
489
+ const getOperationDataTypeName = (operation: ServiceOperation) =>
490
+ camelCase(`${operation.name}-Data`, { pascalCase: true });
491
+
492
+ const getOperationErrorTypeName = (operation: ServiceOperation) =>
493
+ camelCase(`${operation.name}-Error`, { pascalCase: true });
494
+
495
+ const getOperationBodyTypeName = (operation: ServiceOperation) =>
496
+ camelCase(`${operation.name}-Body`, { pascalCase: true });
497
+
323
498
  const getServiceVariableTypeFactory = (operation: ServiceOperation) => {
324
499
  const node = factory.createPropertySignature(
325
500
  undefined,
@@ -335,7 +510,7 @@ const getServiceVariableTypeFactory = (operation: ServiceOperation) => {
335
510
  ])
336
511
  );
337
512
 
338
- addSyntheticLeadingOperationComment(node, operation);
513
+ addOperationTSDoc(node, operation);
339
514
 
340
515
  return node;
341
516
  };
@@ -402,23 +577,8 @@ const createMultilineComment = (comment: string[]) => {
402
577
  return '';
403
578
  };
404
579
 
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);
580
+ const addOperationTSDoc = (node: ts.Node, operation: ServiceOperation) => {
581
+ const comment = createMultilineComment(createOperationCommonTSDoc(operation));
422
582
 
423
583
  if (comment)
424
584
  ts.addSyntheticLeadingComment(
@@ -435,3 +595,177 @@ const getOperationSecuritySchemas = (
435
595
  security.flatMap((security) =>
436
596
  Object.keys(security).map((securitySchemaName) => securitySchemaName)
437
597
  );
598
+
599
+ const createServicesQueryOperationNodes = () => [
600
+ ...createServiceOperationCancelQueriesNodes(),
601
+ ...createServiceOperationUseQueryNodes(),
602
+ ...createServiceOperationFetchInfiniteQueryNodes(),
603
+ ...createServiceOperationFetchQueryNodes(),
604
+ ...createServiceOperationGetInfiniteQueryDataNodes(),
605
+ ...createServiceOperationGetQueriesDataNodes(),
606
+ ...createServiceOperationGetQueryDataNodes(),
607
+ ...createServiceOperationGetQueryStateNodes(),
608
+ ...createServiceOperationInvalidateQueriesNodes(),
609
+ ...createServiceOperationIsFetchingQueriesNodes(),
610
+ ...createServiceOperationQueryFnNodes(),
611
+ ...createServiceOperationRefetchQueriesNodes(),
612
+ ...createServiceOperationRemoveQueriesNodes(),
613
+ ...createServiceOperationResetQueriesNodes(),
614
+ ...createServiceOperationSetInfiniteQueryDataNodes(),
615
+ ...createServiceOperationSetQueriesDataNodes(),
616
+ ...createServiceOperationSetQueryDataNodes(),
617
+ ...createServiceOperationUseInfiniteQueryNodes(),
618
+ ...createServiceOperationUseIsFetchingQueriesNodes(),
619
+ ...createServiceOperationUseQueriesNodes(),
620
+ ...createServiceOperationUseQueryNodes(),
621
+ ...createServiceOperationUseSuspenseInfiniteQueryNodes(),
622
+ ...createServiceOperationUseSuspenseQueriesNodes(),
623
+ ...createServiceOperationUseSuspenseQueryNodes(),
624
+ ];
625
+
626
+ const createServicesMutationOperationNodes = () => [
627
+ ...createServiceOperationUseMutationNodes(),
628
+ ...createServiceOperationUseIsMutatingNodes(),
629
+ ...createServiceOperationIsMutatingQueriesNodes(),
630
+ ...createServiceOperationMutationFnNodes(),
631
+ ...createServiceOperationUseMutationStateNodes(),
632
+ ];
633
+
634
+ const getMethodSignatureNodes = (
635
+ nodes: ts.Node[]
636
+ ): (ts.MethodSignature | ts.CallSignatureDeclaration)[] => {
637
+ return nodes.flatMap((node) =>
638
+ ts.isInterfaceDeclaration(node)
639
+ ? node.members.filter(
640
+ (node) =>
641
+ ts.isMethodSignature(node) || ts.isCallSignatureDeclaration(node)
642
+ )
643
+ : []
644
+ );
645
+ };
646
+
647
+ const getModuleTypeImports = (nodes: ts.Node[]) => {
648
+ return nodes
649
+ .map((node) => {
650
+ const foo =
651
+ ts.isImportDeclaration(node) &&
652
+ ts.isStringLiteral(node.moduleSpecifier) &&
653
+ node.importClause?.isTypeOnly &&
654
+ node.importClause.namedBindings &&
655
+ ts.isNamedImports(node.importClause.namedBindings)
656
+ ? {
657
+ module: node.moduleSpecifier.text,
658
+ imports: node.importClause.namedBindings.elements
659
+ .filter(ts.isImportSpecifier)
660
+ .map((specifier) => specifier.name.text),
661
+ }
662
+ : undefined;
663
+
664
+ return foo;
665
+ })
666
+ .reduce<Record<string, string[]>>((acc, item) => {
667
+ if (!item) return acc;
668
+ if (!acc[item.module])
669
+ acc[item.module] = item.imports.filter(arrayFilterUniqueCallback);
670
+ else
671
+ acc[item.module] = [...acc[item.module], ...item.imports].filter(
672
+ arrayFilterUniqueCallback
673
+ );
674
+
675
+ return acc;
676
+ }, {});
677
+ };
678
+
679
+ /**
680
+ * Replaces generic types with operation types with named types.
681
+ *
682
+ * For example, replaces `TParams` and `TQueryFnData` will be
683
+ * replaced with `GetEntitiesSchemaParameters` and `GetEntitiesSchemaData`.
684
+ */
685
+ function replaceGenericTypesWithOperationTypes<T extends ts.Node>(
686
+ node: T[],
687
+ operation: ServiceOperation
688
+ ): T[] {
689
+ const transformer =
690
+ (context: ts.TransformationContext) => (rootNode: ts.Node) => {
691
+ function visit(node: ts.Node): ts.Node {
692
+ if (ts.isTypeReferenceNode(node) && ts.isIdentifier(node.typeName)) {
693
+ let newTypeName;
694
+
695
+ if (node.typeName.text === 'TSchema')
696
+ newTypeName = getOperationSchemaTypeName(operation);
697
+ else if (node.typeName.text === 'TParams')
698
+ newTypeName = getOperationParametersTypeName(operation);
699
+ else if (
700
+ node.typeName.text === 'TQueryFnData' ||
701
+ node.typeName.text === 'TMutationData'
702
+ )
703
+ newTypeName = getOperationDataTypeName(operation);
704
+ else if (node.typeName.text === 'TError')
705
+ newTypeName = getOperationErrorTypeName(operation);
706
+ else if (node.typeName.text === 'TBody')
707
+ newTypeName = getOperationBodyTypeName(operation);
708
+
709
+ if (newTypeName) {
710
+ return ts.factory.createTypeReferenceNode(
711
+ ts.factory.createIdentifier(newTypeName),
712
+ node.typeArguments
713
+ );
714
+ }
715
+ }
716
+ return ts.visitEachChild(node, visit, context);
717
+ }
718
+ return ts.visitNode(rootNode, visit);
719
+ };
720
+
721
+ const result = ts.transform(node, [transformer]);
722
+
723
+ return result.transformed as T[];
724
+ }
725
+
726
+ /**
727
+ * Replaces `AreAllOptional<TParams>` with `TParams | void` if `TParams` is optional,
728
+ * and with `TParams` when at least one parameter is required.
729
+ */
730
+ function reduceAreAllOptionalConditionalTParamsType<T extends ts.Node>(
731
+ node: T[],
732
+ operation: ServiceOperation
733
+ ): T[] {
734
+ const transformer =
735
+ (context: ts.TransformationContext) => (rootNode: ts.Node) => {
736
+ function visit(node: ts.Node): ts.Node {
737
+ if (
738
+ ts.isConditionalTypeNode(node) &&
739
+ ts.isTypeReferenceNode(node.checkType) &&
740
+ ts.isIdentifier(node.checkType.typeName) &&
741
+ node.checkType.typeName.text === 'AreAllOptional' &&
742
+ node.checkType.typeArguments?.every((node) => {
743
+ return (
744
+ ts.isTypeReferenceNode(node) &&
745
+ ts.isIdentifier(node.typeName) &&
746
+ node.typeName.text === 'TParams'
747
+ );
748
+ })
749
+ ) {
750
+ if (
751
+ !operation.parameters?.length ||
752
+ operation.parameters.every((parameter) => !parameter.required)
753
+ ) {
754
+ return node.trueType;
755
+ } else {
756
+ return node.falseType;
757
+ }
758
+ }
759
+ return ts.visitEachChild(node, visit, context);
760
+ }
761
+ return ts.visitNode(rootNode, visit);
762
+ };
763
+
764
+ const result = ts.transform(node, [transformer]);
765
+
766
+ return result.transformed as T[];
767
+ }
768
+
769
+ function arrayFilterUniqueCallback<T>(value: T, index: number, self: T[]) {
770
+ return self.indexOf(value) === index;
771
+ }