@7nohe/openapi-react-query-codegen 0.5.1 → 0.5.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.
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@7nohe/openapi-react-query-codegen",
3
- "version": "0.5.1",
3
+ "version": "0.5.2",
4
4
  "description": "OpenAPI React Query Codegen",
5
5
  "bin": {
6
6
  "openapi-rq": "dist/src/cli.js"
@@ -13,7 +13,7 @@ const createUseMutation_1 = require("./createUseMutation");
13
13
  const createExports = (generatedClientsPath) => {
14
14
  const services = (0, glob_1.sync)((0, path_1.join)(generatedClientsPath, "services", "*.ts").replace(/\\/g, "/"));
15
15
  const nodes = services.map((servicePath) => typescript_1.default.createSourceFile(servicePath, // fileName
16
- fs_1.default.readFileSync((0, path_1.join)(process.cwd(), servicePath), "utf8"), typescript_1.default.ScriptTarget.Latest // langugeVersion
16
+ fs_1.default.readFileSync((0, path_1.join)(process.cwd(), servicePath), "utf8"), typescript_1.default.ScriptTarget.Latest // languageVersion
17
17
  ));
18
18
  return [
19
19
  ...nodes
@@ -35,9 +35,23 @@ const createExports = (generatedClientsPath) => {
35
35
  const httpMethodName = properties
36
36
  .find((p) => p.name?.getText(node) === "method")
37
37
  ?.initializer?.getText(node);
38
+ const getAllChildren = (tsNode) => {
39
+ const childItems = tsNode.getChildren(node);
40
+ if (childItems.length) {
41
+ const allChildren = childItems.map(getAllChildren);
42
+ return [tsNode].concat(allChildren.flat());
43
+ }
44
+ return [tsNode];
45
+ };
46
+ const children = getAllChildren(method);
47
+ const jsDoc = children.filter((c) => c.kind === typescript_1.default.SyntaxKind.JSDoc).map((c) => {
48
+ return c.comment;
49
+ });
50
+ const hasDeprecated = children
51
+ .some((c) => c.kind === typescript_1.default.SyntaxKind.JSDocDeprecatedTag);
38
52
  return httpMethodName === "'GET'"
39
- ? (0, createUseQuery_1.createUseQuery)(node, className, method)
40
- : (0, createUseMutation_1.createUseMutation)(node, className, method);
53
+ ? (0, createUseQuery_1.createUseQuery)(node, className, method, jsDoc, hasDeprecated)
54
+ : (0, createUseMutation_1.createUseMutation)(node, className, method, jsDoc, hasDeprecated);
41
55
  })
42
56
  .flat();
43
57
  })
@@ -6,7 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.createUseMutation = void 0;
7
7
  const typescript_1 = __importDefault(require("typescript"));
8
8
  const common_1 = require("./common");
9
- const createUseMutation = (node, className, method) => {
9
+ const util_1 = require("./util");
10
+ const createUseMutation = (node, className, method, jsDoc = [], deprecated = false) => {
10
11
  const methodName = method.name?.getText(node);
11
12
  // Awaited<ReturnType<typeof myClass.myMethod>>
12
13
  const awaitedResponseDataType = typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("Awaited"), [
@@ -14,7 +15,11 @@ const createUseMutation = (node, className, method) => {
14
15
  typescript_1.default.factory.createTypeQueryNode(typescript_1.default.factory.createQualifiedName(typescript_1.default.factory.createIdentifier(className), typescript_1.default.factory.createIdentifier(methodName)), undefined),
15
16
  ]),
16
17
  ]);
17
- const responseDataType = typescript_1.default.factory.createTypeParameterDeclaration(undefined, "TData", undefined, awaitedResponseDataType);
18
+ const TData = typescript_1.default.factory.createIdentifier("TData");
19
+ const TError = typescript_1.default.factory.createIdentifier("TError");
20
+ const TContext = typescript_1.default.factory.createIdentifier("TContext");
21
+ const mutationResult = typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], typescript_1.default.factory.createIdentifier(`${className}${methodName}MutationResult`), undefined, awaitedResponseDataType);
22
+ const responseDataType = typescript_1.default.factory.createTypeParameterDeclaration(undefined, TData, undefined, typescript_1.default.factory.createTypeReferenceNode(mutationResult.name));
18
23
  const methodParameters = method.parameters.length !== 0
19
24
  ? typescript_1.default.factory.createTypeLiteralNode(method.parameters.map((param) => {
20
25
  return typescript_1.default.factory.createPropertySignature(undefined, typescript_1.default.factory.createIdentifier(param.name.getText(node)), param.questionToken ?? param.initializer
@@ -22,22 +27,27 @@ const createUseMutation = (node, className, method) => {
22
27
  : param.questionToken, param.type);
23
28
  }))
24
29
  : typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.VoidKeyword);
