@nitra/cursor 5.3.2 → 5.3.4
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 +12 -0
- package/lib/docs/llm.md +23 -12
- package/package.json +1 -1
- package/rules/abie/fix.mjs +1 -2
- package/rules/adr/fix.mjs +1 -2
- package/rules/bun/fix.mjs +1 -2
- package/rules/capacitor/fix.mjs +1 -2
- package/rules/capacitor/js/platforms.mjs +0 -2
- package/rules/changelog/fix.mjs +1 -2
- package/rules/ci4/fix.mjs +1 -2
- package/rules/docker/fix.mjs +1 -2
- package/rules/efes/fix.mjs +1 -2
- package/rules/feedback/fix.mjs +1 -2
- package/rules/ga/fix.mjs +1 -2
- package/rules/graphql/fix.mjs +1 -2
- package/rules/hasura/fix.mjs +1 -2
- package/rules/image-avif/fix.mjs +1 -2
- package/rules/image-compress/fix.mjs +1 -2
- package/rules/js-bun-db/fix.mjs +1 -2
- package/rules/js-bun-redis/fix.mjs +1 -2
- package/rules/js-lint/fix.mjs +1 -2
- package/rules/js-lint-ci/fix.mjs +1 -2
- package/rules/js-mssql/fix.mjs +1 -2
- package/rules/js-run/fix.mjs +1 -2
- package/rules/k8s/fix.mjs +1 -2
- package/rules/k8s/js/manifests.mjs +1 -5
- package/rules/nginx-default-tpl/fix.mjs +1 -2
- package/rules/npm-module/fix.mjs +1 -2
- package/rules/npm-module/js/package_structure.mjs +0 -1
- package/rules/php/fix.mjs +1 -2
- package/rules/python/fix.mjs +1 -2
- package/rules/rego/fix.mjs +1 -2
- package/rules/release/fix.mjs +1 -2
- package/rules/rust/fix.mjs +1 -2
- package/rules/security/fix.mjs +1 -2
- package/rules/style-lint/fix.mjs +1 -2
- package/rules/tauri/fix.mjs +1 -2
- package/rules/test/coverage/coverage.mjs +0 -2
- package/rules/test/fix.mjs +1 -2
- package/rules/text/fix.mjs +1 -2
- package/rules/vue/fix.mjs +1 -2
- package/rules/worktree/fix.mjs +1 -2
- package/scripts/lib/run-rule.mjs +0 -2
- package/scripts/lint-cli.mjs +0 -1
- package/scripts/utils/with-lock.mjs +0 -1
- package/skills/doc-aggregate/js/docgen-scan.mjs +17 -18
- package/skills/doc-files/.changes/260612-0002.md +5 -0
- package/skills/doc-files/.changes/260612-0006.md +5 -0
- package/skills/doc-files/.changes/260612-0008.md +5 -0
- package/skills/doc-files/.changes/260612-0012.md +5 -0
- package/skills/doc-files/js/docgen-extract.mjs +136 -0
- package/skills/doc-files/js/docgen-prompts.mjs +2 -2
- package/skills/doc-files/js/docgen-scan.mjs +21 -22
- package/skills/doc-files/js/docs/docgen-extract-anchors.md +28 -10
- package/skills/doc-files/js/docs/docgen-extract.md +22 -12
- package/skills/doc-files/js/docs/docgen-files-batch.md +21 -11
- package/skills/doc-files/js/docs/docgen-gen.md +29 -13
- package/skills/doc-files/js/docs/docgen-ignore.md +37 -0
- package/skills/doc-files/js/docs/units-rs.md +35 -0
- package/skills/doc-files/js/units-rs.mjs +213 -0
- package/skills/doc-files/js/units.mjs +4 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [5.3.4] - 2026-06-11
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- ✨ feat(npm/skills/doc-files): Rust (.rs): тести extractFactsRust у docg…
|
|
8
|
+
|
|
9
|
+
## [5.3.3] - 2026-06-11
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- ✨ feat(npm/skills/doc-files): doc-files: підтримка Rust (.rs) — SOURCE_…
|
|
14
|
+
|
|
3
15
|
## [5.3.2] - 2026-06-11
|
|
4
16
|
|
|
5
17
|
### Changed
|
package/lib/docs/llm.md
CHANGED
|
@@ -1,29 +1,40 @@
|
|
|
1
1
|
---
|
|
2
2
|
docgen:
|
|
3
3
|
source: npm/lib/llm.mjs
|
|
4
|
-
crc:
|
|
4
|
+
crc: a70a8328
|
|
5
|
+
score: 100
|
|
5
6
|
---
|
|
6
7
|
|
|
7
|
-
# llm
|
|
8
|
+
# llm.mjs
|
|
8
9
|
|
|
9
10
|
## Огляд
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
Файл надає механізми для виклику великих мовних моделей. Маршрутизація вибору транспортного каналу залежить від префікса ідентифікатора моделі згідно з конвенцією `npm/lib/models.mjs`. Виклик LLM виконує виклик з визначеною маршрутизацією та запис трасування. Перевірка стану omlx сервера визначає доступність моделі.
|
|
12
13
|
|
|
13
14
|
## Поведінка
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
pickBackend
|
|
17
|
+
Маршрутизує модель по префіксу до визначеного бекенда
|
|
18
|
+
|
|
19
|
+
callLlm
|
|
20
|
+
Виконує універсальний виклик LLM з маршрутизацією за моделью та wire-trace
|
|
21
|
+
|
|
22
|
+
omlxHealthCheck
|
|
23
|
+
Перевіряє стан omlx сервера для визначення доступності моделі
|
|
18
24
|
|
|
19
25
|
## Публічний API
|
|
20
26
|
|
|
21
|
-
- `
|
|
22
|
-
|
|
23
|
-
|
|
27
|
+
pickBackend — Бекенд для model-id: `omlx` — прямий HTTP, `pi` — CLI.
|
|
28
|
+
callLlm — Універсальний виклик LLM з маршрутизацією за префіксом model-id і постійне відстеження (wire-trace) обох каналів.
|
|
29
|
+
omlxHealthCheck — Перевірка omlx перед масовим прогоном через мінімальний чат-виклик (`max_tokens: 1`). Розрізняє стани:
|
|
30
|
+
down — Сервер не відповідає (не запущений / не той порт).
|
|
31
|
+
memory-guard — Модель не влазить у динамічну стелю пам'яті зайнятої машини — відкладає прогін.
|
|
32
|
+
auth — Сервер вимагає API-ключ — виставляє `N_CURSOR_OMLX_KEY`.
|
|
33
|
+
error — Інша помилка API.
|
|
34
|
+
Порожній контент відповіді — означає, що сервер живий і модель завантажена.
|
|
24
35
|
|
|
25
36
|
## Гарантії поведінки
|
|
26
37
|
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
38
|
+
- Read-only: файл не виконує операцій запису у файлову систему.
|
|
39
|
+
- Перехоплює помилки і не пропускає винятків назовні (fail-safe).
|
|
40
|
+
- Не звертається до мережі.
|
package/package.json
CHANGED
package/rules/abie/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/adr/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/bun/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/capacitor/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
|
@@ -21,11 +21,9 @@ const IGNORED_DIRS_FOR_PACKAGE_JSON = new Set([
|
|
|
21
21
|
])
|
|
22
22
|
|
|
23
23
|
/** `||` у діапазоні npm-версій */
|
|
24
|
-
// eslint-disable-next-line sonarjs/slow-regex -- короткі **semver**-підрядки у **package.json**
|
|
25
24
|
const NPM_OR_PARTS_RE = /\s*\|\|\s*/
|
|
26
25
|
|
|
27
26
|
/** `a - b` (діапазон діапазонів) */
|
|
28
|
-
// eslint-disable-next-line sonarjs/slow-regex -- форма **X - Y** у **npm**-range
|
|
29
27
|
const NPM_HYPHEN_RANGE_RE = /^(.+?)\s+-\s+(.+)$/
|
|
30
28
|
|
|
31
29
|
const FIRST_VERSION_NUM_RE = /^(?:v)?(\d+)/i
|
package/rules/changelog/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/ci4/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/docker/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/efes/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/feedback/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/ga/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/graphql/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/hasura/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/image-avif/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/js-bun-db/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/js-lint/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/js-lint-ci/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/js-mssql/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/js-run/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/k8s/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
|
@@ -3984,11 +3984,8 @@ const noopFail = msg => msg
|
|
|
3984
3984
|
* @type {readonly { ipBlock: { cidr: string } }[]}
|
|
3985
3985
|
*/
|
|
3986
3986
|
const NETWORK_POLICY_GCLB_INGRESS_FROM = Object.freeze([
|
|
3987
|
-
// eslint-disable-next-line sonarjs/no-hardcoded-ip
|
|
3988
3987
|
{ ipBlock: { cidr: '35.191.0.0/16' } },
|
|
3989
|
-
// eslint-disable-next-line sonarjs/no-hardcoded-ip
|
|
3990
3988
|
{ ipBlock: { cidr: '130.211.0.0/22' } },
|
|
3991
|
-
// eslint-disable-next-line sonarjs/no-hardcoded-ip
|
|
3992
3989
|
{ ipBlock: { cidr: '10.0.0.0/8' } }
|
|
3993
3990
|
])
|
|
3994
3991
|
|
|
@@ -4858,9 +4855,8 @@ function firstValidYamlJsonFromPatchText(patchText) {
|
|
|
4858
4855
|
if (d.errors.length === 0) return d.toJSON()
|
|
4859
4856
|
}
|
|
4860
4857
|
} catch {
|
|
4861
|
-
|
|
4858
|
+
// ignore parse errors
|
|
4862
4859
|
}
|
|
4863
|
-
return undefined
|
|
4864
4860
|
}
|
|
4865
4861
|
|
|
4866
4862
|
/**
|
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/npm-module/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
|
@@ -257,7 +257,6 @@ export function globToRegex(glob) {
|
|
|
257
257
|
// Дозволено: уся функція існує саме для конструкції RegExp з glob-pattern
|
|
258
258
|
// у `files` (значення з npm/package.json, не від кінцевого користувача), і
|
|
259
259
|
// спецсимволи вже екрановано через `REGEX_SPECIAL_IN_GLOB` вище.
|
|
260
|
-
// eslint-disable-next-line security/detect-non-literal-regexp
|
|
261
260
|
return new RegExp(`^${re}$`, 'u')
|
|
262
261
|
}
|
|
263
262
|
|
package/rules/php/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/python/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/rego/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/release/fix.mjs
CHANGED
|
@@ -12,6 +12,5 @@ export function run(ctx) {
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
|
-
|
|
16
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
15
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
17
16
|
}
|
package/rules/rust/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/security/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/style-lint/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/tauri/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
|
@@ -170,7 +170,6 @@ export function renderMarkdown(rows, allowedGaps = []) {
|
|
|
170
170
|
async function loadProvider(rulesDir, ruleId) {
|
|
171
171
|
const providerPath = join(rulesDir, ruleId, 'coverage', 'coverage.mjs')
|
|
172
172
|
if (!existsSync(providerPath)) return null
|
|
173
|
-
// eslint-disable-next-line no-unsanitized/method -- providerPath з join(rulesDir, ruleId, …), ruleId з конфігу
|
|
174
173
|
const mod = await import(pathToFileURL(providerPath).href)
|
|
175
174
|
if (typeof mod.detect !== 'function' || typeof mod.collect !== 'function') return null
|
|
176
175
|
return mod
|
|
@@ -292,7 +291,6 @@ export async function runCoverageSteps(opts = {}) {
|
|
|
292
291
|
console.log('✓ COVERAGE.md')
|
|
293
292
|
|
|
294
293
|
if (opts.fix) {
|
|
295
|
-
// eslint-disable-next-line no-unsanitized/method -- шлях відносний до пакету, не user-input
|
|
296
294
|
const { fixSurvivedMutants } = await import(new URL('../../../scripts/coverage-fix.mjs', import.meta.url).href)
|
|
297
295
|
await fixSurvivedMutants(allSurvived, cwd)
|
|
298
296
|
}
|
package/rules/test/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/text/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/vue/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/rules/worktree/fix.mjs
CHANGED
|
@@ -14,6 +14,5 @@ export function run(ctx) {
|
|
|
14
14
|
if (isRunAsCli(import.meta.url)) {
|
|
15
15
|
// Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
|
|
16
16
|
// (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
|
|
17
|
-
|
|
18
|
-
process.exit(await runRuleCli(import.meta.dirname))
|
|
17
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
19
18
|
}
|
package/scripts/lib/run-rule.mjs
CHANGED
|
@@ -53,7 +53,6 @@ async function evaluateAppliesGate(bundledRulesDir, rule) {
|
|
|
53
53
|
const concern = rule.jsConcerns.find(c => c.name === APPLIES_CONCERN_NAME)
|
|
54
54
|
if (!concern) return true
|
|
55
55
|
const path = resolveJsCheckPath(bundledRulesDir, rule.id, concern)
|
|
56
|
-
// eslint-disable-next-line no-unsanitized/method -- path з discovered concern, файл з whitelist'у readdir
|
|
57
56
|
const mod = await import(path)
|
|
58
57
|
if (typeof mod.applies !== 'function') return true
|
|
59
58
|
return Boolean(await mod.applies())
|
|
@@ -170,7 +169,6 @@ export async function runRule(rule, bundledRulesDir, walkCache) {
|
|
|
170
169
|
|
|
171
170
|
for (const concern of rule.jsConcerns) {
|
|
172
171
|
const path = resolveJsCheckPath(bundledRulesDir, rule.id, concern)
|
|
173
|
-
// eslint-disable-next-line no-unsanitized/method -- path з discovered concern, файл з whitelist'у readdir
|
|
174
172
|
const mod = await import(path)
|
|
175
173
|
if (typeof mod.check === 'function') {
|
|
176
174
|
const code = await mod.check()
|
package/scripts/lint-cli.mjs
CHANGED
|
@@ -74,7 +74,6 @@ export async function runLint(opts = {}) {
|
|
|
74
74
|
log(`⚠️ lint: правило ${id} має lint-фазу, але немає js/lint.mjs — пропускаю.\n`)
|
|
75
75
|
continue
|
|
76
76
|
}
|
|
77
|
-
// eslint-disable-next-line no-unsanitized/method -- шлях з discovered rule dir
|
|
78
77
|
const mod = await import(lintPath)
|
|
79
78
|
const code = await mod.lint(changed, cwd)
|
|
80
79
|
if (code !== 0) return code
|
|
@@ -128,7 +128,6 @@ export async function withLock(key, runFn, opts = {}) {
|
|
|
128
128
|
|
|
129
129
|
const onSignal = () => {
|
|
130
130
|
release()
|
|
131
|
-
// eslint-disable-next-line n/no-process-exit -- SIGINT/SIGTERM мають завершити процес із кодом 130
|
|
132
131
|
process.exit(130)
|
|
133
132
|
}
|
|
134
133
|
process.once('SIGINT', onSignal)
|