@7nohe/openapi-react-query-codegen 0.4.1 → 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,12 +6,12 @@ case `uname` in
6
6
  esac
7
7
 
8
8
  if [ -z "$NODE_PATH" ]; then
9
- export NODE_PATH="/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.2.5/node_modules/glob/dist/cjs/src/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.2.5/node_modules/glob/dist/cjs/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.2.5/node_modules/glob/dist/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.2.5/node_modules/glob/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.2.5/node_modules:/Users/daiki/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/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.2.5/node_modules/glob/dist/cjs/src/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.2.5/node_modules/glob/dist/cjs/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.2.5/node_modules/glob/dist/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.2.5/node_modules/glob/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/glob@10.2.5/node_modules:/Users/daiki/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
- exec "$basedir/node" "$basedir/../../../node_modules/.pnpm/glob@10.2.5/node_modules/glob/dist/cjs/src/bin.js" "$@"
14
+ exec "$basedir/node" "$basedir/../glob/dist/esm/bin.mjs" "$@"
15
15
  else
16
- exec node "$basedir/../../../node_modules/.pnpm/glob@10.2.5/node_modules/glob/dist/cjs/src/bin.js" "$@"
16
+ exec node "$basedir/../glob/dist/esm/bin.mjs" "$@"
17
17
  fi
@@ -6,12 +6,12 @@ case `uname` in
6
6
  esac
7
7
 
8
8
  if [ -z "$NODE_PATH" ]; then
9
- export NODE_PATH="/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/openapi-typescript-codegen@0.24.0/node_modules/openapi-typescript-codegen/bin/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/openapi-typescript-codegen@0.24.0/node_modules/openapi-typescript-codegen/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/openapi-typescript-codegen@0.24.0/node_modules:/Users/daiki/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/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/openapi-typescript-codegen@0.24.0/node_modules/openapi-typescript-codegen/bin/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/openapi-typescript-codegen@0.24.0/node_modules/openapi-typescript-codegen/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/openapi-typescript-codegen@0.24.0/node_modules:/Users/daiki/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
- exec "$basedir/node" "$basedir/../../../node_modules/.pnpm/openapi-typescript-codegen@0.24.0/node_modules/openapi-typescript-codegen/bin/index.js" "$@"
14
+ exec "$basedir/node" "$basedir/../openapi-typescript-codegen/bin/index.js" "$@"
15
15
  else
16
- exec node "$basedir/../../../node_modules/.pnpm/openapi-typescript-codegen@0.24.0/node_modules/openapi-typescript-codegen/bin/index.js" "$@"
16
+ exec node "$basedir/../openapi-typescript-codegen/bin/index.js" "$@"
17
17
  fi
@@ -6,12 +6,12 @@ case `uname` in
6
6
  esac
7
7
 
8
8
  if [ -z "$NODE_PATH" ]; then
9
- export NODE_PATH="/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.0.4/node_modules/typescript/bin/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.0.4/node_modules/typescript/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.0.4/node_modules:/Users/daiki/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/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.0.4/node_modules/typescript/bin/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.0.4/node_modules/typescript/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.0.4/node_modules:/Users/daiki/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
- exec "$basedir/node" "$basedir/../../../node_modules/.pnpm/typescript@5.0.4/node_modules/typescript/bin/tsc" "$@"
14
+ exec "$basedir/node" "$basedir/../typescript/bin/tsc" "$@"
15
15
  else
16
- exec node "$basedir/../../../node_modules/.pnpm/typescript@5.0.4/node_modules/typescript/bin/tsc" "$@"
16
+ exec node "$basedir/../typescript/bin/tsc" "$@"
17
17
  fi
@@ -6,12 +6,12 @@ case `uname` in
6
6
  esac
7
7
 
8
8
  if [ -z "$NODE_PATH" ]; then
9
- export NODE_PATH="/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.0.4/node_modules/typescript/bin/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.0.4/node_modules/typescript/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.0.4/node_modules:/Users/daiki/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/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.0.4/node_modules/typescript/bin/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.0.4/node_modules/typescript/node_modules:/Users/daiki/Development/openapi-react-query-codegen/node_modules/.pnpm/typescript@5.0.4/node_modules:/Users/daiki/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
- exec "$basedir/node" "$basedir/../../../node_modules/.pnpm/typescript@5.0.4/node_modules/typescript/bin/tsserver" "$@"
14
+ exec "$basedir/node" "$basedir/../typescript/bin/tsserver" "$@"
15
15
  else
16
- exec node "$basedir/../../../node_modules/.pnpm/typescript@5.0.4/node_modules/typescript/bin/tsserver" "$@"
16
+ exec node "$basedir/../typescript/bin/tsserver" "$@"
17
17
  fi
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@7nohe/openapi-react-query-codegen",
3
- "version": "0.4.1",
3
+ "version": "0.5.1",
4
4
  "description": "OpenAPI React Query Codegen",
