pr-checkmate 3.2.2 → 3.3.0

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 (73) hide show
  1. package/.eslintrc.js +3 -9
  2. package/README.md +1 -1
  3. package/dist/cjs/cli.js +13 -0
  4. package/dist/cjs/config/pr-checkmate.template.json +393 -0
  5. package/dist/cjs/core/checks/dependencies/grype-scan.js +18 -0
  6. package/dist/cjs/core/checks/languages/lint.js +12 -0
  7. package/dist/cjs/core/checks/languages/ruff-shared.js +6 -1
  8. package/dist/cjs/core/checks/pr/commitlint.js +4 -2
  9. package/dist/cjs/core/checks/quality/package-size.d.ts +23 -1
  10. package/dist/cjs/core/checks/quality/package-size.js +20 -4
  11. package/dist/cjs/core/checks/quality/spellcheck.js +8 -5
  12. package/dist/cjs/core/install/doctor.js +12 -0
  13. package/dist/cjs/core/install/grype-db.d.ts +25 -0
  14. package/dist/cjs/core/install/grype-db.js +45 -0
  15. package/dist/cjs/core/install/profiles.d.ts +1 -1
  16. package/dist/cjs/core/install/profiles.js +1 -1
  17. package/dist/cjs/core/install/reuse.js +6 -3
  18. package/dist/cjs/init.js +48 -2
  19. package/dist/cjs/scripts/copy-configs.js +9 -0
  20. package/dist/cjs/utils/own-deps.js +8 -1
  21. package/dist/cjs/utils/resolve-bin.d.ts +2 -0
  22. package/dist/cjs/utils/resolve-bin.js +5 -0
  23. package/dist/esm/cli.js +14 -1
  24. package/dist/esm/config/pr-checkmate.template.json +393 -0
  25. package/dist/esm/core/checks/dependencies/dependency-check.js +2 -2
  26. package/dist/esm/core/checks/dependencies/grype-scan.js +18 -0
  27. package/dist/esm/core/checks/dependencies/license-check.js +2 -2
  28. package/dist/esm/core/checks/dependencies/npm-audit.js +2 -2
  29. package/dist/esm/core/checks/git/diff-smell.js +1 -1
  30. package/dist/esm/core/checks/languages/cpp-format.js +1 -1
  31. package/dist/esm/core/checks/languages/lint.js +12 -3
  32. package/dist/esm/core/checks/languages/prettier.js +3 -3
  33. package/dist/esm/core/checks/languages/python-format.js +2 -2
  34. package/dist/esm/core/checks/languages/python-lint.js +2 -2
  35. package/dist/esm/core/checks/languages/ruff-shared.js +6 -1
  36. package/dist/esm/core/checks/languages/typecheck.js +1 -1
  37. package/dist/esm/core/checks/pr/commitlint.js +4 -2
  38. package/dist/esm/core/checks/pr/pr-body.js +1 -1
  39. package/dist/esm/core/checks/pr/pr-size-check.js +1 -1
  40. package/dist/esm/core/checks/pr/pr-title-lint.js +1 -1
  41. package/dist/esm/core/checks/quality/dead-code.js +1 -1
  42. package/dist/esm/core/checks/quality/duplicate-check.js +1 -1
  43. package/dist/esm/core/checks/quality/markdown-lint.js +1 -1
  44. package/dist/esm/core/checks/quality/package-size.d.ts +23 -1
  45. package/dist/esm/core/checks/quality/package-size.js +19 -4
  46. package/dist/esm/core/checks/quality/spellcheck.js +11 -8
  47. package/dist/esm/core/checks/security/diff-security.js +1 -1
  48. package/dist/esm/core/checks/security/security.js +1 -1
  49. package/dist/esm/core/install/doctor.js +12 -0
  50. package/dist/esm/core/install/grype-db.d.ts +25 -0
  51. package/dist/esm/core/install/grype-db.js +41 -0
  52. package/dist/esm/core/install/prepare.js +1 -1
  53. package/dist/esm/core/install/profiles.d.ts +1 -1
  54. package/dist/esm/core/install/profiles.js +1 -1
  55. package/dist/esm/core/install/reuse.js +6 -3
  56. package/dist/esm/core/run-checks.js +2 -2
  57. package/dist/esm/init.js +50 -4
  58. package/dist/esm/scripts/copy-configs.js +9 -0
  59. package/dist/esm/utils/own-deps.js +8 -1
  60. package/dist/esm/utils/resolve-bin.d.ts +2 -0
  61. package/dist/esm/utils/resolve-bin.js +4 -0
  62. package/eslint-default-rules.json +2 -8
  63. package/eslint.config.mjs +37 -8
  64. package/install-manifests/commitlint/package-lock.json +5 -4
  65. package/install-manifests/core/package-lock.json +5 -3
  66. package/install-manifests/js/package-lock.json +250 -571
  67. package/install-manifests/js/package.json +10 -8
  68. package/install-manifests/markdown/package-lock.json +16 -13
  69. package/install-manifests/markdown/package.json +3 -0
  70. package/install-manifests/spellcheck/package-lock.json +3 -3
  71. package/package.json +19 -15
  72. package/src/config/.eslintrc.js +3 -9
  73. package/src/config/eslint-default-rules.json +2 -8
