UNPKG

@felixgeelhaar/cclint

Version:

Catch CLAUDE.md drift before Claude misbehaves. Lints CLAUDE.md, skills, subagents, and hooks for Claude Code projects.

59 lines 2.32 kB
import { JavaScriptValidator } from './validators/JavaScriptValidator.js'; import { PythonValidator } from './validators/PythonValidator.js'; import { GoValidator } from './validators/GoValidator.js'; import { BashValidator } from './validators/BashValidator.js'; import { SqlValidator } from './validators/SqlValidator.js'; import { JsonValidator } from './validators/JsonValidator.js'; import { YamlValidator } from './validators/YamlValidator.js'; /** * Maps normalized language identifiers to the {@link LanguageValidator} that * handles them. * * @remarks * This is the one place that knows which validator owns which language, so * adding a language means adding a validator module and a single registration * — `CodeBlockRule` never grows a `switch`. */ export class ValidatorRegistry { byLanguage = new Map(); registeredGroups; constructor(registrations) { this.registeredGroups = registrations; for (const { languages, validator } of registrations) { for (const language of languages) { this.byLanguage.set(language, validator); } } } /** The validator for a language, or `undefined` when none is registered. */ get(language) { return this.byLanguage.get(language); } /** All registrations, in declaration order, for cross-block passes. */ groups() { return this.registeredGroups; } } /** * Build the registry of built-in language validators. * * @remarks * `javascript` and `typescript` deliberately share one validator instance so * their blocks are validated identically and grouped together for * consistency checks. */ export function createDefaultValidatorRegistry() { return new ValidatorRegistry([ { languages: ['javascript', 'typescript'], validator: new JavaScriptValidator(), }, { languages: ['python'], validator: new PythonValidator() }, { languages: ['go'], validator: new GoValidator() }, { languages: ['bash'], validator: new BashValidator() }, { languages: ['sql'], validator: new SqlValidator() }, { languages: ['json'], validator: new JsonValidator() }, { languages: ['yaml'], validator: new YamlValidator() }, ]); } //# sourceMappingURL=ValidatorRegistry.js.map