25
- return typescript_1.default.factory.createVariableStatement([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], typescript_1.default.factory.createVariableDeclarationList([
30
+ const exportHook = typescript_1.default.factory.createVariableStatement([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], typescript_1.default.factory.createVariableDeclarationList([
26
31
  typescript_1.default.factory.createVariableDeclaration(typescript_1.default.factory.createIdentifier(`use${className}${(0, common_1.capitalizeFirstLetter)(methodName)}`), undefined, undefined, typescript_1.default.factory.createArrowFunction(undefined, typescript_1.default.factory.createNodeArray([
27
32
  responseDataType,
28
- typescript_1.default.factory.createTypeParameterDeclaration(undefined, "TError", undefined, typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword)),
29
- typescript_1.default.factory.createTypeParameterDeclaration(undefined, "TContext", undefined, typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword)),
33
+ typescript_1.default.factory.createTypeParameterDeclaration(undefined, TError, undefined, typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword)),
34
+ typescript_1.default.factory.createTypeParameterDeclaration(undefined, TContext, undefined, typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword)),
30
35
  ]), [
31
36
  typescript_1.default.factory.createParameterDeclaration(undefined, undefined, typescript_1.default.factory.createIdentifier("options"), typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionToken), typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("Omit"), [
32
37
  typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("UseMutationOptions"), [
33
- awaitedResponseDataType,
34
- typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword),
38
+ typescript_1.default.factory.createTypeReferenceNode(TData),
39
+ typescript_1.default.factory.createTypeReferenceNode(TError),
35
40
  methodParameters,
36
- typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword),
41
+ typescript_1.default.factory.createTypeReferenceNode(TContext),
37
42
  ]),
38
43
  typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral("mutationFn")),
39
44
  ]), undefined),
40
- ], undefined, typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), typescript_1.default.factory.createAsExpression(typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("useMutation"), undefined, [
45
+ ], undefined, typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("useMutation"), [
46
+ typescript_1.default.factory.createTypeReferenceNode(TData),
47
+ typescript_1.default.factory.createTypeReferenceNode(TError),
48
+ methodParameters,
49
+ typescript_1.default.factory.createTypeReferenceNode(TContext),
50
+ ], [
41
51
  typescript_1.default.factory.createObjectLiteralExpression([
42
52
  typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("mutationFn"), typescript_1.default.factory.createArrowFunction(undefined, undefined, method.parameters.length !== 0
43
53
  ? [
@@ -45,25 +55,12 @@ const createUseMutation = (node, className, method) => {
45
55
  return typescript_1.default.factory.createBindingElement(undefined, undefined, typescript_1.default.factory.createIdentifier(param.name.getText(node)), undefined);
46
56
  })), undefined, undefined, undefined),
47
57
  ]
48
- : [], undefined, typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createPropertyAccessExpression(typescript_1.default.factory.createIdentifier(className), typescript_1.default.factory.createIdentifier(methodName)), undefined, method.parameters.map((params) => typescript_1.default.factory.createIdentifier(params.name.getText(node)))))),
58
+ : [], undefined, typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), typescript_1.default.factory.createAsExpression(typescript_1.default.factory.createAsExpression(typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createPropertyAccessExpression(typescript_1.default.factory.createIdentifier(className), typescript_1.default.factory.createIdentifier(methodName)), undefined, method.parameters.map((params) => typescript_1.default.factory.createIdentifier(params.name.getText(node)))), typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword)), typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("Promise"), [typescript_1.default.factory.createTypeReferenceNode(TData)])))),
49
59
  typescript_1.default.factory.createSpreadAssignment(typescript_1.default.factory.createIdentifier("options")),
50
60
  ]),
51
- ]),
52
- // Omit<UseMutationResult<Awaited<ReturnType<typeof myClass.myMethod>>, TError, params, TContext>, 'data'> & { data: TData };
53
- typescript_1.default.factory.createIntersectionTypeNode([
54
- typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("Omit"), [
55
- typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("UseMutationResult"), [
56
- awaitedResponseDataType,
57
- typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("TError"), undefined),
58
- methodParameters,
59
- typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("TContext"), undefined),
60
- ]),
61
- typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral("data")),
62
- ]),
63
- typescript_1.default.factory.createTypeLiteralNode([
64
- typescript_1.default.factory.createPropertySignature(undefined, typescript_1.default.factory.createIdentifier("data"), undefined, typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("TData"), undefined)),
65
- ]),
66
- ])))),
61
+ ]))),
67
62
  ], typescript_1.default.NodeFlags.Const));
