@openapi-qraft/tanstack-query-react-plugin 2.5.0-beta.0 → 2.5.0-beta.2

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 (50) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/ts-factory/getServiceFactory.js +24 -16
  3. package/dist/ts-factory/getServiceFactory.js.map +1 -1
  4. package/dist/ts-factory/tsdoc/createOperationMethodTSDocExample.d.ts +2 -1
  5. package/dist/ts-factory/tsdoc/createOperationMethodTSDocExample.d.ts.map +1 -1
  6. package/dist/ts-factory/tsdoc/createOperationMethodTSDocExample.js +8 -8
  7. package/dist/ts-factory/tsdoc/createOperationMethodTSDocExample.js.map +1 -1
  8. package/dist/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.d.ts +2 -1
  9. package/dist/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.d.ts.map +1 -1
  10. package/dist/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.js +10 -5
  11. package/dist/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.js.map +1 -1
  12. package/dist/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.d.ts +2 -1
  13. package/dist/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.d.ts.map +1 -1
  14. package/dist/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.js +9 -3
  15. package/dist/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.js.map +1 -1
  16. package/dist/ts-factory/tsdoc/createUseQueriesOperationTSDocExample.d.ts +3 -2
  17. package/dist/ts-factory/tsdoc/createUseQueriesOperationTSDocExample.d.ts.map +1 -1
  18. package/dist/ts-factory/tsdoc/createUseQueriesOperationTSDocExample.js +15 -6
  19. package/dist/ts-factory/tsdoc/createUseQueriesOperationTSDocExample.js.map +1 -1
  20. package/dist/ts-factory/tsdoc/createUseQueryOperationTSDocExample.d.ts +2 -1
  21. package/dist/ts-factory/tsdoc/createUseQueryOperationTSDocExample.d.ts.map +1 -1
  22. package/dist/ts-factory/tsdoc/createUseQueryOperationTSDocExample.js +11 -5
  23. package/dist/ts-factory/tsdoc/createUseQueryOperationTSDocExample.js.map +1 -1
  24. package/dist/ts-factory/tsdoc/createUseSuspenseInfiniteQueryOperationTSDocExample.d.ts +2 -1
  25. package/dist/ts-factory/tsdoc/createUseSuspenseInfiniteQueryOperationTSDocExample.d.ts.map +1 -1
  26. package/dist/ts-factory/tsdoc/createUseSuspenseInfiniteQueryOperationTSDocExample.js +10 -5
  27. package/dist/ts-factory/tsdoc/createUseSuspenseInfiniteQueryOperationTSDocExample.js.map +1 -1
  28. package/dist/ts-factory/tsdoc/createUseSuspenseQueriesOperationTSDocExample.d.ts +2 -1
  29. package/dist/ts-factory/tsdoc/createUseSuspenseQueriesOperationTSDocExample.d.ts.map +1 -1
  30. package/dist/ts-factory/tsdoc/createUseSuspenseQueriesOperationTSDocExample.js +3 -3
  31. package/dist/ts-factory/tsdoc/createUseSuspenseQueriesOperationTSDocExample.js.map +1 -1
  32. package/dist/ts-factory/tsdoc/createUseSuspenseQueryOperationTSDocExample.d.ts +2 -1
  33. package/dist/ts-factory/tsdoc/createUseSuspenseQueryOperationTSDocExample.d.ts.map +1 -1
  34. package/dist/ts-factory/tsdoc/createUseSuspenseQueryOperationTSDocExample.js +11 -5
  35. package/dist/ts-factory/tsdoc/createUseSuspenseQueryOperationTSDocExample.js.map +1 -1
  36. package/dist/ts-factory/tsdoc/lib/createOperationMethodBodyParametersExampleNode.d.ts +3 -0
  37. package/dist/ts-factory/tsdoc/lib/createOperationMethodBodyParametersExampleNode.d.ts.map +1 -0
  38. package/dist/ts-factory/tsdoc/lib/createOperationMethodBodyParametersExampleNode.js +5 -0
  39. package/dist/ts-factory/tsdoc/lib/createOperationMethodBodyParametersExampleNode.js.map +1 -0
  40. package/package.json +4 -4
  41. package/src/ts-factory/getServiceFactory.ts +56 -34
  42. package/src/ts-factory/tsdoc/createOperationMethodTSDocExample.ts +17 -8
  43. package/src/ts-factory/tsdoc/createUseInfiniteQueryOperationTSDocExample.ts +16 -7
  44. package/src/ts-factory/tsdoc/createUseIsFetchingOperationTSDocExample.ts +19 -3
  45. package/src/ts-factory/tsdoc/createUseQueriesOperationTSDocExample.ts +40 -10
  46. package/src/ts-factory/tsdoc/createUseQueryOperationTSDocExample.ts +17 -5
  47. package/src/ts-factory/tsdoc/createUseSuspenseInfiniteQueryOperationTSDocExample.ts +16 -7
  48. package/src/ts-factory/tsdoc/createUseSuspenseQueriesOperationTSDocExample.ts +13 -3
  49. package/src/ts-factory/tsdoc/createUseSuspenseQueryOperationTSDocExample.ts +17 -5
  50. package/src/ts-factory/tsdoc/lib/createOperationMethodBodyParametersExampleNode.ts +13 -0
@@ -2,9 +2,10 @@ import ts from 'typescript';
2
2
  import { createOperationCommonTSDoc } from '../../lib/createOperationCommonTSDoc.js';
3
3
  import { astToString } from '../astToString.js';
4
4
  import { createInfiniteQueryOptionsArgumentExamplePropertyAssignmentNodes } from './createUseInfiniteQueryOperationTSDocExample.js';
5
+ import { createOperationMethodBodyParametersExampleNode } from './lib/createOperationMethodBodyParametersExampleNode.js';
5
6
  import { createOperationMethodCallExpressionExampleNode } from './lib/createOperationMethodCallExpressionExampleNode.js';
6
7
  import { createOperationMethodParametersExampleNodes } from './lib/createOperationMethodParametersExampleNodes.js';
