# diff-added-lines.mjs

## Огляд

Файл визначає, чи є рядок коду новим (introduced) або вже існував у проєкті. Він використовується для класифікації результатів аналізу коду (lint-findings) на основі їхнього розташування відносно версії проєкту. Це допомагає розробникам розуміти, які зміни коду потребують негайної уваги.

## Поведінка

ALL_LINES: мітка, що позначає всі рядки файлу, які були introduced.
parseAddedLines: парсить вивід `git diff` та повертає мапу, де ключ — ім'я файлу, а значення — множина номерів рядків, які були додані.
addedLinesByFile: визначає мапу доданих рядків для заданих файлів, використовуючи `git diff` та `git ls-files`.
isIntroducedLine: перевіряє, чи рядок у файлі є introduced, використовуючи мапу, створену `addedLinesByFile`.

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

- ALL_LINES — Вказує на новий, не відстежений файл, що містить усі рядки.
- parseAddedLines — Аналізує вивід команди `git diff --unified=0` для створення мапи доданих рядків у файлі.
- addedLinesByFile — Визначає додані рядки у файлах, порівнюючи їх з версією в HEAD, та класифікує їх як відстежені або не відстежені.
- isIntroducedLine — Перевіряє, чи рядок у файлі є новим, тобто доданим.

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

- `ALL_LINES` повертає список усіх рядків файлу.
- `ALL_LINES` повертає `false` якщо не вдалося парсити diff.
- `parseAddedLines` повертає список рядків, які були додані у diff.
- `parseAddedLines` повертає `false` якщо не вдалося парсити diff.
- `addedLinesByFile` повертає список рядків, які були додані у кожному файлі.
- `isIntroducedLine` визначає, чи є рядок доданим у diff.
- `isIntroducedLine` повертає `false` якщо рядок не був доданий у diff.
- Результати парсингу кешуються для кожного запуску.
- Рядок вважається "introduced" якщо він є в diff.
- Рядок вважається "pre-existing" якщо він не є в diff.
- Рядки, що не були знайдені в diff, вважаються "untracked".
- `ALL_LINES` повертає всі рядки з diff, навіть якщо вони "untracked".
