---
docgen:
  source: npm/scripts/utils/walkDir.mjs
  crc: 5e5fec27
---

# walkDir.mjs

## Огляд

Файл `n-cursor.js` забезпечує рекурсивний обхід каталогів для скриптів перевірки, дозволяючи виконувати callback-функцію для кожного звичайного файлу. Він обходить дерево каталогів від заданого кореня, ігноруючи певні директорії (наприклад, `.git`, `node_modules`) та шляхи, вказані в `ignorePaths`. Це дозволяє автоматизувати процес аналізу конфігураційних файлів та інших ресурсів у проєкті.

## Поведінка

1.  Починається з заданого кореневого каталогу.
2.  Для кожного підкаталогу в кореневому каталозі:
    2.1. Перевіряє, чи є підкаталог у списку `ignorePaths`. Якщо так, пропускає обхід цього підкаталогу та його вмісту.
    2.2. Якщо підкаталог не в списку `ignorePaths`, обробляє вміст підкаталогу:
    2.2.1. Для кожного файлу в підкаталозі, викликає функцію `onFile` з шляхом до файлу.
    2.2.2. Для кожного підкаталогу в підкаталозі, рекурсивно викликає функцію `walkDir` для обходу цього підкаталогу. Під час рекурсивного виклику, також перевіряє, чи є підкаталог у списку `ignorePaths`.
3.  Не обробляє каталоги `node_modules`, `.git`, `dist`, `coverage`, `.turbo` та `.next`.
4.  Якщо при спробі `readdir` для каталогу виникає помилка, обхід цього каталогу припиняється.
5.  Обхід завершується, коли всі підкаталоги та файли в заданому дереві були оброблені.

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

- walkDir — Обходить каталог рекурсивно, ігноруючи вказані шляхи.

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

- Функція рекурсивно обходить дерево каталогів, починаючи з заданого кореня.
- Для кожного звичайного файлу викликається переданий callback.
- Не обходить каталоги `node_modules`, `.git`, `dist`, `coverage`, `.turbo`, `.next`.
- Може пропустити каталоги, вказані в `ignorePaths`.
- У разі невдачі `readdir` для каталогу, функція тихо виходить без викидання помилок.
- Функція не викидає винятки назовні.
- У разі невдачі повертає `false` або `null`.
- Не використовує кешування.
