@nitra/cursor 1.8.18 → 1.8.19

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/mdc/bun.mdc CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  description: Bun як єдиний package manager у монорепо
3
3
  alwaysApply: true
4
- version: '1.3'
4
+ version: '1.4'
5
5
  ---
6
6
 
7
7
  Проект використовує тільки Bun для керування залежностями та запуску скриптів.
@@ -48,6 +48,8 @@ Lockfile у репозиторії: `bun.lock`.
48
48
  - Якщо залежність потрібна лише одному пакету, додавати її в директорії цього пакета.
49
49
  - У CI та локально запускати скрипти через `bun run`.
50
50
 
51
+ В кореневому в package.json не повинно бути `dependencies`, а в `devDependencies` будуть тільки `@cspell/*` та `@nitra/*` модулі.
52
+
51
53
  Якщо в package.json є поля `packageManager`, то прибрати їх, також прибрати всі директорії та файли для yarn
52
54
 
53
55
  Якщо в проекті використовується npx, то не замінювати його на bunx, а використовувати npx.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nitra/cursor",
3
- "version": "1.8.18",
3
+ "version": "1.8.19",
4
4
  "description": "CLI для завантаження cursor-правил (префікс n-) у локальний репозиторій",
5
5
  "keywords": [
6
6
  "cli",
@@ -1,9 +1,12 @@
1
1
  /**
2
- * Перевіряє відповідність репозиторію правилам Bun (n-bun.mdc).
2
+ * Перевіряє відповідність репозиторію правилам Bun (bun.mdc).
3
3
  *
4
4
  * Очікує наявність `bun.lock`, забороняє lockfile та артефакти yarn/pnpm, директорію `.yarn`
5
5
  * і поле `packageManager` у кореневому `package.json`.
6
6
  *
7
+ * У кореневому `package.json` не має бути поля **`dependencies`**; у **`devDependencies`** дозволені
8
+ * лише пакети з префіксами **`@cspell/`** та **`@nitra/`** (інші залежності — у workspace-пакетах).
9
+ *
7
10
  * Якщо в `.n-cursor.json` у `rules` є `docker` або `k8s`, вимагає у кореневому `package.json`
8
11
  * відповідно скриптів `lint-docker` / `lint-k8s` (див. docker.mdc, k8s.mdc).
9
12
  *
@@ -16,6 +19,15 @@ import { readFile } from 'node:fs/promises'
16
19
 
17
20
  import { pass } from './utils/pass.mjs'
18
21
 
22
+ /**
23
+ * Чи ім'я пакета дозволене в кореневих `devDependencies` за bun.mdc (лише `@cspell/*` та `@nitra/*`).
24
+ * @param {string} name ключ з поля `devDependencies`
25
+ * @returns {boolean} true, якщо префікс дозволений
26
+ */
27
+ export function isAllowedRootDevDependency(name) {
28
+ return name.startsWith('@cspell/') || name.startsWith('@nitra/')
29
+ }
30
+
19
31
  /**
20
32
  * Зчитує ідентифікатори правил з `.n-cursor.json` (поле `rules`).
21
33
  * @returns {Promise<Set<string>>} множина рядків id правил або порожня, якщо файлу/поля немає
@@ -77,6 +89,37 @@ export async function check() {
77
89
  pass('package.json не містить packageManager')
78
90
  }
79
91
 
92
+ if (pkg.dependencies === undefined) {
93
+ pass('Кореневий package.json без поля `dependencies`')
94
+ } else {
95
+ fail(
96
+ 'Кореневий package.json не повинен містити поле `dependencies` — додай залежності в workspace-пакети (bun.mdc)'
97
+ )
98
+ }
99
+
100
+ const dev = pkg.devDependencies
101
+ if (dev === undefined) {
102
+ pass('Кореневий package.json без devDependencies')
103
+ } else if (dev === null || typeof dev !== 'object' || Array.isArray(dev)) {
104
+ fail(
105
+ 'Кореневий package.json: `devDependencies` має бути object з ключами пакетів і діапазонами версій (не null, не масив)'
106
+ )
107
+ } else {
108
+ const bad = Object.keys(dev).filter(n => !isAllowedRootDevDependency(n))
109
+ if (bad.length > 0) {
110
+ fail(
111
+ `Кореневі devDependencies дозволені лише @cspell/* та @nitra/* — прибери або перенеси: ${bad.join(', ')} (bun.mdc)`
112
+ )
113
+ } else {
114
+ const n = Object.keys(dev).length
115
+ pass(
116
+ n === 0
117
+ ? 'Кореневі devDependencies порожні (дозволені лише @cspell/* та @nitra/*)'
118
+ : `Кореневі devDependencies лише @cspell/* та @nitra/* (${n} пак.)`
119
+ )
120
+ }
121
+ }
122
+
80
123
  const scripts = pkg.scripts && typeof pkg.scripts === 'object' ? pkg.scripts : {}
81
124
 
82
125
  if (cursorRules.has('docker')) {