@davstack/openapi-react-query-codegen
Version:
OpenAPI React Query Codegen using --useOptions (fork from @7nohe/openapi-react-query-codegen)
47 lines (46 loc) • 4.41 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createUseMutation = void 0;
const typescript_1 = __importDefault(require("typescript"));
const common_1 = require("./common");
const createUseMutation = (node, className, method) => {
const methodName = method.name?.getText(node);
return 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(`use${className}${(0, common_1.capitalizeFirstLetter)(methodName)}`), undefined, undefined, typescript_1.default.factory.createArrowFunction(undefined, undefined, [
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'), [
typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier('UseMutationOptions'), [
typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier('Awaited'), [
typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier('ReturnType'), [
typescript_1.default.factory.createTypeQueryNode(typescript_1.default.factory.createQualifiedName(typescript_1.default.factory.createIdentifier(className), typescript_1.default.factory.createIdentifier(methodName)), undefined),
]),
]),
typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword),
method.parameters.length !== 0
? typescript_1.default.factory.createTypeReferenceNode(method.parameters[0].type?.getFullText(node) ??
'any')
: typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.VoidKeyword),
typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword),
]),
typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral('mutationFn')),
]), undefined),
], undefined, typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier('useMutation'), undefined, [
typescript_1.default.factory.createArrowFunction(undefined, undefined, method.parameters.length !== 0
? [
typescript_1.default.factory.createParameterDeclaration(undefined, undefined, typescript_1.default.factory.createObjectBindingPattern(method.parameters.map((param) => {
return typescript_1.default.factory.createBindingElement(undefined, undefined, typescript_1.default.factory.createIdentifier(flattenObject(param.name.getText(node))), undefined);
})), undefined, 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((params) => {
return typescript_1.default.factory.createIdentifier(params.name.getText(node));
}))),
typescript_1.default.factory.createIdentifier('options'),
]))),
], typescript_1.default.NodeFlags.Const));
};
exports.createUseMutation = createUseMutation;
function flattenObject(str) {
return str.replace('{', '').replace('}', '');
}