@nitra/cursor 1.9.18 → 1.9.20

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.
@@ -0,0 +1,34 @@
1
+ # Тести для `rego.vscode_extensions`. Запуск:
2
+ # conftest verify -p npm/policy/rego/vscode_extensions
3
+ package rego.vscode_extensions_test
4
+
5
+ import rego.v1
6
+
7
+ import data.rego.vscode_extensions
8
+
9
+ test_allow_with_required_extension if {
10
+ cfg := {"recommendations": ["tsandall.opa"]}
11
+ count(vscode_extensions.deny) == 0 with input as cfg
12
+ }
13
+
14
+ test_allow_with_additional_extensions if {
15
+ cfg := {"recommendations": [
16
+ "dbaeumer.vscode-eslint",
17
+ "tsandall.opa",
18
+ "oxc.oxc-vscode",
19
+ ]}
20
+ count(vscode_extensions.deny) == 0 with input as cfg
21
+ }
22
+
23
+ test_deny_missing_extension if {
24
+ cfg := {"recommendations": ["dbaeumer.vscode-eslint"]}
25
+ count(vscode_extensions.deny) > 0 with input as cfg
26
+ }
27
+
28
+ test_deny_empty_recommendations if {
29
+ count(vscode_extensions.deny) > 0 with input as {"recommendations": []}
30
+ }
31
+
32
+ test_deny_no_recommendations_field if {
33
+ count(vscode_extensions.deny) > 0 with input as {}
34
+ }
@@ -0,0 +1,38 @@
1
+ # Перевірка `.vscode/settings.json` для rego (rego.mdc).
2
+ #
3
+ # Викликається з `check-rego.mjs` через `runConftestBatch` лише ПІСЛЯ виявлення
4
+ # `.rego` файлів у дереві. Глобально у `lint-conftest` НЕ реєструється.
5
+ #
6
+ # Canonical (rego.mdc):
7
+ # { "[rego]": { "editor.defaultFormatter": "tsandall.opa",
8
+ # "editor.formatOnSave": true } }
9
+ #
10
+ # Структура каталогу збігається зі шляхом пакету (regal: directory-package-mismatch).
11
+ package rego.vscode_settings
12
+
13
+ import rego.v1
14
+
15
+ # ── deny: [rego] block ──────────────────────────────────────────────────
16
+
17
+ deny contains msg if {
18
+ not is_object(object.get(input, "[rego]", null))
19
+ msg := concat(" ", [
20
+ ".vscode/settings.json: \"[rego]\" має бути обʼєктом з",
21
+ "\"editor.defaultFormatter\": \"tsandall.opa\" і",
22
+ "\"editor.formatOnSave\": true (rego.mdc)",
23
+ ])
24
+ }
25
+
26
+ deny contains msg if {
27
+ rego_block := object.get(input, "[rego]", {})
28
+ is_object(rego_block)
29
+ object.get(rego_block, "editor.defaultFormatter", null) != "tsandall.opa"
30
+ msg := ".vscode/settings.json: \"[rego].editor.defaultFormatter\" має бути \"tsandall.opa\" (rego.mdc)"
31
+ }
32
+
33
+ deny contains msg if {
34
+ rego_block := object.get(input, "[rego]", {})
35
+ is_object(rego_block)
36
+ object.get(rego_block, "editor.formatOnSave", null) != true
37
+ msg := ".vscode/settings.json: \"[rego].editor.formatOnSave\" має бути true (rego.mdc)"
38
+ }
@@ -0,0 +1,55 @@
1
+ # Тести для `rego.vscode_settings`. Запуск:
2
+ # conftest verify -p npm/policy/rego/vscode_settings
3
+ package rego.vscode_settings_test
4
+
5
+ import rego.v1
6
+
7
+ import data.rego.vscode_settings
8
+
9
+ valid_cfg := {"[rego]": {
10
+ "editor.defaultFormatter": "tsandall.opa",
11
+ "editor.formatOnSave": true,
12
+ }}
13
+
14
+ test_allow_canonical if {
15
+ count(vscode_settings.deny) == 0 with input as valid_cfg
16
+ }
17
+
18
+ test_allow_with_additional_lang_blocks if {
19
+ cfg := json.patch(
20
+ valid_cfg,
21
+ [{"op": "add", "path": "/[javascript]", "value": {"editor.defaultFormatter": "oxc.oxc-vscode"}}],
22
+ )
23
+ count(vscode_settings.deny) == 0 with input as cfg
24
+ }
25
+
26
+ test_deny_rego_block_missing if {
27
+ count(vscode_settings.deny) > 0 with input as {}
28
+ }
29
+
30
+ test_deny_rego_block_not_object if {
31
+ count(vscode_settings.deny) > 0 with input as {"[rego]": "tsandall.opa"}
32
+ }
33
+
34
+ test_deny_wrong_default_formatter if {
35
+ cfg := json.patch(
36
+ valid_cfg,
37
+ [{"op": "replace", "path": "/[rego]/editor.defaultFormatter", "value": "prettier"}],
38
+ )
39
+ count(vscode_settings.deny) > 0 with input as cfg
40
+ }
41
+
42
+ test_deny_default_formatter_missing if {
43
+ cfg := json.patch(valid_cfg, [{"op": "remove", "path": "/[rego]/editor.defaultFormatter"}])
44
+ count(vscode_settings.deny) > 0 with input as cfg
45
+ }
46
+
47
+ test_deny_format_on_save_false if {
48
+ cfg := json.patch(valid_cfg, [{"op": "replace", "path": "/[rego]/editor.formatOnSave", "value": false}])
49
+ count(vscode_settings.deny) > 0 with input as cfg
50
+ }
51
+
52
+ test_deny_format_on_save_missing if {
53
+ cfg := json.patch(valid_cfg, [{"op": "remove", "path": "/[rego]/editor.formatOnSave"}])
54
+ count(vscode_settings.deny) > 0 with input as cfg
55
+ }
@@ -0,0 +1,28 @@
1
+ # Перевірка `.vscode/extensions.json` для tauri (tauri.mdc).
2
+ #
3
+ # Викликається з `check-tauri.mjs` через `runConftestBatch` лише ПІСЛЯ того,
4
+ # як JS виявив маркер Tauri-проєкту (`src-tauri/` каталог, `tauri.conf.json`
5
+ # у будь-якому пакеті, або залежність `@tauri-apps/*`). Глобально у
6
+ # `lint-conftest` НЕ реєструється — інакше false-positive порушення на не-Tauri проєктах.
7
+ #
8
+ # Canonical (tauri.mdc): `recommendations` має містити обидва записи —
9
+ # - tauri-apps.tauri-vscode
10
+ # - rust-lang.rust-analyzer
11
+ #
12
+ # Структура каталогу збігається зі шляхом пакету (regal: directory-package-mismatch).
13
+ package tauri.vscode_extensions
14
+
15
+ import rego.v1
16
+
17
+ required_extensions := {"tauri-apps.tauri-vscode", "rust-lang.rust-analyzer"}
18
+
19
+ missing_extension_template := ".vscode/extensions.json: recommendations має містити %q (tauri.mdc)"
20
+
21
+ # Множина усіх записів `recommendations` (поза deny — performance/non-loop-expression).
22
+ recommendations_set := {r | some r in object.get(input, "recommendations", [])}
23
+
24
+ deny contains msg if {
25
+ some required in required_extensions
26
+ not required in recommendations_set
27
+ msg := sprintf(missing_extension_template, [required])
28
+ }
@@ -0,0 +1,44 @@
1
+ # Тести для `tauri.vscode_extensions`. Запуск:
2
+ # conftest verify -p npm/policy/tauri/vscode_extensions
3
+ package tauri.vscode_extensions_test
4
+
5
+ import rego.v1
6
+
7
+ import data.tauri.vscode_extensions
8
+
9
+ canonical := {"recommendations": [
10
+ "tauri-apps.tauri-vscode",
11
+ "rust-lang.rust-analyzer",
12
+ ]}
13
+
14
+ test_allow_canonical if {
15
+ count(vscode_extensions.deny) == 0 with input as canonical
16
+ }
17
+
18
+ test_allow_with_additional_extensions if {
19
+ cfg := {"recommendations": [
20
+ "dbaeumer.vscode-eslint",
21
+ "tauri-apps.tauri-vscode",
22
+ "rust-lang.rust-analyzer",
23
+ "oxc.oxc-vscode",
24
+ ]}
25
+ count(vscode_extensions.deny) == 0 with input as cfg
26
+ }
27
+
28
+ test_deny_missing_tauri if {
29
+ cfg := {"recommendations": ["rust-lang.rust-analyzer"]}
30
+ count(vscode_extensions.deny) > 0 with input as cfg
31
+ }
32
+
33
+ test_deny_missing_rust_analyzer if {
34
+ cfg := {"recommendations": ["tauri-apps.tauri-vscode"]}
35
+ count(vscode_extensions.deny) > 0 with input as cfg
36
+ }
37
+
38
+ test_deny_empty_recommendations if {
39
+ count(vscode_extensions.deny) > 0 with input as {"recommendations": []}
40
+ }
41
+
42
+ test_deny_no_recommendations_field if {
43
+ count(vscode_extensions.deny) > 0 with input as {}
44
+ }