pr-checkmate 1.23.20 → 1.23.22
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/.eslintrc.js +9 -7
- package/LICENSE +3 -3
- package/README.md +57 -9
- package/cspell.json +504 -1
- package/dist/cli.js +48 -3
- package/dist/config/constants.d.ts +1 -0
- package/dist/config/constants.js +2 -1
- package/dist/core/checks/languages/lint.js +7 -0
- package/dist/core/checks/pr/commitlint.js +14 -3
- package/dist/core/checks/quality/yaml-lint.d.ts +7 -0
- package/dist/core/checks/quality/yaml-lint.js +24 -1
- package/dist/core/checks/security/security.js +21 -1
- package/dist/core/context.d.ts +47 -0
- package/dist/core/context.js +73 -34
- package/dist/core/targets.js +1 -1
- package/dist/core/types.d.ts +9 -0
- package/dist/init.js +15 -17
- package/dist/interfaces/index.d.ts +1 -0
- package/dist/utils/ci.d.ts +11 -0
- package/dist/utils/ci.js +43 -0
- package/dist/utils/detect-language.d.ts +6 -1
- package/dist/utils/detect-language.js +18 -3
- package/dist/utils/git.d.ts +14 -0
- package/dist/utils/git.js +24 -0
- package/dist/utils/glob.d.ts +14 -0
- package/dist/utils/glob.js +20 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +2 -0
- package/eslint-default-rules.json +7 -7
- package/eslint.config.mjs +38 -4
- package/package.json +3 -2
- package/pr-checkmate.schema.json +6 -1
- package/src/config/.eslintrc.js +9 -7
- package/src/config/cspell.json +504 -1
- package/src/config/eslint-default-rules.json +7 -7
- package/src/config/pr-checkmate.schema.json +6 -1
package/.eslintrc.js
CHANGED
|
@@ -70,13 +70,15 @@ module.exports = {
|
|
|
70
70
|
'space-before-function-paren': 'off',
|
|
71
71
|
'operator-linebreak': 'off',
|
|
72
72
|
'max-len': ['warn', { code: 100 }],
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
'
|
|
77
|
-
'
|
|
73
|
+
// Formatting is advisory — see the note above `rules` in eslint-flat-config.mjs.
|
|
74
|
+
// Keep these in sync with src/config/eslint-default-rules.json.
|
|
75
|
+
semi: ['warn', 'always'],
|
|
76
|
+
quotes: ['warn', 'single', { avoidEscape: true }],
|
|
77
|
+
'object-curly-spacing': ['warn', 'always'],
|
|
78
|
+
'space-infix-ops': 'warn',
|
|
79
|
+
'keyword-spacing': ['warn', { before: true, after: true }],
|
|
78
80
|
'padding-line-between-statements': [
|
|
79
|
-
'
|
|
81
|
+
'warn',
|
|
80
82
|
{ blankLine: 'always', prev: 'block', next: '*' },
|
|
81
83
|
{ blankLine: 'always', prev: '*', next: 'return' },
|
|
82
84
|
],
|
|
@@ -108,7 +110,7 @@ module.exports = {
|
|
|
108
110
|
'jsdoc/check-tag-names': 'warn',
|
|
109
111
|
'jsdoc/check-types': 'warn',
|
|
110
112
|
'prettier/prettier': [
|
|
111
|
-
'
|
|
113
|
+
'warn',
|
|
112
114
|
{
|
|
113
115
|
semi: true,
|
|
114
116
|
singleQuote: true,
|
package/LICENSE
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PROPRIETARY SOFTWARE LICENSE
|
|
2
2
|
All Rights Reserved
|
|
3
3
|
|
|
4
|
-
Copyright (c) 2025-2026
|
|
4
|
+
Copyright (c) 2025-2026 Artur Polishchuk. All Rights Reserved.
|
|
5
5
|
|
|
6
6
|
================================================================================
|
|
7
7
|
NOTICE
|
|
@@ -9,7 +9,7 @@ NOTICE
|
|
|
9
9
|
|
|
10
10
|
This software and its source code, documentation, data, models, and all
|
|
11
11
|
associated materials (collectively, the "Software") are the confidential and
|
|
12
|
-
proprietary property of
|
|
12
|
+
proprietary property of Artur Polishchuk (the "Owner").
|
|
13
13
|
|
|
14
14
|
NO LICENSE TO THE SOURCE CODE IS GRANTED. This is NOT open-source software.
|
|
15
15
|
The source code is made available for viewing solely to persons explicitly
|
|
@@ -95,4 +95,4 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
95
95
|
CONTACT
|
|
96
96
|
================================================================================
|
|
97
97
|
|
|
98
|
-
For licensing inquiries or permission requests, contact the Owner:
|
|
98
|
+
For licensing inquiries or permission requests, contact the Owner: Artur Polishchuk.
|
package/README.md
CHANGED
|
@@ -3,16 +3,18 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/pr-checkmate)
|
|
4
4
|
[](https://www.npmjs.com/package/pr-checkmate)
|
|
5
5
|

|
|
6
|
+
[](https://github.com/Mybono/pr_checkmate_public/releases/latest)
|
|
6
7
|

|
|
7
8
|

|
|
8
9
|

|
|
9
10
|

|
|
10
11
|

|
|
11
12
|
[](https://pr-checkmate-docs.pages.dev)
|
|
12
|
-
[](https://github.com/Mybono/pr_checkmate_public/releases/latest)
|
|
13
13
|
|
|
14
|
-
> PR CheckMate is a
|
|
15
|
-
>
|
|
14
|
+
> PR CheckMate is a security-first PR gate: secret scanning, dependency
|
|
15
|
+
> vulnerability checks, and a signed SBOM + independent VirusTotal scan on
|
|
16
|
+
> every release — plus 51 code-quality checks across 11 languages bundled in
|
|
17
|
+
> for free, running in CI on every pull request. The bundled languages need no
|
|
16
18
|
> per-language toolchain setup.
|
|
17
19
|
|
|
18
20
|
Every release is published with a CycloneDX SBOM and an independent
|
|
@@ -22,21 +24,47 @@ of the exact npm tarball, attached to that version's
|
|
|
22
24
|
|
|
23
25
|
## Why PR CheckMate
|
|
24
26
|
|
|
25
|
-
Most teams wire up
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
Most teams wire up a different tool for each concern, in every repo, per language:
|
|
28
|
+
ESLint or Ruff or SwiftLint for lint, Prettier or `gofmt` or `rustfmt` for format,
|
|
29
|
+
gitleaks for secrets, `npm audit` or grype for dependency risk — each with its own
|
|
30
|
+
install step, its own config file, its own version to keep pinned. PR CheckMate
|
|
31
|
+
replaces that whole stack with one npm package and one `pr-checkmate.json`: lint,
|
|
32
|
+
format, type-check, secret scanning, dependency risk, and SBOM/VirusTotal-verified
|
|
33
|
+
releases, for all 11 supported languages, configured in one place instead of stitched
|
|
34
|
+
together tool by tool, language by language. You add one step to a GitHub Actions
|
|
35
|
+
workflow and everything runs on every PR.
|
|
36
|
+
|
|
37
|
+
- Secret scanning on every diff. gitleaks runs on every PR, bundled, no setup.
|
|
38
|
+
- Verifiable releases. Every version ships a CycloneDX SBOM and an independent
|
|
39
|
+
VirusTotal scan of the exact published tarball, attached to the GitHub release.
|
|
40
|
+
- Dependency risk visibility. License compliance, `npm audit`, and osv-scanner/grype
|
|
41
|
+
vulnerability scans.
|
|
42
|
+
|
|
43
|
+
Also included, bundled the same way:
|
|
28
44
|
|
|
29
45
|
- One package, any stack. Language is auto-detected from the repo.
|
|
30
46
|
- Bundled tooling. ESLint, Prettier, Ruff, clang-format, and gitleaks run inside the
|
|
31
47
|
package (WASM/JS), so clients install nothing for those languages.
|
|
32
|
-
- Delta mode.
|
|
33
|
-
|
|
48
|
+
- Delta mode. A PR run checks only the changed files; outside CI the default is every tracked
|
|
49
|
+
file. `--full` forces that anywhere, and a run that cannot resolve its base falls back to it.
|
|
34
50
|
- Parallel phases. Checks run concurrently within each phase: blocking, then
|
|
35
51
|
informational, then format.
|
|
36
52
|
- Reports in the PR. Results post as a single comment that updates in place, and
|
|
37
53
|
formatter fixes are committed back to the branch.
|
|
38
54
|
- Tunable. Any check can be re-scoped, downgraded, or disabled in `pr-checkmate.json`.
|
|
39
55
|
|
|
56
|
+
## Security & Supply Chain
|
|
57
|
+
|
|
58
|
+
- Secret scanning. gitleaks runs on every diff, bundled, no setup.
|
|
59
|
+
- Verifiable releases. Every version ships a CycloneDX SBOM and an independent
|
|
60
|
+
[VirusTotal scan](https://github.com/Mybono/pr_checkmate_public/releases/latest) of
|
|
61
|
+
the exact published npm tarball, attached to that version's GitHub release notes.
|
|
62
|
+
- Dependency risk. License compliance, `npm audit`, a cross-language vulnerability scan
|
|
63
|
+
(osv-scanner, opt-in), and a direct-dependency vulnerability scan (grype, on by
|
|
64
|
+
default).
|
|
65
|
+
- CI/CD hardening. GitHub Actions workflow and Dockerfile security checks run as part
|
|
66
|
+
of the universal git-diff checks below.
|
|
67
|
+
|
|
40
68
|
## Language Support
|
|
41
69
|
|
|
42
70
|
Bundled languages need nothing on the runner. Runner-dependency languages need their
|
|
@@ -79,6 +107,24 @@ Run all checks:
|
|
|
79
107
|
npx pr-checkmate all
|
|
80
108
|
```
|
|
81
109
|
|
|
110
|
+
Scope depends on where the command runs. In CI it reviews the pull request diff, taking the
|
|
111
|
+
base SHA from the GitHub `pull_request` event or Bitbucket's destination branch; a CI build
|
|
112
|
+
with no PR attached falls back to `HEAD^`. Locally, with no CI environment detected, it
|
|
113
|
+
reviews every tracked file. It used to fall back to `HEAD^` there too, so a local run saw
|
|
114
|
+
only the last commit and would report a clean project with a `debugger` committed the day
|
|
115
|
+
before. `--full` forces the whole-repo review anywhere, including inside a CI build, and it
|
|
116
|
+
composes with any command:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
npx pr-checkmate all --full
|
|
120
|
+
npx pr-checkmate lint --full
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
The 16 checks that only make sense on a diff (PR Size, Diff Security, Merge Conflict, Custom
|
|
124
|
+
Rules, Banned Imports, the git-diff family) drop out of the report on a full scan. The
|
|
125
|
+
[per-check reference](https://github.com/Mybono/pr_checkmate_public/blob/main/documentation/checks/INDEX.md)
|
|
126
|
+
spells out the rules under "Review scope".
|
|
127
|
+
|
|
82
128
|
### Running in CI without installing
|
|
83
129
|
|
|
84
130
|
Plenty of repos never add pr-checkmate to `package.json` and call it on the fly in CI
|
|
@@ -221,4 +267,6 @@ affect it.
|
|
|
221
267
|
|
|
222
268
|
## License
|
|
223
269
|
|
|
224
|
-
LicenseRef Proprietary © 2025
|
|
270
|
+
LicenseRef Proprietary © 2025-2026 Artur Polishchuk. Free to install and run via the
|
|
271
|
+
published npm package (see [LICENSE](LICENSE) for the exact grant); the source is not
|
|
272
|
+
open-source and is not licensed for copying, modification, or redistribution.
|