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

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 (72) hide show
  1. package/CHANGELOG.md +8 -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/ts-factory/getServiceFactory.d.ts +4 -2
  7. package/dist/ts-factory/getServiceFactory.d.ts.map +1 -1
  8. package/dist/ts-factory/getServiceFactory.js +74 -34
  9. package/dist/ts-factory/getServiceFactory.js.map +1 -1
  10. package/dist/ts-factory/service-operation.generated/ServiceOperationGetInfiniteQueryData.d.ts.map +1 -1
  11. package/dist/ts-factory/service-operation.generated/ServiceOperationGetInfiniteQueryData.js +6 -10
  12. package/dist/ts-factory/service-operation.generated/ServiceOperationGetInfiniteQueryData.js.map +1 -1
  13. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryData.d.ts.map +1 -1
  14. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryData.js +6 -10
  15. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryData.js.map +1 -1
  16. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryState.d.ts.map +1 -1
  17. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryState.js +6 -10
  18. package/dist/ts-factory/service-operation.generated/ServiceOperationGetQueryState.js.map +1 -1
  19. package/dist/ts-factory/service-operation.generated/ServiceOperationQueryFn.d.ts.map +1 -1
  20. package/dist/ts-factory/service-operation.generated/ServiceOperationQueryFn.js +11 -17
  21. package/dist/ts-factory/service-operation.generated/ServiceOperationQueryFn.js.map +1 -1
  22. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutation.d.ts.map +1 -1
  23. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutation.js +12 -15
  24. package/dist/ts-factory/service-operation.generated/ServiceOperationUseMutation.js.map +1 -1
  25. package/dist/ts-factory/tsdoc/createOperationMethodTSDocExample.d.ts +6 -0
  26. package/dist/ts-factory/tsdoc/createOperationMethodTSDocExample.d.ts.map +1 -0
  27. package/dist/ts-factory/tsdoc/createOperationMethodTSDocExample.js +22 -0
  28. package/dist/ts-factory/tsdoc/createOperationMethodTSDocExample.js.map +1 -0
  29. package/dist/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.d.ts +3 -0
  30. package/dist/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.d.ts.map +1 -0
  31. package/dist/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.js +61 -0
  32. package/dist/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.js.map +1 -0
  33. package/dist/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.d.ts +3 -0
  34. package/dist/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.d.ts.map +1 -0
  35. package/dist/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.js +41 -0
  36. package/dist/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.js.map +1 -0
  37. package/dist/ts-factory/tsdoc/createUseIsMutatingOperationTSDocExample.d.ts +3 -0
  38. package/dist/ts-factory/tsdoc/createUseIsMutatingOperationTSDocExample.d.ts.map +1 -0
  39. package/dist/ts-factory/tsdoc/createUseIsMutatingOperationTSDocExample.js +41 -0
  40. package/dist/ts-factory/tsdoc/createUseIsMutatingOperationTSDocExample.js.map +1 -0
  41. package/dist/ts-factory/tsdoc/createUseMutationOperationTSDocExample.d.ts +3 -0
  42. package/dist/ts-factory/tsdoc/createUseMutationOperationTSDocExample.d.ts.map +1 -0
  43. package/dist/ts-factory/tsdoc/createUseMutationOperationTSDocExample.js +44 -0
  44. package/dist/ts-factory/tsdoc/createUseMutationOperationTSDocExample.js.map +1 -0
  45. package/dist/ts-factory/tsdoc/createUseQueryOperationTSDocExample.d.ts +3 -0
  46. package/dist/ts-factory/tsdoc/createUseQueryOperationTSDocExample.d.ts.map +1 -0
  47. package/dist/ts-factory/tsdoc/createUseQueryOperationTSDocExample.js +37 -0
  48. package/dist/ts-factory/tsdoc/createUseQueryOperationTSDocExample.js.map +1 -0
  49. package/dist/ts-factory/tsdoc/lib/createOperationMethodExampleNodes.d.ts +7 -0
  50. package/dist/ts-factory/tsdoc/lib/createOperationMethodExampleNodes.d.ts.map +1 -0
  51. package/dist/ts-factory/tsdoc/lib/createOperationMethodExampleNodes.js +8 -0
  52. package/dist/ts-factory/tsdoc/lib/createOperationMethodExampleNodes.js.map +1 -0
  53. package/dist/ts-factory/tsdoc/lib/createOperationMethodParametersExampleNodes.d.ts +4 -0
  54. package/dist/ts-factory/tsdoc/lib/createOperationMethodParametersExampleNodes.d.ts.map +1 -0
  55. package/dist/ts-factory/tsdoc/lib/createOperationMethodParametersExampleNodes.js +31 -0
  56. package/dist/ts-factory/tsdoc/lib/createOperationMethodParametersExampleNodes.js.map +1 -0
  57. package/package.json +6 -6
  58. package/src/lib/createOperationCommonTSDoc.ts +11 -0
  59. package/src/ts-factory/getServiceFactory.ts +121 -76
  60. package/src/ts-factory/service-operation.generated/ServiceOperationGetInfiniteQueryData.ts +28 -41
  61. package/src/ts-factory/service-operation.generated/ServiceOperationGetQueryData.ts +28 -41
  62. package/src/ts-factory/service-operation.generated/ServiceOperationGetQueryState.ts +28 -41
  63. package/src/ts-factory/service-operation.generated/ServiceOperationQueryFn.ts +49 -70
  64. package/src/ts-factory/service-operation.generated/ServiceOperationUseMutation.ts +42 -59
  65. package/src/ts-factory/tsdoc/createOperationMethodTSDocExample.ts +47 -0
  66. package/src/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.ts +146 -0
  67. package/src/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.ts +81 -0
  68. package/src/ts-factory/tsdoc/createUseIsMutatingOperationTSDocExample.ts +74 -0
  69. package/src/ts-factory/tsdoc/createUseMutationOperationTSDocExample.ts +88 -0
  70. package/src/ts-factory/tsdoc/createUseQueryOperationTSDocExample.ts +76 -0
  71. package/src/ts-factory/tsdoc/lib/createOperationMethodExampleNodes.ts +32 -0
  72. package/src/ts-factory/tsdoc/lib/createOperationMethodParametersExampleNodes.ts +66 -0
