UNPKG

@autorest/openapi-to-cadl

Version:

Autorest plugin to scaffold a Typespec definition from an OpenAPI document

51 lines 2.4 kB
"use strict"; 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