UNPKG

@seriouslag/openapi-react-query-codegen

Version:
62 lines (61 loc) 7.79 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createUseQuery = void 0; const typescript_1 = __importDefault(require("typescript")); const common_1 = require("./common"); const createUseQuery = (node, className, method) => { const methodName = method.name?.getText(node); let requestParam = []; if (method.parameters.length !== 0) { 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))))); } const customHookName = `use${className}${(0, common_1.capitalizeFirstLetter)(methodName)}`; const queryKey = `${customHookName}Key`; const queryKeyGenericType = typescript_1.default.factory.createTypeReferenceNode('TQueryKey', undefined); const queryKeyConstraint = typescript_1.default.factory.createTypeReferenceNode('Array', [typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword)]); 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(queryKey), undefined, undefined, typescript_1.default.factory.createStringLiteral(`${className}${(0, common_1.capitalizeFirstLetter)(methodName)}`))], typescript_1.default.NodeFlags.Const)), 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(customHookName), undefined, undefined, typescript_1.default.factory.createArrowFunction(undefined, typescript_1.default.factory.createNodeArray([ typescript_1.default.factory.createTypeParameterDeclaration(undefined, 'TQueryKey', queryKeyConstraint, typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword))), ]), [ ...requestParam, typescript_1.default.factory.createParameterDeclaration(undefined, undefined, typescript_1.default.factory.createIdentifier("queryKey"), typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionToken), queryKeyGenericType), 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("UseQueryOptions"), [ 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), 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.createArrayTypeNode(typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword)), ]), typescript_1.default.factory.createUnionTypeNode([ typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral("queryKey")), typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral("queryFn")), typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral("initialData")), ]), ])), ], undefined, typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("useQuery"), undefined, [ typescript_1.default.factory.createArrayLiteralExpression([ typescript_1.default.factory.createIdentifier(queryKey), 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([ typescript_1.default.factory.createObjectLiteralExpression(method.parameters.map((param) => typescript_1.default.factory.createShorthandPropertyAssignment(typescript_1.default.factory.createIdentifier(param.name.getText(node))))), ]) : typescript_1.default.factory.createArrayLiteralExpression([])))), ], false), 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))))), typescript_1.default.factory.createIdentifier("options"), ]))), ], typescript_1.default.NodeFlags.Const)) ]; }; exports.createUseQuery = createUseQuery;