UNPKG

rapini

Version:

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

108 lines (107 loc) 7.02 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.makeQueryKeys = void 0; var typescript_1 = __importDefault(require("typescript")); var util_1 = require("./util"); var NULL_IF_UNDEFINED_FN_NAME = "nullIfUndefined"; function makeQueryKeys($refs, paths) { var queryKeys = 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 makeQueryKey($refs, pattern, item.get, item.parameters); }); return [ makeNullIfUndefinedFunctionDeclaration(), makeQueryKeysObject(queryKeys), makeExportQueryKeyType(), ]; } exports.makeQueryKeys = makeQueryKeys; function makeNullIfUndefinedFunctionDeclaration() { return typescript_1.default.factory.createFunctionDeclaration(undefined, undefined, typescript_1.default.factory.createIdentifier(NULL_IF_UNDEFINED_FN_NAME), [ typescript_1.default.factory.createTypeParameterDeclaration(undefined, typescript_1.default.factory.createIdentifier("T"), undefined, undefined), ], [ typescript_1.default.factory.createParameterDeclaration(undefined, undefined, typescript_1.default.factory.createIdentifier("value"), undefined, typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("T"), undefined), undefined), ], typescript_1.default.factory.createUnionTypeNode([ typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("NonNullable"), [ typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("T"), undefined), ]), typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createNull()), ]), typescript_1.default.factory.createBlock([ typescript_1.default.factory.createReturnStatement(typescript_1.default.factory.createConditionalExpression(typescript_1.default.factory.createBinaryExpression(typescript_1.default.factory.createTypeOfExpression(typescript_1.default.factory.createIdentifier("value")), typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.EqualsEqualsEqualsToken), typescript_1.default.factory.createStringLiteral("undefined")), typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionToken), typescript_1.default.factory.createNull(), typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.ColonToken), typescript_1.default.factory.createAsExpression(typescript_1.default.factory.createIdentifier("value"), typescript_1.default.factory.createUnionTypeNode([ typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("NonNullable"), [ typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("T"), undefined), ]), typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createNull()), ])))), ], true)); } function makeQueryKeysObject(queryKeys) { return typescript_1.default.factory.createVariableStatement([typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.ExportKeyword)], typescript_1.default.factory.createVariableDeclarationList([ typescript_1.default.factory.createVariableDeclaration(typescript_1.default.factory.createIdentifier("queryKeys"), undefined, undefined, typescript_1.default.factory.createAsExpression(typescript_1.default.factory.createObjectLiteralExpression(queryKeys, true), typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("const"), undefined))), ], typescript_1.default.NodeFlags.Const)); } // queryKey's are only made for GET's function makeQueryKey($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 params = (0, util_1.createParams)($refs, get, pathParams); return typescript_1.default.factory.createPropertyAssignment( /*name*/ typescript_1.default.factory.createIdentifier(normalizedOperationId), /*initializer*/ typescript_1.default.factory.createArrowFunction( /*modifiers*/ undefined, /*typeParams*/ undefined, /*parameters*/ params.map(function (arg) { return arg.arrowFuncParam; }), /*type*/ undefined, /*equalsGreaterThanToken*/ typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), /*body*/ typescript_1.default.factory.createAsExpression(typescript_1.default.factory.createArrayLiteralExpression(__spreadArray([ typescript_1.default.factory.createStringLiteral(normalizedOperationId) ], __read(params.map(function (p) { return p.required ? p.name : typescript_1.default.factory.createCallExpression( /*expression*/ typescript_1.default.factory.createIdentifier(NULL_IF_UNDEFINED_FN_NAME), /*typeArguments*/ undefined, /*argumentsArray*/ [p.name]); })), false), /*multiline*/ false), typescript_1.default.factory.createTypeReferenceNode( /*typeName*/ typescript_1.default.factory.createIdentifier("const"), /*typeArgs*/ undefined)))); } function makeExportQueryKeyType() { return typescript_1.default.factory.createTypeAliasDeclaration([typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.ExportKeyword)], typescript_1.default.factory.createIdentifier("QueryKeys"), undefined, typescript_1.default.factory.createTypeQueryNode(typescript_1.default.factory.createIdentifier("queryKeys"), undefined)); }