---
type: JS Module
title: lang-extensions.mjs
resource: npm/rules/doc-files/docgen-scan/lang-extensions.mjs
docgen:
  crc: 3129b203
  model: openai-codex/gpt-5.5
  tier: cloud-avg
  score: 100
  judgeModel: openai-codex/gpt-5.4-mini
---

## Огляд

`pluginDocFilesExtensions`, `loadDocFilesExtractors`, `unavailableDocFilesPlugins` і `clearDocFilesLangCache` забезпечують підтримку doc-files через активні мовні плагіни: визначають доступні розширення, завантажують екстрактори, повідомляють про недоступні плагіни та дають змогу скинути кеш у межах прогону.

Файл читає конфігурацію та завантажує плагінові модулі. Для очікуваних збоїв передбачені локальні fail-safe гілки, але інші помилки можуть поширюватися назовні.

## Поведінка

`pluginDocFilesExtensions` бере активні плагіни з `.n-rules.json` або `.n-cursor.json`, збирає їхні декларації мовних розширень і повертає спільну мапу розширень для doc-files. Результат кешується в межах поточного процесу, щоб повторні звернення не перечитували конфігурацію і не перебудовували дані.

`loadDocFilesExtractors` використовує той самий контекст плагінів, але повертає мапу екстракторів для асинхронного шляху генерації документації. Недоступні або некоректні модулі екстракторів можуть бути пропущені без зупинки потоку; інші помилки під час завантаження можуть поширюватися назовні.

`unavailableDocFilesPlugins` спирається на результат `pluginDocFilesExtensions`: якщо хоча б одне мовне розширення вже знайдене, перевірка недоступних плагінів не виконується. Якщо розширень немає, функція повертає список задекларованих, але недоступних плагінів, щоб відрізнити порожню конфігурацію від відсутніх залежностей.

`clearDocFilesLangCache` скидає спільний процесний стан для розширень і екстракторів, після чого наступні виклики знову отримують дані з конфігурації та декларацій плагінів.

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

- pluginDocFilesExtensions — Мапа doc-files-розширень від плагінів для репо (`.rs` → 'Rust Module', …) — зливає inline
`value` усіх `doc-files.extensions@1` contributions (порядок графа, останній перекриває
ключ-дублікат), з кешем на процес. Порожня мапа — жодний активний плагін їх не декларує.
- loadDocFilesExtractors — Асинхронно вантажить мовні екстрактори з `doc-files.extractor@1` contributions
(resource — модуль): default-експорт `{ id, extensions: string[], extractFacts?, extractUnits? }`.
Битий модуль може бути пропущений; інші помилки під час завантаження можуть поширюватися назовні.
- unavailableDocFilesPlugins — Задекларовані у `.n-rules.json` плагіни, недоступні в `node_modules` — рахується лише
коли мапа doc-files-розширень порожня (інакше принаймні один плагін реально доступний,
шукати "недоступні" немає сенсу — не hot-path concern, рахується лише в рідкісному
порожньому випадку).
- clearDocFilesLangCache — Скидає кеші (для тестів).

## Сценарії використання

- `npm/rules/doc-files/docgen-scan/tests/lang-extensions.test.mjs` (pluginDocFilesExtensions; unavailableDocFilesPlugins) — перевіряє порожню мапу без розширень від доступних плагінів, появу розширень від задекларованого доступного плагіна, список недоступних плагінів для порожньої мапи та очищення цього списку, коли знайдено хоча б одне розширення.

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

- Файл читає конфігурацію та завантажує плагінові модулі; власного запису в ФС/БД не виконує.
- Містить локальні fail-safe гілки; інші помилки можуть поширюватися назовні.
- Кешує результати в межах одного прогону.
