@nitra/cursor 1.8.161 → 1.8.163
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
|
@@ -4,6 +4,20 @@
|
|
|
4
4
|
|
|
5
5
|
Формат — [Keep a Changelog](https://keepachangelog.com/uk/1.1.0/), нумерація — [SemVer](https://semver.org/lang/uk/).
|
|
6
6
|
|
|
7
|
+
## [1.8.163] - 2026-05-01
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- `check-js-lint.mjs`: `ignorePatterns` у `.oxlintrc.json` тепер звіряється як `rules` — канонічні патерни мають бути присутні, додаткові локальні glob-и дозволені (раніше була строга рівність — будь-який зайвий запис зламував перевірку).
|
|
12
|
+
- `check-text.mjs`: `OXFMT_REQUIRED_IGNORE_PATTERNS` доповнено `**/auto-imports.d.ts` (узгоджено з каноном oxlint); перевірка `.oxfmtrc.json` уже працює як subset, тому локальні розширення не падають.
|
|
13
|
+
- `js-lint.mdc` / `n-js-lint.mdc`, `text.mdc` / `n-text.mdc`: документовано, що канон задає мінімум `ignorePatterns`, локальне розширення дозволене.
|
|
14
|
+
|
|
15
|
+
## [1.8.162] - 2026-05-01
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- `oxlint-canonical-skeleton.json` (та перебудований `oxlint-canonical.json`): `ignorePatterns` тепер містить `["**/schema.graphql", "**/auto-imports.d.ts"]` (узгоджено з `.oxfmtrc.json`). Споживачі мають синхронізувати корінь `.oxlintrc.json` із каноном — `check-js-lint` падатиме, поки масив не збігається.
|
|
20
|
+
|
|
7
21
|
## [1.8.161] - 2026-05-01
|
|
8
22
|
|
|
9
23
|
### Added
|
package/mdc/js-lint.mdc
CHANGED
|
@@ -30,7 +30,7 @@ version: '1.16'
|
|
|
30
30
|
}
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
У корені має бути **`.oxlintrc.json`**, який **збігається з каноном** oxlint з пакета **`@nitra/cursor`**: файл **`npm/scripts/utils/oxlint-canonical.json`** (plugins, jsPlugins з **`@e18e/eslint-plugin`**, categories, повний набір **rules** із канону — додаткові записи в **`rules`** дозволені; також **`settings`**, **`env`**, **`globals
|
|
33
|
+
У корені має бути **`.oxlintrc.json`**, який **збігається з каноном** oxlint з пакета **`@nitra/cursor`**: файл **`npm/scripts/utils/oxlint-canonical.json`** (plugins, jsPlugins з **`@e18e/eslint-plugin`**, categories, повний набір **rules** із канону — додаткові записи в **`rules`** дозволені; також **`settings`**, **`env`**, **`globals`**). Поле **`ignorePatterns`** працює як **`rules`**: канонічні патерни з **`oxlint-canonical.json`** (наразі **`**/schema.graphql`**, **`**/auto-imports.d.ts`**) мають бути присутні, додаткові локальні glob-и дозволені. Оновити канон можна з репозиторію пакета або скопіювавши файл після **`bun ./scripts/utils/rebuild-oxlint-canonical.mjs`** (джерело правил — **`oxlint-rules.tsv`** + скелет **`oxlint-canonical-skeleton.json`**). Модуль **`@e18e/eslint-plugin`** не оголошуй окремо в **`package.json`** — він уже в залежностях **`@nitra/eslint-config`** (з **3.8.0**), oxlint підвантажує його з **`node_modules`**.
|
|
34
34
|
|
|
35
35
|
Мінімум для розуміння структури (реальний корінь конфігу має збігатися з каноном повністю):
|
|
36
36
|
|
package/mdc/text.mdc
CHANGED
|
@@ -82,7 +82,7 @@ version: '1.25'
|
|
|
82
82
|
|
|
83
83
|
```json title=".oxfmtrc.json"
|
|
84
84
|
{
|
|
85
|
-
"ignorePatterns": ["**/hasura/metadata/**", "**/schema.graphql"],
|
|
85
|
+
"ignorePatterns": ["**/hasura/metadata/**", "**/schema.graphql", "**/auto-imports.d.ts"],
|
|
86
86
|
"arrowParens": "avoid",
|
|
87
87
|
"printWidth": 120,
|
|
88
88
|
"bracketSpacing": true,
|
|
@@ -104,7 +104,7 @@ version: '1.25'
|
|
|
104
104
|
}
|
|
105
105
|
```
|
|
106
106
|
|
|
107
|
-
Поле **`ignorePatterns`** обовʼязкове: у масиві мають бути **`**/hasura/metadata
|
|
107
|
+
Поле **`ignorePatterns`** обовʼязкове: у масиві мають бути **`**/hasura/metadata/**`**, **`**/schema.graphql`** і **`**/auto-imports.d.ts`**; інші glob-и додавай за потреби (згенеровані каталоги тощо) — канон задає мінімум, локальні розширення дозволені.
|
|
108
108
|
|
|
109
109
|
Також потрібно прибрати, якщо є в проєкті, модуль **`@nitra/prettier-config`**, **prettier** та всі виклики prettier і налаштування для нього.
|
|
110
110
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nitra/cursor",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.163",
|
|
4
4
|
"description": "CLI для завантаження cursor-правил (префікс n-) у локальний репозиторій",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -47,5 +47,8 @@
|
|
|
47
47
|
"engines": {
|
|
48
48
|
"bun": ">=1.3",
|
|
49
49
|
"node": ">=25"
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@nitra/cursor": "^1.8.163"
|
|
50
53
|
}
|
|
51
54
|
}
|
|
@@ -133,6 +133,30 @@ function compareOxlintRules(expected, actual, failures) {
|
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
+
/**
|
|
137
|
+
* Звіряє блок `ignorePatterns`: кожен патерн із канону має бути присутній в actual; додаткові локальні
|
|
138
|
+
* патерни дозволені (канон задає мінімум, проєкт може розширити).
|
|
139
|
+
* @param {unknown} expected канонічний масив `ignorePatterns`
|
|
140
|
+
* @param {unknown} actual поточний `ignorePatterns` із `.oxlintrc.json`
|
|
141
|
+
* @param {string[]} failures буфер для помилок
|
|
142
|
+
*/
|
|
143
|
+
function compareOxlintIgnorePatterns(expected, actual, failures) {
|
|
144
|
+
if (!Array.isArray(expected)) {
|
|
145
|
+
return
|
|
146
|
+
}
|
|
147
|
+
if (!Array.isArray(actual)) {
|
|
148
|
+
failures.push('.oxlintrc.json: поле "ignorePatterns" має бути масивом (канон задає мінімум, додаткові патерни дозволені)')
|
|
149
|
+
return
|
|
150
|
+
}
|
|
151
|
+
const set = new Set(actual)
|
|
152
|
+
const missing = expected.filter(p => !set.has(p))
|
|
153
|
+
if (missing.length > 0) {
|
|
154
|
+
failures.push(
|
|
155
|
+
`.oxlintrc.json: ignorePatterns має містити канонічні патерни — додай: ${missing.map(p => JSON.stringify(p)).join(', ')}`
|
|
156
|
+
)
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
136
160
|
/**
|
|
137
161
|
* Перевіряє `.oxlintrc.json` проти канону пакета `@nitra/cursor` (усі правила з канону та інші поля з `oxlint-canonical.json`).
|
|
138
162
|
* Додаткові ключі лише в `rules` дозволені; інші поля мають збігатися з каноном.
|
|
@@ -160,6 +184,11 @@ export function verifyOxlintRcAgainstCanonical(cfg, canonical) {
|
|
|
160
184
|
continue
|
|
161
185
|
}
|
|
162
186
|
|
|
187
|
+
if (key === 'ignorePatterns') {
|
|
188
|
+
compareOxlintIgnorePatterns(expected, actual, failures)
|
|
189
|
+
continue
|
|
190
|
+
}
|
|
191
|
+
|
|
163
192
|
if (!deepEqualOxlintCanonical(actual, expected)) {
|
|
164
193
|
failures.push(
|
|
165
194
|
`.oxlintrc.json: поле "${key}" має збігатися з каноном пакета @nitra/cursor (npm/scripts/utils/oxlint-canonical.json)`
|
package/scripts/check-text.mjs
CHANGED
|
@@ -29,8 +29,8 @@ const SEMVER_RE = /^(\d+)\.(\d+)\.(\d+)/
|
|
|
29
29
|
/** Заголовок абзацу про апостроф у text.mdc / n-text.mdc. */
|
|
30
30
|
const UK_APOSTROPHE_HEADING = '**Український апостроф:**'
|
|
31
31
|
|
|
32
|
-
/** Мінімальні glob-и в `ignorePatterns` у `.oxfmtrc.json` (text.mdc)
|
|
33
|
-
const OXFMT_REQUIRED_IGNORE_PATTERNS = ['**/hasura/metadata/**', '**/schema.graphql']
|
|
32
|
+
/** Мінімальні glob-и в `ignorePatterns` у `.oxfmtrc.json` (text.mdc) — додаткові патерни локально дозволені. */
|
|
33
|
+
const OXFMT_REQUIRED_IGNORE_PATTERNS = ['**/hasura/metadata/**', '**/schema.graphql', '**/auto-imports.d.ts']
|
|
34
34
|
|
|
35
35
|
/** Канонічні записи `ignorePaths` у `.cspell.json` (text.mdc) — кожен має бути присутнім. */
|
|
36
36
|
const CSPELL_REQUIRED_IGNORE_PATHS = [
|
|
@@ -211,7 +211,7 @@ async function checkOxfmtRc(passFn, failFn) {
|
|
|
211
211
|
const set = new Set(cfg.ignorePatterns)
|
|
212
212
|
const missingPatterns = OXFMT_REQUIRED_IGNORE_PATTERNS.filter(p => !set.has(p))
|
|
213
213
|
if (missingPatterns.length === 0) {
|
|
214
|
-
passFn('.oxfmtrc.json: ignorePatterns містить hasura/metadata
|
|
214
|
+
passFn('.oxfmtrc.json: ignorePatterns містить hasura/metadata, schema.graphql і auto-imports.d.ts')
|
|
215
215
|
} else {
|
|
216
216
|
failFn(
|
|
217
217
|
`.oxfmtrc.json ignorePatterns: додай відсутні елементи: ${missingPatterns.join(', ')} (канонічний приклад у text.mdc)`
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./node_modules/oxlint/configuration_schema.json",
|
|
3
|
-
"plugins": [
|
|
4
|
-
|
|
3
|
+
"plugins": [
|
|
4
|
+
"unicorn",
|
|
5
|
+
"oxc",
|
|
6
|
+
"import",
|
|
7
|
+
"jsdoc",
|
|
8
|
+
"promise",
|
|
9
|
+
"node",
|
|
10
|
+
"vue"
|
|
11
|
+
],
|
|
12
|
+
"jsPlugins": [
|
|
13
|
+
"@e18e/eslint-plugin"
|
|
14
|
+
],
|
|
5
15
|
"categories": {},
|
|
6
16
|
"rules": {
|
|
7
17
|
"e18e/prefer-includes": "error",
|
|
@@ -383,5 +393,8 @@
|
|
|
383
393
|
"builtin": true
|
|
384
394
|
},
|
|
385
395
|
"globals": {},
|
|
386
|
-
"ignorePatterns": [
|
|
396
|
+
"ignorePatterns": [
|
|
397
|
+
"**/schema.graphql",
|
|
398
|
+
"**/auto-imports.d.ts"
|
|
399
|
+
]
|
|
387
400
|
}
|