export function replaceCyclicRefByName()

in generator/processors/helpers.ts [16:35]


export function replaceCyclicRefByName(schema: any, definitionName: string, replacement: any) {
  const refVertices: Record<string, Set<string>> = {};

  for (const refName in schema.definitions) {
    refVertices[refName] = new Set<string>();

    transformSchemaRecursively(schema.definitions[refName], val => {
      if (val['$ref'] && val['$ref'].startsWith('#/definitions/')) {
        refVertices[refName].add(val['$ref'].substring('#/definitions/'.length));
      }

      return val;
    });
  }

  const parentDefinitions = findCyclicReferencingDefinitions(refVertices, definitionName);
  for (const parentDefinition of parentDefinitions) {
    replaceRefByName(schema.definitions[parentDefinition], definitionName, replacement);
  }
}