@autorest/openapi-to-typespec
Version:
Autorest plugin to scaffold a Typespec definition from an OpenAPI document
50 lines • 2.35 kB
JavaScript
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
;