@7n/rules 1.47.1 → 1.48.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 +23 -0
- package/bin/n-rules.js +28 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.48.1] - 2026-07-24
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- lint --full: self-upgrade devDependency відкладено до ПІСЛЯ worktree-ізоляції, не забруднює дерево перед dirty-гейтом
|
|
8
|
+
- js/eslint detector: relative-шлях від oxlint резолвиться проти cwd перед відносним обчисленням — усуває '..'-шлях і DetectorError у --full поза .worktrees/
|
|
9
|
+
|
|
10
|
+
## [1.48.0] - 2026-07-24
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- концерн coverage правила test: гейт покриття/мутаційки як lint-детектор (--no-fix = CI-гейт), CoverageProvider порт у plugin-api (spec 2026-07-22 absorb-7n-test)
|
|
15
|
+
- coverage: спільні lib manifest-roots/lcov, подовжений full-таймаут для мутаційного тестування (×4), пілот classify (0.7) у цьому репо
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- doc_comments rollout: header-JSDoc у vitest.config (T0 promote)
|
|
20
|
+
- doc_comments rollout: header-JSDoc у vitest.config (T0 promote)
|
|
21
|
+
- doc_comments rollout: header-JSDoc у vitest.config (T0 promote)
|
|
22
|
+
- doc_comments rollout: header-JSDoc у vitest.config (T0 promote)
|
|
23
|
+
- doc_comments rollout: header/export JSDoc у конфігах demo
|
|
24
|
+
- doc_comments rollout: header-JSDoc у vitest.config
|
|
25
|
+
|
|
3
26
|
## [1.47.1] - 2026-07-23
|
|
4
27
|
|
|
5
28
|
### Fixed
|
package/bin/n-rules.js
CHANGED
|
@@ -104,6 +104,21 @@ import { runRenameYamlExtensionsCli } from './rename-yaml-extensions.mjs'
|
|
|
104
104
|
import { isTazeOrchestratorSkillArgs, runSkillsCli } from '../scripts/skills-cli.mjs'
|
|
105
105
|
import { syncSetupBunDepsAction } from '../scripts/sync-setup-bun-deps-action.mjs'
|
|
106
106
|
|
|
107
|
+
/**
|
|
108
|
+
* Чи потребуватиме `lint <args>` worktree-ізоляції (той самий предикат, що й
|
|
109
|
+
* `needsWorktreeIsolation` у `case 'lint'`, обчислений із сирих CLI-args ДО
|
|
110
|
+
* парсингу `lintOpts`) — щоб self-upgrade devDependency не забруднив дерево
|
|
111
|
+
* ПЕРЕД гейтом чистоти `ensureRunningInWorktree` (той самий клас проблеми,
|
|
112
|
+
* що й `skill taze`, див. коментар над `skipDevDepsEnsure`).
|
|
113
|
+
* @param {string[]} args сирі аргументи після `lint`
|
|
114
|
+
* @returns {boolean} true, якщо `--full` без `--no-fix`/`--path`/`--repo-wide`
|
|
115
|
+
*/
|
|
116
|
+
function isLintFullFixArgs(args) {
|
|
117
|
+
return (
|
|
118
|
+
args.includes('--full') && !args.includes('--path') && !args.includes('--repo-wide') && !args.includes('--no-fix')
|
|
119
|
+
)
|
|
120
|
+
}
|
|
121
|
+
|
|
107
122
|
const PACKAGE_NAME = '@7n/rules'
|
|
108
123
|
const CONFIG_FILE = '.n-rules.json'
|
|
109
124
|
/** Публічний URL JSON Schema для поля `$schema` у `.n-rules.json` (IDE); вміст правил CLI читає лише з диска пакету */
|
|
@@ -1753,7 +1768,13 @@ try {
|
|
|
1753
1768
|
// перед тим гейтом і провалювала б auto-create на інакше чистому дереві —
|
|
1754
1769
|
// оркестратор сам робить self-upgrade devDependency вже ВСЕРЕДИНІ
|
|
1755
1770
|
// щойно створеного worktree, після власного гейту чистоти.
|
|
1756
|
-
|
|
1771
|
+
// `lint --full` (без --no-fix/--path/--repo-wide) — той самий клас ризику:
|
|
1772
|
+
// `needsWorktreeIsolation` нижче в `case 'lint'` гейтить на чистоту дерева
|
|
1773
|
+
// ЧЕРЕЗ `ensureRunningInWorktree`; self-upgrade тут забруднив би те саме
|
|
1774
|
+
// дерево прямо перед тим гейтом. Відкладаємо ensure до ПІСЛЯ
|
|
1775
|
+
// `ensureRunningInWorktree` (виклик у `case 'lint'`, спрямований на runCwd).
|
|
1776
|
+
const skipDevDepsEnsure =
|
|
1777
|
+
(command === 'skill' && isTazeOrchestratorSkillArgs(args)) || (command === 'lint' && isLintFullFixArgs(args))
|
|
1757
1778
|
if (command !== 'ci' && !skipDevDepsEnsure) await ensureNRulesInRootDevDependencies(effectiveRoot)
|
|
1758
1779
|
// Підкоманди-оркестратори (hook/lint/skill/adr-normalize-local/taze/release тощо)
|
|
1759
1780
|
// можуть спавнити внутрішню agent/LLM-сесію — ADR Stop-hooks (capture/normalize)
|
|
@@ -1846,6 +1867,8 @@ try {
|
|
|
1846
1867
|
// ризику, що й taze: якщо запущено поза .worktrees/, треба ізолювати. `--no-fix`
|
|
1847
1868
|
// (detect-only, нуль мутацій) і не-full (дельта, за дизайном працює на живому
|
|
1848
1869
|
// дереві задачі, worktree-ізоляція зламала б саму суть дельти) — пропускаємо.
|
|
1870
|
+
// (той самий предикат, що й `isLintFullFixArgs` вище — тримаємо єдиним джерелом,
|
|
1871
|
+
// інакше `skipDevDepsEnsure` і цей гейт можуть розійтись.)
|
|
1849
1872
|
const needsWorktreeIsolation = full && !noFix
|
|
1850
1873
|
const worktree = needsWorktreeIsolation
|
|
1851
1874
|
? await ensureRunningInWorktree(cwdArg, spawnSync, line => console.log(line), {
|
|
@@ -1854,6 +1877,10 @@ try {
|
|
|
1854
1877
|
})
|
|
1855
1878
|
: { cwd: cwdArg, autoCreated: false, branchArg: null }
|
|
1856
1879
|
const runCwd = worktree.cwd
|
|
1880
|
+
// Ensure відкладений із root-guard-блоку (skipDevDepsEnsure вище) саме для
|
|
1881
|
+
// цього шляху — self-upgrade тепер усередині (auto-created) worktree, ПІСЛЯ
|
|
1882
|
+
// гейту чистоти, а не до нього.
|
|
1883
|
+
if (needsWorktreeIsolation) await ensureNRulesInRootDevDependencies(runCwd)
|
|
1857
1884
|
// Глобальна черга full-прогонів (spec 2026-07-03): одночасно виконується один
|
|
1858
1885
|
// `lint --full` на машину, паралельні --full чекають лока і бачать чергу та
|
|
1859
1886
|
// живий прогрес активного прогону; не-full запуски йдуть без лока
|