in packages/rulesets/src/spectral/functions/utils.ts [212:239]
export function isSchemaEqual(a: any, b: any): boolean {
if (a && b) {
const propsA = Object.getOwnPropertyNames(a)
const propsB = Object.getOwnPropertyNames(b)
if (propsA.length === propsB.length) {
if (propsA.length === 0) {
return true
}
for (let i = 0; i < propsA.length; i++) {
const propsAName = propsA[i]
const [propA, propB] = [a[propsAName], b[propsAName]]
if (typeof propA === "object") {
if (!isSchemaEqual(propA, propB)) {
return false
} else if (i === propsA.length - 1) {
return true
}
} else if (propA !== propB) {
return false
} else if (propA === propB && i === propsA.length - 1) {
return true
}
}
}
}
return false
}