@openapi-qraft/tanstack-query-react-plugin 1.8.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 (55) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -0
  3. package/dist/__snapshots__/create-api-client.ts.snapshot.d.ts +1 -0
  4. package/dist/__snapshots__/create-api-client.ts.snapshot.js +88 -0
  5. package/dist/__snapshots__/create-api-client.ts.snapshot.js.map +1 -0
  6. package/dist/__snapshots__/index.ts.snapshot.d.ts +1 -0
  7. package/dist/__snapshots__/index.ts.snapshot.js +13 -0
  8. package/dist/__snapshots__/index.ts.snapshot.js.map +1 -0
  9. package/dist/__snapshots__/services/ApprovalPoliciesService.ts.snapshot.d.ts +1 -0
  10. package/dist/__snapshots__/services/ApprovalPoliciesService.ts.snapshot.js +62 -0
  11. package/dist/__snapshots__/services/ApprovalPoliciesService.ts.snapshot.js.map +1 -0
  12. package/dist/__snapshots__/services/FilesService.ts.snapshot.d.ts +1 -0
  13. package/dist/__snapshots__/services/FilesService.ts.snapshot.js +57 -0
  14. package/dist/__snapshots__/services/FilesService.ts.snapshot.js.map +1 -0
  15. package/dist/__snapshots__/services/index.ts.snapshot.d.ts +1 -0
  16. package/dist/__snapshots__/services/index.ts.snapshot.js +24 -0
  17. package/dist/__snapshots__/services/index.ts.snapshot.js.map +1 -0
  18. package/dist/generateCode.d.ts +18 -0
  19. package/dist/generateCode.js +116 -0
  20. package/dist/generateCode.js.map +1 -0
  21. package/dist/index.d.ts +2 -0
  22. package/dist/index.js +3 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/plugin.d.ts +2 -0
  25. package/dist/plugin.js +30 -0
  26. package/dist/plugin.js.map +1 -0
  27. package/dist/ts-factory/astToString.d.ts +8 -0
  28. package/dist/ts-factory/astToString.js +14 -0
  29. package/dist/ts-factory/astToString.js.map +1 -0
  30. package/dist/ts-factory/getClientFactory.d.ts +7 -0
  31. package/dist/ts-factory/getClientFactory.js +84 -0
  32. package/dist/ts-factory/getClientFactory.js.map +1 -0
  33. package/dist/ts-factory/getIndexFactory.d.ts +5 -0
  34. package/dist/ts-factory/getIndexFactory.js +17 -0
  35. package/dist/ts-factory/getIndexFactory.js.map +1 -0
  36. package/dist/ts-factory/getServiceFactory.d.ts +10 -0
  37. package/dist/ts-factory/getServiceFactory.js +120 -0
  38. package/dist/ts-factory/getServiceFactory.js.map +1 -0
  39. package/dist/ts-factory/getServiceIndexFactory.d.ts +7 -0
  40. package/dist/ts-factory/getServiceIndexFactory.js +26 -0
  41. package/dist/ts-factory/getServiceIndexFactory.js.map +1 -0
  42. package/package.json +48 -0
  43. package/src/__snapshots__/create-api-client.ts.snapshot.ts +88 -0
  44. package/src/__snapshots__/index.ts.snapshot.ts +13 -0
  45. package/src/__snapshots__/services/ApprovalPoliciesService.ts.snapshot.ts +64 -0
  46. package/src/__snapshots__/services/FilesService.ts.snapshot.ts +57 -0
  47. package/src/__snapshots__/services/index.ts.snapshot.ts +24 -0
  48. package/src/generateCode.ts +201 -0
  49. package/src/index.ts +3 -0
  50. package/src/plugin.ts +45 -0
  51. package/src/ts-factory/astToString.ts +34 -0
  52. package/src/ts-factory/getClientFactory.ts +207 -0
  53. package/src/ts-factory/getIndexFactory.ts +58 -0
  54. package/src/ts-factory/getServiceFactory.ts +410 -0
  55. package/src/ts-factory/getServiceIndexFactory.ts +104 -0
