@nitra/cursor 1.8.153 → 1.8.154

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/bin/auto-rules.md CHANGED
@@ -22,7 +22,7 @@ js-pino - якщо присутній хоч один js файл, не в мо
22
22
 
23
23
  js-mssql - якщо в хоч одному package.json в секції dependencies присутній пакет mssql
24
24
 
25
- js-bun-db - якщо в хоч одному package.json в секції dependencies присутній пакет pg або mysql2 або є імпорт sql/SQL з Bun (приклад: import { sql } from "bun")
25
+ js-bun-db - якщо в хоч одному package.json в секції dependencies присутній пакет pg, pg-format або mysql2 або є імпорт sql/SQL з Bun (приклад: import { sql } from "bun")
26
26
 
27
27
  k8s - якщо присутня хоч одна директорія k8s
28
28
 
package/mdc/js-bun-db.mdc CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  description: Використання pg / mysql2 / Bun SQL у Node.js та Bun
3
3
  alwaysApply: true
4
- version: '1.2'
4
+ version: '1.3'
5
5
  ---
6
6
 
7
7
  ## Підтримувані версії баз даних
@@ -10,12 +10,14 @@ PostgreSQL 18+, MariaDB 10.6+ (сумісний з MySQL-протоколом,
10
10
 
11
11
  ## Заміна на Bun native SQL
12
12
 
13
- Якщо в проєкті використовуються бібліотеки `pg` або `mysql2`, їх потрібно замінити на Bun native SQL: <https://bun.com/docs/runtime/sql>.
13
+ Якщо в проєкті використовуються бібліотеки `pg`, `pg-format` або `mysql2`, їх потрібно замінити на Bun native SQL: <https://bun.com/docs/runtime/sql>.
14
14
 
15
- - Видалити з `dependencies`: `pg`, `pg-pool`, `pg-native`, `mysql`, `mysql2`.
15
+ - Видалити з `dependencies`: `pg`, `pg-pool`, `pg-native`, `pg-format`, `mysql`, `mysql2`.
16
16
  - Видалити з коду: усі `import` / `require` цих пакетів та власні обгортки над ними.
17
17
  - Замінити на `import { sql, SQL } from 'bun'` — Bun має вбудований клієнт із пулом, prepared statements та tagged templates.
18
18
 
19
+ `pg-format` — це ручне форматування SQL через escape (`format('... %L ...', value)`); такі рядки легко поламати неправильним типом, locale-залежним escape або забутим `%L`. Tagged template Bun SQL параметризує значення нативно (`sql\`... ${value} ...\``) і не лишає простору для injection — окремий «форматер» не потрібен.
20
+
19
21
  ## Підключення (singleton + env)
20
22
 
21
23
  Дефолтний експорт `sql` з `'bun'` сам читає змінні середовища (`DATABASE_URL`, `POSTGRES_URL`, `MYSQL_URL`, `PGHOST`/`PGUSER`/... та `MYSQL_HOST`/`MYSQL_USER`/...) і керує пулом — окремий `Pool` як у `pg` створювати не треба.
@@ -142,9 +144,9 @@ function getUser(id) {
142
144
 
143
145
  `new SQL(...)` має створюватись **один раз** на рівні модуля. Bun сам тримає пул (`max`, `idleTimeout`, `maxLifetime`) — окремих `Pool`/`Client` як у `pg` не потрібно.
144
146
 
145
- ### Не лишати `pg` / `mysql2` поряд із Bun SQL
147
+ ### Не лишати `pg` / `pg-format` / `mysql2` поряд із Bun SQL
146
148
 
147
- Якщо в коді з'явився `import { sql } from 'bun'`, то `pg` та `mysql2` мають бути прибрані і з `dependencies`, і з імпортів — щоб не лишалось двох паралельних шляхів до БД.
149
+ Якщо в коді з'явився `import { sql } from 'bun'`, то `pg`, `pg-format` та `mysql2` мають бути прибрані і з `dependencies`, і з імпортів — щоб не лишалось двох паралельних шляхів до БД та ручного форматування поряд із параметризованими template literal.
148
150
 
149
151
  ## Перевірка
150
152
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nitra/cursor",
3
- "version": "1.8.153",
3
+ "version": "1.8.154",
4
4
  "description": "CLI для завантаження cursor-правил (префікс n-) у локальний репозиторій",
5
5
  "keywords": [
6
6
  "cli",
@@ -2,7 +2,7 @@
2
2
  * Автовизначення правил і skills для `.n-cursor.json` за умовами з `npm/bin/auto-rules.md`.
3
3
  *
4
4
  * Модуль аналізує дерево проєкту (наявність файлів/директорій, `gql\`...\`` у source,
5
- * залежності `mssql` / `pg` / `mysql2` у `package.json`, імпорт `sql`/`SQL` з `bun`, кореневий
5
+ * залежності `mssql` / `pg` / `pg-format` / `mysql2` у `package.json`, імпорт `sql`/`SQL` з `bun`, кореневий
6
6
  * `package.json`) та повертає ідентифікатори правил і skills, які потрібно автододати.
7
7
  *
8
8
  * Також враховує винятки `disable-rules` і `disable-skills`: елементи з цих списків не
@@ -435,9 +435,9 @@ export async function detectAutoRulesAndSkills({
435
435
  )
436
436
  const isAbie = typeof repositoryUrl === 'string' && repositoryUrl.toLowerCase().includes(ABIE_REPOSITORY_URL_MARKER)
437
437
  const isMonorepo = isMonorepoPackage(packageJsonParsed)
438
- const depHits = await collectDependencyKeysPresentInPackageJsonTree(root, ['mssql', 'pg', 'mysql2'])
438
+ const depHits = await collectDependencyKeysPresentInPackageJsonTree(root, ['mssql', 'pg', 'pg-format', 'mysql2'])
439
439
  const hasMssqlDependency = depHits.has('mssql')
440
- const hasJsBunDbSignal = depHits.has('pg') || depHits.has('mysql2') || facts.hasBunSqlImport
440
+ const hasJsBunDbSignal = depHits.has('pg') || depHits.has('pg-format') || depHits.has('mysql2') || facts.hasBunSqlImport
441
441
 
442
442
  /** @type {string[]} */
443
443
  const detectedRules = []
@@ -2,8 +2,10 @@
2
2
  * Перевіряє правило js-bun-db.mdc.
3
3
  *
4
4
  * 1) У жодному `package.json` (включно з workspace-пакетами) у `dependencies` не повинно
5
- * бути `pg` чи `mysql2` — ці бібліотеки треба замінити на Bun native SQL
5
+ * бути `pg`, `pg-format` чи `mysql2` — ці бібліотеки треба замінити на Bun native SQL
6
6
  * (`import { sql, SQL } from 'bun'`, https://bun.com/docs/runtime/sql).
7
+ * `pg-format` — ручне форматування SQL через escape; tagged template Bun SQL
8
+ * параметризує значення нативно і не лишає простору для injection.
7
9
  *
8
10
  * 2) Якщо в коді використовується Bun SQL (імпорт `sql`/`SQL` з `'bun'`), додатково
9
11
  * перевіряє небезпечні патерни:
@@ -28,7 +30,7 @@ import {
28
30
  import { walkDir } from './utils/walkDir.mjs'
29
31
 
30
32
  /** Імена забороненої залежності у будь-якому `package.json`. */
31
- const FORBIDDEN_DEPENDENCIES = Object.freeze(['pg', 'mysql2'])
33
+ const FORBIDDEN_DEPENDENCIES = Object.freeze(['pg', 'pg-format', 'mysql2'])
32
34
 
33
35
  /**
34
36
  * @param {unknown} v parsed JSON