persona-community-5/.pnpm-store/v3/files/f6/20df0f4f60bb32f5642b43d0d7d32dfa35918b78d4c93c0b6053c80193365647345fac87721bbc8ffc0cff89c50b7bf35f9673dee63e40ce3ca23004c07f04
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

31 lines
1.1 KiB
Plaintext

import type { Oas3Rule } from '../../visitors';
export const NoUndefinedServerVariable: Oas3Rule = () => {
return {
Server(server, { report, location }) {
if (!server.url) return;
const urlVariables = server.url.match(/{[^}]+}/g)?.map((e) => e.slice(1, e.length - 1)) || [];
const definedVariables = (server?.variables && Object.keys(server.variables)) || [];
for (const serverVar of urlVariables) {
if (!definedVariables.includes(serverVar)) {
report({
message: `The \`${serverVar}\` variable is not defined in the \`variables\` objects.`,
location: location.child(['url']),
});
}
}
for (const definedServerVar of definedVariables) {
if (!urlVariables.includes(definedServerVar)) {
report({
message: `The \`${definedServerVar}\` variable is not used in the server's \`url\` field.`,
location: location.child(['variables', definedServerVar]).key(),
from: location.child('url'),
});
}
}
},
};
};