63
+ const hookWithJsDoc = (0, util_1.addJSDocToNode)(exportHook, node, deprecated, jsDoc);
64
+ return [mutationResult, hookWithJsDoc];
68
65
  };
69
66
  exports.createUseMutation = createUseMutation;
@@ -6,7 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.createUseQuery = void 0;
7
7
  const typescript_1 = __importDefault(require("typescript"));
8
8
  const common_1 = require("./common");
9
- const createUseQuery = (node, className, method) => {
9
+ const util_1 = require("./util");
10
+ const createUseQuery = (node, className, method, jsDoc = [], deprecated = false) => {
10
11
  const methodName = method.name?.getText(node);
11
12
  let requestParam = [];
12
13
  if (method.parameters.length !== 0) {
@@ -16,7 +17,7 @@ const createUseQuery = (node, className, method) => {
16
17
  }
17
18
  const customHookName = `use${className}${(0, common_1.capitalizeFirstLetter)(methodName)}`;
18
19
  const queryKey = `${customHookName}Key`;
19
- const queryKeyGenericType = typescript_1.default.factory.createTypeReferenceNode("TQueryKey", undefined);
20
+ const queryKeyGenericType = typescript_1.default.factory.createTypeReferenceNode("TQueryKey");
20
21
  const queryKeyConstraint = typescript_1.default.factory.createTypeReferenceNode("Array", [
21
22
  typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword),
22
23
  ]);
@@ -26,62 +27,64 @@ const createUseQuery = (node, className, method) => {
26
27
  typescript_1.default.factory.createTypeQueryNode(typescript_1.default.factory.createQualifiedName(typescript_1.default.factory.createIdentifier(className), typescript_1.default.factory.createIdentifier(methodName)), undefined),
27
28
  ]),
28
29
  ]);
