export function isSchemaEqual()

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
}