UNPKG

rapini

Version:

Generate React Query hooks, SWR hooks, Axios requests and Typescript types from OpenAPI files

142 lines (141 loc) 8.46 kB
"use strict"; var __read = (this && this.__read) || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.makeQueries = void 0; var typescript_1 = __importDefault(require("typescript")); var util_1 = require("../common/util"); function makeQueries($refs, paths) { var properties = Object.entries(paths) .filter(function (_a) { var _b = __read(_a, 2), _ = _b[0], item = _b[1]; return !!(item === null || item === void 0 ? void 0 : item.get); }) .map(function (_a) { var _b = __read(_a, 2), pattern = _b[0], item = _b[1]; return makeProperty($refs, pattern, item.get, item.parameters); }); var requestsParam = typescript_1.default.factory.createParameterDeclaration( /*modifiers*/ undefined, /*dotDotDotToken*/ undefined, /*name*/ typescript_1.default.factory.createIdentifier("requests"), /*questionToken*/ undefined, /*type*/ typescript_1.default.factory.createTypeReferenceNode( /*typeName*/ typescript_1.default.factory.createIdentifier("Requests"), /*typeArgs*/ undefined), /*initializer*/ undefined); return typescript_1.default.factory.createFunctionDeclaration( /*modifiers*/ undefined, /*asteriskToken*/ undefined, /*name*/ typescript_1.default.factory.createIdentifier("makeQueries"), /*typeParameters*/ undefined, /*parameters*/ [requestsParam], /*type*/ undefined, /*body*/ typescript_1.default.factory.createBlock([ typescript_1.default.factory.createReturnStatement( /*expression*/ typescript_1.default.factory.createAsExpression( /*expression*/ typescript_1.default.factory.createObjectLiteralExpression(properties, /*multiline*/ true), /*type*/ typescript_1.default.factory.createTypeReferenceNode( /*typeName*/ typescript_1.default.factory.createIdentifier("const"), /*typeArgs*/ undefined))), ], /*multiline*/ true)); } exports.makeQueries = makeQueries; function makeProperty($refs, pattern, get, pathParams) { if (!(get === null || get === void 0 ? void 0 : get.operationId)) { throw "Missing \"operationId\" from \"get\" request with pattern ".concat(pattern); } var normalizedOperationId = (0, util_1.normalizeOperationId)(get.operationId); var identifierName = "use".concat((0, util_1.capitalizeFirstLetter)(normalizedOperationId)); var params = (0, util_1.createParams)($refs, get, pathParams); return typescript_1.default.factory.createPropertyAssignment( /*name*/ typescript_1.default.factory.createIdentifier(identifierName), /*initializer*/ typescript_1.default.factory.createArrowFunction( /*modifiers*/ undefined, /*typeParams*/ undefined, __spreadArray(__spreadArray([], __read(params.map(function (p) { return p.arrowFuncParam; })), false), [ optionsParameterDeclaration(normalizedOperationId), ], false), /*type*/ typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("UseQueryResult"), [ typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("Response"), [ typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral(normalizedOperationId)), ]), typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword), ]), /*equalsGreaterThanToken*/ 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.createObjectLiteralExpression([ typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("queryKey"), typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createPropertyAccessExpression(typescript_1.default.factory.createIdentifier("queryKeys"), typescript_1.default.factory.createIdentifier(normalizedOperationId)), undefined, params.map(function (p) { return p.name; }))), typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("queryFn"), 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("requests"), typescript_1.default.factory.createIdentifier(normalizedOperationId)), undefined, params.map(function (p) { return p.name; })))), typescript_1.default.factory.createSpreadAssignment(typescript_1.default.factory.createIdentifier("options")), ], false), ]))); } function optionsParameterDeclaration(requestIdentifier) { return typescript_1.default.factory.createParameterDeclaration( /*modifiers*/ undefined, /*dotDotDotToken*/ undefined, /*name*/ typescript_1.default.factory.createIdentifier("options"), /*questionToken*/ typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionToken), /*type*/ typescript_1.default.factory.createTypeReferenceNode( /*typeName*/ typescript_1.default.factory.createIdentifier("Omit"), /*typeArguments*/ [ typescript_1.default.factory.createTypeReferenceNode( /*typeName*/ typescript_1.default.factory.createIdentifier("UseQueryOptions"), /*typeArgs*/ [ typescript_1.default.factory.createTypeReferenceNode( /*typeName*/ typescript_1.default.factory.createIdentifier("Response"), /*typeArgs*/ [ typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral(requestIdentifier)), ]), typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.UnknownKeyword), typescript_1.default.factory.createTypeReferenceNode( /*typeName*/ typescript_1.default.factory.createIdentifier("Response"), /*typeArgs*/ [ typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral(requestIdentifier)), ]), typescript_1.default.factory.createTypeReferenceNode( /*typeName*/ typescript_1.default.factory.createIdentifier("ReturnType"), /*typeArgs*/ [ typescript_1.default.factory.createIndexedAccessTypeNode( /*objectType*/ typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("QueryKeys"), undefined), /*indexType*/ typescript_1.default.factory.createLiteralTypeNode( /*literal*/ typescript_1.default.factory.createStringLiteral(requestIdentifier))), ]), ]), typescript_1.default.factory.createUnionTypeNode( /*types*/ [ typescript_1.default.factory.createLiteralTypeNode( /*literal*/ typescript_1.default.factory.createStringLiteral("queryKey")), typescript_1.default.factory.createLiteralTypeNode( /*literal*/ typescript_1.default.factory.createStringLiteral("queryFn")), ]), ]), /*initializer*/ undefined); }