pr-checkmate 1.23.4 → 1.23.5
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/dist/config/loader.js +6 -1
- package/dist/core/checks/dependencies/npm-audit.js +8 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +5 -1
- package/dist/interfaces/index.d.ts +4 -3
- package/dist/utils/logger.d.ts +2 -3
- package/dist/utils/logger.js +2 -1
- package/package.json +2 -2
- package/pr-checkmate.schema.json +27 -0
- package/src/config/pr-checkmate.schema.json +27 -0
package/dist/config/loader.js
CHANGED
|
@@ -59,7 +59,12 @@ function mergeWithDefaults(userConfig) {
|
|
|
59
59
|
...(userConfig.spellcheck?.ignorePaths || []),
|
|
60
60
|
],
|
|
61
61
|
},
|
|
62
|
-
security:
|
|
62
|
+
security: {
|
|
63
|
+
...defaults.security,
|
|
64
|
+
...userConfig.security,
|
|
65
|
+
gitleaks: { ...defaults.security?.gitleaks, ...userConfig.security?.gitleaks },
|
|
66
|
+
'npm-audit': { ...defaults.security?.['npm-audit'], ...userConfig.security?.['npm-audit'] },
|
|
67
|
+
},
|
|
63
68
|
typecheck: { ...defaults.typecheck, ...userConfig.typecheck },
|
|
64
69
|
cpp: {
|
|
65
70
|
...defaults.cpp,
|
|
@@ -38,10 +38,17 @@ exports.npmAuditCheck = {
|
|
|
38
38
|
},
|
|
39
39
|
async run(ctx) {
|
|
40
40
|
const auditLevel = ctx.config.security?.['npm-audit']?.auditLevel ?? 'moderate';
|
|
41
|
+
const ignore = new Set((ctx.config.security?.['npm-audit']?.ignore ?? []).map(name => name.toLowerCase()));
|
|
41
42
|
const ownName = getOwnPackageName();
|
|
42
43
|
const { stdout } = await (0, execa_1.execa)('npm', ['audit', '--json'], { cwd: ctx.cwd, reject: false });
|
|
43
44
|
const report = JSON.parse(stdout);
|
|
44
|
-
const
|
|
45
|
+
const relevant = Object.values(report.vulnerabilities ?? {}).filter(v => v.isDirect && v.name !== ownName && isSeverityAtLeast(v.severity, auditLevel));
|
|
46
|
+
const [ignored, directVulns] = relevant.reduce(([skip, block], v) => {
|
|
47
|
+
(ignore.has(v.name.toLowerCase()) ? skip : block).push(v);
|
|
48
|
+
return [skip, block];
|
|
49
|
+
}, [[], []]);
|
|
50
|
+
// Ignored advisories stay visible as warnings — an exception is not a silent drop.
|
|
51
|
+
ignored.forEach(v => utils_1.logger.warn(`[NPM Audit]: ⚠ ${v.name} — severity: ${v.severity} (ignored via config)`));
|
|
45
52
|
if (directVulns.length === 0)
|
|
46
53
|
return (0, types_1.pass)();
|
|
47
54
|
directVulns.forEach(v => utils_1.logger.error(`[NPM Audit]: ❌ ${v.name} — severity: ${v.severity}`));
|
package/dist/index.d.ts
CHANGED
|
@@ -8,3 +8,5 @@ export { pass, warn, fail, skip, defineCheck } from './core';
|
|
|
8
8
|
export type { Check, CheckContext, CheckOutcome, CheckReport, CheckResult, CheckStatus, Language, Phase, ReporterFn, ReporterKind, RunOptions, } from './core';
|
|
9
9
|
export { getSourcePath, getSourcePaths, getIgnoredDirs, getPackageConfigPath, hasLocalConfig, } from './config';
|
|
10
10
|
export type { PRCheckMateConfig } from './interfaces';
|
|
11
|
+
export { Logger } from './utils/logger';
|
|
12
|
+
export type { LogLevel } from './utils/logger';
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @module pr-checkmate
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.hasLocalConfig = exports.getPackageConfigPath = exports.getIgnoredDirs = exports.getSourcePaths = exports.getSourcePath = exports.defineCheck = exports.skip = exports.fail = exports.warn = exports.pass = exports.REGISTRY = exports.buildContext = exports.runChecks = void 0;
|
|
8
|
+
exports.Logger = exports.hasLocalConfig = exports.getPackageConfigPath = exports.getIgnoredDirs = exports.getSourcePaths = exports.getSourcePath = exports.defineCheck = exports.skip = exports.fail = exports.warn = exports.pass = exports.REGISTRY = exports.buildContext = exports.runChecks = void 0;
|
|
9
9
|
// Primary programmatic API: run checks and receive a structured report.
|
|
10
10
|
// Never throws for violations, never calls process.exit — the caller decides.
|
|
11
11
|
var core_1 = require("./core");
|
|
@@ -26,3 +26,7 @@ Object.defineProperty(exports, "getSourcePaths", { enumerable: true, get: functi
|
|
|
26
26
|
Object.defineProperty(exports, "getIgnoredDirs", { enumerable: true, get: function () { return config_1.getIgnoredDirs; } });
|
|
27
27
|
Object.defineProperty(exports, "getPackageConfigPath", { enumerable: true, get: function () { return config_1.getPackageConfigPath; } });
|
|
28
28
|
Object.defineProperty(exports, "hasLocalConfig", { enumerable: true, get: function () { return config_1.hasLocalConfig; } });
|
|
29
|
+
// Standalone logging utility. Consumers instantiate their own Logger so their
|
|
30
|
+
// log level and buffer stay independent from pr-checkmate's internal logger.
|
|
31
|
+
var logger_1 = require("./utils/logger");
|
|
32
|
+
Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return logger_1.Logger; } });
|
|
@@ -48,12 +48,13 @@ export interface PRCheckMateConfig {
|
|
|
48
48
|
};
|
|
49
49
|
security?: {
|
|
50
50
|
gitleaks?: {
|
|
51
|
-
enabled
|
|
51
|
+
enabled?: boolean;
|
|
52
52
|
version?: string;
|
|
53
53
|
};
|
|
54
54
|
'npm-audit'?: {
|
|
55
|
-
enabled
|
|
56
|
-
auditLevel
|
|
55
|
+
enabled?: boolean;
|
|
56
|
+
auditLevel?: string;
|
|
57
|
+
ignore?: string[];
|
|
57
58
|
};
|
|
58
59
|
};
|
|
59
60
|
typecheck?: {
|
package/dist/utils/logger.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
type LogLevel = 'log' | 'info' | 'warn' | 'error' | 'debug';
|
|
2
|
-
declare class Logger {
|
|
1
|
+
export type LogLevel = 'log' | 'info' | 'warn' | 'error' | 'debug';
|
|
2
|
+
export declare class Logger {
|
|
3
3
|
private logs;
|
|
4
4
|
private levelOrder;
|
|
5
5
|
private currentLevel;
|
|
@@ -17,4 +17,3 @@ declare class Logger {
|
|
|
17
17
|
clear(): void;
|
|
18
18
|
}
|
|
19
19
|
export declare const logger: Logger;
|
|
20
|
-
export {};
|
package/dist/utils/logger.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.logger = void 0;
|
|
3
|
+
exports.logger = exports.Logger = void 0;
|
|
4
4
|
class Logger {
|
|
5
5
|
constructor() {
|
|
6
6
|
this.logs = [];
|
|
@@ -65,4 +65,5 @@ class Logger {
|
|
|
65
65
|
this.logs = [];
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
+
exports.Logger = Logger;
|
|
68
69
|
exports.logger = new Logger();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pr-checkmate",
|
|
3
|
-
"version": "1.23.
|
|
3
|
+
"version": "1.23.5",
|
|
4
4
|
"description": "Automated PR quality checks: linting, formatting, dependency analysis, and spellcheck",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"github-actions",
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
"inquirer": "^14.0.2",
|
|
96
96
|
"jscpd": "^5.0.11",
|
|
97
97
|
"license-checker": "^25.0.1",
|
|
98
|
-
"markdownlint-cli2": "^0.23.
|
|
98
|
+
"markdownlint-cli2": "^0.23.1",
|
|
99
99
|
"prettier": ">=3.0.0",
|
|
100
100
|
"ts-node": "^10.9.1",
|
|
101
101
|
"ts-unused-exports": "^11.0.1",
|
package/pr-checkmate.schema.json
CHANGED
|
@@ -100,6 +100,33 @@
|
|
|
100
100
|
"ignore": { "type": "array", "items": { "type": "string" } }
|
|
101
101
|
}
|
|
102
102
|
},
|
|
103
|
+
"security": {
|
|
104
|
+
"type": "object",
|
|
105
|
+
"properties": {
|
|
106
|
+
"gitleaks": {
|
|
107
|
+
"type": "object",
|
|
108
|
+
"properties": {
|
|
109
|
+
"enabled": { "type": "boolean" },
|
|
110
|
+
"version": { "type": "string" }
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"npm-audit": {
|
|
114
|
+
"type": "object",
|
|
115
|
+
"properties": {
|
|
116
|
+
"enabled": { "type": "boolean" },
|
|
117
|
+
"auditLevel": {
|
|
118
|
+
"type": "string",
|
|
119
|
+
"enum": ["info", "low", "moderate", "high", "critical"]
|
|
120
|
+
},
|
|
121
|
+
"ignore": {
|
|
122
|
+
"type": "array",
|
|
123
|
+
"items": { "type": "string" },
|
|
124
|
+
"description": "Package names whose vulnerabilities never block, even when direct and at/above auditLevel. Still reported as warnings."
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
},
|
|
103
130
|
"mergeConflict": { "$ref": "#/$defs/toggleSeverity" },
|
|
104
131
|
"leftoverDebug": { "$ref": "#/$defs/toggleSeverity" },
|
|
105
132
|
"lockfileDrift": { "$ref": "#/$defs/toggleSeverity" },
|
|
@@ -100,6 +100,33 @@
|
|
|
100
100
|
"ignore": { "type": "array", "items": { "type": "string" } }
|
|
101
101
|
}
|
|
102
102
|
},
|
|
103
|
+
"security": {
|
|
104
|
+
"type": "object",
|
|
105
|
+
"properties": {
|
|
106
|
+
"gitleaks": {
|
|
107
|
+
"type": "object",
|
|
108
|
+
"properties": {
|
|
109
|
+
"enabled": { "type": "boolean" },
|
|
110
|
+
"version": { "type": "string" }
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"npm-audit": {
|
|
114
|
+
"type": "object",
|
|
115
|
+
"properties": {
|
|
116
|
+
"enabled": { "type": "boolean" },
|
|
117
|
+
"auditLevel": {
|
|
118
|
+
"type": "string",
|
|
119
|
+
"enum": ["info", "low", "moderate", "high", "critical"]
|
|
120
|
+
},
|
|
121
|
+
"ignore": {
|
|
122
|
+
"type": "array",
|
|
123
|
+
"items": { "type": "string" },
|
|
124
|
+
"description": "Package names whose vulnerabilities never block, even when direct and at/above auditLevel. Still reported as warnings."
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
},
|
|
103
130
|
"mergeConflict": { "$ref": "#/$defs/toggleSeverity" },
|
|
104
131
|
"leftoverDebug": { "$ref": "#/$defs/toggleSeverity" },
|
|
105
132
|
"lockfileDrift": { "$ref": "#/$defs/toggleSeverity" },
|