@7nohe/openapi-react-query-codegen 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/package.json +5 -6
- package/dist/src/cli.js +8 -8
- package/dist/src/common.js +3 -3
- package/dist/src/constants.js +1 -1
- package/dist/src/createExports.js +40 -66
- package/dist/src/createImports.js +27 -50
- package/dist/src/createSource.js +10 -35
- package/dist/src/createUseMutation.js +25 -28
- package/dist/src/createUseQuery.js +36 -67
- package/dist/src/generate.js +14 -69
- package/dist/src/print.js +11 -13
- package/package.json +5 -6
package/README.md
CHANGED
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@7nohe/openapi-react-query-codegen",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "OpenAPI React Query Codegen",
|
|
5
5
|
"bin": {
|
|
6
6
|
"openapi-rq": "dist/src/cli.js"
|
|
@@ -32,13 +32,12 @@
|
|
|
32
32
|
"author": "Daiki Urata (@7nohe)",
|
|
33
33
|
"license": "MIT",
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"commander": "^
|
|
36
|
-
"glob": "^
|
|
35
|
+
"commander": "^10.0.0",
|
|
36
|
+
"glob": "^9.3.1",
|
|
37
37
|
"openapi-typescript-codegen": "^0.23.0",
|
|
38
|
-
"typescript": "^
|
|
38
|
+
"typescript": "^5.0.2"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@types/
|
|
42
|
-
"@types/node": "^18.0.6"
|
|
41
|
+
"@types/node": "^18.15.5"
|
|
43
42
|
}
|
|
44
43
|
}
|
package/dist/src/cli.js
CHANGED
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
5
|
};
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const generate_1 = require("./generate");
|
|
8
|
+
const commander_1 = require("commander");
|
|
9
|
+
const package_json_1 = __importDefault(require("../package.json"));
|
|
10
|
+
const program = new commander_1.Command();
|
|
11
11
|
program
|
|
12
12
|
.name("openapi-rq")
|
|
13
|
-
.version(package_json_1
|
|
13
|
+
.version(package_json_1.default.version)
|
|
14
14
|
.description("Generate React Query code based on OpenAPI")
|
|
15
15
|
.requiredOption("-i, --input <value>", "OpenAPI specification, can be a path, url or string content (required)")
|
|
16
16
|
.option("-o, --output <value>", "Output directory", "openapi")
|
|
@@ -20,6 +20,6 @@ program
|
|
|
20
20
|
.option("--postfix <value>", "Service name postfix", "Service")
|
|
21
21
|
.option("--request <value>", "Path to custom request file")
|
|
22
22
|
.parse();
|
|
23
|
-
|
|
24
|
-
console.log(
|
|
23
|
+
const options = program.opts();
|
|
24
|
+
console.log(`Generating React Query code using OpenApi file ${options.output}`);
|
|
25
25
|
(0, generate_1.generate)(options);
|
package/dist/src/common.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
exports
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.lowercaseFirstLetter = exports.capitalizeFirstLetter = void 0;
|
|
4
|
-
|
|
4
|
+
const capitalizeFirstLetter = (str) => {
|
|
5
5
|
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
6
6
|
};
|
|
7
7
|
exports.capitalizeFirstLetter = capitalizeFirstLetter;
|
|
8
|
-
|
|
8
|
+
const lowercaseFirstLetter = (str) => {
|
|
9
9
|
return str.charAt(0).toLowerCase() + str.slice(1);
|
|
10
10
|
};
|
|
11
11
|
exports.lowercaseFirstLetter = lowercaseFirstLetter;
|
package/dist/src/constants.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
exports
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.requestsOutputPath = exports.queriesOutputPath = exports.defaultOutputPath = void 0;
|
|
4
4
|
exports.defaultOutputPath = "openapi";
|
|
5
5
|
exports.queriesOutputPath = "queries";
|
|
@@ -1,74 +1,48 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
-
if (!m) return o;
|
|
5
|
-
var i = m.call(o), r, ar = [], e;
|
|
6
|
-
try {
|
|
7
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
-
}
|
|
9
|
-
catch (error) { e = { error: error }; }
|
|
10
|
-
finally {
|
|
11
|
-
try {
|
|
12
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
-
}
|
|
14
|
-
finally { if (e) throw e.error; }
|
|
15
|
-
}
|
|
16
|
-
return ar;
|
|
17
|
-
};
|
|
18
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
19
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
20
|
-
if (ar || !(i in from)) {
|
|
21
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
22
|
-
ar[i] = from[i];
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
26
|
-
};
|
|
27
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
28
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
29
4
|
};
|
|
30
|
-
exports
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
6
|
exports.createExports = void 0;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
.
|
|
51
|
-
.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
.
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
7
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
8
|
+
const glob_1 = __importDefault(require("glob"));
|
|
9
|
+
const path_1 = require("path");
|
|
10
|
+
const fs_1 = __importDefault(require("fs"));
|
|
11
|
+
const createUseQuery_1 = require("./createUseQuery");
|
|
12
|
+
const createUseMutation_1 = require("./createUseMutation");
|
|
13
|
+
const createExports = (generatedClientsPath) => {
|
|
14
|
+
const services = glob_1.default.sync((0, path_1.join)(generatedClientsPath, 'services', '*.ts').replace(/\\/g, '/'));
|
|
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
|
|
17
|
+
));
|
|
18
|
+
return [
|
|
19
|
+
...nodes
|
|
20
|
+
.map((node) => {
|
|
21
|
+
const klass = node
|
|
22
|
+
.getChildren()[0]
|
|
23
|
+
.getChildren()
|
|
24
|
+
.find((child) => child.kind === typescript_1.default.SyntaxKind.ClassDeclaration);
|
|
25
|
+
const className = klass.name?.getText(node);
|
|
26
|
+
const methods = klass.members.filter((node) => node.kind === typescript_1.default.SyntaxKind.MethodDeclaration);
|
|
27
|
+
return methods
|
|
28
|
+
.map((method) => {
|
|
29
|
+
const methodName = method.name?.getText(node);
|
|
30
|
+
const methodBlock = method
|
|
31
|
+
.getChildren(node)
|
|
32
|
+
.find((child) => child.kind === typescript_1.default.SyntaxKind.Block);
|
|
33
|
+
const returnStatement = methodBlock.statements.find((s) => s.kind === typescript_1.default.SyntaxKind.ReturnStatement);
|
|
34
|
+
const callExpression = returnStatement.expression;
|
|
35
|
+
const properties = callExpression.arguments[1].properties;
|
|
36
|
+
const httpMethodName = properties
|
|
37
|
+
.find((p) => p.name?.getText(node) === "method")
|
|
38
|
+
?.initializer?.getText(node);
|
|
39
|
+
return httpMethodName === "'GET'"
|
|
40
|
+
? (0, createUseQuery_1.createUseQuery)(node, className, method)
|
|
41
|
+
: (0, createUseMutation_1.createUseMutation)(node, className, method);
|
|
42
|
+
})
|
|
43
|
+
.flat();
|
|
69
44
|
})
|
|
70
|
-
.flat()
|
|
71
|
-
|
|
72
|
-
.flat()), false);
|
|
45
|
+
.flat(),
|
|
46
|
+
];
|
|
73
47
|
};
|
|
74
48
|
exports.createExports = createExports;
|
|
@@ -1,57 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
-
if (!m) return o;
|
|
5
|
-
var i = m.call(o), r, ar = [], e;
|
|
6
|
-
try {
|
|
7
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
-
}
|
|
9
|
-
catch (error) { e = { error: error }; }
|
|
10
|
-
finally {
|
|
11
|
-
try {
|
|
12
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
-
}
|
|
14
|
-
finally { if (e) throw e.error; }
|
|
15
|
-
}
|
|
16
|
-
return ar;
|
|
17
|
-
};
|
|
18
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
19
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
20
|
-
if (ar || !(i in from)) {
|
|
21
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
22
|
-
ar[i] = from[i];
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
26
|
-
};
|
|
27
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
28
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
29
4
|
};
|
|
30
|
-
exports
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
6
|
exports.createImports = void 0;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return
|
|
39
|
-
typescript_1
|
|
40
|
-
typescript_1
|
|
41
|
-
typescript_1
|
|
42
|
-
typescript_1
|
|
43
|
-
typescript_1
|
|
44
|
-
])), typescript_1
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
typescript_1
|
|
54
|
-
|
|
55
|
-
|
|
7
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
8
|
+
const glob_1 = __importDefault(require("glob"));
|
|
9
|
+
const path_1 = require("path");
|
|
10
|
+
const createImports = (generatedClientsPath) => {
|
|
11
|
+
const models = glob_1.default.sync((0, path_1.join)(generatedClientsPath, 'models', '*.ts').replace(/\\/g, '/'));
|
|
12
|
+
const services = glob_1.default.sync((0, path_1.join)(generatedClientsPath, 'services', '*.ts').replace(/\\/g, '/'));
|
|
13
|
+
return [
|
|
14
|
+
typescript_1.default.factory.createImportDeclaration(undefined, typescript_1.default.factory.createImportClause(false, undefined, typescript_1.default.factory.createNamedImports([
|
|
15
|
+
typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("useQuery")),
|
|
16
|
+
typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("useMutation")),
|
|
17
|
+
typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("UseQueryOptions")),
|
|
18
|
+
typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier("UseMutationOptions")),
|
|
19
|
+
])), typescript_1.default.factory.createStringLiteral("@tanstack/react-query"), undefined),
|
|
20
|
+
...models.map((model) => {
|
|
21
|
+
const modelName = (0, path_1.basename)(model, (0, path_1.extname)(model));
|
|
22
|
+
return typescript_1.default.factory.createImportDeclaration(undefined, typescript_1.default.factory.createImportClause(false, undefined, typescript_1.default.factory.createNamedImports([
|
|
23
|
+
typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier(modelName)),
|
|
24
|
+
])), typescript_1.default.factory.createStringLiteral((0, path_1.join)("../requests/models/", modelName)), undefined);
|
|
25
|
+
}),
|
|
26
|
+
...services.map((service) => {
|
|
27
|
+
const serviceName = (0, path_1.basename)(service, (0, path_1.extname)(service));
|
|
28
|
+
return typescript_1.default.factory.createImportDeclaration(undefined, typescript_1.default.factory.createImportClause(false, undefined, typescript_1.default.factory.createNamedImports([
|
|
29
|
+
typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier(serviceName)),
|
|
30
|
+
])), typescript_1.default.factory.createStringLiteral((0, path_1.join)("../requests/services", serviceName)), undefined);
|
|
31
|
+
}),
|
|
32
|
+
];
|
|
56
33
|
};
|
|
57
34
|
exports.createImports = createImports;
|
package/dist/src/createSource.js
CHANGED
|
@@ -1,44 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
-
if (!m) return o;
|
|
5
|
-
var i = m.call(o), r, ar = [], e;
|
|
6
|
-
try {
|
|
7
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
-
}
|
|
9
|
-
catch (error) { e = { error: error }; }
|
|
10
|
-
finally {
|
|
11
|
-
try {
|
|
12
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
-
}
|
|
14
|
-
finally { if (e) throw e.error; }
|
|
15
|
-
}
|
|
16
|
-
return ar;
|
|
17
|
-
};
|
|
18
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
19
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
20
|
-
if (ar || !(i in from)) {
|
|
21
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
22
|
-
ar[i] = from[i];
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
26
|
-
};
|
|
27
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
28
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
29
4
|
};
|
|
30
|
-
exports
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
6
|
exports.createSource = void 0;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
return typescript_1
|
|
7
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
8
|
+
const createImports_1 = require("./createImports");
|
|
9
|
+
const createExports_1 = require("./createExports");
|
|
10
|
+
const createSourceFile = (outputPath) => {
|
|
11
|
+
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);
|
|
37
12
|
};
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
13
|
+
const createSource = (outputPath) => {
|
|
14
|
+
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);
|
|
42
17
|
return result;
|
|
43
18
|
};
|
|
44
19
|
exports.createSource = createSource;
|
|
@@ -2,40 +2,37 @@
|
|
|
2
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
|
-
exports
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.createUseMutation = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
typescript_1["default"].factory.createTypeQueryNode(typescript_1["default"].factory.createQualifiedName(typescript_1["default"].factory.createIdentifier(className), typescript_1["default"].factory.createIdentifier(methodName)), undefined),
|
|
7
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
8
|
+
const common_1 = require("./common");
|
|
9
|
+
const createUseMutation = (node, className, method) => {
|
|
10
|
+
const methodName = method.name?.getText(node);
|
|
11
|
+
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, [
|
|
13
|
+
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
|
+
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),
|
|
19
18
|
]),
|
|
20
19
|
]),
|
|
21
|
-
typescript_1
|
|
22
|
-
method.parameters.length !== 0 ? typescript_1
|
|
23
|
-
return typescript_1
|
|
24
|
-
})) : typescript_1
|
|
25
|
-
typescript_1
|
|
20
|
+
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)), undefined, param.type);
|
|
23
|
+
})) : typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.VoidKeyword),
|
|
24
|
+
typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword),
|
|
26
25
|
]),
|
|
27
|
-
typescript_1
|
|
26
|
+
typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral("mutationFn")),
|
|
28
27
|
]), undefined),
|
|
29
|
-
], undefined, typescript_1
|
|
30
|
-
typescript_1
|
|
31
|
-
typescript_1
|
|
32
|
-
return typescript_1
|
|
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);
|
|
33
32
|
})), undefined, undefined, undefined),
|
|
34
|
-
] : [], undefined, typescript_1
|
|
35
|
-
|
|
36
|
-
}))),
|
|
37
|
-
typescript_1["default"].factory.createIdentifier("options"),
|
|
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"),
|
|
38
35
|
]))),
|
|
39
|
-
], typescript_1
|
|
36
|
+
], typescript_1.default.NodeFlags.Const));
|
|
40
37
|
};
|
|
41
38
|
exports.createUseMutation = createUseMutation;
|
|
@@ -1,86 +1,55 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
-
if (!m) return o;
|
|
5
|
-
var i = m.call(o), r, ar = [], e;
|
|
6
|
-
try {
|
|
7
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
-
}
|
|
9
|
-
catch (error) { e = { error: error }; }
|
|
10
|
-
finally {
|
|
11
|
-
try {
|
|
12
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
-
}
|
|
14
|
-
finally { if (e) throw e.error; }
|
|
15
|
-
}
|
|
16
|
-
return ar;
|
|
17
|
-
};
|
|
18
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
19
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
20
|
-
if (ar || !(i in from)) {
|
|
21
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
22
|
-
ar[i] = from[i];
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
26
|
-
};
|
|
27
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
28
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
29
4
|
};
|
|
30
|
-
exports
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
6
|
exports.createUseQuery = void 0;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
var requestParam = [];
|
|
7
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
8
|
+
const common_1 = require("./common");
|
|
9
|
+
const createUseQuery = (node, className, method) => {
|
|
10
|
+
const methodName = method.name?.getText(node);
|
|
11
|
+
let requestParam = [];
|
|
38
12
|
if (method.parameters.length !== 0) {
|
|
39
|
-
requestParam.push(typescript_1
|
|
40
|
-
return typescript_1["default"].factory.createBindingElement(undefined, undefined, typescript_1["default"].factory.createIdentifier(param.name.getText(node)), undefined);
|
|
41
|
-
})), undefined, typescript_1["default"].factory.createTypeLiteralNode(method.parameters.map(function (param) {
|
|
42
|
-
return typescript_1["default"].factory.createPropertySignature(undefined, typescript_1["default"].factory.createIdentifier(param.name.getText(node)), undefined, param.type);
|
|
43
|
-
})), undefined));
|
|
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)), undefined, param.type)))));
|
|
44
14
|
}
|
|
45
|
-
|
|
46
|
-
|
|
15
|
+
const customHookName = `use${className}${(0, common_1.capitalizeFirstLetter)(methodName)}`;
|
|
16
|
+
const queryKey = `${customHookName}Key`;
|
|
47
17
|
return [
|
|
48
|
-
typescript_1
|
|
49
|
-
typescript_1
|
|
50
|
-
typescript_1
|
|
51
|
-
|
|
52
|
-
typescript_1
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
18
|
+
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)),
|
|
19
|
+
typescript_1.default.factory.createVariableStatement([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], typescript_1.default.factory.createVariableDeclarationList([
|
|
20
|
+
typescript_1.default.factory.createVariableDeclaration(typescript_1.default.factory.createIdentifier(customHookName), undefined, undefined, typescript_1.default.factory.createArrowFunction(undefined, undefined, [
|
|
21
|
+
...requestParam,
|
|
22
|
+
typescript_1.default.factory.createParameterDeclaration(undefined, undefined, typescript_1.default.factory.createIdentifier("queryKey"), undefined, typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.StringKeyword)), typescript_1.default.factory.createArrayLiteralExpression([], false)),
|
|
23
|
+
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"), [
|
|
24
|
+
typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("UseQueryOptions"), [
|
|
25
|
+
typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("Awaited"), [
|
|
26
|
+
typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("ReturnType"), [
|
|
27
|
+
typescript_1.default.factory.createTypeQueryNode(typescript_1.default.factory.createQualifiedName(typescript_1.default.factory.createIdentifier(className), typescript_1.default.factory.createIdentifier(methodName)), undefined),
|
|
57
28
|
]),
|
|
58
29
|
]),
|
|
59
|
-
typescript_1
|
|
60
|
-
typescript_1
|
|
61
|
-
typescript_1
|
|
62
|
-
typescript_1
|
|
30
|
+
typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword),
|
|
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),
|
|
63
34
|
]),
|
|
64
35
|
]),
|
|
65
|
-
typescript_1
|
|
36
|
+
typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.StringKeyword)),
|
|
66
37
|
]),
|
|
67
|
-
typescript_1
|
|
68
|
-
typescript_1
|
|
69
|
-
typescript_1
|
|
70
|
-
typescript_1
|
|
38
|
+
typescript_1.default.factory.createUnionTypeNode([
|
|
39
|
+
typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral("queryKey")),
|
|
40
|
+
typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral("queryFn")),
|
|
41
|
+
typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral("initialData")),
|
|
71
42
|
]),
|
|
72
|
-
])
|
|
73
|
-
],
|
|
74
|
-
typescript_1
|
|
75
|
-
typescript_1
|
|
76
|
-
typescript_1
|
|
43
|
+
])),
|
|
44
|
+
], undefined, typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("useQuery"), undefined, [
|
|
45
|
+
typescript_1.default.factory.createArrayLiteralExpression([
|
|
46
|
+
typescript_1.default.factory.createIdentifier(queryKey),
|
|
47
|
+
typescript_1.default.factory.createSpreadElement(typescript_1.default.factory.createIdentifier("queryKey"))
|
|
77
48
|
], false),
|
|
78
|
-
typescript_1
|
|
79
|
-
|
|
80
|
-
}))),
|
|
81
|
-
typescript_1["default"].factory.createIdentifier("options"),
|
|
49
|
+
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))))),
|
|
50
|
+
typescript_1.default.factory.createIdentifier("options"),
|
|
82
51
|
]))),
|
|
83
|
-
], typescript_1
|
|
52
|
+
], typescript_1.default.NodeFlags.Const))
|
|
84
53
|
];
|
|
85
54
|
};
|
|
86
55
|
exports.createUseQuery = createUseQuery;
|
package/dist/src/generate.js
CHANGED
|
@@ -1,77 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
-
function step(op) {
|
|
27
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (_) try {
|
|
29
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
-
switch (op[0]) {
|
|
32
|
-
case 0: case 1: t = op; break;
|
|
33
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
-
default:
|
|
37
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
-
if (t[2]) _.ops.pop();
|
|
42
|
-
_.trys.pop(); continue;
|
|
43
|
-
}
|
|
44
|
-
op = body.call(thisArg, _);
|
|
45
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
50
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
51
4
|
};
|
|
52
|
-
exports
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
6
|
exports.generate = void 0;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
function generate(options) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
case 0:
|
|
66
|
-
openApiOutputPath = path_1["default"].join((_a = options.output) !== null && _a !== void 0 ? _a : constants_1.defaultOutputPath, constants_1.requestsOutputPath);
|
|
67
|
-
return [4 /*yield*/, (0, openapi_typescript_codegen_1.generate)(__assign(__assign({}, options), { httpClient: options.client, output: openApiOutputPath }))];
|
|
68
|
-
case 1:
|
|
69
|
-
_b.sent();
|
|
70
|
-
source = (0, createSource_1.createSource)(openApiOutputPath);
|
|
71
|
-
(0, print_1.print)(source, options);
|
|
72
|
-
return [2 /*return*/];
|
|
73
|
-
}
|
|
74
|
-
});
|
|
7
|
+
const openapi_typescript_codegen_1 = require("openapi-typescript-codegen");
|
|
8
|
+
const print_1 = require("./print");
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const createSource_1 = require("./createSource");
|
|
11
|
+
const constants_1 = require("./constants");
|
|
12
|
+
async function generate(options) {
|
|
13
|
+
const openApiOutputPath = path_1.default.join(options.output ?? constants_1.defaultOutputPath, constants_1.requestsOutputPath);
|
|
14
|
+
await (0, openapi_typescript_codegen_1.generate)({
|
|
15
|
+
...options,
|
|
16
|
+
httpClient: options.client,
|
|
17
|
+
output: openApiOutputPath,
|
|
75
18
|
});
|
|
19
|
+
const source = (0, createSource_1.createSource)(openApiOutputPath);
|
|
20
|
+
(0, print_1.print)(source, options);
|
|
76
21
|
}
|
|
77
22
|
exports.generate = generate;
|
package/dist/src/print.js
CHANGED
|
@@ -2,24 +2,22 @@
|
|
|
2
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
|
-
exports
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.print = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const constants_1 = require("./constants");
|
|
10
10
|
function printGeneratedTS(result, options) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
fs_1["default"].mkdirSync(dir, { recursive: true });
|
|
11
|
+
const dir = path_1.default.join(options.output ?? constants_1.defaultOutputPath, constants_1.queriesOutputPath);
|
|
12
|
+
if (!fs_1.default.existsSync(dir)) {
|
|
13
|
+
fs_1.default.mkdirSync(dir, { recursive: true });
|
|
15
14
|
}
|
|
16
|
-
fs_1
|
|
15
|
+
fs_1.default.writeFileSync(path_1.default.join(dir, "index.ts"), result);
|
|
17
16
|
}
|
|
18
17
|
function print(result, options) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
fs_1["default"].mkdirSync(outputPath);
|
|
18
|
+
const outputPath = options.output ?? constants_1.defaultOutputPath;
|
|
19
|
+
if (!fs_1.default.existsSync(outputPath)) {
|
|
20
|
+
fs_1.default.mkdirSync(outputPath);
|
|
23
21
|
}
|
|
24
22
|
printGeneratedTS(result, options);
|
|
25
23
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@7nohe/openapi-react-query-codegen",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "OpenAPI React Query Codegen",
|
|
5
5
|
"bin": {
|
|
6
6
|
"openapi-rq": "dist/src/cli.js"
|
|
@@ -26,14 +26,13 @@
|
|
|
26
26
|
"author": "Daiki Urata (@7nohe)",
|
|
27
27
|
"license": "MIT",
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"commander": "^
|
|
30
|
-
"glob": "^
|
|
29
|
+
"commander": "^10.0.0",
|
|
30
|
+
"glob": "^9.3.1",
|
|
31
31
|
"openapi-typescript-codegen": "^0.23.0",
|
|
32
|
-
"typescript": "^
|
|
32
|
+
"typescript": "^5.0.2"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@types/
|
|
36
|
-
"@types/node": "^18.0.6"
|
|
35
|
+
"@types/node": "^18.15.5"
|
|
37
36
|
},
|
|
38
37
|
"scripts": {
|
|
39
38
|
"build": "tsc -p tsconfig.json",
|