(definition: JSONSchema7Definition)
| 1566 | } |
| 1567 | |
| 1568 | function normalizeDefinitionForComparison(definition: JSONSchema7Definition): unknown { |
| 1569 | if (Array.isArray(definition)) { |
| 1570 | return definition.map((item) => |
| 1571 | typeof item === "object" && item !== null ? normalizeDefinitionForComparison(item as JSONSchema7Definition) : item |
| 1572 | ); |
| 1573 | } |
| 1574 | |
| 1575 | if (!definition || typeof definition !== "object") { |
| 1576 | return definition; |
| 1577 | } |
| 1578 | |
| 1579 | const result: Record<string, unknown> = {}; |
| 1580 | for (const [key, value] of Object.entries(definition as Record<string, unknown>)) { |
| 1581 | if (key === "description" || key === "markdownDescription" || key === "x-enumDescriptions") { |
| 1582 | continue; |
| 1583 | } else if (key === "$ref" && typeof value === "string") { |
| 1584 | const localRef = parseLocalDefinitionRef(value); |
| 1585 | result[key] = localRef ? `#/definitions/${localRef}` : value; |
| 1586 | } else if (Array.isArray(value)) { |
| 1587 | result[key] = value.map((item) => |
| 1588 | typeof item === "object" && item !== null ? normalizeDefinitionForComparison(item as JSONSchema7Definition) : item |
| 1589 | ); |
| 1590 | } else if (value && typeof value === "object") { |
| 1591 | result[key] = normalizeDefinitionForComparison(value as JSONSchema7Definition); |
| 1592 | } else { |
| 1593 | result[key] = value; |
| 1594 | } |
| 1595 | } |
| 1596 | return result; |
| 1597 | } |
| 1598 | |
| 1599 | function collectLocalDefinitionRefNames(value: unknown): Set<string> { |
| 1600 | const refs = new Set<string>(); |
no test coverage detected
searching dependent graphs…