@@ -0,0 +1,5 @@
1
+ import ts from 'typescript';
2
+ export declare const getIndexFactory: ({ servicesDirName, explicitImportExtensions, }: {
3
+ servicesDirName: string;
4
+ explicitImportExtensions: boolean;
5
+ }) => ts.ExportDeclaration[];
@@ -0,0 +1,17 @@
1
+ import ts from 'typescript';
2
+ export const getIndexFactory = ({ servicesDirName, explicitImportExtensions, }) => {
3
+ const factory = ts.factory;
4
+ const importExtension = explicitImportExtensions ? '.js' : '';
5
+ return [
6
+ factory.createExportDeclaration(undefined, false, factory.createNamedExports([
7
+ factory.createExportSpecifier(false, undefined, factory.createIdentifier('services')),
8
+ ]), factory.createStringLiteral(`./${servicesDirName}/index${importExtension}`), undefined),
9
+ factory.createExportDeclaration(undefined, true, factory.createNamedExports([
10
+ factory.createExportSpecifier(false, undefined, factory.createIdentifier('Services')),
11
+ ]), factory.createStringLiteral(`./${servicesDirName}/index${importExtension}`), undefined),
12
+ factory.createExportDeclaration(undefined, false, factory.createNamedExports([
13
+ factory.createExportSpecifier(false, undefined, factory.createIdentifier('createAPIClient')),
14
+ ]), factory.createStringLiteral(`./create-api-client${importExtension}`), undefined),
15
+ ];
16
+ };
17
+ //# sourceMappingURL=getIndexFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getIndexFactory.js","sourceRoot":"","sources":["../../src/ts-factory/getIndexFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAC9B,eAAe,EACf,wBAAwB,GAIzB,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IAC3B,MAAM,eAAe,GAAG,wBAAwB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9D,OAAO;QACL,OAAO,CAAC,uBAAuB,CAC7B,SAAS,EACT,KAAK,EACL,OAAO,CAAC,kBAAkB,CAAC;YACzB,OAAO,CAAC,qBAAqB,CAC3B,KAAK,EACL,SAAS,EACT,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,CACrC;SACF,CAAC,EACF,OAAO,CAAC,mBAAmB,CACzB,KAAK,eAAe,SAAS,eAAe,EAAE,CAC/C,EACD,SAAS,CACV;QACD,OAAO,CAAC,uBAAuB,CAC7B,SAAS,EACT,IAAI,EACJ,OAAO,CAAC,kBAAkB,CAAC;YACzB,OAAO,CAAC,qBAAqB,CAC3B,KAAK,EACL,SAAS,EACT,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,CACrC;SACF,CAAC,EACF,OAAO,CAAC,mBAAmB,CACzB,KAAK,eAAe,SAAS,eAAe,EAAE,CAC/C,EACD,SAAS,CACV;QACD,OAAO,CAAC,uBAAuB,CAC7B,SAAS,EACT,KAAK,EACL,OAAO,CAAC,kBAAkB,CAAC;YACzB,OAAO,CAAC,qBAAqB,CAC3B,KAAK,EACL,SAAS,EACT,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAC5C;SACF,CAAC,EACF,OAAO,CAAC,mBAAmB,CAAC,sBAAsB,eAAe,EAAE,CAAC,EACpE,SAAS,CACV;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { ServiceOperation } from '@openapi-qraft/plugin/lib/open-api/getServices';
2
+ import ts from 'typescript';
3
+ export type ServiceImportsFactoryOptions = {
4
+ openapiTypesImportPath: string;
5
+ operationGenericsImportPath: string;
6
+ };
7
+ export declare const getServiceFactory: (service: {
8
+ typeName: string;
9
+ variableName: string;
10
+ }, operations: ServiceOperation[], { openapiTypesImportPath, operationGenericsImportPath, }: ServiceImportsFactoryOptions) => (ts.ImportDeclaration | ts.VariableStatement | ts.InterfaceDeclaration)[];
@@ -0,0 +1,120 @@
1
+ import ts from 'typescript';
2
+ const SERVICE_OPERATION_QUERY = 'ServiceOperationQuery';
3
+ const SERVICE_OPERATION_MUTATION = 'ServiceOperationMutation';
4
+ const factory = ts.factory;
5
+ export const getServiceFactory = (service, operations, { openapiTypesImportPath, operationGenericsImportPath, }) => {
6
+ return [
7
+ getOpenAPISchemaImportsFactory(openapiTypesImportPath),
8
+ getServiceOperationGenericsPathImportsFactory(operationGenericsImportPath, operations),
9
+ getServiceInterfaceFactory(service, operations),
10
+ getServiceVariableFactory(service, operations),
11
+ ];
12
+ };
13
+ const getOpenAPISchemaImportsFactory = (schemaTypesPath) => {
14
+ const factory = ts.factory;
15
+ return factory.createImportDeclaration(undefined, factory.createImportClause(true, undefined, factory.createNamedImports([
16
+ factory.createImportSpecifier(false, undefined, factory.createIdentifier('paths')),
17
+ ])), factory.createStringLiteral(schemaTypesPath));
18
+ };
19
+ const getServiceOperationGenericsPathImportsFactory = (operationGenericsPath, operations) => {
20
+ const factory = ts.factory;
21
+ const queryMethods = ['get', 'head', 'options']; // todo::make it shared
22
+ return factory.createImportDeclaration(undefined, factory.createImportClause(true, undefined, factory.createNamedImports([
23
+ operations.some((operation) => queryMethods.some((method) => method === operation.method))
24
+ ? factory.createImportSpecifier(false, undefined, factory.createIdentifier('ServiceOperationQuery'))
25
+ : null,
26
+ operations.some((operation) => !queryMethods.some((method) => method === operation.method))
27
+ ? factory.createImportSpecifier(false, undefined, factory.createIdentifier('ServiceOperationMutation'))
28
+ : null,
29
+ ].filter((node) => Boolean(node)))), factory.createStringLiteral(operationGenericsPath));
30
+ };
31
+ const getServiceInterfaceFactory = ({ typeName }, operations) => {
32
+ return factory.createInterfaceDeclaration([factory.createToken(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier(typeName), undefined, undefined, operations.map(getServiceInterfaceOperationFactory));
33
+ };
34
+ const getServiceInterfaceOperationFactory = (operation) => {
35
+ const node = factory.createPropertySignature(undefined, factory.createIdentifier(operation.name), undefined, factory.createTypeReferenceNode(factory.createIdentifier(operation.method === 'get'
36
+ ? SERVICE_OPERATION_QUERY
37
+ : SERVICE_OPERATION_MUTATION), [
38
+ getOperationSchemaFactory(operation),
39
+ operation.method !== 'get' ? getOperationBodyFactory(operation) : null,
40
+ getOperationResponseFactory(operation, 'success'),
41
+ getOperationParametersFactory(operation),
42
+ getOperationResponseFactory(operation, 'errors'),
43
+ ].filter((node) => Boolean(node))));
44
+ const comment = createMultilineComment([
45
+ operation.deprecated ? '@deprecated' : null,
46
+ operation.summary ? `@summary ${operation.summary}` : null,
47
+ operation.description ? `@description ${operation.description}` : null,
48
+ ].filter((comment) => Boolean(comment)));
49
+ if (comment)
50
+ ts.addSyntheticLeadingComment(node, ts.SyntaxKind.MultiLineCommentTrivia, comment, true);
51
+ return node;
52
+ };
53
+ const getOperationSchemaFactory = (operation) => {
54
+ return factory.createTypeLiteralNode([
55
+ factory.createPropertySignature(undefined, factory.createIdentifier('method'), undefined, factory.createLiteralTypeNode(factory.createStringLiteral(operation.method))),
56
+ factory.createPropertySignature(undefined, factory.createIdentifier('url'), undefined, factory.createLiteralTypeNode(factory.createStringLiteral(operation.path))),
57
+ operation.mediaType
58
+ ? factory.createPropertySignature(undefined, factory.createIdentifier('mediaType'), undefined, factory.createLiteralTypeNode(factory.createStringLiteral(operation.mediaType)))
59
+ : null,
60
+ ].filter((node) => Boolean(node)));
61
+ };
62
+ const getOperationResponseFactory = (operation, type) => {
63
+ if (!operation[type])
64
+ return factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword);
65
+ const responses = Object.entries(operation[type]);
66
+ if (!responses.length)
67
+ return factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword);
68
+ return factory.createUnionTypeNode(responses.map(([statusCode, mediaType]) => {
69
+ if (!mediaType)
70
+ return factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword);
71
+ return factory.createIndexedAccessTypeNode(factory.createIndexedAccessTypeNode(factory.createIndexedAccessTypeNode(factory.createIndexedAccessTypeNode(factory.createIndexedAccessTypeNode(factory.createIndexedAccessTypeNode(factory.createTypeReferenceNode(factory.createIdentifier('paths'), undefined), factory.createLiteralTypeNode(factory.createStringLiteral(operation.path))), factory.createLiteralTypeNode(factory.createStringLiteral(operation.method))), factory.createLiteralTypeNode(factory.createStringLiteral('responses'))), factory.createLiteralTypeNode(factory.createStringLiteral(statusCode))), factory.createLiteralTypeNode(factory.createStringLiteral('content'))), factory.createLiteralTypeNode(factory.createStringLiteral(mediaType)));
72
+ }));
73
+ };
74
+ const getOperationBodyFactory = (operation) => {
75
+ if (!operation.mediaType)
76
+ return factory.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword);
77
+ return factory.createIndexedAccessTypeNode(factory.createIndexedAccessTypeNode(factory.createTypeReferenceNode(factory.createIdentifier('NonNullable'), [
78
+ factory.createIndexedAccessTypeNode(factory.createIndexedAccessTypeNode(factory.createIndexedAccessTypeNode(factory.createTypeReferenceNode(factory.createIdentifier('paths'), undefined), factory.createLiteralTypeNode(factory.createStringLiteral(operation.path))), factory.createLiteralTypeNode(factory.createStringLiteral(operation.method))), factory.createLiteralTypeNode(factory.createStringLiteral('requestBody'))),
79
+ ]),
80
+ // todo::Add optional NonNullable inference, see `POST /entities/{entity_id}/documents`
81
+ factory.createLiteralTypeNode(factory.createStringLiteral('content'))), factory.createLiteralTypeNode(factory.createStringLiteral(operation.mediaType)));
82
+ };
83
+ const getOperationParametersFactory = (operation) => {
84
+ if (!operation.parameters)
85
+ return factory.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword);
86
+ return factory.createIndexedAccessTypeNode(factory.createIndexedAccessTypeNode(factory.createIndexedAccessTypeNode(factory.createTypeReferenceNode(factory.createIdentifier('paths'), undefined), factory.createLiteralTypeNode(factory.createStringLiteral(operation.path))), factory.createLiteralTypeNode(factory.createStringLiteral(operation.method))), factory.createLiteralTypeNode(factory.createStringLiteral('parameters')));
87
+ };
88
+ const getServiceVariableFactory = ({ typeName, variableName }, operations) => {
89
+ return factory.createVariableStatement([factory.createToken(ts.SyntaxKind.ExportKeyword)], factory.createVariableDeclarationList([
90
+ factory.createVariableDeclaration(factory.createIdentifier(variableName), undefined, getServiceVariableTypeFactory({ typeName }), factory.createAsExpression(factory.createObjectLiteralExpression(operations.map(getServiceVariablePropertyFactory), true), factory.createTypeReferenceNode(factory.createIdentifier('const'), undefined))),
91
+ ], ts.NodeFlags.Const));
92
+ };
93
+ const getServiceVariableTypeFactory = ({ typeName }) => {
94
+ return factory.createMappedTypeNode(undefined, factory.createTypeParameterDeclaration(undefined, factory.createIdentifier('key'), factory.createTypeOperatorNode(ts.SyntaxKind.KeyOfKeyword, factory.createTypeReferenceNode(factory.createIdentifier(typeName), undefined)), undefined), undefined, undefined, factory.createTypeReferenceNode(factory.createIdentifier('Pick'), [
95
+ factory.createIndexedAccessTypeNode(factory.createTypeReferenceNode(factory.createIdentifier(typeName), undefined), factory.createTypeReferenceNode(factory.createIdentifier('key'), undefined)),
96
+ factory.createLiteralTypeNode(factory.createStringLiteral('schema')),
97
+ ]), undefined);
98
+ };
99
+ const getServiceVariablePropertyFactory = (operation) => {
100
+ return factory.createPropertyAssignment(factory.createIdentifier(operation.name), factory.createObjectLiteralExpression([
101
+ factory.createPropertyAssignment(factory.createIdentifier('schema'), factory.createObjectLiteralExpression([
102
+ factory.createPropertyAssignment(factory.createIdentifier('method'), factory.createStringLiteral(operation.method)),
103
+ factory.createPropertyAssignment(factory.createIdentifier('url'), factory.createStringLiteral(operation.path)),
104
+ operation.mediaType
105
+ ? factory.createPropertyAssignment(factory.createIdentifier('mediaType'), factory.createStringLiteral(operation.mediaType))
106
+ : null,
107
+ ].filter((node) => Boolean(node)), true)),
108
+ ], true));
109
+ };
110
+ const createMultilineComment = (comment) => {
111
+ const output = comment.flatMap((line) => line.includes('\n') ? line.split('\n') : line);
112
+ if (output.length) {
113
+ const text = output.length === 1
114
+ ? `* ${output.join('\n')} `
115
+ : `*\n * ${output.join('\n * ')}\n `;
116
+ return text.replace(/\*\//g, '*\\/'); // prevent inner comments from leaking
117
+ }
118
+ return '';
119
+ };
120
+ //# sourceMappingURL=getServiceFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getServiceFactory.js","sourceRoot":"","sources":["../../src/ts-factory/getServiceFactory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Service } from '@openapi-qraft/plugin/lib/open-api/getServices';
2
+ import ts from 'typescript';
3
+ type Options = {
4
+ explicitImportExtensions: boolean;
5
+ };
6
+ export declare const getServiceIndexFactory: (services: Service[], options: Options) => (ts.ImportDeclaration | ts.VariableStatement | ts.TypeAliasDeclaration)[];
7
+ export {};
@@ -0,0 +1,26 @@
1
+ import ts from 'typescript';
2
+ export const getServiceIndexFactory = (services, options) => {
3
+ return [
4
+ ...getServicesImportsFactory(services, options),
5
+ getServiceIndexInterfaceFactory(services),
6
+ getServiceIndexVariableFactory(services),
7
+ ];
8
+ };
9
+ const getServiceIndexInterfaceFactory = (services) => {
10
+ const factory = ts.factory;
11
+ return factory.createTypeAliasDeclaration([factory.createToken(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier('Services'), undefined, factory.createTypeLiteralNode(services.map(({ name, typeName }) => factory.createPropertySignature(undefined, factory.createIdentifier(name), undefined, factory.createTypeReferenceNode(factory.createIdentifier(typeName), undefined)))));
12
+ };
13
+ const getServiceIndexVariableFactory = (services) => {
14
+ const factory = ts.factory;
15
+ return factory.createVariableStatement([factory.createToken(ts.SyntaxKind.ExportKeyword)], factory.createVariableDeclarationList([
16
+ factory.createVariableDeclaration(factory.createIdentifier('services'), undefined, undefined, factory.createAsExpression(factory.createObjectLiteralExpression(services.map(({ name, variableName }) => factory.createPropertyAssignment(factory.createIdentifier(name), factory.createIdentifier(variableName))), true), factory.createTypeReferenceNode(factory.createIdentifier('const'), undefined))),
17
+ ], ts.NodeFlags.Const));
18
+ };
19
+ const getServicesImportsFactory = (services, { explicitImportExtensions }) => {
20
+ const factory = ts.factory;
21
+ return services.map(({ variableName, typeName, fileBaseName }) => factory.createImportDeclaration(undefined, factory.createImportClause(false, undefined, factory.createNamedImports([
22
+ factory.createImportSpecifier(false, undefined, factory.createIdentifier(typeName)),
23
+ factory.createImportSpecifier(false, undefined, factory.createIdentifier(variableName)),
24
+ ])), factory.createStringLiteral(`./${fileBaseName}${explicitImportExtensions ? '.js' : ''}`)));
25
+ };
26
+ //# sourceMappingURL=getServiceIndexFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getServiceIndexFactory.js","sourceRoot":"","sources":["../../src/ts-factory/getServiceIndexFactory.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@openapi-qraft/tanstack-query-react-plugin",
3
+ "version": "1.8.0",
4
+ "packageManager": "yarn@4.0.2",
5
+ "type": "module",
6
+ "scripts": {
7
+ "build": "rimraf dist/ && tsc --project tsconfig.build.json",
8
+ "dev": "yarn build --watch",
9
+ "test": "vitest run",
10
+ "typecheck": "tsc --noEmit",
11
+ "lint": "eslint"
12
+ },
13
+ "exports": {
14
+ "./package.json": "./package.json",
15
+ ".": "./dist/index.js",
16
+ "./*": "./dist/*.js"
17
+ },
18
+ "typesVersions": {
19
+ "*": {
20
+ "*": [
21
+ "dist/*"
22
+ ]
23
+ }
24
+ },
25
+ "dependencies": {
26
+ "@openapi-qraft/plugin": "^1.8.0",
27
+ "typescript": "^5.3.3"
28
+ },
29
+ "devDependencies": {
30
+ "@openapi-qraft/eslint-config": "~1.0.0",
31
+ "@types/mock-fs": "^4.13.4",
32
+ "eslint": "^9.0.0",
33
+ "mock-fs": "^5.2.0",
34
+ "rimraf": "^5.0.5",
35
+ "vitest": "^1.4.0"
36
+ },
37
+ "files": [
38
+ "dist",
39
+ "src",
40
+ "!dist/**/*.test.*",
41
+ "!dist/**/*.spec.*",
42
+ "!src/**/*.test.*",
43
+ "!src/**/*.spec.*"
44
+ ],
45
+ "publishConfig": {
46
+ "access": "public"
47
+ }
48
+ }
@@ -0,0 +1,88 @@
1
+ import fs from 'node:fs';
2
+ import { expect } from 'vitest';
3
+
4
+ export default function () {
5
+ expect(fs.readFileSync('/mock-fs/create-api-client.ts', 'utf-8'))
6
+ .toMatchInlineSnapshot(`
7
+ "/* generated using @openapi-qraft/cli -- do no edit */
8
+ /* istanbul ignore file */
9
+ import { qraftAPIClient, QraftClientOptions } from "@openapi-qraft/react";
10
+ import { getInfiniteQueryData } from "@openapi-qraft/react/callbacks/getInfiniteQueryData";
11
+ import { getInfiniteQueryKey } from "@openapi-qraft/react/callbacks/getInfiniteQueryKey";
12
+ import { getMutationKey } from "@openapi-qraft/react/callbacks/getMutationKey";
13
+ import { getQueryData } from "@openapi-qraft/react/callbacks/getQueryData";
14
+ import { getQueriesData } from "@openapi-qraft/react/callbacks/getQueriesData";
15
+ import { getQueryKey } from "@openapi-qraft/react/callbacks/getQueryKey";
16
+ import { mutationFn } from "@openapi-qraft/react/callbacks/mutationFn";
17
+ import { queryFn } from "@openapi-qraft/react/callbacks/queryFn";
18
+ import { setInfiniteQueryData } from "@openapi-qraft/react/callbacks/setInfiniteQueryData";
19
+ import { setQueryData } from "@openapi-qraft/react/callbacks/setQueryData";
20
+ import { setQueriesData } from "@openapi-qraft/react/callbacks/setQueriesData";
21
+ import { useInfiniteQuery } from "@openapi-qraft/react/callbacks/useInfiniteQuery";
22
+ import { useMutation } from "@openapi-qraft/react/callbacks/useMutation";
23
+ import { useQuery } from "@openapi-qraft/react/callbacks/useQuery";
24
+ import { useSuspenseQuery } from "@openapi-qraft/react/callbacks/useSuspenseQuery";
25
+ import { useSuspenseInfiniteQuery } from "@openapi-qraft/react/callbacks/useSuspenseInfiniteQuery";
26
+ import { useMutationState } from "@openapi-qraft/react/callbacks/useMutationState";
27
+ import { useIsMutating } from "@openapi-qraft/react/callbacks/useIsMutating";
28
+ import { useQueries } from "@openapi-qraft/react/callbacks/useQueries";
29
+ import { useSuspenseQueries } from "@openapi-qraft/react/callbacks/useSuspenseQueries";
30
+ import { invalidateQueries } from "@openapi-qraft/react/callbacks/invalidateQueries";
31
+ import { cancelQueries } from "@openapi-qraft/react/callbacks/cancelQueries";
32
+ import { resetQueries } from "@openapi-qraft/react/callbacks/resetQueries";
33
+ import { removeQueries } from "@openapi-qraft/react/callbacks/removeQueries";
34
+ import { refetchQueries } from "@openapi-qraft/react/callbacks/refetchQueries";
35
+ import { isFetching } from "@openapi-qraft/react/callbacks/isFetching";
36
+ import { isMutating } from "@openapi-qraft/react/callbacks/isMutating";
37
+ import { useIsFetching } from "@openapi-qraft/react/callbacks/useIsFetching";
38
+ import { fetchQuery } from "@openapi-qraft/react/callbacks/fetchQuery";
39
+ import { prefetchQuery } from "@openapi-qraft/react/callbacks/prefetchQuery";
40
+ import { fetchInfiniteQuery } from "@openapi-qraft/react/callbacks/fetchInfiniteQuery";
41
+ import { prefetchInfiniteQuery } from "@openapi-qraft/react/callbacks/prefetchInfiniteQuery";
42
+ import { getQueryState } from "@openapi-qraft/react/callbacks/getQueryState";
43
+ import { getInfiniteQueryState } from "@openapi-qraft/react/callbacks/getInfiniteQueryState";
44
+ import { operationInvokeFn } from "@openapi-qraft/react/callbacks/operationInvokeFn";
45
+ import { services, Services } from "./services/index.js";
46
+ const callbacks = {
47
+ getInfiniteQueryData,
48
+ getInfiniteQueryKey,
49
+ getMutationKey,
50
+ getQueryData,
51
+ getQueriesData,
52
+ getQueryKey,
53
+ mutationFn,
54
+ queryFn,
55
+ setInfiniteQueryData,
56
+ setQueryData,
57
+ setQueriesData,
58
+ useInfiniteQuery,
59
+ useMutation,
60
+ useQuery,
61
+ useSuspenseQuery,
62
+ useSuspenseInfiniteQuery,
63
+ useMutationState,
64
+ useIsMutating,
65
+ useQueries,
66
+ useSuspenseQueries,
67
+ invalidateQueries,
68
+ cancelQueries,
69
+ resetQueries,
70
+ removeQueries,
71
+ refetchQueries,
72
+ isFetching,
73
+ isMutating,
74
+ useIsFetching,
75
+ fetchQuery,
76
+ prefetchQuery,
77
+ fetchInfiniteQuery,
78
+ prefetchInfiniteQuery,
79
+ getQueryState,
80
+ getInfiniteQueryState,
81
+ operationInvokeFn
82
+ };
83
+ export function createAPIClient(options?: QraftClientOptions): Services {
84
+ return qraftAPIClient<Services, typeof callbacks>(services, callbacks, options);
85
+ }
86
+ "
87
+ `);
88
+ }
@@ -0,0 +1,13 @@
1
+ import fs from 'node:fs';
2
+ import { expect } from 'vitest';
3
+
4
+ export default function () {
5
+ expect(fs.readFileSync('/mock-fs/index.ts', 'utf-8')).toMatchInlineSnapshot(`
6
+ "/* generated using @openapi-qraft/cli -- do no edit */
7
+ /* istanbul ignore file */
8
+ export { services } from "./services/index.js";
9
+ export type { Services } from "./services/index.js";
10
+ export { createAPIClient } from "./create-api-client.js";
11
+ "
12
+ `);
13
+ }
@@ -0,0 +1,64 @@
1
+ import fs from 'node:fs';
2
+ import { expect } from 'vitest';
3
+
4
+ export default function () {
5
+ expect(
6
+ fs.readFileSync('/mock-fs/services/ApprovalPoliciesService.ts', 'utf-8')
7
+ ).toMatchInlineSnapshot(`
8
+ "/* generated using @openapi-qraft/cli -- do no edit */
9
+ /* istanbul ignore file */
10
+ import type { paths } from "../../openapi.js";
11
+ import type { ServiceOperationQuery, ServiceOperationMutation } from "@openapi-qraft/react";
12
+ export interface ApprovalPoliciesService {
13
+ /**
14
+ * @summary Get an approval policy by ID
15
+ * @description Retrieve a specific approval policy.
16
+ */
17
+ getApprovalPoliciesId: ServiceOperationQuery<{
18
+ method: "get";
19
+ url: "/approval_policies/{approval_policy_id}";
20
+ }, paths["/approval_policies/{approval_policy_id}"]["get"]["responses"]["200"]["content"]["application/json"], paths["/approval_policies/{approval_policy_id}"]["get"]["parameters"], paths["/approval_policies/{approval_policy_id}"]["get"]["responses"]["401"]["content"]["application/json"] | paths["/approval_policies/{approval_policy_id}"]["get"]["responses"]["422"]["content"]["application/json"] | paths["/approval_policies/{approval_policy_id}"]["get"]["responses"]["default"]["content"]["application/json"]>;
21
+ /**
22
+ * @summary Delete an approval policy
23
+ * @description Delete an existing approval policy.
24
+ */
25
+ deleteApprovalPoliciesId: ServiceOperationMutation<{
26
+ method: "delete";
27
+ url: "/approval_policies/{approval_policy_id}";
28
+ }, undefined, paths["/approval_policies/{approval_policy_id}"]["delete"]["responses"]["200"]["content"]["application/json"], paths["/approval_policies/{approval_policy_id}"]["delete"]["parameters"], paths["/approval_policies/{approval_policy_id}"]["delete"]["responses"]["401"]["content"]["application/json"] | paths["/approval_policies/{approval_policy_id}"]["delete"]["responses"]["422"]["content"]["application/json"] | paths["/approval_policies/{approval_policy_id}"]["delete"]["responses"]["default"]["content"]["application/json"]>;
29
+ /**
30
+ * @summary Update an approval policy
31
+ * @description Update an existing approval policy.
32
+ */
33
+ patchApprovalPoliciesId: ServiceOperationMutation<{
34
+ method: "patch";
35
+ url: "/approval_policies/{approval_policy_id}";
36
+ mediaType: "application/json";
37
+ }, NonNullable<paths["/approval_policies/{approval_policy_id}"]["patch"]["requestBody"]>["content"]["application/json"], paths["/approval_policies/{approval_policy_id}"]["patch"]["responses"]["200"]["content"]["application/json"], paths["/approval_policies/{approval_policy_id}"]["patch"]["parameters"], paths["/approval_policies/{approval_policy_id}"]["patch"]["responses"]["401"]["content"]["application/json"] | paths["/approval_policies/{approval_policy_id}"]["patch"]["responses"]["422"]["content"]["application/json"] | paths["/approval_policies/{approval_policy_id}"]["patch"]["responses"]["default"]["content"]["application/json"]>;
38
+ }
39
+ export const approvalPoliciesService: {
40
+ [key in keyof ApprovalPoliciesService]: Pick<ApprovalPoliciesService[key], "schema">;
41
+ } = {
42
+ getApprovalPoliciesId: {
43
+ schema: {
44
+ method: "get",
45
+ url: "/approval_policies/{approval_policy_id}"
46
+ }
47
+ },
48
+ deleteApprovalPoliciesId: {
49
+ schema: {
50
+ method: "delete",
51
+ url: "/approval_policies/{approval_policy_id}"
52
+ }
53
+ },
54
+ patchApprovalPoliciesId: {
55
+ schema: {
56
+ method: "patch",
57
+ url: "/approval_policies/{approval_policy_id}",
58
+ mediaType: "application/json"
59
+ }
60
+ }
61
+ } as const;
62
+ "
63
+ `);
64
+ }
@@ -0,0 +1,57 @@
1
+ import fs from 'node:fs';
2
+ import { expect } from 'vitest';
3
+
4
+ export default function () {
5
+ expect(fs.readFileSync('/mock-fs/services/FilesService.ts', 'utf-8'))
6
+ .toMatchInlineSnapshot(`
7
+ "/* generated using @openapi-qraft/cli -- do no edit */
8
+ /* istanbul ignore file */
9
+ import type { paths } from "../../openapi.js";
10
+ import type { ServiceOperationQuery, ServiceOperationMutation } from "@openapi-qraft/react";
11
+ export interface FilesService {
12
+ /** @summary Get a files by ID */
13
+ getFiles: ServiceOperationQuery<{
14
+ method: "get";
15
+ url: "/files";
16
+ }, paths["/files"]["get"]["responses"]["200"]["content"]["application/json"], paths["/files"]["get"]["parameters"], paths["/files"]["get"]["responses"]["405"]["content"]["application/json"] | paths["/files"]["get"]["responses"]["422"]["content"]["application/json"] | paths["/files"]["get"]["responses"]["default"]["content"]["application/json"]>;
17
+ /** @summary Upload a files by ID */
18
+ postFiles: ServiceOperationMutation<{
19
+ method: "post";
20
+ url: "/files";
21
+ mediaType: "multipart/form-data";
22
+ }, NonNullable<paths["/files"]["post"]["requestBody"]>["content"]["multipart/form-data"], paths["/files"]["post"]["responses"]["200"]["content"]["application/json"], undefined, paths["/files"]["post"]["responses"]["default"]["content"]["application/json"]>;
23
+ /**
24
+ * @deprecated
25
+ * @summary Get a file list
26
+ */
27
+ getFileList: ServiceOperationQuery<{
28
+ method: "get";
29
+ url: "/files/list";
30
+ }, paths["/files/list"]["get"]["responses"]["200"]["content"]["application/json"], paths["/files/list"]["get"]["parameters"], paths["/files/list"]["get"]["responses"]["default"]["content"]["application/json"]>;
31
+ }
32
+ export const filesService: {
33
+ [key in keyof FilesService]: Pick<FilesService[key], "schema">;
34
+ } = {
35
+ getFiles: {
36
+ schema: {
37
+ method: "get",
38
+ url: "/files"
39
+ }
40
+ },
41
+ postFiles: {
42
+ schema: {
43
+ method: "post",
44
+ url: "/files",
45
+ mediaType: "multipart/form-data"
46
+ }
47
+ },
48
+ getFileList: {
49
+ schema: {
50
+ method: "get",
51
+ url: "/files/list"
52
+ }
53
+ }
54
+ } as const;
55
+ "
56
+ `);
57
+ }
@@ -0,0 +1,24 @@
1
+ import fs from 'node:fs';
2
+ import { expect } from 'vitest';
3
+
4
+ export default function () {
5
+ expect(fs.readFileSync('/mock-fs/services/index.ts', 'utf-8'))
6
+ .toMatchInlineSnapshot(`
7
+ "/* generated using @openapi-qraft/cli -- do no edit */
8
+ /* istanbul ignore file */
9
+ import { EntitiesService, entitiesService } from "./EntitiesService.js";
10
+ import { ApprovalPoliciesService, approvalPoliciesService } from "./ApprovalPoliciesService.js";
11
+ import { FilesService, filesService } from "./FilesService.js";
12
+ export type Services = {
13
+ entities: EntitiesService;
14
+ approvalPolicies: ApprovalPoliciesService;
15
+ files: FilesService;
16
+ };
17
+ export const services = {
18
+ entities: entitiesService,
19
+ approvalPolicies: approvalPoliciesService,
20
+ files: filesService
21
+ } as const;
22
+ "
23
+ `);
24
+ }