@davstack/openapi-react-query-codegen
Version:
OpenAPI React Query Codegen using --useOptions (fork from @7nohe/openapi-react-query-codegen)
49 lines (48 loc) • 2.49 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createExports = void 0;
const typescript_1 = __importDefault(require("typescript"));
const glob_1 = require("glob");
const path_1 = require("path");
const fs_1 = __importDefault(require("fs"));
const createUseQuery_1 = require("./createUseQuery");
const createUseMutation_1 = require("./createUseMutation");
const createExports = (generatedClientsPath) => {
const services = (0, glob_1.sync)((0, path_1.join)(generatedClientsPath, 'services', '*.ts').replace(/\\/g, '/'));
const nodes = services.map((servicePath) => typescript_1.default.createSourceFile(servicePath, // fileName
fs_1.default.readFileSync((0, path_1.join)(process.cwd(), servicePath), "utf8"), typescript_1.default.ScriptTarget.Latest // langugeVersion
));
return [
...nodes
.map((node) => {
const klass = node
.getChildren()[0]
.getChildren()
.find((child) => child.kind === typescript_1.default.SyntaxKind.ClassDeclaration);
const className = klass.name?.getText(node);
const methods = klass.members.filter((node) => node.kind === typescript_1.default.SyntaxKind.MethodDeclaration);
return methods
.map((method) => {
const methodName = method.name?.getText(node);
const methodBlock = method
.getChildren(node)
.find((child) => child.kind === typescript_1.default.SyntaxKind.Block);
const returnStatement = methodBlock.statements.find((s) => s.kind === typescript_1.default.SyntaxKind.ReturnStatement);
const callExpression = returnStatement.expression;
const properties = callExpression.arguments[1].properties;
const httpMethodName = properties
.find((p) => p.name?.getText(node) === "method")
?.initializer?.getText(node);
return httpMethodName === "'GET'"
? (0, createUseQuery_1.createUseQuery)(node, className, method)
: (0, createUseMutation_1.createUseMutation)(node, className, method);
})
.flat();
})
.flat(),
];
};
exports.createExports = createExports;