@autorest/openapi-to-typespec
Version:
Autorest plugin to scaffold a Typespec definition from an OpenAPI document
45 lines • 2.06 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateObject = void 0;
const decorators_1 = require("../utils/decorators");
const docs_1 = require("../utils/docs");
const model_generation_1 = require("../utils/model-generation");
const suppressions_1 = require("../utils/suppressions");
function generateObject(typespecObject) {
var _a, _b, _c;
let definitions = [];
const fixme = getFixme(typespecObject);
fixme && definitions.push(fixme);
const doc = (0, docs_1.generateDocs)(typespecObject);
definitions.push(doc);
const decorators = (0, decorators_1.generateDecorators)(typespecObject.decorators);
decorators && definitions.push(decorators);
typespecObject.suppressions && definitions.push(...(0, suppressions_1.generateSuppressions)(typespecObject.suppressions));
if ((_a = typespecObject.extendedParents) === null || _a === void 0 ? void 0 : _a.length) {
const firstParent = typespecObject.extendedParents[0];
definitions.push(`model ${typespecObject.name} extends ${firstParent} {`);
}
else if (typespecObject.alias) {
const { alias, params } = typespecObject.alias;
definitions.push(`model ${typespecObject.name} is ${alias}${params ? `<${params.join(",")}>` : ""} {`);
}
else {
definitions.push(`model ${typespecObject.name} {`);
}
if ((_b = typespecObject.spreadParents) === null || _b === void 0 ? void 0 : _b.length) {
for (const parent of typespecObject.spreadParents) {
definitions.push(`...${parent};`);
}
}
definitions = [...definitions, ...(0, model_generation_1.getModelPropertiesDeclarations)((_c = typespecObject.properties) !== null && _c !== void 0 ? _c : [])];
definitions.push("}");
return definitions.join("\n");
}
exports.generateObject = generateObject;
function getFixme(typespecObject) {
if (!typespecObject.fixMe) {
return undefined;
}
return typespecObject.fixMe.join("\n");
}
//# sourceMappingURL=generate-object.js.map
;