---
type: JS Module
title: main.mjs
resource: npm/rules/npm-module/package_structure/main.mjs
docgen:
  crc: 1bb50375
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
  score: 85
  issues: anchor-miss:(npm-module.mdc),surzhik,judge:inaccurate:0.99
  judgeModel: openai-codex/gpt-5.4-mini
---

## Огляд

Компонент валідує відповідність проєкту стандартам, визначеним у `npm-module.mdc`, аналізуючи конфігурації (`tsconfig.emit-types.json`, `package.json`, `meta.json`). Він виконує логіку, зокрема через функції `globToRegex`, `findTestFrameworkImport`, `classifyPublishedFileAsTest` та `main`, обробляючи помилки за принципом fail-safe, ніколи не кидаючи винятків назовні. Процес роботи є read-only, і він свідомо ігнорує каталоги `.github` та `.git` під час аналізу.

## Поведінка

Поведінка:
globToRegex перетворює glob-патерн у регулярний вираз з якорями початку та кінця, підтримуючи globstar, `*`, `?` та brace-альтернативи; ігнорує шляхи з `.github` та `.git`.
findTestFrameworkImport шукає у вмісті файлу імпорти або виклики, які вказують на використання тестових фреймворків.
classifyPublishedFileAsTest визначає, чи вважається певний опублікований файл тестовим або фікстурою на основі назви, каталогу або імпортів.
main виконує повну перевірку відповідності проєкту конвенціям npm-module.mdc, аналізуючи структуру, конфігурації та файли, і виводить статус проходження перевірок.

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

globToRegex — перетворює шаблон пошуку файлів у регулярний вираз, забезпечуючи коректне зіставлення шляхів.
findTestFrameworkImport — виявляє, чи використовується у файлі механізм імпорту тест-фреймворку.
classifyPublishedFileAsTest — визначає, чи повинен вважатися опублікований файл тестом або фікстурою, ґрунтуючись на його шляху та вмісті.
main — забезпечує дотримання проєкту всіх вимог, визначених у конвенціях, описаних у npm-module.mdc.

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

- Read-only: не виконує операцій запису (ФС/БД).
- Перехоплює помилки і не пропускає винятків назовні (fail-safe).
- За певних помилок повертає порожнє значення (напр. `null`) замість винятку.
- Свідомо пропускає шляхи: `.github`, `.git`.