@@ -3,14 +3,14 @@
3
3
  "version": "1.0.0",
4
4
  "dependencies": {
5
5
  "typescript": "6.0.3",
6
- "eslint": "10.11.0",
6
+ "eslint": "10.14.0",
7
7
  "eslint-config-prettier": "10.1.8",
8
- "eslint-plugin-import-x": "4.17.1",
9
- "eslint-plugin-jsdoc": "65.1.0",
10
- "eslint-plugin-prettier": "5.5.6",
11
- "eslint-plugin-sonarjs": "4.2.1",
12
- "@typescript-eslint/eslint-plugin": "8.70.1",
13
- "@typescript-eslint/parser": "8.70.1",
8
+ "eslint-plugin-jsdoc": "65.4.2",
9
+ "eslint-plugin-prettier": "5.5.7",
10
+ "eslint-plugin-simple-import-sort": "14.0.0",
11
+ "eslint-plugin-sonarjs": "4.2.2",
12
+ "@typescript-eslint/eslint-plugin": "8.72.1",
13
+ "@typescript-eslint/parser": "8.72.1",
14
14
  "prettier": "3.9.9",
15
15
  "dpdm": "4.3.0",
16
16
  "knip": "6.38.0",
@@ -20,7 +20,9 @@
20
20
  "overrides": {
21
21
  "dpdm": {
22
22
  "typescript": "$typescript"
23
- }
23
+ },
24
+ "minimatch": "^11.0.3",
25
+ "glob": "^14.0.3"
24
26
  },
25
27
  "private": true
26
28
  }
@@ -9,6 +9,9 @@
9
9
  "version": "1.0.0",
10
10
  "dependencies": {
11
11
  "markdownlint": "0.41.1"
12
+ },
13
+ "overrides": {
14
+ "katex": "^0.19.1"
12
15
  }
13
16
  },
14
17
  "node_modules/@types/debug": {
@@ -80,6 +83,15 @@
80
83
  "url": "https://github.com/sponsors/wooorm"
81
84
  }
82
85
  },
86
+ "node_modules/commander": {
87
+ "version": "15.0.0",
88
+ "resolved": "https://registry.npmjs.org/commander/-/commander-15.0.0.tgz",
89
+ "integrity": "sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==",
90
+ "license": "MIT",
91
+ "engines": {
92
+ "node": ">=22.12.0"
93
+ }
94
+ },
83
95
  "node_modules/debug": {
84
96
  "version": "4.4.3",
85
97
  "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
@@ -189,30 +201,21 @@
189
201
  }
190
202
  },
191
203
  "node_modules/katex": {
192
- "version": "0.16.47",
193
- "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.47.tgz",
194
- "integrity": "sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==",
204
+ "version": "0.19.1",
205
+ "resolved": "https://registry.npmjs.org/katex/-/katex-0.19.1.tgz",
206
+ "integrity": "sha512-jG8uKntjSEcm2EpQOh0XturpPuuC9r3Sq5HLHdsFdWZT27E672SF19QEi+of0/YeOy15lDgRhKvr5614uRrEfA==",
195
207
  "funding": [
196
208
  "https://opencollective.com/katex",
197
209
  "https://github.com/sponsors/katex"
198
210
  ],
199
211
  "license": "MIT",
200
212
  "dependencies": {
201
- "commander": "^8.3.0"
213
+ "commander": "^15.0.0"
202
214
  },
203
215
  "bin": {
204
216
  "katex": "cli.js"
205
217
  }
206
218
  },
207
- "node_modules/katex/node_modules/commander": {
208
- "version": "8.3.0",
209
- "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
210
- "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
211
- "license": "MIT",
212
- "engines": {
213
- "node": ">= 12"
214
- }
215
- },
216
219
  "node_modules/markdownlint": {
217
220
  "version": "0.41.1",
218
221
  "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.41.1.tgz",
@@ -4,5 +4,8 @@
4
4
  "dependencies": {
5
5
  "markdownlint": "0.41.1"
6
6
  },
7
+ "overrides": {
8
+ "katex": "^0.19.1"
9
+ },
7
10
  "private": true
8
11
  }
@@ -982,9 +982,9 @@
982
982
  }
983
983
  },
