UNPKG

openapi-typescript

Version:

Generate TypeScript types from Swagger OpenAPI specs

82 lines 3.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.transformParametersArray = void 0; const utils_1 = require("../utils"); const schema_1 = require("./schema"); function transformParametersArray(parameters, options) { const { globalParameters = {}, ...ctx } = options; const readonly = utils_1.tsReadonly(ctx.immutableTypes); let output = ""; let mappedParams = {}; for (const paramObj of parameters) { if (paramObj.$ref && globalParameters) { const paramName = paramObj.$ref.split("/").pop(); if (globalParameters[paramName]) { const reference = globalParameters[paramName]; if (!mappedParams[reference.in]) mappedParams[reference.in] = {}; switch (ctx.version) { case 3: { mappedParams[reference.in][reference.name || paramName] = { ...reference, schema: { $ref: paramObj.$ref }, }; break; } case 2: { mappedParams[reference.in][reference.name || paramName] = { ...reference, $ref: paramObj.$ref, }; break; } } } continue; } if (!paramObj.in || !paramObj.name) continue; if (!mappedParams[paramObj.in]) mappedParams[paramObj.in] = {}; mappedParams[paramObj.in][paramObj.name] = paramObj; } for (const [paramIn, paramGroup] of Object.entries(mappedParams)) { output += ` ${readonly}${paramIn}: {\n`; for (const [paramName, paramObj] of Object.entries(paramGroup)) { let paramComment = ""; if (paramObj.deprecated) paramComment += `@deprecated `; if (paramObj.description) paramComment += paramObj.description; if (paramComment) output += utils_1.comment(paramComment); const required = paramObj.required ? `` : `?`; let paramType = ``; switch (ctx.version) { case 3: { paramType = paramObj.schema ? schema_1.transformSchemaObj(paramObj.schema, { ...ctx, required: new Set() }) : "unknown"; break; } case 2: { if (paramObj.in === "body" && paramObj.schema) { paramType = schema_1.transformSchemaObj(paramObj.schema, { ...ctx, required: new Set() }); } else if (paramObj.type) { paramType = schema_1.transformSchemaObj(paramObj, { ...ctx, required: new Set() }); } else { paramType = "unknown"; } break; } } output += ` ${readonly}"${paramName}"${required}: ${paramType};\n`; } output += ` }\n`; } return output; } exports.transformParametersArray = transformParametersArray; //# sourceMappingURL=parameters.js.map