---
docgen:
  source: npm/rules/doc-files/js/docgen-extract.mjs
  crc: a0680e77
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
  score: 100
---

# docgen-extract.mjs

## Огляд

Витягує структурований факт-лист з вмісту файлів, аналізуючи їх залежно від мови. Для Rust витягує модульний опис, публічні експорти, локальні символи та класифікує імпорти й поведінкові маркери. Для JavaScript/TypeScript/MJS витягує опис, експортовані елементи з JSDoc, класифікує імпорти та визначає поведінкові маркери. При аналізі ігноруються директорії: .github, .git, node_modules, base/, ua/, .firebase. Звертається до мережі та кешує дані протягом одного прогону.

## Поведінка

1. Витягує факт-лист з вмісту файлу.
2. Визначає мову файлу за розширенням.
3. Якщо мова — Rust, виконує аналіз Rust-коду:
    а. Витягує модульний опис з `//!`.
    б. Визначає публічні експорти (структури, функції, енуми) на основі `pub` префікса або експозиційних атрибутів.
    в. Визначає локальні (приватні) символи, які не є публічними.
    г. Класифікує імпорти (`std`, зовнішні, внутрішні).
    д. Визначає поведінкові маркери (readOnly, network, caches тощо) на основі специфічних Rust-конструкцій.
4. Якщо мова — JavaScript/TypeScript/MJS, виконує аналіз JS-коду:
    а. Витягує загальний опис файлу з верхнього блоку коментарів.
    б. Витягує експортовані функції та класи разом із їхніми JSDoc-описами.
    в. Класифікує імпорти на стандартні бібліотеки, NPM-пакети та внутрішні модулі.
    г. Визначає локальні (неекспортовані) функції та класи.
    д. Визначає поведінкові маркери (readOnly, network, caches тощо) на основі евристик.
5. При аналізі JS-коду, свідомо ігнорує шляхи: .github, .git, node_modules, base/, ua/, .firebase.
6. Повертає структуру фактів, що містить метадані про файл.

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

extractFacts — витягує факти з вмісту файлу.

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

- Кешує результати в межах одного прогону.
- Свідомо пропускає шляхи: `.github`, `.git`, `node_modules`, `base/`, `ua/`, `.firebase`.
