@nitra/cursor 1.13.15 → 1.13.25

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.
Files changed (62) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/package.json +1 -1
  3. package/rules/abie/abie.mdc +1 -4
  4. package/rules/abie/policy/clean_merged_ignore_branches/clean_merged_ignore_branches.rego +21 -40
  5. package/rules/abie/policy/clean_merged_ignore_branches/template/clean-merged-branch.yml.snippet.yml +9 -0
  6. package/rules/docker/docker.mdc +2 -50
  7. package/rules/docker/policy/lint_docker_yml/lint_docker_yml.rego +33 -47
  8. package/rules/docker/policy/lint_docker_yml/template/lint-docker.yml.snippet.yml +41 -0
  9. package/rules/docker/policy/package_json/package_json.rego +11 -28
  10. package/rules/docker/policy/package_json/template/package.json.snippet.json +1 -0
  11. package/rules/image-avif/policy/package_json/package_json.rego +21 -35
  12. package/rules/image-avif/policy/package_json/template/package.json.deny.json +5 -0
  13. package/rules/image-compress/image-compress.mdc +2 -8
  14. package/rules/image-compress/policy/package_json/package_json.rego +24 -65
  15. package/rules/image-compress/policy/package_json/template/package.json.contains.json +5 -0
  16. package/rules/image-compress/policy/package_json/template/package.json.deny.json +8 -0
  17. package/rules/js-bun-db/policy/package_json/package_json.rego +8 -21
  18. package/rules/js-bun-db/policy/package_json/template/package.json.deny.json +7 -0
  19. package/rules/js-bun-redis/policy/package_json/package_json.rego +8 -30
  20. package/rules/js-bun-redis/policy/package_json/template/package.json.deny.json +12 -0
  21. package/rules/js-lint/policy/jscpd/jscpd.rego +29 -23
  22. package/rules/js-lint/policy/jscpd/template/.jscpd.json.snippet.json +6 -0
  23. package/rules/js-lint/policy/lint_js_yml/lint_js_yml.rego +39 -47
  24. package/rules/js-lint/policy/lint_js_yml/template/lint-js.yml.snippet.yml +44 -0
  25. package/rules/js-lint/policy/package_json/package_json.rego +22 -42
  26. package/rules/js-lint/policy/package_json/template/package.json.snippet.json +6 -0
  27. package/rules/js-lint/policy/vscode_extensions/template/extensions.json.snippet.json +7 -0
  28. package/rules/js-lint/policy/vscode_extensions/vscode_extensions.rego +4 -17
  29. package/rules/js-run/policy/configmap/configmap.rego +11 -35
  30. package/rules/js-run/policy/configmap/template/configmap.yaml.contains.yml +4 -0
  31. package/rules/js-run/policy/jsconfig/jsconfig.rego +39 -46
  32. package/rules/js-run/policy/jsconfig/template/jsconfig.json.snippet.json +10 -0
  33. package/rules/js-run/policy/package_json/package_json.rego +10 -21
  34. package/rules/js-run/policy/package_json/template/package.json.deny.json +10 -0
  35. package/rules/php/php.mdc +2 -56
  36. package/rules/php/policy/lint_php_yml/lint_php_yml.rego +15 -13
  37. package/rules/php/policy/lint_php_yml/template/lint-php.yml.snippet.yml +47 -0
  38. package/rules/php/policy/package_json/package_json.rego +9 -12
  39. package/rules/php/policy/package_json/template/package.json.contains.json +5 -0
  40. package/rules/style-lint/policy/lint_style_yml/lint_style_yml.rego +14 -16
  41. package/rules/style-lint/policy/lint_style_yml/template/lint-style.yml.snippet.yml +39 -0
  42. package/rules/style-lint/policy/package_json/package_json.rego +22 -30
  43. package/rules/style-lint/policy/package_json/template/package.json.contains.json +5 -0
  44. package/rules/style-lint/policy/package_json/template/package.json.snippet.json +5 -0
  45. package/rules/style-lint/policy/vscode_extensions/template/extensions.json.snippet.json +1 -0
  46. package/rules/style-lint/policy/vscode_extensions/vscode_extensions.rego +5 -15
  47. package/rules/style-lint/policy/vscode_settings/template/settings.json.snippet.json +5 -0
  48. package/rules/style-lint/policy/vscode_settings/vscode_settings.rego +7 -16
  49. package/rules/text/policy/cspell/cspell.rego +39 -59
  50. package/rules/text/policy/cspell/template/.cspell.json.contains.json +3 -0
  51. package/rules/text/policy/cspell/template/.cspell.json.deny.json +5 -0
  52. package/rules/text/policy/cspell/template/.cspell.json.snippet.json +12 -0
  53. package/rules/text/policy/markdownlint/markdownlint.rego +37 -50
  54. package/rules/text/policy/markdownlint/template/.markdownlint-cli2.jsonc.snippet.jsonc +11 -0
  55. package/rules/text/policy/oxfmtrc/oxfmtrc.rego +23 -58
  56. package/rules/text/policy/oxfmtrc/template/.oxfmtrc.json.snippet.json +12 -0
  57. package/rules/text/policy/package_json/package_json.rego +14 -52
  58. package/rules/text/policy/package_json/template/package.json.deny.json +15 -0
  59. package/rules/text/policy/vscode_extensions/template/extensions.json.snippet.json +7 -0
  60. package/rules/text/policy/vscode_extensions/vscode_extensions.rego +4 -28
  61. package/rules/text/policy/vscode_settings/template/settings.json.snippet.json +9 -0
  62. package/rules/text/policy/vscode_settings/vscode_settings.rego +20 -42