984
984
  "node_modules/smol-toml": {
985
- "version": "1.8.0",
986
- "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.8.0.tgz",
987
- "integrity": "sha512-kCZr2V3ch9i00x8zXRhjUNVcjG9ijES5dDudkXvUVCT5QlJNQWElSJdZqyPemffHoLNUYwOcou0Fy+ojN0uHSQ==",
985
+ "version": "1.9.1",
986
+ "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.9.1.tgz",
987
+ "integrity": "sha512-j7WyPdf0CJoutMzMoPLF/bVXHtKZIT9Rb4eGeEbWw8X2t5oirjPgpL+OpaENZrILYaXqYwnVH+qgUwVbl+pUJQ==",
988
988
  "license": "BSD-3-Clause",
989
989
  "engines": {
990
990
  "node": ">= 18"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pr-checkmate",
3
- "version": "3.2.2",
3
+ "version": "3.3.0",
4
4
  "description": "Security-first PR gate for CI: secret scanning, grype dependency scanning, SBOM — plus linting and formatting across 11 languages",
5
5
  "keywords": [
6
6
  "github-actions",
@@ -78,6 +78,12 @@
78
78
  "author": "Artur Polishchuk",
79
79
  "license": "SEE LICENSE IN LICENSE",
80
80
  "dependencies": {
81
+ "execa": "^9.6.0",
82
+ "gitleaks-secret-scanner-fixed": "3.0.4",
83
+ "inquirer": "^14.1.0",
84
+ "yaml": "^2.9.0"
85
+ },
86
+ "devDependencies": {
81
87
  "@astral-sh/ruff-wasm-nodejs": "^0.16.3",
82
88
  "@commitlint/cli": "^21.2.2",
83
89
  "@commitlint/config-conventional": "^21.2.2",
@@ -86,37 +92,35 @@
86
92
  "@typescript-eslint/parser": "^8.67.0",
87
93
  "@wasm-fmt/clang-format": "^23.1.1",
88
94
  "@wasm-fmt/gofmt": "^0.7.3",
95
+ "conventional-commits-filter": "^6.0.1",
96
+ "conventional-commits-parser": "^7.1.2",
89
97
  "cspell": "^10.0.1",
90
98
  "dpdm": "^4.3.0",
91
99
  "eslint": "^10.8.1",
92
100
  "eslint-config-prettier": "^10.1.8",
93
- "eslint-plugin-import-x": "^4.17.1",
94
101
  "eslint-plugin-jsdoc": "^65.1.0",
95
102
  "eslint-plugin-prettier": "^5.5.6",
103
+ "eslint-plugin-simple-import-sort": "^14.0.0",
96
104
  "eslint-plugin-sonarjs": "^4.2.0",
97
- "execa": "^9.6.0",
98
- "gitleaks-secret-scanner-fixed": "3.0.4",
99
- "inquirer": "^14.1.0",
100
105
  "jscpd": "^5.0.16",
101
106
  "knip": "^6.32.2",
102
107
  "license-checker-rseidelsohn": "^5.0.1",
103
108
  "markdownlint": "^0.41.1",
104
109
  "prettier": "^3.9.6",
105
- "ts-node": "^10.9.1",
106
- "ts-unused-exports": "^11.0.1",
107
- "typescript": "^6.0.3",
108
- "yaml": "^2.9.0"
109
- },
110
- "devDependencies": {
111
- "conventional-commits-filter": "^6.0.1",
112
- "conventional-commits-parser": "^7.1.2",
113
110
  "pyright": "^1.1.413",
114
111
  "standard-version": "^9.5.0",
115
- "typedoc": "^0.28.20"
112
+ "ts-node": "^10.9.1",
113
+ "ts-unused-exports": "^11.0.1",
114
+ "typedoc": "^0.28.20",
115
+ "typescript": "^6.0.3"
116
116
  },
117
117
  "overrides": {
118
118
  "dpdm": {
119
119
  "typescript": "$typescript"
120
- }
120
+ },
121
+ "minimatch": "^11.0.3",
122
+ "glob": "^14.0.3",
123
+ "katex": "^0.19.1",
124
+ "dotgitignore": "file:./tools/dotgitignore"
121
125
  }
122
126
  }
@@ -41,7 +41,7 @@ module.exports = {
41
41
  sourceType: 'module',
42
42
  project: './tsconfig.json',
43
43
  },
44
- plugins: ['@typescript-eslint', 'prettier', 'import-x', 'jsdoc'],
44
+ plugins: ['@typescript-eslint', 'prettier', 'simple-import-sort', 'jsdoc'],
45
45
  extends: [
46
46
  'eslint:recommended',
47
47
  'plugin:@typescript-eslint/recommended',
@@ -85,14 +85,8 @@ module.exports = {
85
85
  // Complexity analysis (#61)
86
86
  complexity: ['warn', 30],
87
87
  // Import ordering (#65)
88
- 'import-x/order': [
89
- 'warn',
90
- {
91
- groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index'],
92
- alphabetize: { order: 'asc', caseInsensitive: true },
93
- },
94
- ],
95
- 'import-x/no-duplicates': 'error',
88
+ 'simple-import-sort/imports': 'warn',
89
+ 'no-duplicate-imports': ['error', { allowSeparateTypeImports: true }],
96
90
  // Documentation (#62). `jsdoc/require-jsdoc` is deliberately absent — see the
97
91
  // note in eslint-flat-config.mjs. These three check docblocks that exist and
98
92
  // fix only inside them; they never fabricate one.
@@ -26,14 +26,8 @@
26
26
  "sonarjs/cognitive-complexity": ["warn", 30],
27
27
  "sonarjs/no-duplicate-string": ["warn", { "threshold": 3 }],
28
28
  "sonarjs/no-identical-functions": "warn",
29
- "import/order": [
30
- "warn",
31
- {
32
- "groups": ["builtin", "external", "internal", "parent", "sibling", "index"],
33
- "alphabetize": { "order": "asc", "caseInsensitive": true }
34
- }
35
- ],
36
- "import/no-duplicates": "error",
29
+ "simple-import-sort/imports": "warn",
30
+ "no-duplicate-imports": ["error", { "allowSeparateTypeImports": true }],
37
31
  "jsdoc/check-param-names": "warn",
38
32
  "jsdoc/check-tag-names": "warn",
39
33
  "jsdoc/check-types": "warn",