@7nohe/openapi-react-query-codegen 0.5.0 → 0.5.1

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/README.md CHANGED
@@ -14,6 +14,23 @@
14
14
  $ npm install -D @7nohe/openapi-react-query-codegen
15
15
  ```
16
16
 
17
+ Register the command to the `scripts` property in your package.json file.
18
+
19
+ ```json
20
+ {
21
+ "scripts": {
22
+ "codegen": "openapi-rq -i ./petstore.yaml -c axios"
23
+ }
24
+ }
25
+ ```
26
+
27
+ You can also run the command without installing it in your project using the npx command.
28
+
29
+ ```bash
30
+ $ npx --package @7nohe/openapi-react-query-codegen openapi-rq -i ./petstore.yaml -c axios
31
+ ```
32
+
33
+
17
34
  ## Usage
18
35
 
19
36
  ```
@@ -6,9 +6,9 @@ case `uname` in
6
6
  esac
7
7
 
8
8
  if [ -z "$NODE_PATH" ]; then
9
- export NODE_PATH="/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.3.10/node_modules/glob/dist/esm/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.3.10/node_modules/glob/dist/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.3.10/node_modules/glob/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.3.10/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/node_modules"
9
+ export NODE_PATH="/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.3.10/node_modules/glob/dist/esm/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.3.10/node_modules/glob/dist/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.3.10/node_modules/glob/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.3.10/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/node_modules"
10
10
  else
11
- export NODE_PATH="/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.3.10/node_modules/glob/dist/esm/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.3.10/node_modules/glob/dist/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.3.10/node_modules/glob/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.3.10/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/node_modules:$NODE_PATH"
11
+ export NODE_PATH="/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.3.10/node_modules/glob/dist/esm/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.3.10/node_modules/glob/dist/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.3.10/node_modules/glob/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.3.10/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/node_modules:$NODE_PATH"
12
12
  fi
13
13
  if [ -x "$basedir/node" ]; then
14
14
  exec "$basedir/node" "$basedir/../glob/dist/esm/bin.mjs" "$@"
@@ -6,9 +6,9 @@ case `uname` in
6
6
  esac
7
7
 
8
8
  if [ -z "$NODE_PATH" ]; then
9
- export NODE_PATH="/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/openapi-typescript-codegen@0.25.0/node_modules/openapi-typescript-codegen/bin/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/openapi-typescript-codegen@0.25.0/node_modules/openapi-typescript-codegen/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/openapi-typescript-codegen@0.25.0/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/node_modules"
9
+ export NODE_PATH="/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/openapi-typescript-codegen@0.25.0/node_modules/openapi-typescript-codegen/bin/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/openapi-typescript-codegen@0.25.0/node_modules/openapi-typescript-codegen/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/openapi-typescript-codegen@0.25.0/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/node_modules"
10
10
  else
11
- export NODE_PATH="/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/openapi-typescript-codegen@0.25.0/node_modules/openapi-typescript-codegen/bin/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/openapi-typescript-codegen@0.25.0/node_modules/openapi-typescript-codegen/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/openapi-typescript-codegen@0.25.0/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/node_modules:$NODE_PATH"
11
+ export NODE_PATH="/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/openapi-typescript-codegen@0.25.0/node_modules/openapi-typescript-codegen/bin/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/openapi-typescript-codegen@0.25.0/node_modules/openapi-typescript-codegen/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/openapi-typescript-codegen@0.25.0/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/node_modules:$NODE_PATH"
12
12
  fi
13
13
  if [ -x "$basedir/node" ]; then
14
14
  exec "$basedir/node" "$basedir/../openapi-typescript-codegen/bin/index.js" "$@"
@@ -6,9 +6,9 @@ case `uname` in
6
6
  esac
7
7
 
8
8
  if [ -z "$NODE_PATH" ]; then
9
- export NODE_PATH="/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/bin/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/node_modules"
9
+ export NODE_PATH="/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/bin/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/node_modules"
10
10
  else
11
- export NODE_PATH="/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/bin/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/node_modules:$NODE_PATH"
11
+ export NODE_PATH="/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/bin/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/node_modules:$NODE_PATH"
12
12
  fi
13
13
  if [ -x "$basedir/node" ]; then
14
14
  exec "$basedir/node" "$basedir/../typescript/bin/tsc" "$@"
@@ -6,9 +6,9 @@ case `uname` in
6
6
  esac
7
7
 
8
8
  if [ -z "$NODE_PATH" ]; then
9
- export NODE_PATH="/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/bin/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/node_modules"
9
+ export NODE_PATH="/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/bin/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/node_modules"
10
10
  else
11
- export NODE_PATH="/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/bin/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules:/Users/daikiurata/Development/openapi-react-query-codegen/node_modules/.pnpm/node_modules:$NODE_PATH"
11
+ export NODE_PATH="/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/bin/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.2.2/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/node_modules:$NODE_PATH"
12
12
  fi
