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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/CHANGELOG.md +124 -0
  2. package/dist/generateCode.d.ts +3 -3
  3. package/dist/generateCode.d.ts.map +1 -1
  4. package/dist/generateCode.js +3 -3
  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/plugin.d.ts.map +1 -1
  11. package/dist/plugin.js +4 -1
  12. package/dist/plugin.js.map +1 -1
  13. package/dist/ts-factory/filterUnusedTypes.d.ts +9 -0
  14. package/dist/ts-factory/filterUnusedTypes.d.ts.map +1 -0
  15. package/dist/ts-factory/filterUnusedTypes.js +34 -0
  16. package/dist/ts-factory/filterUnusedTypes.js.map +1 -0
  17. package/dist/ts-factory/getClientFactory.d.ts +1 -1
  18. package/dist/ts-factory/getClientFactory.d.ts.map +1 -1
  19. package/dist/ts-factory/getClientFactory.js +1 -1
  20. package/dist/ts-factory/getClientFactory.js.map +1 -1
  21. package/dist/ts-factory/getIndexFactory.d.ts +1 -1
  22. package/dist/ts-factory/getIndexFactory.d.ts.map +1 -1
  23. package/dist/ts-factory/getIndexFactory.js +2 -2
  24. package/dist/ts-factory/getIndexFactory.js.map +1 -1
  25. package/dist/ts-factory/getServiceFactory.d.ts +5 -3
  26. package/dist/ts-factory/getServiceFactory.d.ts.map +1 -1
  27. package/dist/ts-factory/getServiceFactory.js +124 -72
  28. package/dist/ts-factory/getServiceFactory.js.map +1 -1
  29. package/dist/ts-factory/getServiceIndexFactory.d.ts +3 -3
  30. package/dist/ts-factory/getServiceIndexFactory.d.ts.map +1 -1
  31. package/dist/ts-factory/getServiceIndexFactory.js +1 -1
  32. package/dist/ts-factory/getServiceIndexFactory.js.map +1 -1
  33. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchInfiniteQuery.d.ts.map +1 -1
  34. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchInfiniteQuery.js +26 -67
  35. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchInfiniteQuery.js.map +1 -1
  36. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchQuery.d.ts.map +1 -1
  37. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchQuery.js +16 -1
  38. package/dist/ts-factory/service-operation.generated/ServiceOperationFetchQuery.js.map +1 -1
  39. package/dist/ts-factory/service-operation.generated/ServiceOperationGetInfiniteQueryData.d.ts.map +1 -1
  40. package/dist/ts-factory/service-operation.generated/ServiceOperationGetInfiniteQueryData.js +6 -10
  41. package/dist/ts-factory/service-operation.generated/ServiceOperationGetInfiniteQueryData.js.map +1 -1
  42. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryData.d.ts.map +1 -1
  43. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryData.js +6 -10
  44. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryData.js.map +1 -1
  45. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryState.d.ts.map +1 -1
  46. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryState.js +6 -10
  47. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryState.js.map +1 -1
  48. package/dist/ts-factory/service-operation.generated/ServiceOperationMutationFn.d.ts.map +1 -1
  49. package/dist/ts-factory/service-operation.generated/ServiceOperationMutationFn.js +7 -4
  50. package/dist/ts-factory/service-operation.generated/ServiceOperationMutationFn.js.map +1 -1
  51. package/dist/ts-factory/service-operation.generated/ServiceOperationQueryFn.d.ts.map +1 -1
  52. package/dist/ts-factory/service-operation.generated/ServiceOperationQueryFn.js +11 -17
  53. package/dist/ts-factory/service-operation.generated/ServiceOperationQueryFn.js.map +1 -1
  54. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueryData.d.ts.map +1 -1
  55. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueryData.js +9 -3
  56. package/dist/ts-factory/service-operation.generated/ServiceOperationSetQueryData.js.map +1 -1
  57. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutation.d.ts.map +1 -1
  58. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutation.js +12 -15
  59. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutation.js.map +1 -1
  60. package/dist/ts-factory/tsdoc/createOperationMethodTSDocExample.d.ts +6 -0
  61. package/dist/ts-factory/tsdoc/createOperationMethodTSDocExample.d.ts.map +1 -0
  62. package/dist/ts-factory/tsdoc/createOperationMethodTSDocExample.js +31 -0
  63. package/dist/ts-factory/tsdoc/createOperationMethodTSDocExample.js.map +1 -0
  64. package/dist/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.d.ts +5 -0
  65. package/dist/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.d.ts.map +1 -0
  66. package/dist/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.js +53 -0
  67. package/dist/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.js.map +1 -0
  68. package/dist/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.d.ts +3 -0
  69. package/dist/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.d.ts.map +1 -0
  70. package/dist/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.js +41 -0
  71. package/dist/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.js.map +1 -0
  72. package/dist/ts-factory/tsdoc/createUseIsMutatingOperationTSDocExample.d.ts +3 -0
  73. package/dist/ts-factory/tsdoc/createUseIsMutatingOperationTSDocExample.d.ts.map +1 -0
  74. package/dist/ts-factory/tsdoc/createUseIsMutatingOperationTSDocExample.js +41 -0
  75. package/dist/ts-factory/tsdoc/createUseIsMutatingOperationTSDocExample.js.map +1 -0
  76. package/dist/ts-factory/tsdoc/createUseMutationOperationTSDocExample.d.ts +3 -0
  77. package/dist/ts-factory/tsdoc/createUseMutationOperationTSDocExample.d.ts.map +1 -0
  78. package/dist/ts-factory/tsdoc/createUseMutationOperationTSDocExample.js +44 -0
  79. package/dist/ts-factory/tsdoc/createUseMutationOperationTSDocExample.js.map +1 -0
  80. package/dist/ts-factory/tsdoc/createUseMutationStateOperationTSDocExample.d.ts +3 -0
  81. package/dist/ts-factory/tsdoc/createUseMutationStateOperationTSDocExample.d.ts.map +1 -0
  82. package/dist/ts-factory/tsdoc/createUseMutationStateOperationTSDocExample.js +55 -0
  83. package/dist/ts-factory/tsdoc/createUseMutationStateOperationTSDocExample.js.map +1 -0
  84. package/dist/ts-factory/tsdoc/createUseQueriesOperationTSDocExample.d.ts +3 -0
  85. package/dist/ts-factory/tsdoc/createUseQueriesOperationTSDocExample.d.ts.map +1 -0
  86. package/dist/ts-factory/tsdoc/createUseQueriesOperationTSDocExample.js +88 -0
  87. package/dist/ts-factory/tsdoc/createUseQueriesOperationTSDocExample.js.map +1 -0
  88. package/dist/ts-factory/tsdoc/createUseQueryOperationTSDocExample.d.ts +3 -0
  89. package/dist/ts-factory/tsdoc/createUseQueryOperationTSDocExample.d.ts.map +1 -0
  90. package/dist/ts-factory/tsdoc/createUseQueryOperationTSDocExample.js +37 -0
  91. package/dist/ts-factory/tsdoc/createUseQueryOperationTSDocExample.js.map +1 -0
  92. package/dist/ts-factory/tsdoc/createUseSuspenseInfiniteQueryOperationTSDocExample.d.ts +3 -0
  93. package/dist/ts-factory/tsdoc/createUseSuspenseInfiniteQueryOperationTSDocExample.d.ts.map +1 -0
  94. package/dist/ts-factory/tsdoc/createUseSuspenseInfiniteQueryOperationTSDocExample.js +39 -0
  95. package/dist/ts-factory/tsdoc/createUseSuspenseInfiniteQueryOperationTSDocExample.js.map +1 -0
  96. package/dist/ts-factory/tsdoc/lib/createOperationMethodCallExpressionExampleNode.d.ts +7 -0
  97. package/dist/ts-factory/tsdoc/lib/createOperationMethodCallExpressionExampleNode.d.ts.map +1 -0
  98. package/dist/ts-factory/tsdoc/lib/createOperationMethodCallExpressionExampleNode.js +6 -0
  99. package/dist/ts-factory/tsdoc/lib/createOperationMethodCallExpressionExampleNode.js.map +1 -0
  100. package/dist/ts-factory/tsdoc/lib/createOperationMethodParametersExampleNodes.d.ts +4 -0
  101. package/dist/ts-factory/tsdoc/lib/createOperationMethodParametersExampleNodes.d.ts.map +1 -0
  102. package/dist/ts-factory/tsdoc/lib/createOperationMethodParametersExampleNodes.js +47 -0
  103. package/dist/ts-factory/tsdoc/lib/createOperationMethodParametersExampleNodes.js.map +1 -0
  104. package/package.json +6 -6
  105. package/src/generateCode.ts +8 -8
  106. package/src/lib/createOperationCommonTSDoc.ts +11 -0
  107. package/src/plugin.ts +8 -3
  108. package/src/ts-factory/filterUnusedTypes.ts +49 -0
  109. package/src/ts-factory/getClientFactory.ts +2 -2
  110. package/src/ts-factory/getIndexFactory.ts +13 -4
  111. package/src/ts-factory/getServiceFactory.ts +213 -139
  112. package/src/ts-factory/getServiceIndexFactory.ts +7 -7
  113. package/src/ts-factory/service-operation.generated/ServiceOperationFetchInfiniteQuery.ts +101 -190
  114. package/src/ts-factory/service-operation.generated/ServiceOperationFetchQuery.ts +80 -0
  115. package/src/ts-factory/service-operation.generated/ServiceOperationGetInfiniteQueryData.ts +28 -41
  116. package/src/ts-factory/service-operation.generated/ServiceOperationGetQueryData.ts +28 -41
  117. package/src/ts-factory/service-operation.generated/ServiceOperationGetQueryState.ts +28 -41
  118. package/src/ts-factory/service-operation.generated/ServiceOperationMutationFn.ts +23 -22
  119. package/src/ts-factory/service-operation.generated/ServiceOperationQueryFn.ts +49 -70
  120. package/src/ts-factory/service-operation.generated/ServiceOperationSetQueryData.ts +34 -10
  121. package/src/ts-factory/service-operation.generated/ServiceOperationUseMutation.ts +42 -59
  122. package/src/ts-factory/tsdoc/createOperationMethodTSDocExample.ts +65 -0
  123. package/src/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.ts +135 -0
  124. package/src/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.ts +81 -0
  125. package/src/ts-factory/tsdoc/createUseIsMutatingOperationTSDocExample.ts +74 -0
  126. package/src/ts-factory/tsdoc/createUseMutationOperationTSDocExample.ts +88 -0
  127. package/src/ts-factory/tsdoc/createUseMutationStateOperationTSDocExample.ts +154 -0
  128. package/src/ts-factory/tsdoc/createUseQueriesOperationTSDocExample.ts +292 -0
  129. package/src/ts-factory/tsdoc/createUseQueryOperationTSDocExample.ts +76 -0
  130. package/src/ts-factory/tsdoc/createUseSuspenseInfiniteQueryOperationTSDocExample.ts +63 -0
  131. package/src/ts-factory/tsdoc/lib/createOperationMethodCallExpressionExampleNode.ts +28 -0
  132. package/src/ts-factory/tsdoc/lib/createOperationMethodParametersExampleNodes.ts +83 -0
