UNPKG

@autorest/openapi-to-typespec

Version:

Autorest plugin to scaffold a Typespec definition from an OpenAPI document

206 lines 7.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.managedServiceIdentityLibraryType = exports.planLibraryType = exports.extendedLocationLibraryType = exports.skuLibraryType = exports.isEquivalent = void 0; const codemodel_1 = require("@autorest/codemodel"); const autorest_session_1 = require("../autorest-session"); const schemas_1 = require("./schemas"); function isEquivalent(schema, expected) { var _a, _b, _c; if (expected.type === "object") { if (!(0, codemodel_1.isObjectSchema)(schema)) return false; if (((_a = schema.properties) === null || _a === void 0 ? void 0 : _a.length) !== Object.keys(expected.properties).length) return false; for (const property of (_b = schema.properties) !== null && _b !== void 0 ? _b : []) { if (property.serializedName in expected.properties) { const expectedProperty = expected.properties[property.serializedName]; if (((_c = property.required) !== null && _c !== void 0 ? _c : false) !== expectedProperty.required) return false; if (expectedProperty.type === "primitive") { if (expectedProperty.typeName !== property.schema.type) return false; } else { if (!isEquivalent(property.schema, expectedProperty.schema())) return false; } } else return false; } } else if (expected.type === "enum") { if (expected.sealed && !(0, schemas_1.isSealedChoiceSchema)(schema)) return false; if (!expected.sealed && !(0, schemas_1.isChoiceSchema)(schema)) return false; const actualSchema = schema; if (actualSchema.choices.length !== Object.keys(expected.values).length) return false; for (const choice of actualSchema.choices) { if (choice.language.default.name in expected.values) { if (expected.values[choice.language.default.name] !== choice.value) return false; } else return false; } } else if (expected.type === "array") { if (!(0, schemas_1.isArraySchema)(schema)) return false; if (!isEquivalent(schema.elementType, expected.elementType())) return false; } else if (expected.type === "primitive") { if (!expected.schema(schema)) return false; } else if (expected.type === "dictionary") { if (!(0, schemas_1.isDictionarySchema)(schema)) return false; if (!isEquivalent(schema.elementType, expected.valueType())) return false; } return true; } exports.isEquivalent = isEquivalent; const skuTierLibraryType = { name: "skuTier", type: "enum", sealed: true, values: { Free: "Free", Basic: "Basic", Standard: "Standard", Premium: "Premium", }, }; exports.skuLibraryType = { name: "sku", type: "object", properties: { name: { serializedName: "name", required: true, type: "primitive", typeName: codemodel_1.SchemaType.String }, tier: { serializedName: "tier", required: false, type: "nonPrimitive", schema: () => skuTierLibraryType }, size: { serializedName: "size", required: false, type: "primitive", typeName: codemodel_1.SchemaType.String }, family: { serializedName: "family", required: false, type: "primitive", typeName: codemodel_1.SchemaType.String, }, capacity: { serializedName: "capacity", required: false, type: "primitive", typeName: codemodel_1.SchemaType.Integer, }, }, }; const extendedLocationTypeLibraryType = { name: "extendedLocationType", type: "enum", sealed: false, values: { Edge: "Edge", CustomLocation: "CustomLocation", }, }; exports.extendedLocationLibraryType = { name: "extendedLocation", type: "object", properties: { type: { serializedName: "type", required: true, type: "nonPrimitive", schema: () => extendedLocationTypeLibraryType, }, name: { serializedName: "name", required: true, type: "primitive", typeName: codemodel_1.SchemaType.String }, }, }; exports.planLibraryType = { name: "plan", type: "object", properties: { name: { serializedName: "name", required: true, type: "primitive", typeName: codemodel_1.SchemaType.String }, publisher: { serializedName: "publisher", required: true, type: "primitive", typeName: "string", }, product: { serializedName: "product", required: true, type: "primitive", typeName: "string", }, promotionCode: { serializedName: "promotionCode", required: false, type: "primitive", typeName: "string", }, version: { serializedName: "version", required: false, type: "primitive", typeName: "string", }, }, }; const managedServiceIdentityTypeLibraryType = { name: "managedServiceIdentityType", type: "enum", sealed: false, values: { None: "None", SystemAssigned: "SystemAssigned", UserAssigned: "UserAssigned", "SystemAssigned,UserAssigned": "SystemAssigned,UserAssigned", }, }; const managedServiceIdentityTypeLibraryTypeV4 = { name: "managedServiceIdentityType", type: "enum", sealed: false, values: { None: "None", SystemAssigned: "SystemAssigned", UserAssigned: "UserAssigned", "SystemAssigned, UserAssigned": "SystemAssigned, UserAssigned", }, }; const userAssignedIdentityLibraryType = { name: "userAssignedIdentity", type: "object", properties: { principalId: { serializedName: "principalId", required: false, type: "primitive", typeName: codemodel_1.SchemaType.Uuid }, clientId: { serializedName: "clientId", required: false, type: "primitive", typeName: codemodel_1.SchemaType.Uuid }, }, }; exports.managedServiceIdentityLibraryType = { name: "managedServiceIdentity", type: "object", properties: { principalId: { serializedName: "principalId", required: false, type: "primitive", typeName: codemodel_1.SchemaType.Uuid }, tenantId: { serializedName: "tenantId", required: false, type: "primitive", typeName: codemodel_1.SchemaType.Uuid }, type: { serializedName: "type", required: true, type: "nonPrimitive", schema: () => (0, autorest_session_1.getArmCommonTypeVersion)() === "v4" ? managedServiceIdentityTypeLibraryTypeV4 : managedServiceIdentityTypeLibraryType, }, // https://github.com/Azure/typespec-azure/issues/1163 userAssignedIdentities: { serializedName: "userAssignedIdentities", required: false, type: "nonPrimitive", schema: () => ({ name: "_", type: "dictionary", valueType: () => userAssignedIdentityLibraryType }), }, }, }; //# sourceMappingURL=library-type-mapping.js.map