@nitra/cursor 1.13.82 → 1.13.83

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 (113) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +5 -5
  3. package/bin/n-cursor.js +16 -21
  4. package/package.json +1 -1
  5. package/rules/abie/abie.mdc +8 -8
  6. package/rules/abie/fix.mjs +15 -0
  7. package/rules/abie/policy/base_deployment_preem/base_deployment_preem.rego +2 -2
  8. package/rules/abie/policy/health_check_policy/health_check_policy.rego +2 -2
  9. package/rules/abie/policy/http_route_base/http_route_base.rego +1 -1
  10. package/rules/abie/utils/k8s-tree.mjs +1 -1
  11. package/rules/adr/adr.mdc +1 -1
  12. package/rules/adr/fix.mjs +15 -0
  13. package/rules/bun/fix.mjs +15 -0
  14. package/rules/capacitor/fix.mjs +15 -0
  15. package/rules/changelog/changelog.mdc +1 -1
  16. package/rules/changelog/fix.mjs +15 -0
  17. package/rules/ci4/fix.mjs +15 -0
  18. package/rules/docker/docker.mdc +3 -3
  19. package/rules/docker/fix.mjs +15 -0
  20. package/rules/docker/lint/lint.mjs +2 -2
  21. package/rules/efes/fix.mjs +15 -0
  22. package/rules/feedback/fix.mjs +15 -0
  23. package/rules/ga/fix.mjs +15 -0
  24. package/rules/ga/lint/lint.mjs +1 -1
  25. package/rules/graphql/fix.mjs +15 -0
  26. package/rules/graphql/{fix → js}/tooling/graphql-gql-scan.mjs +1 -1
  27. package/rules/hasura/fix.mjs +15 -0
  28. package/rules/hasura/policy/svc_hl/svc_hl.rego +1 -1
  29. package/rules/image-avif/fix.mjs +15 -0
  30. package/rules/image-compress/fix.mjs +15 -0
  31. package/rules/js-bun-db/fix.mjs +15 -0
  32. package/rules/js-bun-redis/fix.mjs +15 -0
  33. package/rules/js-bun-redis/policy/package_json/package_json.rego +1 -1
  34. package/rules/js-lint/fix.mjs +15 -0
  35. package/rules/js-lint/{fix → js}/tooling/check.mjs +3 -3
  36. package/rules/js-lint/{fix → js}/tooling/rebuild-oxlint-canonical.mjs +1 -1
  37. package/rules/js-lint/js-lint.mdc +2 -2
  38. package/rules/js-mssql/fix.mjs +15 -0
  39. package/rules/js-run/fix.mjs +15 -0
  40. package/rules/k8s/fix.mjs +15 -0
  41. package/rules/k8s/k8s.mdc +1 -1
  42. package/rules/nginx-default-tpl/fix.mjs +15 -0
  43. package/rules/nginx-default-tpl/{fix → js}/template/check.mjs +1 -1
  44. package/rules/npm-module/fix.mjs +15 -0
  45. package/rules/npm-module/{fix → js}/package_structure/check.mjs +1 -1
  46. package/rules/php/fix.mjs +15 -0
  47. package/rules/rego/fix.mjs +15 -0
  48. package/rules/security/fix.mjs +15 -0
  49. package/rules/security/security.mdc +2 -2
  50. package/rules/style-lint/fix.mjs +15 -0
  51. package/rules/tauri/fix.mjs +15 -0
  52. package/rules/test/fix.mjs +15 -0
  53. package/rules/test/test.mdc +1 -1
  54. package/rules/text/fix.mjs +15 -0
  55. package/rules/vue/fix.mjs +15 -0
  56. package/rules/vue/vue.mdc +1 -1
  57. package/scripts/auto-rules.mjs +3 -3
  58. package/scripts/sync-claude-config.mjs +2 -2
  59. package/scripts/utils/ast-scan-utils.mjs +3 -3
  60. package/scripts/utils/discover-checkable-rules.mjs +30 -18
  61. package/scripts/utils/list-rule-ids.mjs +23 -0
  62. package/scripts/utils/run-rule.mjs +7 -7
  63. package/scripts/utils/run-standard-rule.mjs +34 -0
  64. package/scripts/utils/walk-cache.mjs +24 -0
  65. package/scripts/utils/workspaces.mjs +1 -1
  66. /package/rules/abie/{fix → js}/applies/check.mjs +0 -0
  67. /package/rules/abie/{fix → js}/env_dns/check.mjs +0 -0
  68. /package/rules/abie/{fix → js}/firebase_hosting/check.mjs +0 -0
  69. /package/rules/abie/{fix → js}/hc_pairing/check.mjs +0 -0
  70. /package/rules/abie/{fix → js}/ua_http_route/check.mjs +0 -0
  71. /package/rules/abie/{fix → js}/ua_node_selector/check.mjs +0 -0
  72. /package/rules/adr/{fix → js}/hooks/check.mjs +0 -0
  73. /package/rules/adr/{fix → js}/hooks/template/.gitignore.snippet +0 -0
  74. /package/rules/bun/{fix → js}/layout/check.mjs +0 -0
  75. /package/rules/capacitor/{fix → js}/platforms/check.mjs +0 -0
  76. /package/rules/changelog/{fix → js}/consistency/check.mjs +0 -0
  77. /package/rules/changelog/{fix → js}/consistency/package-manifest.mjs +0 -0
  78. /package/rules/docker/{fix → js}/lint/check.mjs +0 -0
  79. /package/rules/docker/{fix → js}/lint/docker-hadolint.mjs +0 -0
  80. /package/rules/docker/{fix → js}/lint/docker-mirror.mjs +0 -0
  81. /package/rules/ga/{fix → js}/workflows/check.mjs +0 -0
  82. /package/rules/graphql/{fix → js}/tooling/check.mjs +0 -0
  83. /package/rules/hasura/{fix → js}/internal_urls/check.mjs +0 -0
  84. /package/rules/image-avif/{fix → js}/avif_generation/check.mjs +0 -0
  85. /package/rules/image-compress/{fix → js}/package_setup/check.mjs +0 -0
  86. /package/rules/js-bun-db/{fix → js}/safety/bun-sql-scan.mjs +0 -0
  87. /package/rules/js-bun-db/{fix → js}/safety/check.mjs +0 -0
  88. /package/rules/js-bun-redis/{fix → js}/imports/check.mjs +0 -0
  89. /package/rules/js-lint/{fix → js}/tooling/knip-canonical.json +0 -0
  90. /package/rules/js-lint/{fix → js}/tooling/oxlint-canonical-skeleton.json +0 -0
  91. /package/rules/js-lint/{fix → js}/tooling/oxlint-canonical.json +0 -0
  92. /package/rules/js-lint/{fix → js}/tooling/oxlint-rules.tsv +0 -0
  93. /package/rules/js-mssql/{fix → js}/deps/check.mjs +0 -0
  94. /package/rules/js-mssql/{fix → js}/deps/mssql-pool-scan.mjs +0 -0
  95. /package/rules/js-run/{fix → js}/runtime/bunyan-imports.mjs +0 -0
  96. /package/rules/js-run/{fix → js}/runtime/check-env-scan.mjs +0 -0
  97. /package/rules/js-run/{fix → js}/runtime/check.mjs +0 -0
  98. /package/rules/js-run/{fix → js}/runtime/conn-file-rules.mjs +0 -0
  99. /package/rules/js-run/{fix → js}/runtime/conn-imports-scan.mjs +0 -0
  100. /package/rules/js-run/{fix → js}/runtime/promise-settimeout-scan.mjs +0 -0
  101. /package/rules/k8s/{fix → js}/kubescape_exceptions/template/.kubescape-exceptions.json.snippet.json +0 -0
  102. /package/rules/k8s/{fix → js}/manifests/check.mjs +0 -0
  103. /package/rules/php/{fix → js}/tooling/check.mjs +0 -0
  104. /package/rules/rego/{fix → js}/applies/check.mjs +0 -0
  105. /package/rules/security/{fix → js}/sample_secret/check.mjs +0 -0
  106. /package/rules/security/{fix → js}/trufflehog/check.mjs +0 -0
  107. /package/rules/security/{fix → js}/trufflehog/template/.trufflehog-exclude.snippet.txt +0 -0
  108. /package/rules/style-lint/{fix → js}/tooling/check.mjs +0 -0
  109. /package/rules/tauri/{fix → js}/tooling/check.mjs +0 -0
  110. /package/rules/test/{fix → js}/location/check.mjs +0 -0
  111. /package/rules/text/{fix → js}/formatting/check.mjs +0 -0
  112. /package/rules/vue/{fix → js}/packages/check.mjs +0 -0
  113. /package/rules/vue/{fix → js}/packages/vue-forbidden-imports.mjs +0 -0
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Public API per-rule orchestration. Викликається з `rules/<id>/fix.mjs`.
3
+ *
4
+ * Інкапсулює: `discoverOneRule` → `runRule(applies → JS → policy → mdc-refs)`.
5
+ * Локальна логіка в правилах заборонена; розширення поведінки — через `ctx`-опції.
6
+ */
7
+ import { basename, dirname } from 'node:path'
8
+
9
+ import { discoverOneRule } from './discover-checkable-rules.mjs'
10
+ import { runRule } from './run-rule.mjs'
11
+ import { getOrCreateWalkCache } from './walk-cache.mjs'
12
+
13
+ /**
14
+ * @typedef {object} RuleContext
15
+ * @property {Map<string, Promise<string[]>>} [walkCache] FS-walk cache між concerns одного прогону
16
+ *
17
+ * Зарезервовано на майбутнє (поки не реалізовано — додається, коли з'явиться потреба):
18
+ * - `skipMdcRefs`, `skipApplies`, `onlyConcerns`.
19
+ * Розширення поведінки правила робиться лише через нові поля тут, не через локальну
20
+ * логіку в `rules/<id>/fix.mjs`.
21
+ */
22
+
23
+ /**
24
+ * @param {string} ruleDir абсолютний шлях до `rules/<id>/`
25
+ * @param {RuleContext} [ctx] контекст прогону (walkCache тощо)
26
+ * @returns {Promise<number>} 0 OK, 1 violations
27
+ */
28
+ export async function runStandardRule(ruleDir, ctx = {}) {
29
+ const ruleId = basename(ruleDir)
30
+ const bundledRulesDir = dirname(ruleDir)
31
+ const rule = await discoverOneRule(ruleDir, ruleId)
32
+ const walkCache = ctx.walkCache ?? getOrCreateWalkCache()
33
+ return runRule(rule, bundledRulesDir, walkCache)
34
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Module-singleton FS-walk cache, спільний для всіх concerns одного `check`-прогону.
3
+ * Ключі — рядкові glob/regex дескриптори; значення — `Promise<string[]>` зі списком файлів.
4
+ * Кеш живий у межах одного процесу (Node/Bun module-instance). Тести скидають через `resetWalkCache()`.
5
+ */
6
+
7
+ /** @type {Map<string, Promise<string[]>> | null} */
8
+ let cache = null
9
+
10
+ /**
11
+ * Повертає поточний cache; lazy-ініціалізує при першому виклику.
12
+ * @returns {Map<string, Promise<string[]>>} module-singleton walk cache
13
+ */
14
+ export function getOrCreateWalkCache() {
15
+ if (cache === null) cache = new Map()
16
+ return cache
17
+ }
18
+
19
+ /**
20
+ * Скидає cache (для тестів між кейсами).
21
+ */
22
+ export function resetWalkCache() {
23
+ cache = new Map()
24
+ }
@@ -11,7 +11,7 @@ import { dirname, join, relative } from 'node:path'
11
11
  const TRAILING_SLASH_RE = /\/$/
12
12
  const LEADING_DOTSLASH_RE = /^\.\//
13
13
 
14
- /** Glob-ігнор для workspace-патернів із `*` (узгоджено з `rules/changelog/fix/consistency/package-manifest.mjs`). */
14
+ /** Glob-ігнор для workspace-патернів із `*` (узгоджено з `rules/changelog/js/consistency/package-manifest.mjs`). */
15
15
  export const WORKSPACE_GLOB_IGNORE = Object.freeze(['**/node_modules/**', '**/.git/**', '**/.venv/**', '**/venv/**'])
16
16
 
17
17
  /**
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes