@openapi-qraft/tanstack-query-react-plugin 2.5.0 → 2.6.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 (48) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/generateCode.d.ts +5 -0
  3. package/dist/generateCode.d.ts.map +1 -1
  4. package/dist/generateCode.js +23 -21
  5. package/dist/generateCode.js.map +1 -1
  6. package/dist/lib/parseOptionSubValues.d.ts +11 -0
  7. package/dist/lib/parseOptionSubValues.d.ts.map +1 -0
  8. package/dist/lib/parseOptionSubValues.js +30 -0
  9. package/dist/lib/parseOptionSubValues.js.map +1 -0
  10. package/dist/plugin.d.ts.map +1 -1
  11. package/dist/plugin.js +62 -1
  12. package/dist/plugin.js.map +1 -1
  13. package/dist/ts-factory/getCallbackNames.d.ts +5 -0
  14. package/dist/ts-factory/getCallbackNames.d.ts.map +1 -0
  15. package/dist/ts-factory/getCallbackNames.js +35 -0
  16. package/dist/ts-factory/getCallbackNames.js.map +1 -0
  17. package/dist/ts-factory/getCreateAPIClientFactory.d.ts +11 -0
  18. package/dist/ts-factory/getCreateAPIClientFactory.d.ts.map +1 -0
  19. package/dist/ts-factory/getCreateAPIClientFactory.js +254 -0
  20. package/dist/ts-factory/getCreateAPIClientFactory.js.map +1 -0
  21. package/dist/ts-factory/getCreatePredefinedParametersRequestFnFactory.d.ts +1 -1
  22. package/dist/ts-factory/getIndexFactory.d.ts +7 -1
  23. package/dist/ts-factory/getIndexFactory.d.ts.map +1 -1
  24. package/dist/ts-factory/getIndexFactory.js +4 -4
  25. package/dist/ts-factory/getIndexFactory.js.map +1 -1
  26. package/dist/ts-factory/getServiceFactory.d.ts +1 -1
  27. package/dist/ts-factory/getServiceFactory.d.ts.map +1 -1
  28. package/dist/ts-factory/getServiceFactory.js +32 -84
  29. package/dist/ts-factory/getServiceFactory.js.map +1 -1
  30. package/dist/ts-factory/getServiceIndexFactory.d.ts +1 -1
  31. package/dist/ts-factory/serviceOperationNodes.d.ts +11 -0
  32. package/dist/ts-factory/serviceOperationNodes.d.ts.map +1 -0
  33. package/dist/ts-factory/serviceOperationNodes.js +68 -0
  34. package/dist/ts-factory/serviceOperationNodes.js.map +1 -0
  35. package/package.json +3 -3
  36. package/src/generateCode.ts +33 -25
  37. package/src/lib/parseOptionSubValues.ts +44 -0
  38. package/src/plugin.ts +124 -1
  39. package/src/ts-factory/getCallbackNames.ts +45 -0
  40. package/src/ts-factory/getCreateAPIClientFactory.ts +1014 -0
  41. package/src/ts-factory/getIndexFactory.ts +25 -11
  42. package/src/ts-factory/getServiceFactory.ts +126 -138
  43. package/src/ts-factory/serviceOperationNodes.ts +73 -0
  44. package/dist/ts-factory/getClientFactory.d.ts +0 -8
  45. package/dist/ts-factory/getClientFactory.d.ts.map +0 -1
  46. package/dist/ts-factory/getClientFactory.js +0 -92
  47. package/dist/ts-factory/getClientFactory.js.map +0 -1
  48. package/src/ts-factory/getClientFactory.ts +0 -344
@@ -3,10 +3,14 @@ import ts from 'typescript';
3
3
  import { maybeResolveImport } from '../lib/maybeResolveImport.js';
4
4
 
