persona-community-5/.pnpm-store/v3/files/dc/faadf81a38a4ad3c8751658a19fb71976ff457168c59b1c85464abd2df42e8077f9c7cf4c236fb45b60bafb50e0375a802b3eacea293a3fd0b4c30f2d10a84
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

38 lines
1.2 KiB
Plaintext

import { getMatchingStatusCodeRange } from '../../utils';
import type { Oas2Rule } from '../../visitors';
import type { UserContext } from '../../walk';
export const ResponseContainsProperty: Oas2Rule = (options) => {
const names: Record<string, string[]> = options.names || {};
let key: string | number;
return {
Operation: {
Response: {
skip: (_response, key) => {
return `${key}` === '204';
},
enter: (_response, ctx: UserContext) => {
key = ctx.key;
},
Schema(schema, { report, location }) {
if (schema.type !== 'object') return;
const expectedProperties =
names[key] ||
names[getMatchingStatusCodeRange(key)] ||
names[getMatchingStatusCodeRange(key).toLowerCase()] ||
[];
for (const expectedProperty of expectedProperties) {
if (!schema.properties?.[expectedProperty]) {
report({
message: `Response object must contain a top-level "${expectedProperty}" property.`,
location: location.child('properties').key(),
});
}
}
},
},
},
};
};