UNPKG

@redocly/openapi-core

Version:

See https://github.com/Redocly/redocly-cli

42 lines 1.43 kB
export const NoAmbiguousPaths = () => { return { Paths(pathMap, { report, location }) { const seenPaths = []; for (const currentPath of Object.keys(pathMap)) { const ambiguousPath = seenPaths.find((seenPath) => arePathsAmbiguous(seenPath, currentPath)); if (ambiguousPath) { report({ message: `Paths should resolve unambiguously. Found two ambiguous paths: \`${ambiguousPath}\` and \`${currentPath}\`.`, location: location.child([currentPath]).key(), }); } seenPaths.push(currentPath); } }, }; }; function arePathsAmbiguous(a, b) { const partsA = a.split('/'); const partsB = b.split('/'); if (partsA.length !== partsB.length) return false; let aVars = 0; let bVars = 0; let ambiguous = true; for (let i = 0; i < partsA.length; i++) { const aIsVar = partsA[i].match(/^{.+?}$/); const bIsVar = partsB[i].match(/^{.+?}$/); if (aIsVar || bIsVar) { if (aIsVar) aVars++; if (bIsVar) bVars++; continue; } else if (partsA[i] !== partsB[i]) { ambiguous = false; } } return ambiguous && aVars === bVars; } //# sourceMappingURL=no-ambiguous-paths.js.map