5
5
  "bin": {
6
6
  "openapi-rq": "dist/src/cli.js"
@@ -33,13 +33,13 @@
33
33
  "license": "MIT",
34
34
  "devDependencies": {
35
35
  "@types/node": "^18.16.0",
36
- "commander": "^10.0.1",
36
+ "commander": "^11.1.0",
37
37
  "glob": "^10.2.5",
38
- "openapi-typescript-codegen": "^0.24.0",
39
- "typescript": "^5.0.4"
38
+ "openapi-typescript-codegen": "^0.25.0",
39
+ "typescript": "^5.2.2"
40
40
  },
41
41
  "peerDependencies": {
42
- "commander": ">= 10 < 11",
42
+ "commander": ">= 11 < 12",
43
43
  "glob": ">= 10",
44
44
  "openapi-typescript-codegen": "^0.24.0",
45
45
  "typescript": ">= 4.8.3"
@@ -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,31 +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, [
29
- typescript_1.default.factory.createArrowFunction(undefined, undefined, method.parameters.length !== 0 ? [
30
- typescript_1.default.factory.createParameterDeclaration(undefined, undefined, typescript_1.default.factory.createObjectBindingPattern(method.parameters.map((param) => {
31
- return typescript_1.default.factory.createBindingElement(undefined, undefined, typescript_1.default.factory.createIdentifier(param.name.getText(node)), undefined);
32
- })), undefined, undefined, undefined),
33
- ] : [], 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))))),
34
- typescript_1.default.factory.createIdentifier("options"),
35
- ]))),
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, [
41
+ typescript_1.default.factory.createObjectLiteralExpression([
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)))))),
49
+ typescript_1.default.factory.createSpreadAssignment(typescript_1.default.factory.createIdentifier("options")),
50
+ ]),
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
+ ])))),
36
67
  ], typescript_1.default.NodeFlags.Const));
37
68
  };
38
69
  exports.createUseMutation = createUseMutation;
@@ -10,33 +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 [
20
- typescript_1.default.factory.createVariableStatement([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], typescript_1.default.factory.createVariableDeclarationList([typescript_1.default.factory.createVariableDeclaration(typescript_1.default.factory.createIdentifier(queryKey), undefined, undefined, typescript_1.default.factory.createStringLiteral(`${className}${(0, common_1.capitalizeFirstLetter)(methodName)}`))], typescript_1.default.NodeFlags.Const)),
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
21
36
  typescript_1.default.factory.createVariableStatement([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], typescript_1.default.factory.createVariableDeclarationList([
22
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([
23
- typescript_1.default.factory.createTypeParameterDeclaration(undefined, 'TQueryKey', queryKeyConstraint, typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword))),
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)),
24
41
  ]), [
25
42
  ...requestParam,
26
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),
27
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"), [
28
45
  typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("UseQueryOptions"), [
29
- typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("Awaited"), [
30
- typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("ReturnType"), [
31
- typescript_1.default.factory.createTypeQueryNode(typescript_1.default.factory.createQualifiedName(typescript_1.default.factory.createIdentifier(className), typescript_1.default.factory.createIdentifier(methodName)), undefined),
32
- ]),
33
- ]),
46
+ awaitedResponseDataType,
34
47
  typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword),
35
- typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("Awaited"), [
36
- typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("ReturnType"), [
37
- typescript_1.default.factory.createTypeQueryNode(typescript_1.default.factory.createQualifiedName(typescript_1.default.factory.createIdentifier(className), typescript_1.default.factory.createIdentifier(methodName)), undefined),
38
- ]),
39
- ]),
48
+ awaitedResponseDataType,
40
49
  typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword)),
41
50
  ]),
42
51
  typescript_1.default.factory.createUnionTypeNode([
@@ -45,17 +54,34 @@ const createUseQuery = (node, className, method) => {
45
54
  typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral("initialData")),
46
55
  ]),
47
56
  ])),
48
- ], undefined, typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("useQuery"), undefined, [
49
- typescript_1.default.factory.createArrayLiteralExpression([
50
- typescript_1.default.factory.createIdentifier(queryKey),
51
- 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 ? typescript_1.default.factory.createArrayLiteralExpression([
52
- typescript_1.default.factory.createObjectLiteralExpression(method.parameters.map((param) => typescript_1.default.factory.createShorthandPropertyAssignment(typescript_1.default.factory.createIdentifier(param.name.getText(node))))),
53
- ]) : typescript_1.default.factory.createArrayLiteralExpression([])))),
54
- ], false),
55
- 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))))),
56
- typescript_1.default.factory.createIdentifier("options"),
57
- ]))),
58
- ], typescript_1.default.NodeFlags.Const))
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")),
69
+ ]),
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
+ ])))),
84
+ ], typescript_1.default.NodeFlags.Const)),
59
85
  ];
60
86
  };
61
87
  exports.createUseQuery = createUseQuery;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@7nohe/openapi-react-query-codegen",
3
- "version": "0.4.1",
3
+ "version": "0.5.1",
4
4
  "description": "OpenAPI React Query Codegen",
5
5
  "bin": {
6
6
  "openapi-rq": "dist/src/cli.js"
@@ -27,13 +27,13 @@
27
27
  "license": "MIT",
28
28
  "devDependencies": {
29
29
  "@types/node": "^18.16.0",
30
- "commander": "^10.0.1",
30
+ "commander": "^11.1.0",
31
31
  "glob": "^10.2.5",
32
- "openapi-typescript-codegen": "^0.24.0",
33
- "typescript": "^5.0.4"
32
+ "openapi-typescript-codegen": "^0.25.0",
33
+ "typescript": "^5.2.2"
34
34
  },
35
35
  "peerDependencies": {
36
- "commander": ">= 10 < 11",
36
+ "commander": ">= 11 < 12",
37
37
  "glob": ">= 10",
38
38
  "openapi-typescript-codegen": "^0.24.0",
39
39
  "typescript": ">= 4.8.3"