# Поддержка JavaScript в Maguyva: ИИ-поиск для репозиториев со смешанным окружением выполнения

Canonical source: https://maguyva.ai/ru/languages/javascript

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Maguyva поддерживает JavaScript с разбором AST и извлечением символов, помогая ИИ-агентам работать с сервисами на Node, кодом браузера, скриптами и legacy-модулями, не скатываясь к поиску по строкам.

## Сводка поддержки

- Уровень: Поддержка AST и символов
- Программирование
- Расширения: .cjs, .js, .mjs, .spec.js, .stories.js, .test.js
- Настоящий AST-разбор для синтаксически осведомлённого поиска и структурного контекста.
- Именованные символы обеспечивают семантический поиск и перекрёстные ссылки. Навигация по графу доступна, когда включено извлечение связей.
- Этот язык добавляет символы и связи в поиск с учётом графа; поддерживаемые типы рёбер зависят от присущих ему конструкций.
- Доступны и AST-разбор, и извлечение символов.

## Лучше всего подходит

- Репозитории для Node и браузера, которые так и не сошлись окончательно на одной модульной системе или одном поколении фреймворка.
- Команды, поддерживающие legacy-JavaScript и постепенно внедряющие TypeScript или новые границы пакетов.
- Сценарии работы агентов, которым нужна структура по файлам `.js`, `.mjs` и `.cjs`, а не разовый поиск по репозиторию.

## Сценарии работы агента

- Проследить путь запроса или шаг сборки через старые модули JavaScript, прежде чем его редактировать.
- Сравнить реализации одного и того же поведения на CommonJS и ESM по всему репозиторию.
- Найти повторяющиеся паттерны в скриптах, утилитах или фронтенд-компонентах, прежде чем вводить новую абстракцию.

## Почему смешанным репозиториям JavaScript всё ещё нужен поиск с учётом структуры

Много ИИ-инструментов для кода молчаливо считают JavaScript неопрятным переходным состоянием перед «настоящим» TypeScript. Это не отражает того, как на самом деле выглядят продакшн-репозитории. JavaScript по-прежнему отвечает за шаги сборки, системы плагинов, код браузера, скрипты задач и долгоживущие сервисные пути, на аккуратное переписывание которых никто не выделял бюджет.

Из-за этого поддержка JavaScript — вопрос не столько красивого синтаксиса, сколько истории. Опасность не в разборе файла. Опасность в редактировании модуля или хелпера без понимания, относится ли он к CommonJS, ESM, коду браузера или какому-то более старому локальному паттерну.

## Что Maguyva реально извлекает в JavaScript

Maguyva охватывает `.js`, `.mjs` и `.cjs`, нормализует вызовы с префиксом члена и поддерживает эвристики JSX-компонентов в кодовых базах JavaScript, где граница между фронтендом и бэкендом размыта. Также отфильтровывается большой объём стандартного шума от рантайма браузера и Node, чтобы специфичные для репозитория связи оставались видимыми.

Это полезно в старых или смешанных репозиториях, где одно и то же понятие может существовать в нескольких стилях файлов, а точное именование часто непоследовательно.

## Полезные MCP-сценарии для репозиториев со смешанным окружением

Практический сценарий обычно выглядит так:

- Используйте `text_pattern_search` для точных строк вроде `module.exports`, имён событий или старых маркеров конфигурации.
- Используйте `intelligent_search`, когда нужен поиск на уровне поведения — например, «legacy-поток загрузки файлов» или «где проверяется авторизация в браузерном бандле».
- Используйте `get_task_context`, когда именование непоследовательно и нужна сводка, объединяющая найденные сведения, прежде чем агент что-то отредактирует.

## Когда эта страница полезна

Эта страница — для репозиториев, где JavaScript всё ещё занимает значимую долю кода, а не для команд, притворяющихся, что миграция уже завершена. Если текущий репозиторий в основном на TypeScript, начните с [TypeScript](/ru/languages/typescript). Если старый веб-стек всё ещё просачивается в серверные шаблоны или PHP, руководство [PHP](/ru/languages/php) — более уместный спутник.

## Детали движка

- Поддержка JavaScript охватывает `.js`, `.mjs` и `.cjs`, что важно, когда один репозиторий всё ещё сочетает разные стили модулей.
- Префиксы членов и аргументы вызовов нормализуются, чтобы повторяющиеся хелперы было легче сравнивать в старых файлах.
- Поддерживаются эвристики для JSX-компонентов, при этом множество встроенных глобальных объектов браузера и Node отфильтровывается, чтобы уменьшить шум в связях.

## Полезные точки входа MCP

- `text_pattern_search`: Используйте его для точных строк вроде `module.exports`, имён событий или маркеров устаревшей конфигурации, прежде чем расширять поиск.
- `intelligent_search`: Используйте его, когда именование непоследовательно и вам нужно найти поведение вроде «поток загрузки файла», а не символ.
- `get_task_context`: Полезно, когда репозиторий разошёлся с ожиданиями и вам нужна сводка, объединяющая найденный контекст, перед изменением устаревшего пути.