7
- export const createUseSuspenseInfiniteQueryOperationTSDocExample = (operation, serviceVariableName) => {
8
+ export const createUseSuspenseInfiniteQueryOperationTSDocExample = (operation, serviceVariableName, { queryableWriteOperations, }) => {
8
9
  const factory = ts.factory;
9
10
  const commonTSDoc = [
10
11
  'Performs asynchronous data fetching with support for infinite scrolling scenarios.',
@@ -24,10 +25,14 @@ export const createUseSuspenseInfiniteQueryOperationTSDocExample = (operation, s
24
25
  serviceVariableName,
25
26
  operationMethodName: 'useSuspenseInfiniteQuery',
26
27
  }, [
27
- factory.createObjectLiteralExpression(createOperationMethodParametersExampleNodes({
28
- ...operation,
29
- parameters: operation.parameters?.filter((parameter) => parameter.in === 'query' ? parameter.required : true),
30
- }), true),
28
+ factory.createObjectLiteralExpression([
29
+ queryableWriteOperations &&
30
+ createOperationMethodBodyParametersExampleNode(operation),
31
+ ...createOperationMethodParametersExampleNodes({
32
+ ...operation,
33
+ parameters: operation.parameters?.filter((parameter) => parameter.in === 'query' ? parameter.required : true),
34
+ }),
35
+ ].filter((node) => !!node), true),
31
36
  factory.createObjectLiteralExpression(createInfiniteQueryOptionsArgumentExamplePropertyAssignmentNodes(operation), true),
32
37
  ])))
33
38
  .trim()
@@ -1 +1 @@
1
- {"version":3,"file":"createUseSuspenseInfiniteQueryOperationTSDocExample.js","sourceRoot":"","sources":["../../../src/ts-factory/tsdoc/createUseSuspenseInfiniteQueryOperationTSDocExample.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gEAAgE,EAAE,MAAM,kDAAkD,CAAC;AACpI,OAAO,EAAE,8CAA8C,EAAE,MAAM,yDAAyD,CAAC;AACzH,OAAO,EAAE,2CAA2C,EAAE,MAAM,sDAAsD,CAAC;AAEnH,MAAM,CAAC,MAAM,mDAAmD,GAAG,CACjE,SAA2B,EAC3B,mBAA2B,EACjB,EAAE;IACZ,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IAE3B,MAAM,WAAW,GAAG;QAClB,oFAAoF;QACpF,8EAA8E;QAC9E,0FAA0F;QAC1F,EAAE;QACF,GAAG,0BAA0B,CAAC,SAAS,CAAC;QACxC,8IAA8I;QAC9I,EAAE;KACH,CAAC;IAEF,OAAO;QACL,GAAG,WAAW;QACd,kCAAkC;QAClC,OAAO;QACP,GAAG,CACD,6CAA6C;YAC7C,WAAW,CACT,8CAA8C,CAC5C,SAAS,EACT;gBACE,mBAAmB;gBACnB,mBAAmB,EAAE,0BAA0B;aAChD,EACD;gBACE,OAAO,CAAC,6BAA6B,CACnC,2CAA2C,CAAC;oBAC1C,GAAG,SAAS;oBACZ,UAAU,EAAE,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CACrD,SAAS,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CACrD;iBACF,CAAC,EACF,IAAI,CACL;gBACD,OAAO,CAAC,6BAA6B,CACnC,gEAAgE,CAC9D,SAAS,CACV,EACD,IAAI,CACL;aACF,CACF,CACF,CACF;aACE,IAAI,EAAE;aACN,KAAK,CAAC,IAAI,CAAC;QACd,EAAE;QACF,oBAAoB;QACpB,yCAAyC;QACzC,KAAK;KACN,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"createUseSuspenseInfiniteQueryOperationTSDocExample.js","sourceRoot":"","sources":["../../../src/ts-factory/tsdoc/createUseSuspenseInfiniteQueryOperationTSDocExample.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,gEAAgE,EAAE,MAAM,kDAAkD,CAAC;AACpI,OAAO,EAAE,8CAA8C,EAAE,MAAM,yDAAyD,CAAC;AACzH,OAAO,EAAE,8CAA8C,EAAE,MAAM,yDAAyD,CAAC;AACzH,OAAO,EAAE,2CAA2C,EAAE,MAAM,sDAAsD,CAAC;AAEnH,MAAM,CAAC,MAAM,mDAAmD,GAAG,CACjE,SAA2B,EAC3B,mBAA2B,EAC3B,EACE,wBAAwB,GACgC,EAChD,EAAE;IACZ,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IAE3B,MAAM,WAAW,GAAG;QAClB,oFAAoF;QACpF,8EAA8E;QAC9E,0FAA0F;QAC1F,EAAE;QACF,GAAG,0BAA0B,CAAC,SAAS,CAAC;QACxC,8IAA8I;QAC9I,EAAE;KACH,CAAC;IAEF,OAAO;QACL,GAAG,WAAW;QACd,kCAAkC;QAClC,OAAO;QACP,GAAG,CACD,6CAA6C;YAC7C,WAAW,CACT,8CAA8C,CAC5C,SAAS,EACT;gBACE,mBAAmB;gBACnB,mBAAmB,EAAE,0BAA0B;aAChD,EACD;gBACE,OAAO,CAAC,6BAA6B,CACnC;oBACE,wBAAwB;wBACtB,8CAA8C,CAAC,SAAS,CAAC;oBAC3D,GAAG,2CAA2C,CAAC;wBAC7C,GAAG,SAAS;wBACZ,UAAU,EAAE,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CACrD,SAAS,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CACrD;qBACF,CAAC;iBACH,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAC1B,IAAI,CACL;gBACD,OAAO,CAAC,6BAA6B,CACnC,gEAAgE,CAC9D,SAAS,CACV,EACD,IAAI,CACL;aACF,CACF,CACF,CACF;aACE,IAAI,EAAE;aACN,KAAK,CAAC,IAAI,CAAC;QACd,EAAE;QACF,oBAAoB;QACpB,yCAAyC;QACzC,KAAK;KACN,CAAC;AACJ,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import type { ServiceOperation } from '@openapi-qraft/plugin/lib/open-api/OpenAPIService';
2
- export declare const createUseSuspenseQueriesOperationTSDocExample: (operation: ServiceOperation, serviceVariableName: string) => string[];
2
+ import { ServiceFactoryOptions } from '../getServiceFactory.js';
3
+ export declare const createUseSuspenseQueriesOperationTSDocExample: (operation: ServiceOperation, serviceVariableName: string, options: Pick<ServiceFactoryOptions, "queryableWriteOperations">) => string[];
3
4
  //# sourceMappingURL=createUseSuspenseQueriesOperationTSDocExample.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createUseSuspenseQueriesOperationTSDocExample.d.ts","sourceRoot":"","sources":["../../../src/ts-factory/tsdoc/createUseSuspenseQueriesOperationTSDocExample.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AAa1F,eAAO,MAAM,6CAA6C,cAC7C,gBAAgB,uBACN,MAAM,aAyG5B,CAAC"}
1
+ {"version":3,"file":"createUseSuspenseQueriesOperationTSDocExample.d.ts","sourceRoot":"","sources":["../../../src/ts-factory/tsdoc/createUseSuspenseQueriesOperationTSDocExample.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AAK1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAShE,eAAO,MAAM,6CAA6C,cAC7C,gBAAgB,uBACN,MAAM,WAClB,IAAI,CAAC,qBAAqB,EAAE,0BAA0B,CAAC,aAiHjE,CAAC"}
@@ -4,7 +4,7 @@ import { createOperationCommonTSDoc } from '../../lib/createOperationCommonTSDoc
4
4
  import { astToString } from '../astToString.js';
5
5
  import { createCombinedResultsForEachExpression, createCombineFunction, createQueriesArrayExpression, createResultsForEachExpression, } from './createUseQueriesOperationTSDocExample.js';
6
6
  import { createOperationMethodCallExpressionExampleNode } from './lib/createOperationMethodCallExpressionExampleNode.js';
7
- export const createUseSuspenseQueriesOperationTSDocExample = (operation, serviceVariableName) => {
7
+ export const createUseSuspenseQueriesOperationTSDocExample = (operation, serviceVariableName, options) => {
8
8
  const factory = ts.factory;
9
9
  const example = [
10
10
  'Allows you to execute multiple asynchronous data fetching operations concurrently with Suspense support.',
@@ -21,7 +21,7 @@ export const createUseSuspenseQueriesOperationTSDocExample = (operation, service
21
21
  operationMethodName: 'useSuspenseQueries',
22
22
  }, [
23
23
  factory.createObjectLiteralExpression([
24
- factory.createPropertyAssignment(factory.createIdentifier('queries'), createQueriesArrayExpression(operation, factory)),
24
+ factory.createPropertyAssignment(factory.createIdentifier('queries'), createQueriesArrayExpression(operation, factory, options)),
25
25
  ], true),
26
26
  ])),
27
27
  ], ts.NodeFlags.Const)),
@@ -40,7 +40,7 @@ export const createUseSuspenseQueriesOperationTSDocExample = (operation, service
40
40
  }, [
41
41
  factory.createObjectLiteralExpression([
42
42
  factory.createPropertyAssignment(factory.createIdentifier('combine'), createCombineFunction(factory)),
43
- factory.createPropertyAssignment(factory.createIdentifier('queries'), createQueriesArrayExpression(operation, factory)),
43
+ factory.createPropertyAssignment(factory.createIdentifier('queries'), createQueriesArrayExpression(operation, factory, options)),
44
44
  ], true),
45
45
  ])),
