persona-community-5/.pnpm-store/v3/files/62/9c1a50d9c17410224a1719faedb4757833c410b3e9e39f1fa2dc6945dd2bd512c2cc28deabc2b0fd49c36ab10cd2269c7c916e8e14e3663ad3321062695243
rdev-worker a1d0d1bf1c
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
build: /implement-feature community-ui --requirements 'Build the React commu...
2026-02-24 08:22:30 +00:00

53 lines
1.3 KiB
Plaintext

import { YamlParseError } from '../resolve';
import type { Oas3Rule } from '../visitors';
import type { ResolveResult, Problem } from '../walk';
import type { Location } from '../ref-utils';
export const NoUnresolvedRefs: Oas3Rule = () => {
return {
ref: {
leave(_, { report, location }, resolved) {
if (resolved.node !== undefined) return;
reportUnresolvedRef(resolved, report, location);
},
},
DiscriminatorMapping(mapping, { report, resolve, location }) {
for (const mappingName of Object.keys(mapping)) {
const resolved = resolve({ $ref: mapping[mappingName] });
if (resolved.node !== undefined) return;
reportUnresolvedRef(resolved, report, location.child(mappingName));
}
},
};
};
export function reportUnresolvedRef(
resolved: ResolveResult<any>,
report: (m: Problem) => void,
location: Location
) {
const error = resolved.error;
if (error instanceof YamlParseError) {
report({
message: 'Failed to parse: ' + error.message,
location: {
source: error.source,
pointer: undefined,
start: {
col: error.col,
line: error.line,
},
},
});
}
const message = resolved.error?.message;
report({
location,
message: `Can't resolve $ref${message ? ': ' + message : ''}`,
});
}