@autorest/openapi-to-cadl
Version:
Autorest plugin to scaffold a Typespec definition from an OpenAPI document
51 lines • 2.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformDataType = exports.getModel = void 0;
const codemodel_1 = require("@autorest/codemodel");
const data_types_1 = require("./data-types");
const transform_choices_1 = require("./transforms/transform-choices");
const transform_object_1 = require("./transforms/transform-object");
const transform_operations_1 = require("./transforms/transform-operations");
const transform_service_information_1 = require("./transforms/transform-service-information");
const schemas_1 = require("./utils/schemas");
const models = new Map();
function getModel(codeModel) {
let model = models.get(codeModel);
if (!model) {
(0, data_types_1.getDataTypes)(codeModel);
model = transformModel(codeModel);
models.set(codeModel, model);
}
return model;
}
exports.getModel = getModel;
function transformDataType(schema, codeModel) {
if ((0, codemodel_1.isObjectSchema)(schema)) {
return (0, transform_object_1.transformObject)(schema, codeModel);
}
if ((0, schemas_1.isChoiceSchema)(schema)) {
return (0, transform_choices_1.transformEnum)(schema, codeModel);
}
return {
name: (0, transform_object_1.getCadlType)(schema, codeModel),
kind: "wildcard",
doc: schema.language.default.documentation,
};
}
exports.transformDataType = transformDataType;
function transformModel(codeModel) {
var _a, _b, _c, _d;
const caldEnums = [...((_a = codeModel.schemas.choices) !== null && _a !== void 0 ? _a : []), ...((_b = codeModel.schemas.sealedChoices) !== null && _b !== void 0 ? _b : [])].map((c) => (0, transform_choices_1.transformEnum)(c, codeModel));
const cadlObjects = (_d = (_c = codeModel.schemas.objects) === null || _c === void 0 ? void 0 : _c.map((o) => (0, transform_object_1.transformObject)(o, codeModel))) !== null && _d !== void 0 ? _d : [];
const serviceInformation = (0, transform_service_information_1.transformServiceInformation)(codeModel);
const cadlOperationGroups = codeModel.operationGroups.map((g) => (0, transform_operations_1.transformOperationGroup)(g, codeModel));
return {
serviceInformation,
models: {
enums: caldEnums,
objects: cadlObjects,
},
operationGroups: cadlOperationGroups,
};
}
//# sourceMappingURL=model.js.map