@@ -0,0 +1,88 @@
1
+ import type { ServiceOperation } from '@openapi-qraft/plugin/lib/open-api/getServices';
2
+ import ts from 'typescript';
3
+ import { astToString } from '../astToString.js';
4
+ import { createOperationMethodExampleNodes } from './lib/createOperationMethodExampleNodes.js';
5
+ import { createOperationMethodParametersExampleNodes } from './lib/createOperationMethodParametersExampleNodes.js';
6
+
7
+ export const createUseMutationOperationTSDocExample = (
8
+ operation: ServiceOperation,
9
+ serviceVariableName: string
10
+ ) => {
11
+ const factory = ts.factory;
12
+
13
+ const example: string[] = [
14
+ 'Enables performing asynchronous data mutation operations such as POST, PUT, PATCH, or DELETE requests.',
15
+ 'Handles loading state, optimistic updates, and error handling.',
16
+ '',
17
+ '@see {@link https://openapi-qraft.github.io/openapi-qraft/docs/hooks/useMutation|`useMutation(...)` documentation}',
18
+ '@example Mutation with predefined parameters, e.g., for updating',
19
+ '```ts',
20
+ ...(
21
+ 'const { mutate, isPending } = ' +
22
+ astToString(
23
+ createOperationMethodExampleNodes(
24
+ operation,
25
+ {
26
+ serviceVariableName,
27
+ operationMethodName: 'useMutation',
28
+ },
29
+ [
30
+ factory.createObjectLiteralExpression(
31
+ createOperationMethodParametersExampleNodes(operation),
32
+ true
33
+ ),
34
+ ]
35
+ )
36
+ )
37
+ )
38
+ .trim()
39
+ .split('\n'),
40
+ 'mutate(body);',
41
+ '```',
42
+ ];
43
+
44
+ example.push(
45
+ '@example Mutation without predefined parameters, e.g., for creating',
46
+ '```ts',
47
+ ...(
48
+ 'const { mutate, isPending } = ' +
49
+ astToString(
50
+ createOperationMethodExampleNodes(
51
+ operation,
52
+ {
53
+ serviceVariableName,
54
+ operationMethodName: 'useMutation',
55
+ },
56
+ undefined
57
+ )
58
+ )
59
+ )
60
+ .trim()
61
+ .split('\n'),
62
+ ...astToString([
63
+ factory.createExpressionStatement(
64
+ factory.createCallExpression(
65
+ factory.createIdentifier('mutate'),
66
+ undefined,
67
+ [
68
+ factory.createObjectLiteralExpression(
69
+ [
70
+ factory.createPropertyAssignment(
71
+ factory.createIdentifier('body'),
72
+ factory.createIdentifier('bodyPayload')
73
+ ),
74
+ ...createOperationMethodParametersExampleNodes(operation),
75
+ ],
76
+ true
77
+ ),
78
+ ]
79
+ )
80
+ ),
81
+ ])
82
+ .trim()
83
+ .split('\n'),
84
+ '```'
85
+ );
86
+
87
+ return example;
88
+ };
@@ -0,0 +1,76 @@
1
+ import { ServiceOperation } from '@openapi-qraft/plugin/lib/open-api/getServices';
2
+ import ts from 'typescript';
3
+ import { createOperationCommonTSDoc } from '../../lib/createOperationCommonTSDoc.js';
4
+ import { astToString } from '../astToString.js';
5
+ import { createOperationMethodExampleNodes } from './lib/createOperationMethodExampleNodes.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
+ createOperationMethodExampleNodes(
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
+ createOperationMethodExampleNodes(
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,32 @@
1
+ import { ServiceOperation } from '@openapi-qraft/plugin/lib/open-api/getServices';
2
+ import ts from 'typescript';
3
+
4
+ export const createOperationMethodExampleNodes = (
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 [
15
+ factory.createExpressionStatement(
16
+ factory.createCallExpression(
17
+ factory.createPropertyAccessExpression(
18
+ factory.createPropertyAccessExpression(
19
+ factory.createPropertyAccessExpression(
20
+ factory.createIdentifier('qraft'),
21
+ factory.createIdentifier(serviceVariableName)
22
+ ),
23
+ factory.createIdentifier(operation.name)
24
+ ),
25
+ factory.createIdentifier(operationMethodName)
26
+ ),
27
+ undefined,
28
+ nodes
29
+ )
30
+ ),
31
+ ];
32
+ };
@@ -0,0 +1,66 @@
1
+ import { ServiceOperation } from '@openapi-qraft/plugin/lib/open-api/getServices';
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
+ factory.createStringLiteral(parameter.name),
50
+ parameter.example // todo:: add example type inferring
51
+ ? factory.createStringLiteral(parameter.example)
52
+ : factory.createIdentifier(
53
+ transformOperationParameterIdentifier
54
+ ? transformOperationParameterIdentifier(parameter)
55
+ : camelcase(parameter.name)
56
+ )
57
+ )
58
+ ),
59
+ true
60
+ )
61
+ ),
62
+ ];
63
+ },
64
+ []
65
+ );
66
+ };