open-index/open-npm huggingface dataset:
npm package: @hh.ru/code-coverage-comparator
Description: Позволяет сравнить два результата code-coverage для дальнейшего уведомления в PR об увеличении или уменьшения процента покрытия кода тестами по сравнению с master.
Author: Nikita Mostovoy
Latest version: 1.0.0

## Code-coverage-comparator

Позволяет сравнить два результата code-coverage для дальнейшего уведомления в PR об увеличении или уменьшении процента покрытия кода тестами по сравнению с master.

### Использование

1. Устанавливаем:

```
yarn add --dev @hh.ru/code-coverage-comparator
```

или

```
npm install --dev @hh.ru/code-coverage-comparator
```

2. В CI/CD системе:

2.1) При сборке создаем дополнительный контейнер с нужным проектом. (в разных проектах может делаться по разному)
2.2) В job добавляем запуск тестов с code coverage опцией на мастере и на ветке.
2.3) После сборки code coverage добавляем скрипт, который вызывает этот модуль:

```js
const comparator = require('@hh.ru/code-coverage-comparator');
comparator('path/to/your/master.xml', 'path/to/you/branch.xml', 'path/to/you/result.json');
```

Репорт будет доступен в `path/to/you/result.json` или если данных стало меньше в `stderr`
npm package: @hh.ru/eslint-config
Description: HH.ru eslint configuration
Latest version: 18.1.5

# eslint конфиги hh.ru

Репозиторий содержит файлы конфигурации для eslint.

## Установка конфигов

Проекты подтягивают этот репозиторий через npm-зависимость `@hh.ru/eslint-config`.

Для использования конфига, нужно создать `eslint.config.mjs` в корне использующего пакета и явно создать конфиг,
используя функцию `generateEslintConfig`:

```js
import { generateEslintConfig, PROJECT_TYPES } from '@hh.ru/eslint-config';

export default generateEslintConfig(PROJECT_TYPES.SERVICE);
```

Генератор поддерживает три базовые конфигурации:

-   LIBRARY – содержит базовый набор правил для библиотек
-   SERVICE – содержит базовый набор правил для сервисов
-   MONOREPO – содержит базовый набор правил для монорепозитория
npm package: @hh.ru/eslint-plugin-import-rules
Description: HH.ru eslint import rules
Latest version: 1.6.0

### Настройка

- Добавляем плагин в .eslintrc 
- Включаем необходимые правила

.eslintrc 
```
{
    // ...
    plugins: ['@hh.ru/import-rules'],
    rules: {
        '@hh.ru/import-rules/no-internal-modules': [ "warn", {
            "paths": [
                '(?:lux\/pages\/[^\/]*)'
            ],
            "exclusions": [
                '(?:lux/modules/routes.js)'
            ],
        }],
        '@hh.ru/import-rules/hh-import-order': [ "error" ],
        '@hh.ru/import-rules/prefer-import-aliases': [ "error", {
            "importPaths": [
                { "matchPattern": "^@hh\\.ru/bloko/build", "replaceBy": "bloko" }
            ]
        }],
        '@hh.ru/import-rules/no-direct-spa-functions': [ "error" ],
    },
    // ...
};
```

### Правила

- `no-internal-modules`

    Запрещает использовать импорт между собой в путях, указанных в опции `paths`

- `hh-import-order`

    Сортирует импорты в соответствии с внутренними правилами разработки

    Можно настроить паттерн определения специфичных зависимостей выделяемых в отдельный блок (`specificModulesRegexp`)

    Если какие-то зависимости должны быть импортированы в самом начале файла — можно определить их с помощью паттерна (`shouldBeFirstRegexp`)

- `prefer-import-aliases`

    Заменяет импорты подходящие под перечисленные шаблоны на более предпочтительную форму. Например может 
    использоваться если в сервисе есть алиасы для импорта пакетов.

- `no-direct-spa-functions`

    Не позволяет импортировать функции `push` и `replace` напрямую из пакета `connected-react-router`, предлагая импортировать наши абстракции - хуки `usePush` и `useReplace`
npm package: @hh.ru/eslint-plugin-rules
Description: HH.ru eslint custom rules
Latest version: 2.0.3

### Настройка

-   Добавляем плагин в .eslintrc
-   Включаем необходимые правила

.eslintrc

```
{
    // ...
    plugins: ['@hh.ru/rules'],
    rules: {
        '@hh.ru/rules/no-internal-modules': [ "warn", {
            "paths": [
                '(?:lux\/pages\/[^\/]*)'
            ],
            "exclusions": [
                '(?:lux/modules/routes.js)'
            ],
        }],
        '@hh.ru/rules/hh-import-order': [ "error" ],
        '@hh.ru/rules/prefer-import-aliases': [ "error", {
            "importPaths": [
                { "matchPattern": "^@hh\\.ru/bloko/build", "replaceBy": "bloko" }
            ]
        }],
        '@hh.ru/rules/no-direct-spa-functions': [ "error" ],
    },
    // ...
};
```

### Правила

-   `no-internal-modules`

    Запрещает использовать импорт между собой в путях, указанных в опции `paths`

-   `hh-import-order`

    Сортирует импорты в соответствии с внутренними правилами разработки

    Можно настроить паттерн определения специфичных зависимостей выделяемых в отдельный блок (`specificModulesRegexp`)

    Если какие-то зависимости должны быть импортированы в самом начале файла — можно определить их с помощью паттерна (`shouldBeFirstRegexp`)

-   `prefer-import-aliases`

    Заменяет импорты подходящие под перечисленные шаблоны на более предпочтительную форму. Например может
    использоваться если в сервисе есть алиасы для импорта пакетов.

-   `no-direct-spa-functions`

    Не позволяет импортировать функции `push` и `replace` напрямую из пакета `connected-react-router`, предлагая импортировать наши абстракции - хуки `usePush` и `useReplace`

-   `fetcher-signal`

    Подсказывает, что нужно передавать `{ signal: new Abort Controller().signal} ` вторым аргументом, для возможности отмены запроса

-   `use-stop-spy-return`

    Правило гарантирует, что в хуках useElementShown вызывается метод stopSpying для корректной отписки от событий. Это предотвращает утечки памяти.