Caller options for scanDirectory.

The directory walker has only two adopter-visible knobs: which file extensions to consume, and which path fragments to skip. Both have deliberate defaults that reflect "what an adopter actually wants" — see scanDirectory for the defaults and the rule-catalogue rationale for including .mjs / .cjs out of the box.

interface ScanOptions {
    extensions?: readonly string[];
    skip?: readonly string[];
}

Properties

Properties

extensions?: readonly string[]

File extensions to scan; default .ts/.tsx/.js/.jsx/.mjs/.cjs. .mjs and .cjs are included by default because the rule catalogue's predicate contract is language-level, not module-format-level (docs/migration/RULE_CATALOGUE.md): a Jotai atom(0) is drift regardless of which extension wraps it. Pass an explicit extensions: ['.ts'] to narrow the walk.

skip?: readonly string[]

Path segments to exclude from the walk. Each entry is matched exactly against an individual directory or file name — not as a substring and not as a glob. This is deliberate: a substring match on dist would also exclude legitimate subtrees such as distribution/, distance.ts, or redistribute.ts, letting unmigrated code hide behind the findings.length === 0 axis of the validation procedure (docs/migration-validation.md). Only a name that equals a skip entry verbatim (e.g. dist, node_modules) is pruned.