29
- const responseDataType = typescript_1.default.factory.createTypeParameterDeclaration(undefined, "TData", undefined, awaitedResponseDataType);
30
- return [
31
- // QueryKey
32
- typescript_1.default.factory.createVariableStatement([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], typescript_1.default.factory.createVariableDeclarationList([
33
- typescript_1.default.factory.createVariableDeclaration(typescript_1.default.factory.createIdentifier(queryKey), undefined, undefined, typescript_1.default.factory.createStringLiteral(`${className}${(0, common_1.capitalizeFirstLetter)(methodName)}`)),
34
- ], typescript_1.default.NodeFlags.Const)),
35
- // Custom hook
36
- typescript_1.default.factory.createVariableStatement([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], typescript_1.default.factory.createVariableDeclarationList([
37
- typescript_1.default.factory.createVariableDeclaration(typescript_1.default.factory.createIdentifier(customHookName), undefined, undefined, typescript_1.default.factory.createArrowFunction(undefined, typescript_1.default.factory.createNodeArray([
38
- typescript_1.default.factory.createTypeParameterDeclaration(undefined, "TQueryKey", queryKeyConstraint, typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword))),
39
- responseDataType,
40
- typescript_1.default.factory.createTypeParameterDeclaration(undefined, "TError", undefined, typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword)),
41
- ]), [
42
- ...requestParam,
43
- typescript_1.default.factory.createParameterDeclaration(undefined, undefined, typescript_1.default.factory.createIdentifier("queryKey"), typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionToken), queryKeyGenericType),
44
- typescript_1.default.factory.createParameterDeclaration(undefined, undefined, typescript_1.default.factory.createIdentifier("options"), typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionToken), typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("Omit"), [
45
- typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("UseQueryOptions"), [
46
- awaitedResponseDataType,
47
- typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword),
48
- awaitedResponseDataType,
49
- typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword)),
50
- ]),
51
- typescript_1.default.factory.createUnionTypeNode([
52
- typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral("queryKey")),
53
- typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral("queryFn")),
54
- typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral("initialData")),
55
- ]),
56
- ])),
57
- ], undefined, typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), typescript_1.default.factory.createAsExpression(typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("useQuery"), undefined, [
58
- typescript_1.default.factory.createObjectLiteralExpression([
59
- typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("queryKey"), typescript_1.default.factory.createArrayLiteralExpression([
60
- typescript_1.default.factory.createIdentifier(queryKey),
61
- typescript_1.default.factory.createSpreadElement(typescript_1.default.factory.createParenthesizedExpression(typescript_1.default.factory.createBinaryExpression(typescript_1.default.factory.createIdentifier("queryKey"), typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionQuestionToken), method.parameters.length
62
- ? typescript_1.default.factory.createArrayLiteralExpression([
63
- typescript_1.default.factory.createObjectLiteralExpression(method.parameters.map((param) => typescript_1.default.factory.createShorthandPropertyAssignment(typescript_1.default.factory.createIdentifier(param.name.getText(node))))),
64
- ])
65
- : typescript_1.default.factory.createArrayLiteralExpression([])))),
66
- ], false)),
67
- typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("queryFn"), typescript_1.default.factory.createArrowFunction(undefined, undefined, [], undefined, typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createPropertyAccessExpression(typescript_1.default.factory.createIdentifier(className), typescript_1.default.factory.createIdentifier(methodName)), undefined, method.parameters.map((param) => typescript_1.default.factory.createIdentifier(param.name.getText(node)))))),
68
- typescript_1.default.factory.createSpreadAssignment(typescript_1.default.factory.createIdentifier("options")),
30
+ // DefaultResponseDataType
31
+ // export type MyClassMethodDefaultResponse = Awaited<ReturnType<typeof myClass.myMethod>>
32
+ const defaultApiResponse = typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], typescript_1.default.factory.createIdentifier(`${(0, common_1.capitalizeFirstLetter)(className)}${(0, common_1.capitalizeFirstLetter)(methodName)}DefaultResponse`), undefined, awaitedResponseDataType);
33
+ const TData = typescript_1.default.factory.createIdentifier("TData");
34
+ const TError = typescript_1.default.factory.createIdentifier("TError");
35
+ const responseDataType = typescript_1.default.factory.createTypeParameterDeclaration(undefined, TData.text, undefined, typescript_1.default.factory.createTypeReferenceNode(defaultApiResponse.name));
36
+ // Return Type
37
+ // export const classNameMethodNameQueryResult<TData = MyClassMethodDefaultResponse, TError = unknown> = UseQueryResult<TData, TError>;
38
+ const returnTypeExport = typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], typescript_1.default.factory.createIdentifier(`${(0, common_1.capitalizeFirstLetter)(className)}${(0, common_1.capitalizeFirstLetter)(methodName)}QueryResult`), [
39
+ typescript_1.default.factory.createTypeParameterDeclaration(undefined, TData, undefined, typescript_1.default.factory.createTypeReferenceNode(defaultApiResponse.name)),
40
+ typescript_1.default.factory.createTypeParameterDeclaration(undefined, TError, undefined, typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword)),
41
+ ], typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("UseQueryResult"), [
42
+ typescript_1.default.factory.createTypeReferenceNode(TData),
43
+ typescript_1.default.factory.createTypeReferenceNode(TError),
44
+ ]));
45
+ // QueryKey
46
+ const queryKeyExport = typescript_1.default.factory.createVariableStatement([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], typescript_1.default.factory.createVariableDeclarationList([
47
+ typescript_1.default.factory.createVariableDeclaration(typescript_1.default.factory.createIdentifier(queryKey), undefined, undefined, typescript_1.default.factory.createStringLiteral(`${className}${(0, common_1.capitalizeFirstLetter)(methodName)}`)),
48
+ ], typescript_1.default.NodeFlags.Const));
49
+ // Custom hook
50
+ const hookExport = typescript_1.default.factory.createVariableStatement([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], typescript_1.default.factory.createVariableDeclarationList([
51
+ typescript_1.default.factory.createVariableDeclaration(typescript_1.default.factory.createIdentifier(customHookName), undefined, undefined, typescript_1.default.factory.createArrowFunction(undefined, typescript_1.default.factory.createNodeArray([
52
+ responseDataType,
53
+ typescript_1.default.factory.createTypeParameterDeclaration(undefined, TError, undefined, typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword)),
54
+ typescript_1.default.factory.createTypeParameterDeclaration(undefined, "TQueryKey", queryKeyConstraint, typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword))),
55
+ ]), [
56
+ ...requestParam,
57
+ typescript_1.default.factory.createParameterDeclaration(undefined, undefined, typescript_1.default.factory.createIdentifier("queryKey"), typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionToken), queryKeyGenericType),
58
+ typescript_1.default.factory.createParameterDeclaration(undefined, undefined, typescript_1.default.factory.createIdentifier("options"), typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionToken), typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("Omit"), [
59
+ typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("UseQueryOptions"), [
60
+ typescript_1.default.factory.createTypeReferenceNode(TData),
61
+ typescript_1.default.factory.createTypeReferenceNode(TError),
69
62
  ]),
70
- ]),
71
- // Omit<UseQueryResult<Awaited<ReturnType<typeof myClass.myMethod>>, TError>, 'data'> & { data: TData };
72
- typescript_1.default.factory.createIntersectionTypeNode([
73
- typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("Omit"), [
74
- typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("UseQueryResult"), [
75
- awaitedResponseDataType,
76
- typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("TError"), undefined),
77
- ]),
78
- typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral("data")),
63
+ typescript_1.default.factory.createUnionTypeNode([
64
+ typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral("queryKey")),
65
+ typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral("queryFn")),
66
+ typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral("initialData")),
79
67
  ]),
