@autorest/openapi-to-typespec
Version:
Autorest plugin to scaffold a Typespec definition from an OpenAPI document
88 lines • 5.2 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSuppressionsForProvisioningState = exports.getSuppressionsForModelExtension = exports.getSuppressionWithCode = exports.generateSuppressions = exports.generateSuppressionForNoEnum = exports.checkArmDeleteOperationResponseCodes = exports.checkNoResponseBody = exports.checkArmPutOperationResponseCodes = exports.SuppressionCode = void 0;
var SuppressionCode;
(function (SuppressionCode) {
SuppressionCode["NoEnum"] = "@azure-tools/typespec-azure-core/no-enum";
SuppressionCode["ArmPutOperationResponseCodes"] = "@azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes";
SuppressionCode["DocumentRequired"] = "@azure-tools/typespec-azure-core/documentation-required";
SuppressionCode["NoResponseBody"] = "@azure-tools/typespec-azure-resource-manager/no-response-body";
SuppressionCode["LroLocationHeader"] = "@azure-tools/typespec-azure-resource-manager/lro-location-header";
SuppressionCode["ArmDeleteOperationResponseCodes"] = "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes";
SuppressionCode["ArmResourceInvalidEnvelopeProperty"] = "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property";
SuppressionCode["ArmNoRecord"] = "@azure-tools/typespec-azure-resource-manager/arm-no-record";
SuppressionCode["ArmResourceInterfaceRequiresDecorator"] = "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator";
})(SuppressionCode || (exports.SuppressionCode = SuppressionCode = {}));
function checkArmPutOperationResponseCodes(responses, asyncNames, syncNames) {
if ((responses.length === 2 &&
responses.find((r) => r.name === asyncNames._200Name) !== undefined &&
responses.find((r) => r.name === asyncNames._201Name) !== undefined) ||
(responses.find((r) => r.name === syncNames._201Name) !== undefined &&
responses.find((r) => r.name === syncNames._200Name) !== undefined))
return undefined;
return getSuppressionWithCode(SuppressionCode.ArmPutOperationResponseCodes);
}
exports.checkArmPutOperationResponseCodes = checkArmPutOperationResponseCodes;
function checkNoResponseBody(responses, asyncNames, syncNames) {
// 202 and 204 templates don't accept body, therefore if they have a body, it must be like `& {@body _ : T}`
function hasBody(response) {
return (response.additionalProperties !== undefined &&
response.additionalProperties.find((p) => { var _a; return ((_a = p.decorators) === null || _a === void 0 ? void 0 : _a.find((d) => d.name === "bodyRoot" || d.name === "body")) !== undefined; }) !== undefined);
}
if (responses.find((r) => ((r.name === asyncNames._202Name || r.name === syncNames._202Name) && hasBody(r)) ||
((r.name === asyncNames._204Name || r.name === syncNames._204Name) && hasBody(r)))) {
return getSuppressionWithCode(SuppressionCode.NoResponseBody);
}
else
return undefined;
}
exports.checkNoResponseBody = checkNoResponseBody;
function checkArmDeleteOperationResponseCodes(responses, asyncNames, syncNames) {
if ((responses.length === 2 &&
responses.find((r) => r.name === asyncNames._200Name) !== undefined &&
responses.find((r) => r.name === asyncNames._204Name) !== undefined) ||
(responses.find((r) => r.name === syncNames._204Name) !== undefined &&
responses.find((r) => r.name === syncNames._200Name) !== undefined))
return undefined;
else
return getSuppressionWithCode(SuppressionCode.ArmDeleteOperationResponseCodes);
}
exports.checkArmDeleteOperationResponseCodes = checkArmDeleteOperationResponseCodes;
function generateSuppressionForNoEnum() {
return `#suppress "@azure-tools/typespec-azure-core/no-enum" "For backward compatibility"`;
}
exports.generateSuppressionForNoEnum = generateSuppressionForNoEnum;
function generateSuppressions(suppressions) {
const definitions = [];
for (const suppression of suppressions) {
definitions.push(`#suppress "${suppression.suppressionCode}" "${suppression.suppressionMessage}"`);
}
return definitions;
}
exports.generateSuppressions = generateSuppressions;
function getSuppressionWithCode(suppressionCode) {
return {
suppressionCode,
suppressionMessage: "For backward compatibility",
};
}
exports.getSuppressionWithCode = getSuppressionWithCode;
function getSuppressionsForModelExtension() {
return [
{
suppressionCode: "@azure-tools/typespec-azure-core/composition-over-inheritance",
suppressionMessage: "For backward compatibility",
},
];
}
exports.getSuppressionsForModelExtension = getSuppressionsForModelExtension;
function getSuppressionsForProvisioningState() {
return [
{
suppressionCode: "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state",
suppressionMessage: "For backward compatibility",
},
];
}
exports.getSuppressionsForProvisioningState = getSuppressionsForProvisioningState;
//# sourceMappingURL=suppressions.js.map
;