13
13
  if [ -x "$basedir/node" ]; then
14
14
  exec "$basedir/node" "$basedir/../typescript/bin/tsserver" "$@"
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@7nohe/openapi-react-query-codegen",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "OpenAPI React Query Codegen",
5
5
  "bin": {
6
6
  "openapi-rq": "dist/src/cli.js"
@@ -36,7 +36,7 @@
36
36
  "commander": "^11.1.0",
37
37
  "glob": "^10.2.5",
38
38
  "openapi-typescript-codegen": "^0.25.0",
39
- "typescript": "^5.0.4"
39
+ "typescript": "^5.2.2"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "commander": ">= 11 < 12",
@@ -11,7 +11,7 @@ const fs_1 = __importDefault(require("fs"));
11
11
  const createUseQuery_1 = require("./createUseQuery");
12
12
  const createUseMutation_1 = require("./createUseMutation");
13
13
  const createExports = (generatedClientsPath) => {
14
- const services = (0, glob_1.sync)((0, path_1.join)(generatedClientsPath, 'services', '*.ts').replace(/\\/g, '/'));
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
16
  fs_1.default.readFileSync((0, path_1.join)(process.cwd(), servicePath), "utf8"), typescript_1.default.ScriptTarget.Latest // langugeVersion
17
17
  ));
@@ -26,7 +26,6 @@ const createExports = (generatedClientsPath) => {
26
26
  const methods = klass.members.filter((node) => node.kind === typescript_1.default.SyntaxKind.MethodDeclaration);
27
27
  return methods
28
28
  .map((method) => {
29
- const methodName = method.name?.getText(node);
30
29
  const methodBlock = method
31
30
  .getChildren(node)
32
31
  .find((child) => child.kind === typescript_1.default.SyntaxKind.Block);
@@ -9,14 +9,16 @@ const glob_1 = require("glob");
9
9
  const path_1 = require("path");
10
10
  const { join } = path_1.posix;
11
11
  const createImports = (generatedClientsPath) => {
12
- const models = (0, glob_1.sync)(join(generatedClientsPath, 'models', '*.ts').replace(/\\/g, '/'));
13
- const services = (0, glob_1.sync)(join(generatedClientsPath, 'services', '*.ts').replace(/\\/g, '/'));
12
+ const models = (0, glob_1.sync)(join(generatedClientsPath, "models", "*.ts").replace(/\\/g, "/"));
13
+ const services = (0, glob_1.sync)(join(generatedClientsPath, "services", "*.ts").replace(/\\/g, "/"));
14
14
  return [
15
15
  typescript_1.default.factory.createImportDeclaration(undefined, typescript_1.default.factory.createImportClause(false, undefined, typescript_1.default.factory.createNamedImports([
16
16
  typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("useQuery")),
17
17
  typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("useMutation")),
18
+ typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("UseQueryResult")),
18
19
  typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("UseQueryOptions")),
19
20
  typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("UseMutationOptions")),
21
+ typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("UseMutationResult")),
20
22
  ])), typescript_1.default.factory.createStringLiteral("@tanstack/react-query"), undefined),
