---
docgen:
  source: npm/skills/doc-aggregate/js/docgen-scan.mjs
  crc: 193dd362
  score: 100
---

# docgen-scan.mjs

## Огляд

isSourceFile
Перевіряє, чи є файл коду, який слугує джерелом для документування.

scanSourceFiles
Рекурсивно збирає кодові файли проєкту за позикс-шляхами від кореня.

slugForModule
Генерує стабільний slug модуля на основі його відносного шляху.

findModuleRoots
Знаходить абсолютні шляхи коренів модулів, використовуючи дані з package.json.

nearestModuleRoot
Визначає найближчий модуль-предок для заданого файлу серед усіх доступних коренів модулів.

scanForModules
Лістить логічні модулі, збираючи члени-файли та інформацію про наявність документації.

resolveRoot
Парсить аргументи для визначення абсолютної кореневої директорії.

runDocAggregateModulesCli
Сканує модулі та виводить масив JSON у stdout.

## Поведінка

isSourceFile
Перевіряє, чи є файл кодовим джерелом для документування

scanSourceFiles
Рекурсивно збирає кодові файли проєкту по позикс-шляхах від кореня

slugForModule
Генерує стабільний slug модуля з його відносним шляхом

findModuleRoots
Знаходить абсолютні шляхи коренів модулів з файлами package.json

nearestModuleRoot
Знаходить найближчий модуль-предок для файлу серед наявних коренів модулів

scanForModules
Лістить логічні модулі, збираючи члени-файли та інформацію про наявність документації

resolveRoot
Парсить аргументи для визначення абсолютного кореня

runDocAggregateModulesCli
Сканує модулі та виводить JSON-масив у stdout

## Публічний API

- isSourceFile — визначає, чи є файл коду для документування.
- scanSourceFiles — рекурсивно збирає файли коду проєкту (від кореня за POSIX-шляхом).
- slugForModule — генерує стабільний slug модуля з його відносним шляхом (для лейблів/логів).
- findModuleRoots — знаходить кореневі директорії модулів у `package.json` (корінь — це модуль).
- nearestModuleRoot — визначає найближчий модуль-предок для файлу (найдовший збіг шляху).
- scanForModules — лістить логічні модулі проєкту з членами-файлами та `docPath module-summary`. Пропускає модулі без кодових файлів.
- resolveRoot — парсить аргумент `--root <dir>`; за замовчуванням використовує поточну директорію.
- runDocAggregateModulesCli — виконує команду `doc-aggregate modules`, скануючи модулі та виводячи JSON-масив у stdout.

## Гарантії поведінки

- Read-only: файл не виконує операцій запису у файлову систему.
- Перехоплює помилки і не пропускає винятків назовні (fail-safe).
- За невдачі повертає значення помилки (`false`/`null`/`Err`) замість генерування винятку чи паніки.
- Не звертається до мережі.