46
46
  ], ts.NodeFlags.Const)),
@@ -1 +1 @@
1
- {"version":3,"file":"createUseSuspenseQueriesOperationTSDocExample.js","sourceRoot":"","sources":["../../../src/ts-factory/tsdoc/createUseSuspenseQueriesOperationTSDocExample.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,sCAAsC,EACtC,qBAAqB,EACrB,4BAA4B,EAC5B,8BAA8B,GAC/B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,8CAA8C,EAAE,MAAM,yDAAyD,CAAC;AAEzH,MAAM,CAAC,MAAM,6CAA6C,GAAG,CAC3D,SAA2B,EAC3B,mBAA2B,EAC3B,EAAE;IACF,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IAE3B,MAAM,OAAO,GAAa;QACxB,0GAA0G;QAC1G,8EAA8E;QAC9E,EAAE;QACF,GAAG,0BAA0B,CAAC,SAAS,CAAC;QACxC,kIAAkI;QAElI,oCAAoC;QACpC,OAAO;QACP,GAAG,WAAW,CAAC;YACb,OAAO,CAAC,uBAAuB,CAC7B,SAAS,EACT,OAAO,CAAC,6BAA6B,CACnC;gBACE,OAAO,CAAC,yBAAyB,CAC/B,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,EAC7D,SAAS,EACT,SAAS,EACT,8CAA8C,CAC5C,SAAS,EACT;oBACE,mBAAmB;oBACnB,mBAAmB,EAAE,oBAAoB;iBAC1C,EACD;oBACE,OAAO,CAAC,6BAA6B,CACnC;wBACE,OAAO,CAAC,wBAAwB,CAC9B,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,EACnC,4BAA4B,CAAC,SAAS,EAAE,OAAO,CAAC,CACjD;qBACF,EACD,IAAI,CACL;iBACF,CACF,CACF;aACF,EACD,EAAE,CAAC,SAAS,CAAC,KAAK,CACnB,CACF;YACD,8BAA8B,CAC5B,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,CAAC,EACtC,OAAO,CACR;SACF,CAAC;aACC,IAAI,EAAE;aACN,KAAK,CAAC,IAAI,CAAC;QACd,KAAK;QAEL,iDAAiD;QACjD,OAAO;QACP,GAAG,WAAW,CAAC;YACb,OAAO,CAAC,uBAAuB,CAC7B,SAAS,EACT,OAAO,CAAC,6BAA6B,CACnC;gBACE,OAAO,CAAC,yBAAyB,CAC/B,OAAO,CAAC,gBAAgB,CACtB,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,gBAAgB,CAAC,CAC7C,EACD,SAAS,EACT,SAAS,EACT,8CAA8C,CAC5C,SAAS,EACT;oBACE,mBAAmB;oBACnB,mBAAmB,EAAE,oBAAoB;iBAC1C,EACD;oBACE,OAAO,CAAC,6BAA6B,CACnC;wBACE,OAAO,CAAC,wBAAwB,CAC9B,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,EACnC,qBAAqB,CAAC,OAAO,CAAC,CAC/B;wBACD,OAAO,CAAC,wBAAwB,CAC9B,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,EACnC,4BAA4B,CAAC,SAAS,EAAE,OAAO,CAAC,CACjD;qBACF,EACD,IAAI,CACL;iBACF,CACF,CACF;aACF,EACD,EAAE,CAAC,SAAS,CAAC,KAAK,CACnB,CACF;YACD,sCAAsC,CACpC,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,gBAAgB,CAAC,EAC5C,OAAO,CACR;SACF,CAAC;aACC,IAAI,EAAE;aACN,KAAK,CAAC,IAAI,CAAC;QACd,KAAK;KACN,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
1
+ {"version":3,"file":"createUseSuspenseQueriesOperationTSDocExample.js","sourceRoot":"","sources":["../../../src/ts-factory/tsdoc/createUseSuspenseQueriesOperationTSDocExample.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACL,sCAAsC,EACtC,qBAAqB,EACrB,4BAA4B,EAC5B,8BAA8B,GAC/B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,8CAA8C,EAAE,MAAM,yDAAyD,CAAC;AAEzH,MAAM,CAAC,MAAM,6CAA6C,GAAG,CAC3D,SAA2B,EAC3B,mBAA2B,EAC3B,OAAgE,EAChE,EAAE;IACF,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IAE3B,MAAM,OAAO,GAAa;QACxB,0GAA0G;QAC1G,8EAA8E;QAC9E,EAAE;QACF,GAAG,0BAA0B,CAAC,SAAS,CAAC;QACxC,kIAAkI;QAElI,oCAAoC;QACpC,OAAO;QACP,GAAG,WAAW,CAAC;YACb,OAAO,CAAC,uBAAuB,CAC7B,SAAS,EACT,OAAO,CAAC,6BAA6B,CACnC;gBACE,OAAO,CAAC,yBAAyB,CAC/B,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,EAC7D,SAAS,EACT,SAAS,EACT,8CAA8C,CAC5C,SAAS,EACT;oBACE,mBAAmB;oBACnB,mBAAmB,EAAE,oBAAoB;iBAC1C,EACD;oBACE,OAAO,CAAC,6BAA6B,CACnC;wBACE,OAAO,CAAC,wBAAwB,CAC9B,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,EACnC,4BAA4B,CAC1B,SAAS,EACT,OAAO,EACP,OAAO,CACR,CACF;qBACF,EACD,IAAI,CACL;iBACF,CACF,CACF;aACF,EACD,EAAE,CAAC,SAAS,CAAC,KAAK,CACnB,CACF;YACD,8BAA8B,CAC5B,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,CAAC,EACtC,OAAO,CACR;SACF,CAAC;aACC,IAAI,EAAE;aACN,KAAK,CAAC,IAAI,CAAC;QACd,KAAK;QAEL,iDAAiD;QACjD,OAAO;QACP,GAAG,WAAW,CAAC;YACb,OAAO,CAAC,uBAAuB,CAC7B,SAAS,EACT,OAAO,CAAC,6BAA6B,CACnC;gBACE,OAAO,CAAC,yBAAyB,CAC/B,OAAO,CAAC,gBAAgB,CACtB,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,gBAAgB,CAAC,CAC7C,EACD,SAAS,EACT,SAAS,EACT,8CAA8C,CAC5C,SAAS,EACT;oBACE,mBAAmB;oBACnB,mBAAmB,EAAE,oBAAoB;iBAC1C,EACD;oBACE,OAAO,CAAC,6BAA6B,CACnC;wBACE,OAAO,CAAC,wBAAwB,CAC9B,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,EACnC,qBAAqB,CAAC,OAAO,CAAC,CAC/B;wBACD,OAAO,CAAC,wBAAwB,CAC9B,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,EACnC,4BAA4B,CAC1B,SAAS,EACT,OAAO,EACP,OAAO,CACR,CACF;qBACF,EACD,IAAI,CACL;iBACF,CACF,CACF;aACF,EACD,EAAE,CAAC,SAAS,CAAC,KAAK,CACnB,CACF;YACD,sCAAsC,CACpC,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,gBAAgB,CAAC,EAC5C,OAAO,CACR;SACF,CAAC;aACC,IAAI,EAAE;aACN,KAAK,CAAC,IAAI,CAAC;QACd,KAAK;KACN,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import { ServiceOperation } from '@openapi-qraft/plugin/lib/open-api/OpenAPIService';
2
- export declare const createUseSuspenseQueryOperationTSDocExample: (operation: ServiceOperation, serviceVariableName: string) => string[];
2
+ import { ServiceFactoryOptions } from '../getServiceFactory.js';
3
+ export declare const createUseSuspenseQueryOperationTSDocExample: (operation: ServiceOperation, serviceVariableName: string, { queryableWriteOperations, }: Pick<ServiceFactoryOptions, "queryableWriteOperations">) => string[];
3
4
  //# sourceMappingURL=createUseSuspenseQueryOperationTSDocExample.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createUseSuspenseQueryOperationTSDocExample.d.ts","sourceRoot":"","sources":["../../../src/ts-factory/tsdoc/createUseSuspenseQueryOperationTSDocExample.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AAOrF,eAAO,MAAM,2CAA2C,cAC3C,gBAAgB,uBACN,MAAM,aAmE5B,CAAC"}
1
+ {"version":3,"file":"createUseSuspenseQueryOperationTSDocExample.d.ts","sourceRoot":"","sources":["../../../src/ts-factory/tsdoc/createUseSuspenseQueryOperationTSDocExample.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AAIrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAKhE,eAAO,MAAM,2CAA2C,cAC3C,gBAAgB,uBACN,MAAM,iCAGxB,IAAI,CAAC,qBAAqB,EAAE,0BAA0B,CAAC,aA0E3D,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import ts from 'typescript';
2
2
  import { createOperationCommonTSDoc } from '../../lib/createOperationCommonTSDoc.js';
3
3
  import { astToString } from '../astToString.js';
4
+ import { createOperationMethodBodyParametersExampleNode } from './lib/createOperationMethodBodyParametersExampleNode.js';
4
5
  import { createOperationMethodCallExpressionExampleNode } from './lib/createOperationMethodCallExpressionExampleNode.js';
5
6
  import { createOperationMethodParametersExampleNodes } from './lib/createOperationMethodParametersExampleNodes.js';
6
- export const createUseSuspenseQueryOperationTSDocExample = (operation, serviceVariableName) => {
7
+ export const createUseSuspenseQueryOperationTSDocExample = (operation, serviceVariableName, { queryableWriteOperations, }) => {
7
8
  const example = [
8
9
  'Performs asynchronous data fetching with Suspense support.',
9
10
  'Similar to useQuery but integrates with React Suspense for loading states.',
@@ -11,8 +12,8 @@ export const createUseSuspenseQueryOperationTSDocExample = (operation, serviceVa
11
12
  ...createOperationCommonTSDoc(operation),
12
13
  '@see {@link https://openapi-qraft.github.io/openapi-qraft/docs/hooks/useSuspenseQuery|`useSuspenseQuery(...)` documentation}',
13
14
  ];
14
- if (!operation.parameters?.length ||
15
- operation.parameters.every((parameter) => !parameter.required)) {
15
+ if (!operation.parameters?.some((parameter) => parameter.required) &&
16
+ !(queryableWriteOperations && operation.requestBody?.required)) {
16
17
  example.push('@example Suspense Query without parameters', '```ts', ...('const data = ' +
17
18
  astToString(createOperationMethodCallExpressionExampleNode(operation, {
18
19
  serviceVariableName,
@@ -21,14 +22,19 @@ export const createUseSuspenseQueryOperationTSDocExample = (operation, serviceVa
21
22
  .trim()
22
23
  .split('\n'), '```');
23
24
  }
24
- if (operation.parameters?.length) {
25
+ if (operation.parameters?.length ||
26
+ (queryableWriteOperations && operation.requestBody)) {
25
27
  const factory = ts.factory;
26
28
  example.push('@example Suspense Query with parameters', '```ts', ...('const data = ' +
27
29
  astToString(createOperationMethodCallExpressionExampleNode(operation, {
28
30
  serviceVariableName,
29
31
  operationMethodName: 'useSuspenseQuery',
30
32
  }, [
31
- factory.createObjectLiteralExpression(createOperationMethodParametersExampleNodes(operation), true),
33
+ factory.createObjectLiteralExpression([
34
+ queryableWriteOperations &&
35
+ createOperationMethodBodyParametersExampleNode(operation),
36
+ ...createOperationMethodParametersExampleNodes(operation),
37
+ ].filter((node) => !!node), true),
32
38
  ])))
33
39
  .trim()
34
40
  .split('\n'), '```');
@@ -1 +1 @@
1
- {"version":3,"file":"createUseSuspenseQueryOperationTSDocExample.js","sourceRoot":"","sources":["../../../src/ts-factory/tsdoc/createUseSuspenseQueryOperationTSDocExample.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,8CAA8C,EAAE,MAAM,yDAAyD,CAAC;AACzH,OAAO,EAAE,2CAA2C,EAAE,MAAM,sDAAsD,CAAC;AAEnH,MAAM,CAAC,MAAM,2CAA2C,GAAG,CACzD,SAA2B,EAC3B,mBAA2B,EAC3B,EAAE;IACF,MAAM,OAAO,GAAa;QACxB,4DAA4D;QAC5D,4EAA4E;QAC5E,EAAE;QACF,GAAG,0BAA0B,CAAC,SAAS,CAAC;QACxC,8HAA8H;KAC/H,CAAC;IAEF,IACE,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM;QAC7B,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,EAC9D,CAAC;QACD,OAAO,CAAC,IAAI,CACV,4CAA4C,EAC5C,OAAO,EACP,GAAG,CACD,eAAe;YACf,WAAW,CACT,8CAA8C,CAC5C,SAAS,EACT;gBACE,mBAAmB;gBACnB,mBAAmB,EAAE,kBAAkB;aACxC,EACD,SAAS,CACV,CACF,CACF;aACE,IAAI,EAAE;aACN,KAAK,CAAC,IAAI,CAAC,EACd,KAAK,CACN,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;QAE3B,OAAO,CAAC,IAAI,CACV,yCAAyC,EACzC,OAAO,EACP,GAAG,CACD,eAAe;YACf,WAAW,CACT,8CAA8C,CAC5C,SAAS,EACT;gBACE,mBAAmB;gBACnB,mBAAmB,EAAE,kBAAkB;aACxC,EACD;gBACE,OAAO,CAAC,6BAA6B,CACnC,2CAA2C,CAAC,SAAS,CAAC,EACtD,IAAI,CACL;aACF,CACF,CACF,CACF;aACE,IAAI,EAAE;aACN,KAAK,CAAC,IAAI,CAAC,EACd,KAAK,CACN,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
1
+ {"version":3,"file":"createUseSuspenseQueryOperationTSDocExample.js","sourceRoot":"","sources":["../../../src/ts-factory/tsdoc/createUseSuspenseQueryOperationTSDocExample.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,8CAA8C,EAAE,MAAM,yDAAyD,CAAC;AACzH,OAAO,EAAE,8CAA8C,EAAE,MAAM,yDAAyD,CAAC;AACzH,OAAO,EAAE,2CAA2C,EAAE,MAAM,sDAAsD,CAAC;AAEnH,MAAM,CAAC,MAAM,2CAA2C,GAAG,CACzD,SAA2B,EAC3B,mBAA2B,EAC3B,EACE,wBAAwB,GACgC,EAC1D,EAAE;IACF,MAAM,OAAO,GAAa;QACxB,4DAA4D;QAC5D,4EAA4E;QAC5E,EAAE;QACF,GAAG,0BAA0B,CAAC,SAAS,CAAC;QACxC,8HAA8H;KAC/H,CAAC;IAEF,IACE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC9D,CAAC,CAAC,wBAAwB,IAAI,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,EAC9D,CAAC;QACD,OAAO,CAAC,IAAI,CACV,4CAA4C,EAC5C,OAAO,EACP,GAAG,CACD,eAAe;YACf,WAAW,CACT,8CAA8C,CAC5C,SAAS,EACT;gBACE,mBAAmB;gBACnB,mBAAmB,EAAE,kBAAkB;aACxC,EACD,SAAS,CACV,CACF,CACF;aACE,IAAI,EAAE;aACN,KAAK,CAAC,IAAI,CAAC,EACd,KAAK,CACN,CAAC;IACJ,CAAC;IAED,IACE,SAAS,CAAC,UAAU,EAAE,MAAM;QAC5B,CAAC,wBAAwB,IAAI,SAAS,CAAC,WAAW,CAAC,EACnD,CAAC;QACD,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;QAE3B,OAAO,CAAC,IAAI,CACV,yCAAyC,EACzC,OAAO,EACP,GAAG,CACD,eAAe;YACf,WAAW,CACT,8CAA8C,CAC5C,SAAS,EACT;gBACE,mBAAmB;gBACnB,mBAAmB,EAAE,kBAAkB;aACxC,EACD;gBACE,OAAO,CAAC,6BAA6B,CACnC;oBACE,wBAAwB;wBACtB,8CAA8C,CAAC,SAAS,CAAC;oBAC3D,GAAG,2CAA2C,CAAC,SAAS,CAAC;iBAC1D,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAC1B,IAAI,CACL;aACF,CACF,CACF,CACF;aACE,IAAI,EAAE;aACN,KAAK,CAAC,IAAI,CAAC,EACd,KAAK,CACN,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { ServiceOperation } from '@openapi-qraft/plugin/lib/open-api/OpenAPIService';
2
+ export declare const createOperationMethodBodyParametersExampleNode: (operation: ServiceOperation, bodyVariableName?: string) => import("typescript").PropertyAssignment | undefined;
3
+ //# sourceMappingURL=createOperationMethodBodyParametersExampleNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createOperationMethodBodyParametersExampleNode.d.ts","sourceRoot":"","sources":["../../../../src/ts-factory/tsdoc/lib/createOperationMethodBodyParametersExampleNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AAGrF,eAAO,MAAM,8CAA8C,cAC9C,gBAAgB,mFAQd,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { factory } from 'typescript';
2
+ export const createOperationMethodBodyParametersExampleNode = (operation, bodyVariableName = 'queryBody') => operation.requestBody
3
+ ? factory.createPropertyAssignment(factory.createIdentifier('body'), factory.createIdentifier(bodyVariableName))
4
+ : undefined;
5
+ //# sourceMappingURL=createOperationMethodBodyParametersExampleNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createOperationMethodBodyParametersExampleNode.js","sourceRoot":"","sources":["../../../../src/ts-factory/tsdoc/lib/createOperationMethodBodyParametersExampleNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,CAAC,MAAM,8CAA8C,GAAG,CAC5D,SAA2B,EAC3B,gBAAgB,GAAG,WAAW,EAC9B,EAAE,CACF,SAAS,CAAC,WAAW;IACnB,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAC9B,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAChC,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAC3C;IACH,CAAC,CAAC,SAAS,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openapi-qraft/tanstack-query-react-plugin",
3
- "version": "2.5.0-beta.0",
3
+ "version": "2.5.0-beta.2",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "build": "tsc --project tsconfig.build.json",
@@ -35,13 +35,13 @@
35
35
  }
36
36
  },
37
37
  "dependencies": {
38
- "@openapi-qraft/plugin": "^2.5.0-beta.0",
38
+ "@openapi-qraft/plugin": "^2.5.0-beta.2",
39
39
  "typescript": "^5.6.2"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@openapi-qraft/eslint-config": "1.0.1",
43
- "@openapi-qraft/tanstack-query-react-types": "2.5.0-beta.0",
44
- "@openapi-qraft/test-fixtures": "1.0.1",
43
+ "@openapi-qraft/tanstack-query-react-types": "2.5.0-beta.2",
44
+ "@openapi-qraft/test-fixtures": "1.0.2-beta.0",
45
45
  "@openapi-qraft/ts-factory-code-generator": "1.0.2",
46
46
  "camelcase": "^8.0.0",
47
47
  "eslint": "^9.24.0",
@@ -135,11 +135,13 @@ const getServiceInterfaceOperationFactory = (
135
135
  ) => {
136
136
  const operationMethodNodes = getMethodSignatureNodes(
137
137
  isReadOnlyOperation(operation)
138
- ? createServicesQueryOperationNodes()
138
+ ? createServicesQueryOperationNodes({ omitOperationQueryFnNodes: false })
139
139
  : options.queryableWriteOperations
140
140
  ? [
141
+ ...createServicesQueryOperationNodes({
142
+ omitOperationQueryFnNodes: true,
143
+ }),
141
144
  ...createServicesMutationOperationNodes(),
142
- ...createServicesQueryOperationNodes(),
143
145
  ]
144
146
  : createServicesMutationOperationNodes()
145
147
  );
@@ -155,7 +157,8 @@ const getServiceInterfaceOperationFactory = (
155
157
  {
156
158
  serviceVariableName: service.variableName,
157
159
  operationMethodName: node.name.text,
158
- }
160
+ },
161
+ options
159
162
  );
160
163
  // Query and Mutation methods (hooks and QueryClient methods)
161
164
  ts.addSyntheticLeadingComment(
@@ -332,41 +335,52 @@ const getOperationResponseFactory = (
332
335
  return factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword);
333
336
 
334
337
  return factory.createUnionTypeNode(
335
- responses.map(([statusCode, mediaType]) => {
336
- if (!mediaType)
337
- return factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword);
338
+ responses
339
+ .map(([statusCode, mediaType]) => {
340
+ if (mediaType === null)
341
+ return factory.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword);
338
342
 
339
- return factory.createIndexedAccessTypeNode(
340
- factory.createIndexedAccessTypeNode(
343
+ if (!mediaType)
344
+ return factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword);
345
+
346
+ return mediaType.map((mediaTypeItem) =>
341
347
  factory.createIndexedAccessTypeNode(
342
348
  factory.createIndexedAccessTypeNode(
343
349
  factory.createIndexedAccessTypeNode(
344
350
  factory.createIndexedAccessTypeNode(
345
- factory.createTypeReferenceNode(
346
- factory.createIdentifier('paths'),
347
- undefined
351
+ factory.createIndexedAccessTypeNode(
352
+ factory.createIndexedAccessTypeNode(
353
+ factory.createTypeReferenceNode(
354
+ factory.createIdentifier('paths'),
355
+ undefined
356
+ ),
357
+ factory.createLiteralTypeNode(
358
+ factory.createStringLiteral(operation.path)
359
+ )
360
+ ),
361
+ factory.createLiteralTypeNode(
362
+ factory.createStringLiteral(operation.method)
363
+ )
348
364
  ),
349
365
  factory.createLiteralTypeNode(
350
- factory.createStringLiteral(operation.path)
366
+ factory.createStringLiteral('responses')
351
367
  )
352
368
  ),
353
369
  factory.createLiteralTypeNode(
354
- factory.createStringLiteral(operation.method)
370
+ factory.createStringLiteral(statusCode)
355
371
  )
356
372
  ),
357
373
  factory.createLiteralTypeNode(
358
- factory.createStringLiteral('responses')
374
+ factory.createStringLiteral('content')
359
375
  )
360
376
  ),
361
377
  factory.createLiteralTypeNode(
362
- factory.createStringLiteral(statusCode)
378
+ factory.createStringLiteral(mediaTypeItem)
363
379
  )
364
- ),
365
- factory.createLiteralTypeNode(factory.createStringLiteral('content'))
366
- ),
367
- factory.createLiteralTypeNode(factory.createStringLiteral(mediaType))
368
- );
369
- })
380
+ )
381
+ );
382
+ })
383
+ .flat()
370
384
  );
371
385
  };
372
386
 
@@ -722,7 +736,11 @@ const getOperationSecuritySchemas = (
722
736
  Object.keys(security).map((securitySchemaName) => securitySchemaName)
723
737
  );
724
738
 
725
- const createServicesQueryOperationNodes = () => [
739
+ const createServicesQueryOperationNodes = ({
740
+ omitOperationQueryFnNodes,
741
+ }: {
742
+ omitOperationQueryFnNodes: boolean;
743
+ }) => [
726
744
  ...createServiceOperationCancelQueriesNodes(),
727
745
  ...createServiceOperationUseQueryNodes(),
728
746
  ...createServiceOperationFetchInfiniteQueryNodes(),
@@ -733,7 +751,7 @@ const createServicesQueryOperationNodes = () => [
733
751
  ...createServiceOperationGetQueryStateNodes(),
734
752
  ...createServiceOperationInvalidateQueriesNodes(),
735
753
  ...createServiceOperationIsFetchingQueriesNodes(),
736
- ...createServiceOperationQueryFnNodes(),
754
+ ...(omitOperationQueryFnNodes ? [] : createServiceOperationQueryFnNodes()),
737
755
  ...createServiceOperationRefetchQueriesNodes(),
738
756
  ...createServiceOperationRemoveQueriesNodes(),
739
757
  ...createServiceOperationResetQueriesNodes(),
@@ -780,17 +798,21 @@ const getModuleTypeImports = (
780
798
  operations: ServiceOperation[],
781
799
  options: Pick<ServiceFactoryOptions, 'queryableWriteOperations'>
782
800
  ) => {
783
- const nodes = [
784
- ...(operations.some(
785
- (operation) =>
786
- isReadOnlyOperation(operation) || options.queryableWriteOperations
787
- )
788
- ? createServicesQueryOperationNodes()
789
- : []),
790
- ...(operations.some((operation) => !isReadOnlyOperation(operation))
791
- ? createServicesMutationOperationNodes()
792
- : []),
793
- ];
801
+ const nodes = [];
802
+
803
+ const hasReadOnlyOperations = operations.some(isReadOnlyOperation);
804
+
805
+ if (hasReadOnlyOperations || options.queryableWriteOperations) {
806
+ nodes.push(
807
+ ...createServicesQueryOperationNodes({
808
+ omitOperationQueryFnNodes: !hasReadOnlyOperations,
809
+ })
810
+ );
811
+ }
812
+
813
+ if (operations.some((operation) => !isReadOnlyOperation(operation))) {
814
+ nodes.push(...createServicesMutationOperationNodes());
815
+ }
794
816
 
795
817
  return nodes
796
818
  .map((node) =>
@@ -1,4 +1,5 @@
1
1
  import { ServiceOperation } from '@openapi-qraft/plugin/lib/open-api/OpenAPIService';
2
+ import { ServiceFactoryOptions } from '../getServiceFactory.js';
2
3
  import { createUseInfiniteQueryOperationTSDocExample } from './createUseInfiniteQueryOperationTSDocExample.js';
3
4
  import { createUseIsFetchingOperationTSDocExample } from './createUseIsFetchingOperationTSDocExample.js';
4
5
  import { createUseIsMutatingOperationTSDocExample } from './createUseIsMutatingOperationTSDocExample.js';
@@ -18,18 +19,21 @@ export const createOperationMethodTSDocExample = (
18
19
  }: {
19
20
  serviceVariableName: string;
20
21
  operationMethodName: string;
21
- }
22
+ },
23
+ options: Pick<ServiceFactoryOptions, 'queryableWriteOperations'>
22
24
  ) => {
23
25
  switch (operationMethodName) {
24
26
  case 'useQuery':
25
27
  return createUseQueryOperationTSDocExample(
26
28
  operation,
27
- serviceVariableName
29
+ serviceVariableName,
30
+ options
28
31
  );
29
32
  case 'useSuspenseQuery':
30
33
  return createUseSuspenseQueryOperationTSDocExample(
31
34
  operation,
32
- serviceVariableName
35
+ serviceVariableName,
36
+ options
33
37
  );
34
38
  case 'useMutation':
35
39
  return createUseMutationOperationTSDocExample(
@@ -39,17 +43,20 @@ export const createOperationMethodTSDocExample = (
39
43
  case 'useInfiniteQuery':
40
44
  return createUseInfiniteQueryOperationTSDocExample(
41
45
  operation,
42
- serviceVariableName
46
+ serviceVariableName,
47
+ options
43
48
  );
44
49
  case 'useSuspenseInfiniteQuery':
45
50
  return createUseSuspenseInfiniteQueryOperationTSDocExample(
46
51
  operation,
47
- serviceVariableName
52
+ serviceVariableName,
53
+ options
48
54
  );
49
55
  case 'useIsFetching':
50
56
  return createUseIsFetchingOperationTSDocExample(
51
57
  operation,
52
- serviceVariableName
58
+ serviceVariableName,
59
+ options
53
60
  );
54
61
  case 'useIsMutating':
55
62
  return createUseIsMutatingOperationTSDocExample(
@@ -64,12 +71,14 @@ export const createOperationMethodTSDocExample = (
64
71
  case 'useQueries':
65
72
  return createUseQueriesOperationTSDocExample(
66
73
  operation,
67
- serviceVariableName
74
+ serviceVariableName,
75
+ options
68
76
  );
69
77
  case 'useSuspenseQueries':
70
78
  return createUseSuspenseQueriesOperationTSDocExample(
71
79
  operation,
72
- serviceVariableName
80
+ serviceVariableName,
81
+ options
73
82
  );
74
83
  default:
75
84
  return undefined;
@@ -3,12 +3,17 @@ import camelcase from 'camelcase';
3
3
  import ts from 'typescript';
4
4
  import { createOperationCommonTSDoc } from '../../lib/createOperationCommonTSDoc.js';
5
5
  import { astToString } from '../astToString.js';
6
+ import { ServiceFactoryOptions } from '../getServiceFactory.js';
7
+ import { createOperationMethodBodyParametersExampleNode } from './lib/createOperationMethodBodyParametersExampleNode.js';
6
8
  import { createOperationMethodCallExpressionExampleNode } from './lib/createOperationMethodCallExpressionExampleNode.js';
7
9
  import { createOperationMethodParametersExampleNodes } from './lib/createOperationMethodParametersExampleNodes.js';
8
10
 
9
11
  export const createUseInfiniteQueryOperationTSDocExample = (
10
12
  operation: ServiceOperation,
11
- serviceVariableName: string
13
+ serviceVariableName: string,
14
+ {
15
+ queryableWriteOperations,
16
+ }: Pick<ServiceFactoryOptions, 'queryableWriteOperations'>
12
17
  ): string[] => {
13
18
  const factory = ts.factory;
14
19
 
@@ -36,12 +41,16 @@ export const createUseInfiniteQueryOperationTSDocExample = (
36
41
  },
37
42
  [
38
43
  factory.createObjectLiteralExpression(
39
- createOperationMethodParametersExampleNodes({
40
- ...operation,
41
- parameters: operation.parameters?.filter((parameter) =>
42
- parameter.in === 'query' ? parameter.required : true
43
- ),
44
- }),
44
+ [
45
+ queryableWriteOperations &&
46
+ createOperationMethodBodyParametersExampleNode(operation),
47
+ ...createOperationMethodParametersExampleNodes({
48
+ ...operation,
49
+ parameters: operation.parameters?.filter((parameter) =>
50
+ parameter.in === 'query' ? parameter.required : true
51
+ ),
52
+ }),
53
+ ].filter((node) => !!node),
45
54
  true
46
55
  ),
47
56
  factory.createObjectLiteralExpression(
@@ -3,12 +3,17 @@ import camelcase from 'camelcase';
3
3
  import ts from 'typescript';
4
4
  import { createOperationCommonTSDoc } from '../../lib/createOperationCommonTSDoc.js';
5
5
  import { astToString } from '../astToString.js';
6
+ import { ServiceFactoryOptions } from '../getServiceFactory.js';
7
+ import { createOperationMethodBodyParametersExampleNode } from './lib/createOperationMethodBodyParametersExampleNode.js';
6
8
  import { createOperationMethodCallExpressionExampleNode } from './lib/createOperationMethodCallExpressionExampleNode.js';
7
9
  import { createOperationMethodParametersExampleNodes } from './lib/createOperationMethodParametersExampleNodes.js';
8
10
 
9
11
  export const createUseIsFetchingOperationTSDocExample = (
10
12
  operation: ServiceOperation,
11
- serviceVariableName: string
13
+ serviceVariableName: string,
14
+ {
15
+ queryableWriteOperations,
16
+ }: Pick<ServiceFactoryOptions, 'queryableWriteOperations'>
12
17
  ) => {
13
18
  const example: string[] = [
14
19
  'Monitors the number of queries currently fetching, matching the provided filters.',
@@ -37,7 +42,10 @@ export const createUseIsFetchingOperationTSDocExample = (
37
42
  '```',
38
43
  ];
39
44
 
40
- if (operation.parameters?.length) {
45
+ if (
46
+ operation.parameters?.length ||
47
+ (queryableWriteOperations && operation.requestBody)
48
+ ) {
41
49
  const factory = ts.factory;
42
50
 
43
51
  example.push(
@@ -62,7 +70,15 @@ export const createUseIsFetchingOperationTSDocExample = (
62
70
  factory.createPropertyAssignment(
63
71
  factory.createIdentifier('parameters'),
64
72
  factory.createObjectLiteralExpression(
65
- createOperationMethodParametersExampleNodes(operation),
73
+ [
74
+ queryableWriteOperations &&
75
+ createOperationMethodBodyParametersExampleNode(
76
+ operation
77
+ ),
78
+ ...createOperationMethodParametersExampleNodes(
79
+ operation
80
+ ),
81
+ ].filter((node) => !!node),
66
82
  true
67
83
  )
68
84
  ),
@@ -3,12 +3,15 @@ import camelcase from 'camelcase';
3
3
  import ts from 'typescript';
4
4
  import { createOperationCommonTSDoc } from '../../lib/createOperationCommonTSDoc.js';
5
5
  import { astToString } from '../astToString.js';
6
+ import { ServiceFactoryOptions } from '../getServiceFactory.js';
7
+ import { createOperationMethodBodyParametersExampleNode } from './lib/createOperationMethodBodyParametersExampleNode.js';
6
8
  import { createOperationMethodCallExpressionExampleNode } from './lib/createOperationMethodCallExpressionExampleNode.js';
7
9
  import { createOperationMethodParametersExampleNodes } from './lib/createOperationMethodParametersExampleNodes.js';
8
10
 
9
11
  export const createUseQueriesOperationTSDocExample = (
10
12
  operation: ServiceOperation,
11
- serviceVariableName: string
13
+ serviceVariableName: string,
14
+ options: Pick<ServiceFactoryOptions, 'queryableWriteOperations'>
12
15
  ) => {
13
16
  const factory = ts.factory;
14
17
 
@@ -40,7 +43,11 @@ export const createUseQueriesOperationTSDocExample = (
40
43
  [
41
44
  factory.createPropertyAssignment(
42
45
  factory.createIdentifier('queries'),
43
- createQueriesArrayExpression(operation, factory)
46
+ createQueriesArrayExpression(
47
+ operation,
48
+ factory,
49
+ options
50
+ )
44
51
  ),
45
52
  ],
46
53
  true
@@ -89,7 +96,11 @@ export const createUseQueriesOperationTSDocExample = (
89
96
  ),
90
97
  factory.createPropertyAssignment(
91
98
  factory.createIdentifier('queries'),
92
- createQueriesArrayExpression(operation, factory)
99
+ createQueriesArrayExpression(
100
+ operation,
101
+ factory,
102
+ options
103
+ )
93
104
  ),
94
105
  ],
95
106
  true
@@ -116,20 +127,39 @@ export const createUseQueriesOperationTSDocExample = (
116
127
 
117
128
  export const createQueriesArrayExpression = (
118
129
  operation: ServiceOperation,
119
- factory: ts.NodeFactory
130
+ factory: ts.NodeFactory,
131
+ {
132
+ queryableWriteOperations,
133
+ }: Pick<ServiceFactoryOptions, 'queryableWriteOperations'>
120
134
  ): ts.ArrayLiteralExpression => {
121
135
  return factory.createArrayLiteralExpression(
122
136
  [
123
137
  factory.createObjectLiteralExpression(
124
- createOperationMethodParametersExampleNodes(operation, (parameter) =>
125
- camelcase(`${parameter.name}-1`)
126
- ),
138
+ [
139
+ queryableWriteOperations &&
140
+ createOperationMethodBodyParametersExampleNode(
141
+ operation,
142
+ 'queryBody1'
143
+ ),
144
+ ...createOperationMethodParametersExampleNodes(
145
+ operation,
146
+ (parameter) => camelcase(`${parameter.name}-1`)
147
+ ),
148
+ ].filter((node) => !!node),
127
149
  true
128
150
  ),
129
151
  factory.createObjectLiteralExpression(
130
- createOperationMethodParametersExampleNodes(operation, (parameter) =>
131
- camelcase(`${parameter.name}-2`)
132
- ),
152
+ [
153
+ queryableWriteOperations &&
154
+ createOperationMethodBodyParametersExampleNode(
155
+ operation,
156
+ 'queryBody2'
157
+ ),
158
+ ...createOperationMethodParametersExampleNodes(
159
+ operation,
160
+ (parameter) => camelcase(`${parameter.name}-2`)
161
+ ),
162
+ ].filter((node) => !!node),
133
163
  true
134
164
  ),
135
165
  ],