UNPKG

@nitra/eslint-config

Version:

An ESLint shareable config for projects using Vue and Node

95 lines (52 loc) 8.77 kB
# Changelog ## [3.10.3] - 2026-06-30 ### Fixed - Міграція `eslint-plugin-markdown``@eslint/markdown` (micromark 2.x → 4.x). Старий плагін жорстко пінив micromark 2.x через `mdast-util-from-markdown@0.8.5`, що конфліктувало з `markdownlint-cli2` (micromark 4.x) у консюмерах і ламало завантаження markdownlint (`micromark does not provide export 'parse'`). Беремо лише `configs.processor` — лінт коду у fence-блоках `.md` зберігається 1:1, структуру markdown далі лінтить markdownlint (без дублювання й нових violations). ## [3.10.2] - 2026-06-28 ### Added - Додано lint-dedup: автоматичний детектор дублів eslint-правил між плагінами — реєстр валідацій (ledger.json), 4-прохідний аналіз з oxlint-пріоритетом, CLI (--report/--check/--record), жорсткий Stop-гейт для Claude/Cursor/pi, методичка ### Changed - Прибрано дублюючі перевірки між плагінами (нуль втрати покриття): @microsoft/sdl/no-inner-html і no-document-write вимкнено як дублі eslint-plugin-no-unsanitized; unicorn/prefer-date-now і prefer-regexp-test — на користь ідентичних e18e; e18e/prefer-array-some, prefer-includes, prefer-array-at — на користь ширших unicorn-аналогів; sonarjs/no-fallthrough, no-unused-vars, no-regex-spaces, no-delete-var — як дублі core-ESLint (узгоджені з oxlint); security/detect-new-buffer — як дубль unicorn/no-new-buffer (з автофіксом) і @microsoft/sdl/no-unsafe-alloc; sonarjs/no-control-regex, no-empty-character-class, no-invalid-regexp, no-useless-catch, no-labels — як дублі core-правил, які денаїть oxlint CLI (.oxlintrc). - Оновлено ESLint-залежності: @e18e/eslint-plugin 0.4.1→0.5.0, eslint-plugin-jsdoc 62.9.0→63.0.0 (обидва сумісні — drop Node 20 при engines>=24), @eslint/compat 2.0.5→2.1.0, eslint 10.3.0→10.4.1, eslint-plugin-jsonc 3.1.2→3.2.0, eslint-plugin-oxlint 1.63.0→1.67.0, eslint-plugin-yml 3.3.2→3.4.0. Вимкнено нове e18e/prefer-string-fromcharcode (зʼявилось у 0.5.0 recommended) — конфліктує з ввімкненим unicorn/prefer-code-point (протилежний напрям fromCharCode↔fromCodePoint). - Дедуплікація oxlint↔ESLint: getConfig тепер вимикає в ESLint правила, які oxlint реально вмикає (deny) за кореневим .oxlintrc.json (нормалізація deny→error перед buildFromOxlintConfig; import/_→import-x/_). @e18e/eslint-plugin прибрано з ESLint-конфіга й залежностей пакета — ці правила ганяє лише oxlint як jsPlugin; активні e18e-правила recommended (prefer-array-fill, prefer-array-to-reversed/sorted/spliced, prefer-nullish-coalescing, prefer-spread-syntax, prefer-url-canparse, ban-dependencies, prefer-array-from-map, prefer-timer-args, prefer-static-regex, prefer-date-now, prefer-regex-test) перенесено в .oxlintrc.json без втрати покриття. - Дедуплікація oxlint↔ESLint: getConfig вимикає в ESLint правила, які oxlint реально вмикає (deny) за кореневим .oxlintrc.json (нормалізація deny→error перед buildFromOxlintConfig; import/_→import-x/_). @e18e/eslint-plugin прибрано з ESLint-конфіга й залежностей пакета — e18e ганяє лише oxlint як jsPlugin; активні e18e-правила recommended (prefer-array-fill, prefer-array-to-reversed/sorted/spliced, prefer-nullish-coalescing, prefer-spread-syntax, prefer-url-canparse, ban-dependencies, prefer-array-from-map, prefer-timer-args, prefer-static-regex, prefer-date-now, prefer-regex-test) перенесено в .oxlintrc.json без втрати покриття. - getConfig() тепер вимикає в ESLint усі правила, які вже виконує oxlint за кореневим .oxlintrc споживача (oxlintEnabledRulesOff через офіційний buildFromOxlintConfig з deny->error нормалізацією; import/_дублюється як import-x/_). Усуває латентний подвійний прогін ~313 правил і конкурентні --fix. Біжить ПЕРЕД vue-gap-блоком, тож no-unused-vars лишається для .vue. Комплементарно до lint-dedup (вісь плагін<->плагін). - Оновлено ESLint-залежності та сумісність конфігу після taze. ### Fixed - Conform repo structure to n-fix canon All notable changes to `@nitra/eslint-config` are documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [3.10.1] - 2026-06-01 ### Fixed - **Відновлено `@e18e/eslint-plugin` у `dependencies`** (`^0.5.0`): транзитивний provide для споживачів, чий `.oxlintrc.json` оголошує `jsPlugins: ["@e18e/eslint-plugin"]` і правила `e18e/*`, але сам плагін не встановлює. У [3.10.0] запис помилково прибрали разом із міграцією e18e в oxlint — на fresh-install плагін зникав із `node_modules` споживача й oxlint не міг підвантажити jsPlugin. Плагін лишається транзитивною залежністю; у ESLint-конфіг (`index.js`) його, як і раніше, не підключаємо. ## [3.10.0] - 2026-05-31 ### Changed - **Дедуплікація oxlint↔ESLint:** `getConfig` вимикає в ESLint правила, які oxlint реально вмикає (deny) за кореневим `.oxlintrc.json` (нормалізація deny→error перед `buildFromOxlintConfig`, `import/*``import-x/*`) — без подвійних порушень і конкурентних `--fix`. - **`@e18e/eslint-plugin` прибрано з ESLint-конфіга:** активні `e18e/*`-правила recommended перенесено в `.oxlintrc.json` (e18e ганяє лише oxlint як jsPlugin), без втрати покриття. ## [3.9.5] - 2026-05-29 ### Changed - `vue/block-order`: порядок блоків SFC **template → script → style** (`warn`; замість upstream recommended **script → template → style**). ## [3.9.4] - 2026-05-12 ### Changed - `sonarjs/cognitive-complexity`: рівень **warn**, поріг **20** (замість upstream recommended **error** / 15). ## [3.9.3] - 2026-05-08 ### Changed - `sonarjs/no-os-command-from-path` вимкнено глобально для JS-подібних файлів (`UNICORN_FILES`). ## [3.9.2] - 2026-05-07 ### Changed - Глобальний `ignores` ESLint: каталоги `**/adr/**` виключено з аналізу (ADR зазвичай без потреби в `eslint-plugin-markdown` для fenced-коду). ## [3.9.1] - 2026-05-07 ### Changed - `sonarjs/todo-tag` вимкнено для JS-подібних файлів (`UNICORN_FILES`): коментарі з `TODO` не репортуються ESLint. ## [3.9.0] - 2026-04-17 ### Changed - `http://0.0.0.0` (з опційним портом і шляхом) дозволено для `@microsoft/sdl/no-insecure-url` разом із дефолтними винятками плагіна Microsoft SDL (`SDL_NO_INSECURE_URL_EXCEPTIONS` у `index.js`); `http://` на публічні домени без зміни списку винятків не потрапляють. - `sonarjs/no-clear-text-protocols` вимкнено лише для `vite.config.js`, `vite.config.mjs`, `vite.config.ts` (типове місце `server.host` / `open` з `0.0.0.0`); у звичайних `*.js` Sonar на `http://0.0.0.0` лишається, SDL — ні. ## [3.8.1] - 2026-05-04 ### Added - Явна декларація `@graphql-tools/code-file-loader` у `dependencies` (раніше використовувався транзитивно). ## [3.8.0] - 2026-05-04 ### Added - Заборона `for...in` через `no-restricted-syntax` для `ForInStatement`. - Транзитивне підключення `@e18e/eslint-plugin`.