@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 +1 -1
- package/mdc/js-bun-db.mdc +7 -5
- package/package.json +1 -1
- package/scripts/auto-rules.mjs +3 -3
- package/scripts/check-js-bun-db.mjs +4 -2
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.
|
|
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
package/scripts/auto-rules.mjs
CHANGED
|
@@ -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
|