5
5
  export const getIndexFactory = ({
6
+ createApiClientFn,
6
7
  openapiTypesImportPath,
7
8
  servicesDirName,
8
9
  explicitImportExtensions,
9
10
  }: {
11
+ createApiClientFn: Array<
12
+ [functionName: string, value: CreateAPIClientFnOptions]
13
+ >;
10
14
  servicesDirName: string;
11
15
  explicitImportExtensions: '.js' | '.ts' | undefined;
12
16
  } & Partial<Pick<ServiceFactoryOptions, 'openapiTypesImportPath'>>) => {
@@ -66,18 +70,28 @@ export const getIndexFactory = ({
66
70
  ),
67
71
  undefined
68
72
  ),
69
- factory.createExportDeclaration(
70
- undefined,
71
- false,
72
- factory.createNamedExports([
73
- factory.createExportSpecifier(
74
- false,
75
- undefined,
76
- factory.createIdentifier('createAPIClient')
73
+ ...createApiClientFn.map(([functionName, value]) =>
74
+ factory.createExportDeclaration(
75
+ undefined,
76
+ false,
77
+ factory.createNamedExports([
78
+ factory.createExportSpecifier(
79
+ false,
80
+ undefined,
81
+ factory.createIdentifier(functionName)
82
+ ),
83
+ ]),
84
+ factory.createStringLiteral(
85
+ `./${value.filename[0] ?? functionName}${importExtension}`
77
86
  ),
78
- ]),
79
- factory.createStringLiteral(`./create-api-client${importExtension}`),
80
- undefined
87
+ undefined
88
+ )
81
89
  ),
82
90
  ];
83
91
  };
92
+
93
+ export type CreateAPIClientFnOptions = {
94
+ services: ['all' | 'none'];
95
+ callbacks: ['all' | 'none'] | string[];
96
+ filename: [string];
97
+ };
@@ -4,34 +4,10 @@ import camelCase from 'camelcase';
4
4
  import ts from 'typescript';
5
5
  import { createOperationCommonTSDoc } from '../lib/createOperationCommonTSDoc.js';
6
6
  import { filterUnusedTypes } from './filterUnusedTypes.js';
7
- import { createServiceOperationCancelQueriesNodes } from './service-operation.generated/ServiceOperationCancelQueries.js';
8
- import { createServiceOperationFetchInfiniteQueryNodes } from './service-operation.generated/ServiceOperationFetchInfiniteQuery.js';
9
- import { createServiceOperationFetchQueryNodes } from './service-operation.generated/ServiceOperationFetchQuery.js';
10
- import { createServiceOperationGetInfiniteQueryDataNodes } from './service-operation.generated/ServiceOperationGetInfiniteQueryData.js';
11
- import { createServiceOperationGetQueriesDataNodes } from './service-operation.generated/ServiceOperationGetQueriesData.js';
12
- import { createServiceOperationGetQueryDataNodes } from './service-operation.generated/ServiceOperationGetQueryData.js';
13
- import { createServiceOperationGetQueryStateNodes } from './service-operation.generated/ServiceOperationGetQueryState.js';
14
- import { createServiceOperationInvalidateQueriesNodes } from './service-operation.generated/ServiceOperationInvalidateQueries.js';
15
- import { createServiceOperationIsFetchingQueriesNodes } from './service-operation.generated/ServiceOperationIsFetchingQueries.js';
16
- import { createServiceOperationIsMutatingQueriesNodes } from './service-operation.generated/ServiceOperationIsMutatingQueries.js';
17
- import { createServiceOperationMutationFnNodes } from './service-operation.generated/ServiceOperationMutationFn.js';
18
- import { createServiceOperationQueryFnNodes } from './service-operation.generated/ServiceOperationQueryFn.js';
19
- import { createServiceOperationRefetchQueriesNodes } from './service-operation.generated/ServiceOperationRefetchQueries.js';
20
- import { createServiceOperationRemoveQueriesNodes } from './service-operation.generated/ServiceOperationRemoveQueries.js';
21
- import { createServiceOperationResetQueriesNodes } from './service-operation.generated/ServiceOperationResetQueries.js';
22
- import { createServiceOperationSetInfiniteQueryDataNodes } from './service-operation.generated/ServiceOperationSetInfiniteQueryData.js';
23
- import { createServiceOperationSetQueriesDataNodes } from './service-operation.generated/ServiceOperationSetQueriesData.js';
24
- import { createServiceOperationSetQueryDataNodes } from './service-operation.generated/ServiceOperationSetQueryData.js';
25
- import { createServiceOperationUseInfiniteQueryNodes } from './service-operation.generated/ServiceOperationUseInfiniteQuery.js';
26
- import { createServiceOperationUseIsFetchingQueriesNodes } from './service-operation.generated/ServiceOperationUseIsFetchingQueries.js';
27
- import { createServiceOperationUseIsMutatingNodes } from './service-operation.generated/ServiceOperationUseIsMutating.js';
28
- import { createServiceOperationUseMutationNodes } from './service-operation.generated/ServiceOperationUseMutation.js';
29
- import { createServiceOperationUseMutationStateNodes } from './service-operation.generated/ServiceOperationUseMutationState.js';
30
- import { createServiceOperationUseQueriesNodes } from './service-operation.generated/ServiceOperationUseQueries.js';
31
- import { createServiceOperationUseQueryNodes } from './service-operation.generated/ServiceOperationUseQuery.js';
32
- import { createServiceOperationUseSuspenseInfiniteQueryNodes } from './service-operation.generated/ServiceOperationUseSuspenseInfiniteQuery.js';
33
- import { createServiceOperationUseSuspenseQueriesNodes } from './service-operation.generated/ServiceOperationUseSuspenseQueries.js';
34
- import { createServiceOperationUseSuspenseQueryNodes } from './service-operation.generated/ServiceOperationUseSuspenseQuery.js';
7
+ import {
8
+ createServicesMutationOperationNodes,
9
+ createServicesQueryOperationNodes,
10
+ } from './serviceOperationNodes.js';
35
11
  import { createOperationMethodTSDocExample } from './tsdoc/createOperationMethodTSDocExample.js';
36
12
 
37
13
  const factory = ts.factory;
@@ -48,17 +24,33 @@ export const getServiceFactory = (
48
24
  operations: ServiceOperation[],
49
25
  options: ServiceFactoryOptions
50
26
  ) => {
27
+ const operationVariables = operations.map((operation) =>
28
+ getServiceOperationVariableFactory(service.typeName, operation)
29
+ );
30
+
31
+ const serviceVariable = getServiceVariableFactory(service, operations);
32
+
51
33
  const mainNodes = [
52
34
  getServiceInterfaceFactory(service, operations, options),
53
- getServiceVariableFactory(service, operations),
35
+ ...operationVariables,
36
+ serviceVariable,
54
37
  ...getOperationsTypes(operations, options),
55
38
  ];
56
39
 
40
+ const internalModulesTypeImports = filterUnusedTypes(
41
+ getModuleTypeImports(operations, options),
42
+ mainNodes
43
+ );
44
+ internalModulesTypeImports['@openapi-qraft/tanstack-query-react-types'] = [
45
+ ...(internalModulesTypeImports[
46
+ '@openapi-qraft/tanstack-query-react-types'
47
+ ] ?? []),
48
+ 'QraftServiceOperationsToken',
49
+ ];
50
+
57
51
  const importNodes = [
58
52
  getOpenAPISchemaImportsFactory(options.openapiTypesImportPath),
59
- ...getServiceOperationImportsFactory(
60
- filterUnusedTypes(getModuleTypeImports(operations, options), mainNodes)
61
- ),
53
+ ...getServiceOperationImportsFactory(internalModulesTypeImports),
62
54
  ];
63
55
 
64
56
  return [...importNodes, ...mainNodes];
@@ -505,14 +497,21 @@ const getServiceVariableFactory = (
505
497
  factory.createVariableDeclaration(
506
498
  factory.createIdentifier(service.variableName),
507
499
  undefined,
508
- factory.createTypeLiteralNode(
509
- operations.map((operation) =>
510
- getServiceVariableTypeFactory(operation)
500
+ undefined,
501
+ factory.createAsExpression(
502
+ factory.createObjectLiteralExpression(
503
+ operations.map((operation) =>
504
+ factory.createShorthandPropertyAssignment(
505
+ factory.createIdentifier(operation.name),
506
+ undefined
507
+ )
508
+ ),
509
+ true
510
+ ),
511
+ factory.createTypeReferenceNode(
512
+ factory.createIdentifier('const'),
513
+ undefined
511
514
  )
512
- ),
513
- factory.createObjectLiteralExpression(
514
- operations.map(getServiceVariablePropertyFactory),
515
- true
516
515
  )
517
516
  ),
518
517
  ],
@@ -631,75 +630,103 @@ const getOperationErrorTypeName = (operation: ServiceOperation) =>
631
630
  const getOperationBodyTypeName = (operation: ServiceOperation) =>
632
631
  camelCase(`${operation.name}-Body`, { pascalCase: true });
633
632
 
634
- const getServiceVariableTypeFactory = (operation: ServiceOperation) => {
635
- const node = factory.createPropertySignature(
636
- undefined,
637
- factory.createIdentifier(operation.name),
638
- undefined,
639
- factory.createTypeLiteralNode([
640
- factory.createPropertySignature(
641
- undefined,
642
- factory.createIdentifier('schema'),
643
- undefined,
644
- factory.createTypeReferenceNode(getOperationSchemaTypeName(operation))
645
- ),
646
- ])
647
- );
648
-
649
- addOperationTSDoc(node, operation);
650
-
651
- return node;
652
- };
653
-
654
- const getServiceVariablePropertyFactory = (operation: ServiceOperation) => {
655
- return factory.createPropertyAssignment(
656
- factory.createIdentifier(operation.name),
657
- factory.createObjectLiteralExpression(
633
+ const getServiceOperationVariableFactory = (
634
+ serviceName: string,
635
+ operation: ServiceOperation
636
+ ) => {
637
+ const variableNode = factory.createVariableStatement(
638
+ [factory.createToken(ts.SyntaxKind.ExportKeyword)],
639
+ factory.createVariableDeclarationList(
658
640
  [
659
- factory.createPropertyAssignment(
660
- factory.createIdentifier('schema'),
661
- factory.createObjectLiteralExpression(
662
- [
663
- factory.createPropertyAssignment(
664
- factory.createIdentifier('method'),
665
- factory.createStringLiteral(operation.method)
666
- ),
667
- factory.createPropertyAssignment(
668
- factory.createIdentifier('url'),
669
- factory.createStringLiteral(operation.path)
670
- ),
671
- operation.requestBody?.content
672
- ? factory.createPropertyAssignment(
673
- factory.createIdentifier('mediaType'),
674
- factory.createArrayLiteralExpression(
675
- Object.keys(operation.requestBody.content).map(
676
- (mediaType) => factory.createStringLiteral(mediaType)
677
- )
678
- )
641
+ factory.createVariableDeclaration(
642
+ factory.createIdentifier(operation.name),
643
+ undefined,
644
+ undefined,
645
+ factory.createAsExpression(
646
+ factory.createObjectLiteralExpression(
647
+ [
648
+ factory.createPropertyAssignment(
649
+ factory.createIdentifier('schema'),
650
+ factory.createObjectLiteralExpression(
651
+ [
652
+ factory.createPropertyAssignment(
653
+ factory.createIdentifier('method'),
654
+ factory.createStringLiteral(operation.method)
655
+ ),
656
+ factory.createPropertyAssignment(
657
+ factory.createIdentifier('url'),
658
+ factory.createStringLiteral(operation.path)
659
+ ),
660
+ operation.requestBody?.content
661
+ ? factory.createPropertyAssignment(
662
+ factory.createIdentifier('mediaType'),
663
+ factory.createArrayLiteralExpression(
664
+ Object.keys(operation.requestBody.content).map(
665
+ (mediaType) =>
666
+ factory.createStringLiteral(mediaType)
667
+ )
668
+ )
669
+ )
670
+ : null,
671
+
672
+ operation.security
673
+ ? factory.createPropertyAssignment(
674
+ factory.createIdentifier('security'),
675
+ factory.createArrayLiteralExpression(
676
+ getOperationSecuritySchemas(
677
+ operation.security
678
+ ).map((securitySchemaName) =>
679
+ factory.createStringLiteral(securitySchemaName)
680
+ )
681
+ )
682
+ )
683
+ : null,
684
+ ].filter((node): node is NonNullable<typeof node> =>
685
+ Boolean(node)
686
+ ),
687
+ true
679
688
  )
680
- : null,
681
-
682
- operation.security
683
- ? factory.createPropertyAssignment(
684
- factory.createIdentifier('security'),
685
- factory.createArrayLiteralExpression(
686
- getOperationSecuritySchemas(operation.security).map(
687
- (securitySchemaName) =>
688
- factory.createStringLiteral(securitySchemaName)
689
- )
690
- )
689
+ ),
690
+ ],
691
+ true
692
+ ),
693
+ factory.createTypeLiteralNode([
694
+ factory.createPropertySignature(
695
+ undefined,
696
+ factory.createIdentifier('schema'),
697
+ undefined,
698
+ factory.createTypeReferenceNode(
699
+ getOperationSchemaTypeName(operation)
700
+ )
701
+ ),
702
+ factory.createPropertySignature(
703
+ undefined,
704
+ factory.createComputedPropertyName(
705
+ factory.createIdentifier('QraftServiceOperationsToken')
706
+ ),
707
+ undefined,
708
+ factory.createIndexedAccessTypeNode(
709
+ factory.createTypeReferenceNode(
710
+ factory.createIdentifier(serviceName),
711
+ undefined
712
+ ),
713
+ factory.createLiteralTypeNode(
714
+ factory.createStringLiteral(operation.name)
691
715
  )
692
- : null,
693
- ].filter((node): node is NonNullable<typeof node> => Boolean(node)),
694
- true
716
+ )
717
+ ),
718
+ ])
695
719
  )
696
720
  ),
697
721
  ],
698
- true
722
+ ts.NodeFlags.Const
699
723
  )
700
724
  );
701
- };
702
725
 
726
+ addOperationTSDoc(variableNode, operation);
727
+
728
+ return variableNode;
729
+ };
703
730
  const createMultilineComment = (comment: string[]) => {
704
731
  const output = comment.flatMap((line) =>
705
732
  line.includes('\n') ? line.split('\n') : line
@@ -736,45 +763,6 @@ const getOperationSecuritySchemas = (
736
763
  Object.keys(security).map((securitySchemaName) => securitySchemaName)
737
764
  );
738
765
 
739
- const createServicesQueryOperationNodes = ({
740
- omitOperationQueryFnNodes,
741
- }: {
742
- omitOperationQueryFnNodes: boolean;
743
- }) => [
744
- ...createServiceOperationCancelQueriesNodes(),
745
- ...createServiceOperationUseQueryNodes(),
746
- ...createServiceOperationFetchInfiniteQueryNodes(),
747
- ...createServiceOperationFetchQueryNodes(),
748
- ...createServiceOperationGetInfiniteQueryDataNodes(),
749
- ...createServiceOperationGetQueriesDataNodes(),
750
- ...createServiceOperationGetQueryDataNodes(),
751
- ...createServiceOperationGetQueryStateNodes(),
752
- ...createServiceOperationInvalidateQueriesNodes(),
753
- ...createServiceOperationIsFetchingQueriesNodes(),
754
- ...(omitOperationQueryFnNodes ? [] : createServiceOperationQueryFnNodes()),
755
- ...createServiceOperationRefetchQueriesNodes(),
756
- ...createServiceOperationRemoveQueriesNodes(),
757
- ...createServiceOperationResetQueriesNodes(),
758
- ...createServiceOperationSetInfiniteQueryDataNodes(),
759
- ...createServiceOperationSetQueriesDataNodes(),
760
- ...createServiceOperationSetQueryDataNodes(),
761
- ...createServiceOperationUseInfiniteQueryNodes(),
762
- ...createServiceOperationUseIsFetchingQueriesNodes(),
763
- ...createServiceOperationUseQueriesNodes(),
764
- ...createServiceOperationUseQueryNodes(),
765
- ...createServiceOperationUseSuspenseInfiniteQueryNodes(),
766
- ...createServiceOperationUseSuspenseQueriesNodes(),
767
- ...createServiceOperationUseSuspenseQueryNodes(),
768
- ];
769
-
770
- const createServicesMutationOperationNodes = () => [
771
- ...createServiceOperationUseMutationNodes(),
772
- ...createServiceOperationUseIsMutatingNodes(),
773
- ...createServiceOperationIsMutatingQueriesNodes(),
774
- ...createServiceOperationMutationFnNodes(),
775
- ...createServiceOperationUseMutationStateNodes(),
776
- ];
777
-
778
766
  const getMethodSignatureNodes = (
779
767
  nodes: ts.Node[]
780
768
  ): (ts.MethodSignature | ts.CallSignatureDeclaration)[] => {
@@ -0,0 +1,73 @@
1
+ import { createServiceOperationCancelQueriesNodes } from './service-operation.generated/ServiceOperationCancelQueries.js';
2
+ import { createServiceOperationFetchInfiniteQueryNodes } from './service-operation.generated/ServiceOperationFetchInfiniteQuery.js';
3
+ import { createServiceOperationFetchQueryNodes } from './service-operation.generated/ServiceOperationFetchQuery.js';
4
+ import { createServiceOperationGetInfiniteQueryDataNodes } from './service-operation.generated/ServiceOperationGetInfiniteQueryData.js';
5
+ import { createServiceOperationGetQueriesDataNodes } from './service-operation.generated/ServiceOperationGetQueriesData.js';
6
+ import { createServiceOperationGetQueryDataNodes } from './service-operation.generated/ServiceOperationGetQueryData.js';
7
+ import { createServiceOperationGetQueryStateNodes } from './service-operation.generated/ServiceOperationGetQueryState.js';
8
+ import { createServiceOperationInvalidateQueriesNodes } from './service-operation.generated/ServiceOperationInvalidateQueries.js';
9
+ import { createServiceOperationIsFetchingQueriesNodes } from './service-operation.generated/ServiceOperationIsFetchingQueries.js';
10
+ import { createServiceOperationIsMutatingQueriesNodes } from './service-operation.generated/ServiceOperationIsMutatingQueries.js';
11
+ import { createServiceOperationMutationFnNodes } from './service-operation.generated/ServiceOperationMutationFn.js';
12
+ import { createServiceOperationQueryFnNodes } from './service-operation.generated/ServiceOperationQueryFn.js';
13
+ import { createServiceOperationRefetchQueriesNodes } from './service-operation.generated/ServiceOperationRefetchQueries.js';
14
+ import { createServiceOperationRemoveQueriesNodes } from './service-operation.generated/ServiceOperationRemoveQueries.js';
15
+ import { createServiceOperationResetQueriesNodes } from './service-operation.generated/ServiceOperationResetQueries.js';
16
+ import { createServiceOperationSetInfiniteQueryDataNodes } from './service-operation.generated/ServiceOperationSetInfiniteQueryData.js';
17
+ import { createServiceOperationSetQueriesDataNodes } from './service-operation.generated/ServiceOperationSetQueriesData.js';
18
+ import { createServiceOperationSetQueryDataNodes } from './service-operation.generated/ServiceOperationSetQueryData.js';
19
+ import { createServiceOperationUseInfiniteQueryNodes } from './service-operation.generated/ServiceOperationUseInfiniteQuery.js';
20
+ import { createServiceOperationUseIsFetchingQueriesNodes } from './service-operation.generated/ServiceOperationUseIsFetchingQueries.js';
21
+ import { createServiceOperationUseIsMutatingNodes } from './service-operation.generated/ServiceOperationUseIsMutating.js';
22
+ import { createServiceOperationUseMutationNodes } from './service-operation.generated/ServiceOperationUseMutation.js';
23
+ import { createServiceOperationUseMutationStateNodes } from './service-operation.generated/ServiceOperationUseMutationState.js';
24
+ import { createServiceOperationUseQueriesNodes } from './service-operation.generated/ServiceOperationUseQueries.js';
25
+ import { createServiceOperationUseQueryNodes } from './service-operation.generated/ServiceOperationUseQuery.js';
26
+ import { createServiceOperationUseSuspenseInfiniteQueryNodes } from './service-operation.generated/ServiceOperationUseSuspenseInfiniteQuery.js';
27
+ import { createServiceOperationUseSuspenseQueriesNodes } from './service-operation.generated/ServiceOperationUseSuspenseQueries.js';
28
+ import { createServiceOperationUseSuspenseQueryNodes } from './service-operation.generated/ServiceOperationUseSuspenseQuery.js';
29
+
30
+ /**
31
+ * Creates AST nodes for all query operation methods
32
+ */
33
+ export const createServicesQueryOperationNodes = ({
34
+ omitOperationQueryFnNodes,
35
+ }: {
36
+ omitOperationQueryFnNodes: boolean;
37
+ }) => [
38
+ ...createServiceOperationCancelQueriesNodes(),
39
+ ...createServiceOperationUseQueryNodes(),
40
+ ...createServiceOperationFetchInfiniteQueryNodes(),
41
+ ...createServiceOperationFetchQueryNodes(),
42
+ ...createServiceOperationGetInfiniteQueryDataNodes(),
43
+ ...createServiceOperationGetQueriesDataNodes(),
44
+ ...createServiceOperationGetQueryDataNodes(),
45
+ ...createServiceOperationGetQueryStateNodes(),
46
+ ...createServiceOperationInvalidateQueriesNodes(),
47
+ ...createServiceOperationIsFetchingQueriesNodes(),
48
+ ...(omitOperationQueryFnNodes ? [] : createServiceOperationQueryFnNodes()),
49
+ ...createServiceOperationRefetchQueriesNodes(),
50
+ ...createServiceOperationRemoveQueriesNodes(),
51
+ ...createServiceOperationResetQueriesNodes(),
52
+ ...createServiceOperationSetInfiniteQueryDataNodes(),
53
+ ...createServiceOperationSetQueriesDataNodes(),
54
+ ...createServiceOperationSetQueryDataNodes(),
55
+ ...createServiceOperationUseInfiniteQueryNodes(),
56
+ ...createServiceOperationUseIsFetchingQueriesNodes(),
57
+ ...createServiceOperationUseQueriesNodes(),
58
+ ...createServiceOperationUseQueryNodes(),
59
+ ...createServiceOperationUseSuspenseInfiniteQueryNodes(),
60
+ ...createServiceOperationUseSuspenseQueriesNodes(),
61
+ ...createServiceOperationUseSuspenseQueryNodes(),
62
+ ];
63
+
64
+ /**
65
+ * Creates AST nodes for all mutation operation methods
66
+ */
67
+ export const createServicesMutationOperationNodes = () => [
68
+ ...createServiceOperationUseMutationNodes(),
69
+ ...createServiceOperationUseIsMutatingNodes(),
70
+ ...createServiceOperationIsMutatingQueriesNodes(),
71
+ ...createServiceOperationMutationFnNodes(),
72
+ ...createServiceOperationUseMutationStateNodes(),
73
+ ];
@@ -1,8 +0,0 @@
1
- import ts from 'typescript';
2
- type Options = {
3
- servicesDirName: string;
4
- explicitImportExtensions: '.js' | '.ts' | undefined;
5
- };
6
- export declare const getClientFactory: (options: Options) => (ts.ImportDeclaration | ts.FunctionDeclaration | ts.TypeAliasDeclaration)[];
7
- export {};
8
- //# sourceMappingURL=getClientFactory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getClientFactory.d.ts","sourceRoot":"","sources":["../../src/ts-factory/getClientFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,KAAK,OAAO,GAAG;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,wBAAwB,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;CACrD,CAAC;AAEF,eAAO,MAAM,gBAAgB,YAAa,OAAO,gFAKhD,CAAC"}
@@ -1,92 +0,0 @@
1
- import ts from 'typescript';
2
- export const getClientFactory = (options) => {
3
- return [
4
- ...getClientImportsFactory(options),
5
- ...getCreateClientFunctionFactory(),
6
- ];
7
- };
8
- const getClientImportsFactory = ({ servicesDirName, explicitImportExtensions, }) => {
9
- const factory = ts.factory;
10
- return [
11
- factory.createImportDeclaration(undefined, factory.createImportClause(false, undefined, factory.createNamedImports([
12
- factory.createImportSpecifier(false, undefined, factory.createIdentifier('qraftAPIClient')),
13
- ...[
14
- 'APIBasicClientServices',
15
- 'APIBasicQueryClientServices',
16
- 'APIUtilityClientServices',
17
- 'CreateAPIBasicQueryClientOptions',
18
- 'CreateAPIBasicClientOptions',
19
- 'CreateAPIClientOptions',
20
- 'CreateAPIQueryClientOptions',
21
- ].map((name) => factory.createImportSpecifier(true, undefined, factory.createIdentifier(name))),
22
- ])), factory.createStringLiteral('@openapi-qraft/react'), undefined),
23
- factory.createImportDeclaration(undefined, factory.createImportClause(false, undefined, factory.createNamespaceImport(factory.createIdentifier('callbacks'))), factory.createStringLiteral('@openapi-qraft/react/callbacks/index'), undefined),
24
- factory.createImportDeclaration(undefined, factory.createImportClause(false, undefined, factory.createNamedImports([
25
- factory.createImportSpecifier(false, undefined, factory.createIdentifier('services')),
26
- factory.createImportSpecifier(true, undefined, factory.createIdentifier('Services')),
27
- ])), factory.createStringLiteral(`./${servicesDirName}/index${explicitImportExtensions ?? ''}`), undefined),
28
- ];
29
- };
30
- const getCreateClientFunctionFactory = () => {
31
- const factory = ts.factory;
32
- return [
33
- factory.createFunctionDeclaration([factory.createToken(ts.SyntaxKind.ExportKeyword)], undefined, factory.createIdentifier('createAPIClient'), undefined, [
34
- factory.createParameterDeclaration(undefined, undefined, factory.createIdentifier('options'), undefined, factory.createTypeReferenceNode(factory.createIdentifier('CreateAPIQueryClientOptions'), undefined), undefined),
35
- ], factory.createTypeReferenceNode(factory.createIdentifier('Services'), undefined), undefined),
36
- factory.createFunctionDeclaration([factory.createToken(ts.SyntaxKind.ExportKeyword)], undefined, factory.createIdentifier('createAPIClient'), undefined, [
37
- factory.createParameterDeclaration(undefined, undefined, factory.createIdentifier('options'), undefined, factory.createTypeReferenceNode(factory.createIdentifier('CreateAPIBasicQueryClientOptions'), undefined), undefined),
38
- ], factory.createTypeReferenceNode(factory.createIdentifier('APIBasicQueryClientServices'), [
39
- factory.createTypeReferenceNode(factory.createIdentifier('Services'), undefined),
40
- factory.createTypeReferenceNode(factory.createIdentifier('ServiceMethods'), undefined),
41
- ]), undefined),
42
- factory.createFunctionDeclaration([factory.createToken(ts.SyntaxKind.ExportKeyword)], undefined, factory.createIdentifier('createAPIClient'), undefined, [
43
- factory.createParameterDeclaration(undefined, undefined, factory.createIdentifier('options'), undefined, factory.createTypeReferenceNode(factory.createIdentifier('CreateAPIBasicClientOptions'), undefined), undefined),
44
- ], factory.createTypeReferenceNode(factory.createIdentifier('APIBasicClientServices'), [
45
- factory.createTypeReferenceNode(factory.createIdentifier('Services'), undefined),
46
- factory.createTypeReferenceNode(factory.createIdentifier('ServiceMethods'), undefined),
47
- ]), undefined),
48
- factory.createFunctionDeclaration([factory.createToken(ts.SyntaxKind.ExportKeyword)], undefined, factory.createIdentifier('createAPIClient'), undefined, [], factory.createTypeReferenceNode(factory.createIdentifier('APIUtilityClientServices'), [
49
- factory.createTypeReferenceNode(factory.createIdentifier('Services'), undefined),
50
- factory.createTypeReferenceNode(factory.createIdentifier('ServiceMethods'), undefined),
51
- ]), undefined),
52
- factory.createFunctionDeclaration([factory.createToken(ts.SyntaxKind.ExportKeyword)], undefined, factory.createIdentifier('createAPIClient'), undefined, [
53
- factory.createParameterDeclaration(undefined, undefined, factory.createIdentifier('options'), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createTypeReferenceNode(factory.createIdentifier('CreateAPIClientOptions'), undefined), undefined),
54
- ], factory.createUnionTypeNode([
55
- factory.createTypeReferenceNode(factory.createIdentifier('Services'), undefined),
56
- factory.createTypeReferenceNode(factory.createIdentifier('APIBasicClientServices'), [
57
- factory.createTypeReferenceNode(factory.createIdentifier('Services'), undefined),
58
- factory.createTypeReferenceNode(factory.createIdentifier('ServiceMethods'), undefined),
59
- ]),
60
- factory.createTypeReferenceNode(factory.createIdentifier('APIUtilityClientServices'), [
61
- factory.createTypeReferenceNode(factory.createIdentifier('Services'), undefined),
62
- factory.createTypeReferenceNode(factory.createIdentifier('ServiceMethods'), undefined),
63
- ]),
64
- ]), factory.createBlock([
65
- factory.createIfStatement(factory.createPrefixUnaryExpression(ts.SyntaxKind.ExclamationToken, factory.createIdentifier('options')), factory.createReturnStatement(factory.createCallExpression(factory.createIdentifier('qraftAPIClient'), [
66
- factory.createTypeReferenceNode(factory.createIdentifier('Services'), undefined),
67
- factory.createTypeReferenceNode(factory.createIdentifier('ServiceMethods'), undefined),
68
- ], [
69
- factory.createIdentifier('services'),
70
- factory.createIdentifier('callbacks'),
71
- ])), undefined),
72
- factory.createIfStatement(factory.createBinaryExpression(factory.createStringLiteral('requestFn'), factory.createToken(ts.SyntaxKind.InKeyword), factory.createIdentifier('options')), factory.createReturnStatement(factory.createCallExpression(factory.createIdentifier('qraftAPIClient'), [
73
- factory.createTypeReferenceNode(factory.createIdentifier('Services'), undefined),
74
- factory.createTypeReferenceNode(factory.createIdentifier('ServiceMethods'), undefined),
75
- ], [
76
- factory.createIdentifier('services'),
77
- factory.createIdentifier('callbacks'),
78
- factory.createIdentifier('options'),
79
- ])), undefined),
80
- factory.createReturnStatement(factory.createCallExpression(factory.createIdentifier('qraftAPIClient'), [
81
- factory.createTypeReferenceNode(factory.createIdentifier('Services'), undefined),
82
- factory.createTypeReferenceNode(factory.createIdentifier('ServiceMethods'), undefined),
83
- ], [
84
- factory.createIdentifier('services'),
85
- factory.createIdentifier('callbacks'),
86
- factory.createIdentifier('options'),
87
- ])),
88
- ], true)),
89
- factory.createTypeAliasDeclaration(undefined, factory.createIdentifier('ServiceMethods'), undefined, factory.createTypeQueryNode(factory.createIdentifier('callbacks'), undefined)),
90
- ];
91
- };
92
- //# sourceMappingURL=getClientFactory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getClientFactory.js","sourceRoot":"","sources":["../../src/ts-factory/getClientFactory.ts"],"names":[],"mappings":"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"}