@autorest/openapi-to-typespec
Version:
Autorest plugin to scaffold a Typespec definition from an OpenAPI document
48 lines • 2.58 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getTSPNonResourceOperationGroupName = exports.getTSPOperationGroupName = void 0;
const pluralize_1 = __importDefault(require("pluralize"));
const autorest_session_1 = require("../autorest-session");
const options_1 = require("../options");
const operationGroupNameCache = new Map();
function getTSPOperationGroupName(resourceMetadata) {
if (operationGroupNameCache.has(resourceMetadata))
return operationGroupNameCache.get(resourceMetadata);
// Try pluralizing the resource name first
let operationGroupName = (0, pluralize_1.default)(resourceMetadata.SwaggerModelName);
if (operationGroupName !== resourceMetadata.SwaggerModelName && !isExistingOperationGroupName(operationGroupName)) {
operationGroupNameCache.set(resourceMetadata, operationGroupName);
}
else {
// Try operationId then
operationGroupName = resourceMetadata.GetOperation.OperationID.split("_")[0];
if (operationGroupName !== resourceMetadata.SwaggerModelName && !isExistingOperationGroupName(operationGroupName)) {
operationGroupNameCache.set(resourceMetadata, operationGroupName);
}
else {
operationGroupName = `${resourceMetadata.SwaggerModelName}OperationGroup`;
operationGroupNameCache.set(resourceMetadata, operationGroupName);
}
}
return operationGroupName;
}
exports.getTSPOperationGroupName = getTSPOperationGroupName;
function isExistingOperationGroupName(operationGroupName) {
var _a;
const codeModel = (0, autorest_session_1.getSession)().model;
return (((_a = codeModel.schemas.objects) === null || _a === void 0 ? void 0 : _a.find((o) => o.language.default.name === operationGroupName)) !== undefined ||
Array.from(operationGroupNameCache.values()).find((v) => v === operationGroupName) !== undefined);
}
function getTSPNonResourceOperationGroupName(name) {
const operationGroupName = `${name}OperationGroup`;
if (!isExistingOperationGroupName(operationGroupName)) {
return operationGroupName;
}
// Arm resource operation group name cannot be ended with "Operations"
return (0, options_1.getOptions)().isArm ? `${name}NonResourceOperationGroup` : `${name}Operations`;
}
exports.getTSPNonResourceOperationGroupName = getTSPNonResourceOperationGroupName;
//# sourceMappingURL=operation-group.js.map
;