UNPKG

@davstack/openapi-react-query-codegen

Version:

OpenAPI React Query Codegen using --useOptions (fork from @7nohe/openapi-react-query-codegen)

114 lines (113 loc) 11.8 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 factory = typescript_1.default.factory; const createUseQuery = (node, className, method) => { const methodName = method.name?.getText(node); const fullName = `${className}${(0, common_1.capitalizeFirstLetter)(methodName)}`; const customHookName = `use${fullName}`; const queryKeyName = `QueryKey${fullName}`; const queryKeyValue = typescript_1.default.factory.createArrayLiteralExpression([ typescript_1.default.factory.createStringLiteral(className), typescript_1.default.factory.createStringLiteral(methodName), ], false); // console.log({ // className, // methodName, // customHookName, // queryKey: queryKeyValue, // }); 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), ]); const prefetchQuery = factory.createVariableStatement([factory.createToken(typescript_1.default.SyntaxKind.ExportKeyword)], factory.createVariableDeclarationList([ factory.createVariableDeclaration(factory.createIdentifier('prefetch' + fullName), undefined, undefined, factory.createArrowFunction([factory.createToken(typescript_1.default.SyntaxKind.AsyncKeyword)], undefined, [ typescript_1.default.factory.createParameterDeclaration(undefined, undefined, typescript_1.default.factory.createIdentifier('params'), !method.parameters || !method.parameters.length ? typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionToken) : undefined, !method.parameters || !method.parameters.length ? // never | null typescript_1.default.factory.createTypeReferenceNode('null') : // Parameters<typeof DefaultClient.findPets>[0] typescript_1.default.factory.createIndexedAccessTypeNode(typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier('Parameters'), [ typescript_1.default.factory.createTypeQueryNode(typescript_1.default.factory.createQualifiedName(typescript_1.default.factory.createIdentifier(className), typescript_1.default.factory.createIdentifier(methodName))), ]), typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createNumericLiteral('0')))), factory.createParameterDeclaration(undefined, undefined, factory.createObjectBindingPattern([ factory.createBindingElement(undefined, undefined, factory.createIdentifier('queryKey'), undefined), ]), undefined, factory.createTypeLiteralNode([ factory.createPropertySignature(undefined, factory.createIdentifier('queryKey'), factory.createToken(typescript_1.default.SyntaxKind.QuestionToken), factory.createUnionTypeNode([ factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.StringKeyword), factory.createArrayTypeNode(factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.StringKeyword)), ])), ]), factory.createObjectLiteralExpression([], false)), ], undefined, factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), factory.createCallExpression(factory.createIdentifier('prefetchQuery'), undefined, [ factory.createArrayLiteralExpression([ typescript_1.default.factory.createSpreadElement(typescript_1.default.factory.createIdentifier(queryKeyName)), factory.createSpreadElement(factory.createParenthesizedExpression(factory.createBinaryExpression(factory.createIdentifier('queryKey'), factory.createToken(typescript_1.default.SyntaxKind.QuestionQuestionToken), factory.createArrayLiteralExpression([factory.createIdentifier('params')], false)))), ], false), factory.createArrowFunction(undefined, undefined, [], undefined, factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), factory.createCallExpression(factory.createPropertyAccessExpression(factory.createIdentifier(className), factory.createIdentifier(methodName)), undefined, method.parameters.length > 0 ? [typescript_1.default.factory.createIdentifier('params')] : [])), ]))), ], typescript_1.default.NodeFlags.Const)); 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(queryKeyName), undefined, undefined, queryKeyValue), ], 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))), ]), [ typescript_1.default.factory.createParameterDeclaration(undefined, undefined, typescript_1.default.factory.createIdentifier('params'), !method.parameters || !method.parameters.length ? typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionToken) : undefined, !method.parameters || !method.parameters.length ? // never | null typescript_1.default.factory.createTypeReferenceNode('null') : // Parameters<typeof DefaultClient.findPets>[0] typescript_1.default.factory.createIndexedAccessTypeNode(typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier('Parameters'), [ typescript_1.default.factory.createTypeQueryNode(typescript_1.default.factory.createQualifiedName(typescript_1.default.factory.createIdentifier(className), typescript_1.default.factory.createIdentifier(methodName))), ]), typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createNumericLiteral('0')))), 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')), ]), ])), typescript_1.default.factory.createParameterDeclaration(undefined, undefined, typescript_1.default.factory.createIdentifier('queryKey'), typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionToken), queryKeyGenericType), ], 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.createSpreadElement(typescript_1.default.factory.createIdentifier(queryKeyName)), 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), typescript_1.default.factory.createArrayLiteralExpression([ typescript_1.default.factory.createIdentifier('params'), ])))), ], 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.length > 0 ? [typescript_1.default.factory.createIdentifier('params')] : [])), typescript_1.default.factory.createIdentifier('options'), ]))), ], typescript_1.default.NodeFlags.Const)), prefetchQuery, ]; }; exports.createUseQuery = createUseQuery;