@redocly/openapi-core
Version:
See https://github.com/Redocly/openapi-cli
27 lines (23 loc) • 891 B
text/typescript
import { Oas2Rule } from '../../visitors';
export type BooleanParameterPrefixesOptions = {
prefixes?: string[];
};
export const BooleanParameterPrefixes: Oas2Rule = (options: BooleanParameterPrefixesOptions) => {
const prefixes = options.prefixes || ['is', 'has'];
const regexp = new RegExp(`^(${prefixes.join('|')})[A-Z-_]`);
const wrappedPrefixes = prefixes.map((p) => `\`${p}\``);
const prefixesString =
wrappedPrefixes.length === 1
? wrappedPrefixes[0]
: wrappedPrefixes.slice(0, -1).join(', ') + ' or ' + wrappedPrefixes[prefixes.length - 1];
return {
Parameter(param, { report, location }) {
if (param.type === 'boolean' && !regexp.test(param.name)) {
report({
message: `Boolean parameter \`${param.name}\` should have ${prefixesString} prefix.`,
location: location.child('name'),
});
}
},
};
};