80
- typescript_1.default.factory.createTypeLiteralNode([
81
- typescript_1.default.factory.createPropertySignature(undefined, typescript_1.default.factory.createIdentifier("data"), undefined, typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("TData"), undefined)),
82
- ]),
83
- ])))),
84
- ], typescript_1.default.NodeFlags.Const)),
85
- ];
68
+ ])),
69
+ ], undefined, typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("useQuery"), [
70
+ typescript_1.default.factory.createTypeReferenceNode(TData),
71
+ typescript_1.default.factory.createTypeReferenceNode(TError),
72
+ ], [
73
+ typescript_1.default.factory.createObjectLiteralExpression([
74
+ typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("queryKey"), typescript_1.default.factory.createArrayLiteralExpression([
75
+ typescript_1.default.factory.createIdentifier(queryKey),
76
+ typescript_1.default.factory.createSpreadElement(typescript_1.default.factory.createParenthesizedExpression(typescript_1.default.factory.createBinaryExpression(typescript_1.default.factory.createIdentifier("queryKey"), typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionQuestionToken), method.parameters.length
77
+ ? typescript_1.default.factory.createArrayLiteralExpression([
78
+ typescript_1.default.factory.createObjectLiteralExpression(method.parameters.map((param) => typescript_1.default.factory.createShorthandPropertyAssignment(typescript_1.default.factory.createIdentifier(param.name.getText(node))))),
79
+ ])
80
+ : typescript_1.default.factory.createArrayLiteralExpression([])))),
81
+ ], false)),
82
+ typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("queryFn"), typescript_1.default.factory.createArrowFunction(undefined, undefined, [], undefined, typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), typescript_1.default.factory.createAsExpression(typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createPropertyAccessExpression(typescript_1.default.factory.createIdentifier(className), typescript_1.default.factory.createIdentifier(methodName)), undefined, method.parameters.map((param) => typescript_1.default.factory.createIdentifier(param.name.getText(node)))), typescript_1.default.factory.createTypeReferenceNode(TData)))),
83
+ typescript_1.default.factory.createSpreadAssignment(typescript_1.default.factory.createIdentifier("options")),
84
+ ]),
85
+ ]))),
86
+ ], typescript_1.default.NodeFlags.Const));
87
+ const hookWithJsDoc = (0, util_1.addJSDocToNode)(hookExport, node, deprecated, jsDoc);
88
+ return [defaultApiResponse, returnTypeExport, queryKeyExport, hookWithJsDoc];
86
89
  };
87
90
  exports.createUseQuery = createUseQuery;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.addJSDocToNode = void 0;
7
+ const typescript_1 = __importDefault(require("typescript"));
8
+ function addJSDocToNode(node, sourceFile, deprecated, jsDoc = []) {
9
+ const deprecatedString = deprecated ? "@deprecated" : "";
10
+ const jsDocString = [deprecatedString]
11
+ .concat(jsDoc.map((comment) => {
12
+ if (typeof comment === "string") {
13
+ return comment;
14
+ }
15
+ if (Array.isArray(comment)) {
16
+ return comment.map((c) => c.getText(sourceFile)).join("\n");
17
+ }
18
+ return "";
19
+ }))
20
+ // remove empty lines
21
+ .filter(Boolean)
22
+ // trim
23
+ .map((comment) => comment.trim())
24
+ // add * to each line
25
+ .map((comment) => `* ${comment}`)
26
+ // join lines
27
+ .join("\n")
28
+ // replace new lines with \n *
29
+ .replace(/\n/g, "\n * ");
30
+ const nodeWithJSDoc = jsDocString
31
+ ? typescript_1.default.addSyntheticLeadingComment(node, typescript_1.default.SyntaxKind.MultiLineCommentTrivia, `*\n ${jsDocString}\n `, true)
32
+ : node;
33
+ return nodeWithJSDoc;
34
+ }
35
+ exports.addJSDocToNode = addJSDocToNode;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@7nohe/openapi-react-query-codegen",
3
- "version": "0.5.1",
3
+ "version": "0.5.2",
4
4
  "description": "OpenAPI React Query Codegen",
5
5
  "bin": {
6
6
  "openapi-rq": "dist/src/cli.js"