21
23
  ...models.map((model) => {
22
24
  const modelName = (0, path_1.basename)(model, (0, path_1.extname)(model));
@@ -7,13 +7,19 @@ exports.createSource = void 0;
7
7
  const typescript_1 = __importDefault(require("typescript"));
8
8
  const createImports_1 = require("./createImports");
9
9
  const createExports_1 = require("./createExports");
10
+ const package_json_1 = require("../package.json");
10
11
  const createSourceFile = (outputPath) => {
11
12
  return typescript_1.default.factory.createSourceFile([...(0, createImports_1.createImports)(outputPath), ...(0, createExports_1.createExports)(outputPath)], typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.EndOfFileToken), typescript_1.default.NodeFlags.None);
12
13
  };
13
14
  const createSource = (outputPath) => {
14
15
  const resultFile = typescript_1.default.createSourceFile("index.ts", "", typescript_1.default.ScriptTarget.Latest, false, typescript_1.default.ScriptKind.TS);
15
- const printer = typescript_1.default.createPrinter({ newLine: typescript_1.default.NewLineKind.LineFeed });
16
- const result = printer.printNode(typescript_1.default.EmitHint.Unspecified, createSourceFile(outputPath), resultFile);
16
+ const printer = typescript_1.default.createPrinter({
17
+ newLine: typescript_1.default.NewLineKind.LineFeed,
18
+ removeComments: false,
19
+ });
20
+ const node = createSourceFile(outputPath);
21
+ const result = `// generated with @7nohe/openapi-react-query-codegen@${package_json_1.version} \n` +
22
+ printer.printNode(typescript_1.default.EmitHint.Unspecified, node, resultFile);
17
23
  return result;
18
24
  };
19
25
  exports.createSource = createSource;
@@ -8,33 +8,62 @@ const typescript_1 = __importDefault(require("typescript"));
8
8
  const common_1 = require("./common");
9
9
  const createUseMutation = (node, className, method) => {
10
10
  const methodName = method.name?.getText(node);
11
+ // Awaited<ReturnType<typeof myClass.myMethod>>
12
+ const awaitedResponseDataType = typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("Awaited"), [
13
+ typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("ReturnType"), [
14
+ 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
+ ]);
17
+ const responseDataType = typescript_1.default.factory.createTypeParameterDeclaration(undefined, "TData", undefined, awaitedResponseDataType);
18
+ const methodParameters = method.parameters.length !== 0
19
+ ? typescript_1.default.factory.createTypeLiteralNode(method.parameters.map((param) => {
20
+ return typescript_1.default.factory.createPropertySignature(undefined, typescript_1.default.factory.createIdentifier(param.name.getText(node)), param.questionToken ?? param.initializer
21
+ ? typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionToken)
22
+ : param.questionToken, param.type);
23
+ }))
24
+ : typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.VoidKeyword);
11
25
  return typescript_1.default.factory.createVariableStatement([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], typescript_1.default.factory.createVariableDeclarationList([
12
- 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, undefined, [
26
+ 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
+ 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)),
30
+ ]), [
13
31
  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"), [
14
32
  typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("UseMutationOptions"), [
15
- typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("Awaited"), [
16
- typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("ReturnType"), [
17
- typescript_1.default.factory.createTypeQueryNode(typescript_1.default.factory.createQualifiedName(typescript_1.default.factory.createIdentifier(className), typescript_1.default.factory.createIdentifier(methodName)), undefined),
18
- ]),
19
- ]),
33
+ awaitedResponseDataType,
20
34
  typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword),
21
- method.parameters.length !== 0 ? typescript_1.default.factory.createTypeLiteralNode(method.parameters.map((param) => {
22
- return typescript_1.default.factory.createPropertySignature(undefined, typescript_1.default.factory.createIdentifier(param.name.getText(node)), param.questionToken ?? param.initializer ? typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionToken) : param.questionToken, param.type);
23
- })) : typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.VoidKeyword),
35
+ methodParameters,
24
36
  typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword),
25
37
  ]),
26
38
  typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral("mutationFn")),
27
39
  ]), undefined),
28
- ], undefined, typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("useMutation"), 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, [
29
41
  typescript_1.default.factory.createObjectLiteralExpression([
30
- typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("mutationFn"), typescript_1.default.factory.createArrowFunction(undefined, undefined, method.parameters.length !== 0 ? [
31
- typescript_1.default.factory.createParameterDeclaration(undefined, undefined, typescript_1.default.factory.createObjectBindingPattern(method.parameters.map((param) => {
32
- return typescript_1.default.factory.createBindingElement(undefined, undefined, typescript_1.default.factory.createIdentifier(param.name.getText(node)), undefined);
33
- })), undefined, undefined, undefined),
34
- ] : [], 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)))))),
42
+ typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("mutationFn"), typescript_1.default.factory.createArrowFunction(undefined, undefined, method.parameters.length !== 0
43
+ ? [
44
+ typescript_1.default.factory.createParameterDeclaration(undefined, undefined, typescript_1.default.factory.createObjectBindingPattern(method.parameters.map((param) => {
45
+ return typescript_1.default.factory.createBindingElement(undefined, undefined, typescript_1.default.factory.createIdentifier(param.name.getText(node)), undefined);
46
+ })), undefined, undefined, undefined),
47
+ ]
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)))))),
35
49
  typescript_1.default.factory.createSpreadAssignment(typescript_1.default.factory.createIdentifier("options")),
36
50
  ]),
37
- ]))),
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
+ ])))),
38
67
  ], typescript_1.default.NodeFlags.Const));
39
68
  };
40
69
  exports.createUseMutation = createUseMutation;
