UNPKG

@autorest/openapi-to-typespec

Version:

Autorest plugin to scaffold a Typespec definition from an OpenAPI document

50 lines 2.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.transformSchemaResponse = void 0; const autorest_session_1 = require("../autorest-session"); const data_types_1 = require("../data-types"); const options_1 = require("../options"); const schemas_1 = require("./schemas"); const type_mapping_1 = require("./type-mapping"); function transformSchemaResponse(response) { var _a, _b, _c, _d, _e; const codeModel = (0, autorest_session_1.getSession)().model; const dataTypes = (0, data_types_1.getDataTypes)(codeModel); const isArm = (0, options_1.getOptions)().isArm; const mediaTypes = (_a = response.protocol.http) === null || _a === void 0 ? void 0 : _a.mediaTypes; let contentType = ""; if (mediaTypes && (mediaTypes.length !== 1 || mediaTypes[0] !== "application/json")) { contentType = mediaTypes.map((m) => `"${m}"`).join(" | "); } const additionalProperties = contentType !== "" ? [ { kind: "property", name: "contentType", isOptional: false, type: contentType, decorators: [{ name: "header" }], }, ] : undefined; if (isArm && (0, type_mapping_1.isResourceListResult)(response)) { const valueSchema = (_b = response.schema.properties) === null || _b === void 0 ? void 0 : _b.find((p) => p.language.default.name === "value"); const valueName = (_d = (_c = dataTypes.get(valueSchema.schema.elementType)) === null || _c === void 0 ? void 0 : _c.name) !== null && _d !== void 0 ? _d : "void"; return { kind: "template", name: "ResourceListResult", arguments: [{ kind: "object", name: valueName }], additionalProperties: additionalProperties, }; } let responseTypeName = ""; if ((0, schemas_1.isArraySchema)(response.schema)) { const itemName = (_e = dataTypes.get(response.schema.elementType)) === null || _e === void 0 ? void 0 : _e.name; responseTypeName = `${itemName}[]`; } else responseTypeName = response.schema.language.default.name; return { kind: "object", name: responseTypeName, additionalProperties }; } exports.transformSchemaResponse = transformSchemaResponse; //# sourceMappingURL=response.js.map