---
docgen:
  source: npm/scripts/lib/template.mjs
  crc: 3bc0617f
---

# template.mjs

## Огляд

Файл обробляє шаблони для певних напрямків, збираючи їх у єдину структуру, яка індексується за назвою цільового файлу. Він повертає найбільш відповідний шаблон з `snippet/`, `deny/` або `contains/`, розпізнаний за розширенням, для кожного цільового файлу. Це забезпечує можливість динамічної генерації контенту на основі шаблонів, визначених для різних областей застосунку.

## Поведінка

- `parseByExt`: Парсує файл на основі його розширення, повертаючи JS об'єкт для структурованих форматів або рядок для тексту.
- `checkSnippet`: Перевіряє, чи всі значення у фрагменті збігаються з відповідними шляхами у фактичному значенні, з урахуванням масивів.
- `checkDeny`: Перевіряє, чи містить фактичне значення будь-який шлях, вказаний у дереві заборони.
- `checkContains`: Перевіряє, чи містить фактичне значення будь-який шлях, вказаний у дереві обов'язкових підрядків.
- `checkTextSubset`: Перевіряє, чи містять всі рядки у шаблоні фактичне значення.
- `loadTemplate`: Зчитує файли з каталогу шаблонів, парсує їх і повертає об'єкт, індексований за назвою цілі.
- `resolveConcernTemplateData`: Визначає відповідний шаблон для заданого «concern», використовуючи `target.json`.

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

- parseByExt: Розбирає вміст файлу за розширенням, повертаючи JS об'єкт для структурованих форматів або рядок для тексту.
- checkSnippet: Перевіряє відповідність фрагмента фактичному контенту: кожна гілка фрагмента повинна відповідати гілці в фактичному контенті. Масиви в фрагменті повинні бути присутніми у фактичному масиві. Повертає масив повідомлень про порушення.
- checkDeny: Проходить по дереву заборон, повертаючи повідомлення про порушення для будь-якої гілки, яка існує в фактичному контенті, з причиною у вигляді рядка з листом заборони.
- checkContains: Перевіряє, чи містять всі рядки з масиву `contains` в якості підрядків відповідні гілки в `actual` (рядок листка).
- checkTextSubset: Перевіряє текстові цілі (наприклад, .stylelintignore): кожна не порожня, не коментарна лінія в шаблоні повинна з'являтися (з видаленими пробілами) у фактичному контенті.
- loadTemplate: Завантажує шаблон.
- resolveConcernTemplateData: Визначає, який шаблон [`<ціль>`](target) передати для заданого контексту, на основі файлу `target.json`. Для цілей `single` - використову

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

- Файл читає шаблон для заданої області відповідальності та повертає об'єднану структуру, індексовану за основою імені файлу цілі.
- Для кожної цілі повертається один із файлів snippet/, deny/ або contains/, розібраний у нативному форматі за розширенням.
- Функція `parseByExt` повертає об'єднану структуру.
- Функція `checkSnippet` повертає результат перевірки snippet/.
- Функція `checkDeny` повертає результат перевірки deny/.
- Функція `checkContains` повертає результат перевірки contains/.
- Функція `checkTextSubset` повертає результат перевірки підмножини тексту.
- Функція `loadTemplate` завантажує шаблон.
- Функція `resolveConcernTemplateData` розв'язує дані шаблону для заданої області відповідальності.
- Шляхи `node_modules` ігноруються.
- Файл є read-only.
- Кешування відсутнє.
