@7n/rules-lang-js 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.4.1] - 2026-07-19
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- js/knip: вбудований ігнор unused-dependency на пакети екосистеми n-rules (@7n/rules і @7n/rules-* плагіни — їх ставить сам npx @7n/rules, код споживача не імпортує) + канон knip ignoreDependencies з тим самим патерном
|
|
8
|
+
|
|
3
9
|
## [0.4.0] - 2026-07-19
|
|
4
10
|
|
|
5
11
|
### Added
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@7n/rules-lang-js",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Плагін @7n/rules: JS/npm/bun-екосистема — lint-правила (js/bun/vue/js-run/npm-module/db), taze-провайдер (package.json, bunx taze) і doc-files-екстрактори (oxc AST)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"javascript",
|
|
@@ -3,7 +3,7 @@ type: JS Module
|
|
|
3
3
|
title: main.mjs
|
|
4
4
|
resource: plugins/lang-js/rules/js/knip/main.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
6
|
+
crc: e46cd90b
|
|
7
7
|
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
8
|
score: 100
|
|
9
9
|
issues: judge:inaccurate:0.98
|
|
@@ -12,21 +12,20 @@ docgen:
|
|
|
12
12
|
|
|
13
13
|
## Огляд
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Lint-поверхня `js/knip`: read-only detector невикористаних залежностей, експортів і файлів через programmatic API knip. Кожен knip-issue стає одним порушенням (`reason` = тип issue, `file`/`line` де доступні); звіт рендерить runner, сам детектор нічого не друкує і не мутує (без `--fix`).
|
|
16
16
|
|
|
17
17
|
## Поведінка
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
4. Якщо знайдено хоча б одну проблему, функція повертає значення 1; інакше — 0.
|
|
19
|
+
- `lint(ctx)` будує опції knip (`createOptions` з dist-каталогу пакета — внутрішній util не експортується через `exports`), глушить TTY-прогрес поза `ctx.verbose` і жене `knipMain`.
|
|
20
|
+
- Кожен issue з `results.issues` нормалізується у violation: `message` = `knip: <тип> \`<символ>\` — <файл:рядок>`, `severity` warn/error за knip.
|
|
21
|
+
- Вбудований ігнор пакетів екосистеми n-rules: unused dependency/devDependency-issue на `@7n/rules` та `@7n/rules-*` (lang-/ci-плагіни) відкидається — їх ставить і веде сам `npx @7n/rules`, код споживача їх не імпортує, тож у кожному consumer-репо це було б хибне спрацювання. Інші типи issue (files, exports) на ці пакети НЕ ігноруються.
|
|
23
22
|
|
|
24
23
|
## Публічний API
|
|
25
24
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
Будь ласка, надайте список, який потрібно переписати.
|
|
25
|
+
- lint — детектор js/knip: повертає `{ violations }` з нормалізованими knip-issue.
|
|
26
|
+
- isNRulesPackageIssue — чи є issue хибним спрацюванням на пакет екосистеми n-rules (експортовано для тестів).
|
|
29
27
|
|
|
30
28
|
## Гарантії поведінки
|
|
31
29
|
|
|
32
|
-
- Read-only:
|
|
30
|
+
- Read-only: knip запускається без `--fix`, жодних мутацій ФС/БД.
|
|
31
|
+
- Не друкує звіт — рендеринг на боці runner-а.
|
package/rules/js/knip/main.mjs
CHANGED
|
@@ -9,6 +9,25 @@ import { pathToFileURL } from 'node:url'
|
|
|
9
9
|
|
|
10
10
|
import { main as knipMain } from 'knip'
|
|
11
11
|
|
|
12
|
+
// Пакети екосистеми n-rules (ядро і lang-/ci-плагіни): їх ставить і веде сам
|
|
13
|
+
// `npx @7n/rules` як devDependency, код споживача їх не імпортує — knip завжди
|
|
14
|
+
// вважав би їх unused. Вбудований ігнор знімає хибне спрацювання у ВСІХ consumer-репо без
|
|
15
|
+
// правки їхніх knip.json (канон ignoreDependencies покриває лише свіжі копії).
|
|
16
|
+
const N_RULES_PKG_RE = /^@7n\/rules(-.+)?$/u
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Чи є issue хибним спрацюванням на пакет екосистеми n-rules (unused dependency/devDependency).
|
|
20
|
+
* @param {{ type: string, symbol?: string }} issue knip-issue
|
|
21
|
+
* @returns {boolean} true — ігноруємо
|
|
22
|
+
*/
|
|
23
|
+
export function isNRulesPackageIssue(issue) {
|
|
24
|
+
return (
|
|
25
|
+
(issue.type === 'dependencies' || issue.type === 'devDependencies') &&
|
|
26
|
+
typeof issue.symbol === 'string' &&
|
|
27
|
+
N_RULES_PKG_RE.test(issue.symbol)
|
|
28
|
+
)
|
|
29
|
+
}
|
|
30
|
+
|
|
12
31
|
/**
|
|
13
32
|
* Один knip-issue → LintViolation.
|
|
14
33
|
* @param {{ type: string, filePath?: string, symbol?: string, symbolType?: string, line?: number, col?: number, severity?: string }} issue knip-issue
|
|
@@ -60,7 +79,9 @@ export async function lint(ctx) {
|
|
|
60
79
|
for (const byFile of Object.values(results.issues)) {
|
|
61
80
|
for (const byKey of Object.values(byFile)) {
|
|
62
81
|
for (const issue of Object.values(byKey)) {
|
|
63
|
-
|
|
82
|
+
const typed = /** @type {Parameters<typeof issueToViolation>[0]} */ (issue)
|
|
83
|
+
if (isNRulesPackageIssue(typed)) continue
|
|
84
|
+
violations.push(issueToViolation(typed, cwd))
|
|
64
85
|
}
|
|
65
86
|
}
|
|
66
87
|
}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
],
|
|
13
13
|
"project": ["**/*.{js,mjs,cjs,jsx,ts,tsx,mts,cts}"],
|
|
14
14
|
"ignore": ["**/__fixtures__/**"],
|
|
15
|
-
"ignoreDependencies": ["@nitra/cspell-dict", "/@cspell\\/dict-.+/", "graphql"],
|
|
15
|
+
"ignoreDependencies": ["@nitra/cspell-dict", "/@cspell\\/dict-.+/", "/@7n\\/rules(-.+)?/", "graphql"],
|
|
16
16
|
"ignoreBinaries": [
|
|
17
17
|
"actionlint",
|
|
18
18
|
"cspell",
|