---
type: JS Module
title: main.mjs
resource: npm/rules/rego/main.mjs
docgen:
  crc: e58082a1
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
  score: 90
---

## Огляд

Файл реалізує конвеєр для лінтування Rego-полісів, що знаходяться у каталозі `npm/rules/` (де живуть Rego-полісі пакета `@nitra/cursor`). Конвеєр послідовно виконує три етапи перевірки: строгу компіляцію за допомогою `opa check --strict`, яка виявляє помилки компіляції, незадекларовані змінні та інші проблеми, які ігнорує `regal`; статичне лінтування за допомогою `regal lint` (згідно з https://docs.styra.com/regal), що перевіряє відповідність стилю та ідіоматичності Rego v1; та опціональний запуск юніт-тестів за допомогою `conftest verify` (як описано на https://www.conftest.dev/install/). Резолюція інструментів (`opa`, `regal`) здійснюється через механізм `ensureTool`, що забезпечує їх доступність у середовищі. Усі операції керуються конфігурацією, визначеною у `target.json`.

## Поведінка

run виконує стандартну перевірку політики, застосовуючи логіку, пов'язану з JS-контекстами та посиланнями на MDC.

runLintRegoSteps запускає послідовні кроки лінтування Rego-полісі: `opa check --strict`, `regal lint` та опціонально `conftest verify` для файлів-тестів, якщо `conftest` доступний у PATH.

runLintRego серіалізує виконання кроків лінтування Rego, забезпечуючи дедуплікацію на основі стану git-дерева.

lint делегує виконання повного аналізу Rego-полісі функції runLintRego.

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

run — Основна точка входу правила, яка застосовує логіку до JS-зацікавлень, політики та посилання на MDC.

runLintRegoSteps — Виконує перевірку за допомогою `opa check --strict` та лінтинг за допомогою `regal lint` для визначених цілей. Зупиняє виконання з кодом 1, якщо попередні перевірки не пройшли.

runLintRego — Публічний інтерфейс для запуску лінтінгу Rego, що забезпечує дедуплікацію на основі стану репозиторію.

lint — Адаптер, що керує запуском лінтінгу Rego, делегуючи це `runLintRego`.

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

- Read-only: не виконує операцій запису (ФС/БД).
