---
docgen:
  source: npm/rules/changelog/js/consistency.mjs
  crc: eaf98d6d
  score: 100
---

# consistency.mjs

## Огляд

Перевіряє версіонування проектів у монорепозиторії, порівнюючи версії, зазначені в маніфестах, з даними, отриманими з мережі з https://pypi.org/pypi/. Аналізує відповідність версій встановленим правилам, визначеним у конфігурації res.json. Визначає, чи відповідають версії формату, а також перевіряє наявність змін, порівнюючи їх із даними, описаними у (n-changelog.mdc). При невдачі перевірки повертає false/null, не кидаючи винятків.

## Поведінка

1. Ініціалізує репортер для збору результатів перевірки.
2. Визначає робочий каталог та стан autofix-режиму.
3. Зчитує всі кореневі каталоги проектів у монорепо.
4. Класифікує кожен проект як публікувальний (registryPublishable) або локальний.
5. Для кожного публікувального проекту виконує перевірку:
    а. Зчитує маніфест проекту.
    б. Якщо у маніфесті відсутнє ім'я або поле version, фіксує помилку.
    в. Якщо є change-файл(и) у .changes/, фіксує успіх, оскільки bump зробить CI (n-changelog.mdc), і перевіряє наявність "CHANGELOG.md" у файлах проекту.
    г. Якщо немає change-файлу, визначає точку порівняння на основі поточної гілки.
    д. Порівнює версію в маніфесті з опублікованою версією (за допомогою npm view або запиту до https://pypi.org/pypi/).
    е. Якщо версія в маніфесті випереджає опубліковану, фіксує помилку, оскільки ручний bump поза CI заборонений.
    ж. Якщо версія в маніфесті позаду опублікованої, фіксує успіх, оскільки це відставання локального репозиторію від реєстру.
    з. Якщо версії збігаються, перевіряє змінений код відносно точки порівняння. Якщо зміни є, але немає change-файлу, викликає механізм фіксації або фіксує помилку, надаючи підказку для використання команди `npx @nitra/cursor change`.
6. Для кожного локального проекту виконує перевірку:
    а. Зчитує маніфест проекту.
    б. Визначає точку порівняння на основі поточної гілки.
    в. Перевіряє, чи є релевантні зміни у проекті відносно точки порівняння.
    г. Якщо зміни є, але немає change-файлу, викликає механізм фіксації або фіксує помилку, надаючи підказку для використання команди `npx @nitra/cursor change`.
7. Повертає кінцевий код виходу, що відображає результат перевірки.

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

- Read-only: файл не виконує операцій запису у файлову систему.
- Перехоплює помилки і не пропускає винятків назовні (fail-safe).
- За невдалої перевірки повертає `false`/`null` замість винятку.
