private checkCircularAllOf()

in src/lib/util/resolveSwagger.ts [318:340]


  private checkCircularAllOf(schema: any, visited: any[] | undefined, referenceChain: string[]) {
    visited = visited ? visited : []
    referenceChain = referenceChain ? referenceChain : []
    if (schema) {
      if (visited.includes(schema)) {
        throw new Error("Found circular allOf reference: " + referenceChain.join("-> "))
      }
      if (!schema.allOf) {
        return
      }
      visited.push(schema)
      sm.values(schema.allOf)
        .filter(s => (s as any).$ref)
        .forEach(s => {
          const ref = (s as any).$ref
          referenceChain.push(ref)
          const referredSchema = this.dereference(ref)
          this.checkCircularAllOf(referredSchema, visited, referenceChain)
          referenceChain.pop()
        })
      visited.pop()
    }
  }