UNPKG

rapini

Version:

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

88 lines (87 loc) 4.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 __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.makeTypes = exports.createLiteralNodeFromProperties = void 0; var typescript_1 = __importDefault(require("typescript")); var util_1 = require("./util"); function schemaObjectTypeToArrayType($refs, item) { return (0, util_1.appendNullToUnion)((0, util_1.nonArraySchemaObjectTypeToTs)($refs, item), item.nullable); } function resolveArray($refs, item) { if ((0, util_1.isReferenceObject)(item.items)) { return (0, util_1.appendNullToUnion)(typescript_1.default.factory.createArrayTypeNode((0, util_1.createTypeRefOrSchemaObjectIfPathRef)($refs, item.items)), item.nullable); } if (item.items.properties) { return typescript_1.default.factory.createArrayTypeNode(createLiteralNodeFromProperties($refs, item.items)); } return typescript_1.default.factory.createArrayTypeNode((0, util_1.isArraySchemaObject)(item.items) ? resolveArray($refs, item.items) : schemaObjectTypeToArrayType($refs, item.items)); } function resolveType($refs, item) { if ((0, util_1.isReferenceObject)(item)) { return (0, util_1.createTypeAliasDeclarationType)($refs, item); } if ((0, util_1.isArraySchemaObject)(item)) { return resolveArray($refs, item); } return item.type ? (0, util_1.nonArraySchemaObjectTypeToTs)($refs, item) : (0, util_1.createTypeAliasDeclarationType)($refs, item); } function createPropertySignature($refs, item, name, required) { return typescript_1.default.factory.createPropertySignature( /*modifiers*/ undefined, /*name*/ name.includes("-") ? typescript_1.default.factory.createStringLiteral(name) : typescript_1.default.factory.createIdentifier(name), /*questionToken*/ required ? undefined : typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionToken), /*type*/ resolveType($refs, item)); } function createPropertySignatures($refs, item) { if (!item.properties) { return []; } return Object.entries(item.properties).map(function (_a) { var _b, _c; var _d = __read(_a, 2), name = _d[0], prop = _d[1]; return createPropertySignature($refs, prop, name, (_c = (_b = item.required) === null || _b === void 0 ? void 0 : _b.includes(name)) !== null && _c !== void 0 ? _c : false); }); } function createLiteralNodeFromProperties($refs, item) { return typescript_1.default.factory.createTypeLiteralNode(createPropertySignatures($refs, item)); } exports.createLiteralNodeFromProperties = createLiteralNodeFromProperties; function makeTypes($refs, doc) { var _a, _b; var schemas = (_b = (_a = doc.components) === null || _a === void 0 ? void 0 : _a.schemas) !== null && _b !== void 0 ? _b : []; return Object.entries(schemas).map(function (_a) { var _b = __read(_a, 2), schemaName = _b[0], item = _b[1]; return typescript_1.default.factory.createTypeAliasDeclaration( /*modifiers*/ [typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], /*name*/ typescript_1.default.factory.createIdentifier((0, util_1.sanitizeTypeName)(schemaName)), /*typeParameters*/ undefined, /*type*/ (0, util_1.createTypeAliasDeclarationType)($refs, item)); }); } exports.makeTypes = makeTypes;