@@ -0,0 +1,9 @@
1
+ {
2
+ "editor.formatOnSave": true,
3
+ "[javascript]": { "editor.defaultFormatter": "oxc.oxc-vscode" },
4
+ "[typescript]": { "editor.defaultFormatter": "oxc.oxc-vscode" },
5
+ "[json]": { "editor.defaultFormatter": "oxc.oxc-vscode" },
6
+ "[vue]": { "editor.defaultFormatter": "oxc.oxc-vscode" },
7
+ "[css]": { "editor.defaultFormatter": "oxc.oxc-vscode" },
8
+ "[html]": { "editor.defaultFormatter": "oxc.oxc-vscode" }
9
+ }
@@ -1,56 +1,34 @@
1
1
  # Перевірка `.vscode/settings.json` для text (text.mdc).
2
2
  #
3
- # Запуск (локально):
4
- # conftest test .vscode/settings.json -p npm/policy/text/vscode_settings \
5
- # --namespace text.vscode_settings
6
- #
7
- # Canonical (text.mdc):
8
- # { "editor.formatOnSave": true,
9
- # "[javascript]": { "editor.defaultFormatter": "oxc.oxc-vscode" },
10
- # "[typescript]": { "editor.defaultFormatter": "oxc.oxc-vscode" },
11
- # "[json]": { "editor.defaultFormatter": "oxc.oxc-vscode" },
12
- # "[vue]": { "editor.defaultFormatter": "oxc.oxc-vscode" },
13
- # "[css]": { "editor.defaultFormatter": "oxc.oxc-vscode" },
14
- # "[html]": { "editor.defaultFormatter": "oxc.oxc-vscode" } }
15
- #
16
- # Структура каталогу збігається зі шляхом пакету (regal: directory-package-mismatch).
3
+ # Канон надходить через --data: { "template": { "snippet": ... } }
4
+ # Структура --data сформована з template/settings.json.snippet.json.
17
5
  package text.vscode_settings
18
6
 
19
7
  import rego.v1
20
8
 
21
- language_keys := {"[javascript]", "[typescript]", "[json]", "[vue]", "[css]", "[html]"}
22
-
23
- # Шаблони повідомлень — через `concat` для regal style/line-length.
24
- lang_block_not_object_template := concat(" ", [
25
- ".vscode/settings.json: %q має бути обʼєктом з",
26
- "\"editor.defaultFormatter\": \"oxc.oxc-vscode\" (text.mdc)",
27
- ])
28
-
29
- lang_wrong_formatter_template := concat(" ", [
30
- ".vscode/settings.json: %q має використовувати",
31
- "\"oxc.oxc-vscode\" як editor.defaultFormatter (text.mdc)",
32
- ])
33
-
34
- # ── deny: editor.formatOnSave ────────────────────────────────────────────
35
-
36
9
  deny contains msg if {
37
- object.get(input, "editor.formatOnSave", null) != true
38
- msg := ".vscode/settings.json: \"editor.formatOnSave\" має бути true (text.mdc)"
10
+ some key, expected_value in data.template.snippet
11
+ not is_object(expected_value)
12
+ actual := object.get(input, key, null)
13
+ actual != expected_value
14
+ msg := sprintf(".vscode/settings.json: \"%s\" має бути %v (text.mdc)", [key, expected_value])
39
15
  }
40
16
 
41
- # ── deny: [lang].editor.defaultFormatter ────────────────────────────────
42
-
43
17
  deny contains msg if {
44
- some key in language_keys
45
- block := object.get(input, key, {})
46
- not is_object(block)
47
- msg := sprintf(lang_block_not_object_template, [key])
18
+ some block_key, expected_inner in data.template.snippet
19
+ is_object(expected_inner)
20
+ inner := object.get(input, block_key, {})
21
+ is_object(inner)
22
+ some leaf_key, expected_value in expected_inner
23
+ actual := object.get(inner, leaf_key, null)
24
+ actual != expected_value
25
+ msg := sprintf(".vscode/settings.json: %s.%s має бути %v (text.mdc)", [block_key, leaf_key, expected_value])
48
26
  }
49
27
 
50
28
  deny contains msg if {
51
- some key in language_keys
52
- block := object.get(input, key, {})
53
- is_object(block)
54
- object.get(block, "editor.defaultFormatter", null) != "oxc.oxc-vscode"
55
- msg := sprintf(lang_wrong_formatter_template, [key])
29
+ some block_key, expected_inner in data.template.snippet
30
+ is_object(expected_inner)
31
+ raw := object.get(input, block_key, null)
32
+ not is_object(raw)
33
+ msg := sprintf(".vscode/settings.json: %s має бути обʼєктом (text.mdc)", [block_key])
56
34
  }