/** * 合成 lint(S2: 合成・関係次元の検出) * * Q1〜Q6 の class / attr 検出は「部品単体の合法性」しか見ない。だが AI 生成 UI の * 崩壊は「部品をどう組んだか」——ネスト深さ・出現回数・色数・要素間の関係——という * 合成次元に宿る(監査 D4-01 / section E)。単一 class 文字列マッチでは原理的に * 届かないので、ここだけ DOM をパース(node-html-parser)して関係を見る。 * * 設計: * - 対象は完全な HTML 文書/フラグメント(.html)。JSX/.tsx の合成は AST が要る別物 * (S4/babel)なので、呼び出し側で .html に限定して渡す。 * - rules.json の detector="composition" + compositionCheck spec に従って判定する。 * spec を持つ合成ルールだけが対象(持たないものは従来どおり未検出)。 * - 第一弾は nested-selector(ネスト modal = MODAL_NO_NESTED 蘇生)のみ。 * 色数 / CTA 数 / カード深さは閾値較正が要るので段階導入する。 */ import type { LintViolation } from "./types.js"; /** * engine v1 が実装している合成検査の kind。 * capability 表(detectors.ts)から導出する — ここで別定義を持たない。 * rule.schema.json の compositionCheck.kind enum との一致は * tests/rule-diagnostics.spec.ts が機械照合する。 */ export declare const SUPPORTED_COMPOSITION_KINDS: string[]; /** * HTML 文字列を合成ルールで検査する。 * detector="composition" かつ compositionCheck spec を持つルールだけが対象。 */ export declare function lintComposition(html: string): LintViolation[];