@@ -10,35 +10,42 @@ const createUseQuery = (node, className, method) => {
10
10
  const methodName = method.name?.getText(node);
11
11
  let requestParam = [];
12
12
  if (method.parameters.length !== 0) {
13
- requestParam.push(typescript_1.default.factory.createParameterDeclaration(undefined, undefined, typescript_1.default.factory.createObjectBindingPattern(method.parameters.map((param) => typescript_1.default.factory.createBindingElement(undefined, undefined, typescript_1.default.factory.createIdentifier(param.name.getText(node)), undefined))), undefined, typescript_1.default.factory.createTypeLiteralNode(method.parameters.map((param) => typescript_1.default.factory.createPropertySignature(undefined, typescript_1.default.factory.createIdentifier(param.name.getText(node)), param.questionToken ?? param.initializer ? typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionToken) : param.questionToken, param.type)))));
13
+ requestParam.push(typescript_1.default.factory.createParameterDeclaration(undefined, undefined, typescript_1.default.factory.createObjectBindingPattern(method.parameters.map((param) => typescript_1.default.factory.createBindingElement(undefined, undefined, typescript_1.default.factory.createIdentifier(param.name.getText(node)), undefined))), undefined, typescript_1.default.factory.createTypeLiteralNode(method.parameters.map((param) => typescript_1.default.factory.createPropertySignature(undefined, typescript_1.default.factory.createIdentifier(param.name.getText(node)), param.questionToken ?? param.initializer
14
+ ? typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionToken)
15
+ : param.questionToken, param.type)))));
14
16
  }
15
17
  const customHookName = `use${className}${(0, common_1.capitalizeFirstLetter)(methodName)}`;
16
18
  const queryKey = `${customHookName}Key`;
17
- const queryKeyGenericType = typescript_1.default.factory.createTypeReferenceNode('TQueryKey', undefined);
18
- const queryKeyConstraint = typescript_1.default.factory.createTypeReferenceNode('Array', [typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword)]);
19
+ const queryKeyGenericType = typescript_1.default.factory.createTypeReferenceNode("TQueryKey", undefined);
20
+ const queryKeyConstraint = typescript_1.default.factory.createTypeReferenceNode("Array", [
21
+ typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword),
22
+ ]);
23
+ // Awaited<ReturnType<typeof myClass.myMethod>>
24
+ const awaitedResponseDataType = typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("Awaited"), [
25
+ typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("ReturnType"), [
26
+ 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
+ ]);
29
+ const responseDataType = typescript_1.default.factory.createTypeParameterDeclaration(undefined, "TData", undefined, awaitedResponseDataType);
19
30
  return [
31
+ // QueryKey
20
32
  typescript_1.default.factory.createVariableStatement([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], typescript_1.default.factory.createVariableDeclarationList([
21
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)}`)),
22
34
  ], typescript_1.default.NodeFlags.Const)),
35
+ // Custom hook
23
36
  typescript_1.default.factory.createVariableStatement([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], typescript_1.default.factory.createVariableDeclarationList([
24
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([
25
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)),
26
41
  ]), [
27
42
  ...requestParam,
28
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),
29
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"), [
30
45
  typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("UseQueryOptions"), [
31
- typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("Awaited"), [
32
- typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("ReturnType"), [
33
- typescript_1.default.factory.createTypeQueryNode(typescript_1.default.factory.createQualifiedName(typescript_1.default.factory.createIdentifier(className), typescript_1.default.factory.createIdentifier(methodName)), undefined),
34
- ]),
35
- ]),
46
+ awaitedResponseDataType,
36
47
  typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword),
37
- typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("Awaited"), [
38
- typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("ReturnType"), [
39
- typescript_1.default.factory.createTypeQueryNode(typescript_1.default.factory.createQualifiedName(typescript_1.default.factory.createIdentifier(className), typescript_1.default.factory.createIdentifier(methodName)), undefined),
40
- ]),
41
- ]),
48
+ awaitedResponseDataType,
42
49
  typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword)),
43
50
  ]),
44
51
  typescript_1.default.factory.createUnionTypeNode([
@@ -47,7 +54,7 @@ const createUseQuery = (node, className, method) => {
47
54
  typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral("initialData")),
48
55
  ]),
49
56
  ])),
50
- ], undefined, typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("useQuery"), undefined, [
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, [
51
58
  typescript_1.default.factory.createObjectLiteralExpression([
52
59
  typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("queryKey"), typescript_1.default.factory.createArrayLiteralExpression([
53
60
  typescript_1.default.factory.createIdentifier(queryKey),
@@ -60,7 +67,20 @@ const createUseQuery = (node, className, method) => {
60
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)))))),
61
68
  typescript_1.default.factory.createSpreadAssignment(typescript_1.default.factory.createIdentifier("options")),
62
69
  ]),
63
- ]))),
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")),
79
+ ]),
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
+ ])))),
64
84
  ], typescript_1.default.NodeFlags.Const)),
65
85
  ];
66
86
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@7nohe/openapi-react-query-codegen",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "OpenAPI React Query Codegen",
5
5
  "bin": {
6
6
  "openapi-rq": "dist/src/cli.js"
@@ -30,7 +30,7 @@
30
30
  "commander": "^11.1.0",
31
31
  "glob": "^10.2.5",
32
32
  "openapi-typescript-codegen": "^0.25.0",
33
- "typescript": "^5.0.4"
33
+ "typescript": "^5.2.2"
34
34
  },
35
35
  "peerDependencies": {
36
36
  "commander": ">= 11 < 12",