@autorest/openapi-to-typespec
Version:
Autorest plugin to scaffold a Typespec definition from an OpenAPI document
66 lines • 3.38 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getTSPOperationGroupName = getTSPOperationGroupName;
exports.getSwaggerOperationGroupName = getSwaggerOperationGroupName;
exports.getSwaggerOperationName = getSwaggerOperationName;
exports.getTSPNonResourceOperationGroupName = getTSPNonResourceOperationGroupName;
exports.isInterfaceName = isInterfaceName;
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;
}
function getSwaggerOperationGroupName(operationId) {
const splittedOperationId = operationId.split("_");
return splittedOperationId.length === 2 ? splittedOperationId[0] : "";
}
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 ||
isInterfaceName(operationGroupName));
}
function getSwaggerOperationName(operationId) {
const splittedOperationId = operationId.split("_");
return splittedOperationId.length === 2 ? splittedOperationId[1] : operationId;
}
const nonResourceOperationGroupNameCache = new Set();
function getTSPNonResourceOperationGroupName(name) {
const operationGroupName = `${name}OperationGroup`;
if (!isExistingOperationGroupName(operationGroupName)) {
nonResourceOperationGroupNameCache.add(operationGroupName);
return operationGroupName;
}
// Arm resource operation group name cannot be ended with "Operations"
const groupName = (0, options_1.getOptions)().isArm ? `${name}NonResourceOperationGroup` : `${name}Operations`;
nonResourceOperationGroupNameCache.add(groupName);
return groupName;
}
function isInterfaceName(name) {
return (Array.from(operationGroupNameCache.values()).find((v) => v === name) !== undefined ||
nonResourceOperationGroupNameCache.has(name));
}
//# sourceMappingURL=operation-group.js.map