@@ -0,0 +1,76 @@
1
+ import { ServiceOperation } from '@openapi-qraft/plugin/lib/open-api/OpenAPIService';
2
+ import ts from 'typescript';
3
+ import { createOperationCommonTSDoc } from '../../lib/createOperationCommonTSDoc.js';
4
+ import { astToString } from '../astToString.js';
5
+ import { createOperationMethodCallExpressionExampleNode } from './lib/createOperationMethodCallExpressionExampleNode.js';
6
+ import { createOperationMethodParametersExampleNodes } from './lib/createOperationMethodParametersExampleNodes.js';
7
+
8
+ export const createUseQueryOperationTSDocExample = (
9
+ operation: ServiceOperation,
10
+ serviceVariableName: string
11
+ ) => {
12
+ const example: string[] = [
13
+ 'Performs asynchronous data fetching, manages loading states and error handling.',
14
+ '',
15
+ ...createOperationCommonTSDoc(operation),
16
+ '@see {@link https://openapi-qraft.github.io/openapi-qraft/docs/hooks/useQuery|`useQuery(...)` documentation}',
17
+ ];
18
+
19
+ if (
20
+ !operation.parameters?.length ||
21
+ operation.parameters.every((parameter) => !parameter.required)
22
+ ) {
23
+ example.push(
24
+ '@example Query without parameters',
25
+ '```ts',
26
+ ...(
27
+ 'const { data, isLoading } = ' +
28
+ astToString(
29
+ createOperationMethodCallExpressionExampleNode(
30
+ operation,
31
+ {
32
+ serviceVariableName,
33
+ operationMethodName: 'useQuery',
34
+ },
35
+ undefined
36
+ )
37
+ )
38
+ )
39
+ .trim()
40
+ .split('\n'),
41
+ '```'
42
+ );
43
+ }
44
+
45
+ if (operation.parameters?.length) {
46
+ const factory = ts.factory;
47
+
48
+ example.push(
49
+ '@example Query with parameters',
50
+ '```ts',
51
+ ...(
52
+ 'const { data, isLoading } = ' +
53
+ astToString(
54
+ createOperationMethodCallExpressionExampleNode(
55
+ operation,
56
+ {
57
+ serviceVariableName,
58
+ operationMethodName: 'useQuery',
59
+ },
60
+ [
61
+ factory.createObjectLiteralExpression(
62
+ createOperationMethodParametersExampleNodes(operation),
63
+ true
64
+ ),
65
+ ]
66
+ )
67
+ )
68
+ )
69
+ .trim()
70
+ .split('\n'),
71
+ '```'
72
+ );
73
+ }
74
+
75
+ return example;
76
+ };
@@ -0,0 +1,63 @@
1
+ import { ServiceOperation } from '@openapi-qraft/plugin/lib/open-api/OpenAPIService';
2
+ import ts from 'typescript';
3
+ import { astToString } from '../astToString.js';
4
+ import { createInfiniteQueryOptionsArgumentExamplePropertyAssignmentNodes } from './createUseInfiniteQueryOperationTSDocExample.js';
5
+ import { createOperationMethodCallExpressionExampleNode } from './lib/createOperationMethodCallExpressionExampleNode.js';
6
+ import { createOperationMethodParametersExampleNodes } from './lib/createOperationMethodParametersExampleNodes.js';
7
+
8
+ export const createUseSuspenseInfiniteQueryOperationTSDocExample = (
9
+ operation: ServiceOperation,
10
+ serviceVariableName: string
11
+ ): string[] => {
12
+ const factory = ts.factory;
13
+
14
+ const commonTSDoc = [
15
+ 'Performs asynchronous data fetching with support for infinite scrolling scenarios.',
16
+ 'Manages paginated data and provides utilities for fetching additional pages.',
17
+ 'It functions similarly to `useInfiniteQuery`, but with added support for React Suspense.',
18
+ '',
19
+ '@see {@link https://openapi-qraft.github.io/openapi-qraft/docs/hooks/useSuspenseInfiniteQuery|`useSuspenseInfiniteQuery(...)` documentation}',
20
+ '',
21
+ ];
22
+
23
+ return [
24
+ ...commonTSDoc,
25
+ '@example Suspense Infinite Query',
26
+ '```ts',
27
+ ...(
28
+ 'const { data, isLoading, fetchNextPage } = ' +
29
+ astToString(
30
+ createOperationMethodCallExpressionExampleNode(
31
+ operation,
32
+ {
33
+ serviceVariableName,
34
+ operationMethodName: 'useSuspenseInfiniteQuery',
35
+ },
36
+ [
37
+ factory.createObjectLiteralExpression(
38
+ createOperationMethodParametersExampleNodes({
39
+ ...operation,
40
+ parameters: operation.parameters?.filter((parameter) =>
41
+ parameter.in === 'query' ? parameter.required : true
42
+ ),
43
+ }),
44
+ true
45
+ ),
46
+ factory.createObjectLiteralExpression(
47
+ createInfiniteQueryOptionsArgumentExamplePropertyAssignmentNodes(
48
+ operation
49
+ ),
50
+ true
51
+ ),
52
+ ]
53
+ )
54
+ )
55
+ )
56
+ .trim()
57
+ .split('\n'),
58
+ '',
59
+ 'console.log(data);',
60
+ 'fetchNextPage(); // Fetch the next page',
61
+ '```',
62
+ ];
63
+ };
@@ -0,0 +1,28 @@
1
+ import { ServiceOperation } from '@openapi-qraft/plugin/lib/open-api/OpenAPIService';
2
+ import ts from 'typescript';
3
+
4
+ export const createOperationMethodCallExpressionExampleNode = (
5
+ operation: ServiceOperation,
6
+ {
7
+ serviceVariableName,
8
+ operationMethodName,
9
+ }: { serviceVariableName: string; operationMethodName: string },
10
+ nodes: ts.Expression[] | undefined
11
+ ) => {
12
+ const factory = ts.factory;
13
+
14
+ return factory.createCallExpression(
15
+ factory.createPropertyAccessExpression(
16
+ factory.createPropertyAccessExpression(
17
+ factory.createPropertyAccessExpression(
18
+ factory.createIdentifier('qraft'),
19
+ factory.createIdentifier(serviceVariableName)
20
+ ),
21
+ factory.createIdentifier(operation.name)
22
+ ),
23
+ factory.createIdentifier(operationMethodName)
24
+ ),
25
+ undefined,
26
+ nodes
27
+ );
28
+ };
@@ -0,0 +1,83 @@
1
+ import { ServiceOperation } from '@openapi-qraft/plugin/lib/open-api/OpenAPIService';
2
+ import camelcase from 'camelcase';
3
+ import ts from 'typescript';
4
+
5
+ export const createOperationMethodParametersExampleNodes = (
6
+ operation: ServiceOperation,
7
+ transformOperationParameterIdentifier?: (
8
+ operationParameter: NonNullable<ServiceOperation['parameters']>[number]
9
+ ) => string
10
+ ): ts.PropertyAssignment[] => {
11
+ if (!operation.parameters) return [];
12
+
13
+ const parametersTypeList = operation.parameters
14
+ .map((parameter) => parameter.in)
15
+ .filter(
16
+ (parameterKind, index, array) => array.indexOf(parameterKind) === index
17
+ );
18
+
19
+ const operationRequiredParameters = operation.parameters.filter(
20
+ (parameter) => parameter.required
21
+ );
22
+
23
+ return parametersTypeList.reduce<ts.PropertyAssignment[]>(
24
+ (acc, parameterKind) => {
25
+ let operationParameters = operationRequiredParameters.filter(
26
+ (parameter) => parameter.in === parameterKind
27
+ );
28
+
29
+ if (!operationParameters.length) {
30
+ const operationParameter = operation.parameters?.find(
31
+ (parameter) => parameter.in === parameterKind
32
+ );
33
+ if (operationParameter) {
34
+ operationParameters = [operationParameter];
35
+ }
36
+ }
37
+
38
+ if (!operationParameters.length) return acc;
39
+
40
+ const factory = ts.factory;
41
+
42
+ return [
43
+ ...acc,
44
+ factory.createPropertyAssignment(
45
+ factory.createIdentifier(parameterKind),
46
+ factory.createObjectLiteralExpression(
47
+ operationParameters.map((parameter) =>
48
+ factory.createPropertyAssignment(
49
+ isIdentifierCompatibleVariableName(parameter.name)
50
+ ? factory.createIdentifier(parameter.name)
51
+ : factory.createStringLiteral(parameter.name),
52
+ parameter.example // todo:: add example type inferring
53
+ ? factory.createStringLiteral(parameter.example)
54
+ : factory.createIdentifier(
55
+ transformOperationParameterIdentifier
56
+ ? transformOperationParameterIdentifier(parameter)
57
+ : camelcase(parameter.name)
58
+ )
59
+ )
60
+ ),
61
+ true
62
+ )
63
+ ),
64
+ ];
65
+ },
66
+ []
67
+ );
68
+ };
69
+
70
+ /**
71
+ * Checks if the given name is a valid identifier name.
72
+ *
73
+ * @example
74
+ * ```ts
75
+ * isIdentifierCompatibleVariableName('foo'); // true
76
+ * isIdentifierCompatibleVariableName('foo-bar'); // false
77
+ * isIdentifierCompatibleVariableName('foo_bar'); // true
78
+ * isIdentifierCompatibleVariableName('foo.bar'); // false
79
+ * ```
80
+ */
81
+ function isIdentifierCompatibleVariableName(name: string) {
82
+ return !/[^a-zA-Z0-9_$]/.test(name);
83
+ }