persona-community-5/.pnpm-store/v3/files/6c/33fb618823c3d7905cff12ea1690c0fbc6cdd75f0c77460bf012ffcff89252106f93ae977887b9e9155c525147514914fd26985a4758500dcc4170c85414ee
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

49 lines
1.7 KiB
Plaintext

import type { Oas3Rule, Oas2Rule } from '../../visitors';
import type { Oas2Parameter } from '../../typings/swagger';
import type { Oas3Parameter } from '../../typings/openapi';
import type { UserContext } from '../../walk';
export const OperationParametersUnique: Oas3Rule | Oas2Rule = () => {
let seenPathParams: Set<string>;
let seenOperationParams: Set<string>;
return {
PathItem: {
enter() {
seenPathParams = new Set();
},
Parameter(
parameter: Oas2Parameter | Oas3Parameter,
{ report, key, parentLocations }: UserContext
) {
const paramId = `${parameter.in}___${parameter.name}`;
if (seenPathParams.has(paramId)) {
report({
message: `Paths must have unique \`name\` + \`in\` parameters.\nRepeats of \`in:${parameter.in}\` + \`name:${parameter.name}\`.`,
location: parentLocations.PathItem.child(['parameters', key]),
});
}
seenPathParams.add(`${parameter.in}___${parameter.name}`);
},
Operation: {
enter() {
seenOperationParams = new Set();
},
Parameter(
parameter: Oas2Parameter | Oas3Parameter,
{ report, key, parentLocations }: UserContext
) {
const paramId = `${parameter.in}___${parameter.name}`;
if (seenOperationParams.has(paramId)) {
report({
message: `Operations must have unique \`name\` + \`in\` parameters. Repeats of \`in:${parameter.in}\` + \`name:${parameter.name}\`.`,
location: parentLocations.Operation.child(['parameters', key]),
});
}
seenOperationParams.add(paramId);
},
},
},
};
};