@azure-tools/typespec-azure-resource-manager
Version:
TypeSpec Azure Resource Manager library
40 lines • 1.27 kB
JavaScript
import { createRule } from "@typespec/compiler";
import { getParentResource } from "@typespec/rest";
import { isTrackedResource } from "./utils.js";
/**
* verify if resource nesting beyond 3 levels
*/
export const beyondNestingRule = createRule({
name: "beyond-nesting-levels",
severity: "warning",
description: "Tracked Resources must use 3 or fewer levels of nesting.",
messages: {
default: "Tracked Resources must use 3 or fewer levels of nesting.",
},
create(context) {
return {
model: (model) => {
let levels = 1;
if (!isTrackedResource(model)) {
return;
}
let parent = model;
while (levels < 4) {
parent = getParentResource(context.program, parent);
if (parent) {
levels++;
}
else {
break;
}
}
if (levels === 4) {
context.reportDiagnostic({
target: model,
});
}
},
};
},
});
//# sourceMappingURL=beyond-nesting-levels.js.map