persona-community-5/.pnpm-store/v3/files/9f/fba227ed9ddcfa4819b4e375d806166d6c5b644f4deb3cae9607856efeb35be1c812cfbdd8be99ad7aa26054a178c8af5384df1ec5583fd8274332621245b3
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

73 lines
1.7 KiB
Plaintext

import { isDefined } from '../utils';
import type {
Arazzo1RuleSet,
Async2RuleSet,
Async3RuleSet,
Oas2RuleSet,
Oas3RuleSet,
Overlay1RuleSet,
SpecVersion,
} from '../oas-types';
import type { StyleguideConfig } from './config';
import type { ProblemSeverity } from '../walk';
type InitializedRule = {
severity: ProblemSeverity;
ruleId: string;
visitor: any;
};
export function initRules(
rules: (
| Oas3RuleSet
| Oas2RuleSet
| Async2RuleSet
| Async3RuleSet
| Arazzo1RuleSet
| Overlay1RuleSet
)[],
config: StyleguideConfig,
type: 'rules' | 'preprocessors' | 'decorators',
oasVersion: SpecVersion
): InitializedRule[] {
return rules
.flatMap((ruleset) =>
Object.keys(ruleset).map((ruleId) => {
const rule = ruleset[ruleId];
const ruleSettings =
type === 'rules'
? config.getRuleSettings(ruleId, oasVersion)
: type === 'preprocessors'
? config.getPreprocessorSettings(ruleId, oasVersion)
: config.getDecoratorSettings(ruleId, oasVersion);
if (ruleSettings.severity === 'off') {
return undefined;
}
const severity: ProblemSeverity = ruleSettings.severity;
const message = ruleSettings.message;
const visitors = rule(ruleSettings);
if (Array.isArray(visitors)) {
return visitors.map((visitor: any) => ({
severity,
ruleId,
message,
visitor: visitor,
}));
}
return {
severity,
message,
ruleId,
visitor: visitors, // note: actually it is only one visitor object
};
})
)
.flatMap((visitor) => visitor)
.filter(isDefined);
}