pr-checkmate 1.23.3 → 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/README.md CHANGED
@@ -117,7 +117,7 @@ skipped, not failed.
117
117
  presence, DB migration safety, and sensitive-file guard.
118
118
  - Dependencies (7) — unused/missing, circular, outdated, license compliance, npm audit,
119
119
  a cross-language vuln scan (osv-scanner, opt-in), and a direct-dependency vuln scan
120
- (grype, opt-in).
120
+ (grype, on by default).
121
121
  - Quality (4) — duplicate code, dead code, multi-language spellcheck, markdown lint.
122
122
  - PR hygiene (4) — size, title, body, and commit-message convention.
123
123
  - Per-language (16) — lint, format, and type-check for the languages listed above.
package/cspell.json CHANGED
@@ -19,10 +19,13 @@
19
19
  "ACMRD",
20
20
  "acodec",
21
21
  "acompressor",
22
+ "Activá",
22
23
  "adminsdk",
23
24
  "adrs",
24
25
  "aesctr",
25
26
  "aesgcm",
27
+ "afip",
28
+ "Afip",
26
29
  "AFIP",
27
30
  "afplay",
28
31
  "Agregar",
@@ -35,13 +38,13 @@
35
38
  "alimiter",
36
39
  "allclose",
37
40
  "Amuta",
41
+ "análisis",
38
42
  "Anchore",
39
43
  "androidpublisher",
40
44
  "androidx",
41
45
  "annualised",
42
46
  "Anthropic",
43
47
  "anypassword",
44
- "análisis",
45
48
  "apikey",
46
49
  "apinick",
47
50
  "apkg",
@@ -87,6 +90,7 @@
87
90
  "autoupdating",
88
91
  "avdmanager",
89
92
  "avds",
93
+ "Avital",
90
94
  "awscli",
91
95
  "awscliv",
92
96
  "awsconfiguration",
@@ -104,6 +108,9 @@
104
108
  "baseweb",
105
109
  "bbox",
106
110
  "bboxes",
111
+ "bcra",
112
+ "Bcra",
113
+ "BCRA",
107
114
  "Bdikat",
108
115
  "BEAGENT",
109
116
  "beforeinstallprompt",
@@ -155,6 +162,8 @@
155
162
  "buildx",
156
163
  "bybit",
157
164
  "bytebuffer",
165
+ "CABA",
166
+ "caea",
158
167
  "caesarea",
159
168
  "Caesarea",
160
169
  "calib",
@@ -205,6 +214,7 @@
205
214
  "colwise",
206
215
  "commitlintrc",
207
216
  "como",
217
+ "compartilos",
208
218
  "completesession",
209
219
  "completetest",
210
220
  "comprobante",
@@ -215,8 +225,11 @@
215
225
  "Configurar",
216
226
  "confirmemail",
217
227
  "confirmpassword",
228
+ "Considerá",
218
229
  "constraintlayout",
230
+ "Consultá",
219
231
  "Contable",
232
+ "Contactá",
220
233
  "containerregistry",
221
234
  "contenteditable",
222
235
  "Cooldown",
@@ -231,6 +244,7 @@
231
244
  "createsession",
232
245
  "createtest",
233
246
  "creationflags",
247
+ "Credito",
234
248
  "creds",
235
249
  "criterios",
236
250
  "crossfade",
@@ -256,8 +270,11 @@
256
270
  "DCMAKE",
257
271
  "ddepth",
258
272
  "ddim",
273
+ "Ddjj",
274
+ "DDJJ",
259
275
  "ddlkidomet",
260
276
  "ddpm",
277
+ "Debito",
261
278
  "decomp",
262
279
  "dedup",
263
280
  "dedups",
@@ -272,6 +289,7 @@
272
289
  "Denona",
273
290
  "depcheckrc",
274
291
  "depthwise",
292
+ "DESCS",
275
293
  "detalladas",
276
294
  "devuser",
277
295
  "DFETCHCONTENT",
@@ -323,6 +341,8 @@
323
341
  "endtable",
324
342
  "engineio",
325
343
  "eoilist",
344
+ "Escaneá",
345
+ "Escaneás",
326
346
  "Esek",
327
347
  "esencial",
328
348
  "eslint",
@@ -336,6 +356,7 @@
336
356
  "executemany",
337
357
  "Exento",
338
358
  "EXIF",
359
+ "exportá",
339
360
  "extralean",
340
361
  "eyecon",
341
362
  "eyetracking",
@@ -347,6 +368,8 @@
347
368
  "FARMHASH",
348
369
  "faststart",
349
370
  "fcpxml",
371
+ "FECAE",
372
+ "FECAEA",
350
373
  "Fecha",
351
374
  "Fechas",
352
375
  "FETCHCONTENT",
@@ -363,6 +386,7 @@
363
386
  "firebaseapp",
364
387
  "firestore",
365
388
  "Firestore",
389
+ "fiscalization",
366
390
  "fitz",
367
391
  "fixedname",
368
392
  "flatbuffer",
@@ -387,9 +411,9 @@
387
411
  "fromarray",
388
412
  "frombuffer",
389
413
  "Fsub",
414
+ "función",
390
415
  "funciona",
391
416
  "funcionalidad",
392
- "función",
393
417
  "FUTX",
394
418
  "gapi",
395
419
  "gastos",
@@ -402,6 +426,7 @@
402
426
  "gemmlowp",
403
427
  "GEMMLOWP",
404
428
  "genai",
429
+ "Generá",
405
430
  "genkey",
406
431
  "germany",
407
432
  "gershayim",
@@ -480,8 +505,12 @@
480
505
  "Hyperedges",
481
506
  "hyperliquid",
482
507
  "idct",
508
+ "idempotently",
483
509
  "idft",
484
510
  "ietf",
511
+ "iibb",
512
+ "Iibb",
513
+ "IIBB",
485
514
  "imageset",
486
515
  "imencode",
487
516
  "imgcodecs",
@@ -496,6 +525,7 @@
496
525
  "initialised",
497
526
  "inputmethod",
498
527
  "Inscripto",
528
+ "inscriptos",
499
529
  "installroot",
500
530
  "instrucciones",
501
531
  "integrat",
@@ -524,6 +554,7 @@
524
554
  "Jsons",
525
555
  "jsqr",
526
556
  "Jsqr",
557
+ "july",
527
558
  "junitxml",
528
559
  "jvmargs",
529
560
  "kama",
@@ -564,11 +595,12 @@
564
595
  "kupat",
565
596
  "langgraph",
566
597
  "laplace",
598
+ "latam",
567
599
  "layernorm",
568
600
  "lbank",
601
+ "leído",
569
602
  "lelvni",
570
603
  "letterboxed",
571
- "leído",
572
604
  "libavcodec",
573
605
  "libavformat",
574
606
  "libavutil",
@@ -612,9 +644,13 @@
612
644
  "Mazav",
613
645
  "mdpi",
614
646
  "Meaghan",
647
+ "Medor",
615
648
  "Megurim",
616
649
  "mekabel",
617
650
  "memswap",
651
+ "mercaderia",
652
+ "mercadolibre",
653
+ "mercadopago",
618
654
  "metadatalist",
619
655
  "Metaspace",
620
656
  "mexc",
@@ -630,6 +666,9 @@
630
666
  "mockito",
631
667
  "modelcontextprotocol",
632
668
  "monkeypatched",
669
+ "monotributista",
670
+ "monotributistas",
671
+ "monotributo",
633
672
  "Monotributo",
634
673
  "Monto",
635
674
  "moov",
@@ -652,6 +691,7 @@
652
691
  "myregistry",
653
692
  "myrepo",
654
693
  "mytoken",
694
+ "Nahman",
655
695
  "Naing",
656
696
  "Namayeshi",
657
697
  "nanargmax",
@@ -712,6 +752,8 @@
712
752
  "opencvcommit",
713
753
  "OPENNI",
714
754
  "openslr",
755
+ "orientative",
756
+ "ORIENTATIVE",
715
757
  "osascript",
716
758
  "Osek",
717
759
  "Osis",
@@ -745,13 +787,14 @@
745
787
  "Pipfile",
746
788
  "pipx",
747
789
  "playwright",
790
+ "podés",
748
791
  "podfile",
749
792
  "poland",
750
793
  "Polishchuk",
794
+ "Política",
751
795
  "poloniex",
752
796
  "polyfit",
753
797
  "polyorder",
754
- "Política",
755
798
  "popleft",
756
799
  "positiving",
757
800
  "posix",
@@ -773,8 +816,8 @@
773
816
  "processlist",
774
817
  "progressbar",
775
818
  "protobuf",
776
- "proyecto",
777
819
  "Próximos",
820
+ "proyecto",
778
821
  "psola",
779
822
  "pthreadpool",
780
823
  "pubspec",
@@ -785,6 +828,8 @@
785
828
  "pycodestyle",
786
829
  "pyflakes",
787
830
  "pyiceberg",
831
+ "pyme",
832
+ "Pyme",
788
833
  "pymediainfo",
789
834
  "pyngrok",
790
835
  "pynput",
@@ -805,6 +850,7 @@
805
850
  "qwen",
806
851
  "Ra'anana",
807
852
  "raanana",
853
+ "raíz",
808
854
  "ramat",
809
855
  "Ramat",
810
856
  "Ramesh",
@@ -812,14 +858,19 @@
812
858
  "randu",
813
859
  "Rango",
814
860
  "Rashum",
861
+ "Rasterizes",
815
862
  "Rastree",
816
863
  "rawvideo",
817
- "raíz",
818
864
  "realtag",
819
865
  "rebal",
820
866
  "rebalance",
821
867
  "rebalancing",
822
868
  "recaptcha",
869
+ "recat",
870
+ "recategorización",
871
+ "recategorizarte",
872
+ "recategorization",
873
+ "Recategorization",
823
874
  "Recibo",
824
875
  "recibos",
825
876
  "Recibos",
@@ -830,7 +881,9 @@
830
881
  "reentrancy",
831
882
  "referer",
832
883
  "Regen",
884
+ "Registrá",
833
885
  "remoteconfig",
886
+ "Renovala",
834
887
  "reporthook",
835
888
  "Requerida",
836
889
  "resendcode",
@@ -935,6 +988,7 @@
935
988
  "suptitle",
936
989
  "supxlabel",
937
990
  "supylabel",
991
+ "Suscribite",
938
992
  "swiftformat",
939
993
  "swiftlint",
940
994
  "swiftpm",
@@ -951,7 +1005,9 @@
951
1005
  "tcwf",
952
1006
  "telaviv",
953
1007
  "temurin",
1008
+ "Tenés",
954
1009
  "tensorflow",
1010
+ "Términos",
955
1011
  "testid",
956
1012
  "testsuite",
957
1013
  "testsuites",
@@ -977,18 +1033,21 @@
977
1033
  "tocken",
978
1034
  "todas",
979
1035
  "tofes",
1036
+ "toggleable",
1037
+ "Toggleable",
980
1038
  "torchcodec",
981
1039
  "totp",
982
1040
  "tpsl",
983
1041
  "tradingview",
984
1042
  "transacciones",
985
1043
  "trapz",
986
- "travis",
987
1044
  "través",
1045
+ "travis",
988
1046
  "trunc",
989
1047
  "tsconfig",
990
1048
  "tsmc",
991
1049
  "ttest",
1050
+ "Tucumán",
992
1051
  "Tukey",
993
1052
  "tulipy",
994
1053
  "Turakhia",
@@ -997,7 +1056,6 @@
997
1056
  "typescript",
998
1057
  "Tzionit",
999
1058
  "tzviat",
1000
- "Términos",
1001
1059
  "ubgjg",
1002
1060
  "udid",
1003
1061
  "ufunc",
@@ -1005,6 +1063,7 @@
1005
1063
  "UiAutomator2",
1006
1064
  "UITM",
1007
1065
  "ukrainian",
1066
+ "Último",
1008
1067
  "undistort",
1009
1068
  "unhedged",
1010
1069
  "unindexed",
@@ -1017,6 +1076,7 @@
1017
1076
  "unsharp",
1018
1077
  "upbit",
1019
1078
  "updateemail",
1079
+ "upsell",
1020
1080
  "usecase",
1021
1081
  "usefixtures",
1022
1082
  "userfound",
@@ -1028,9 +1088,11 @@
1028
1088
  "uuid",
1029
1089
  "uuids",
1030
1090
  "Validatable",
1091
+ "válido",
1031
1092
  "VAQH",
1032
1093
  "vconcat",
1033
1094
  "vectorbt",
1095
+ "vendés",
1034
1096
  "venv",
1035
1097
  "verticalalignment",
1036
1098
  "vfrzk",
@@ -1054,7 +1116,6 @@
1054
1116
  "vulns",
1055
1117
  "vwap",
1056
1118
  "vwma",
1057
- "válido",
1058
1119
  "watchlist",
1059
1120
  "wavesexchange",
1060
1121
  "waze",
@@ -1065,6 +1126,7 @@
1065
1126
  "WHQVLV",
1066
1127
  "workdir",
1067
1128
  "wrongpassword",
1129
+ "WSAA",
1068
1130
  "xapp",
1069
1131
  "xcassets",
1070
1132
  "xcframework",
@@ -1094,8 +1156,9 @@
1094
1156
  "Zehut",
1095
1157
  "zorder",
1096
1158
  "zrufot",
1097
- "Último",
1098
1159
  "Δangle",
1160
+ "Σcredit",
1161
+ "Σdebit",
1099
1162
  "Авів",
1100
1163
  "Беер",
1101
1164
  "Беэр",
@@ -1109,6 +1172,7 @@
1109
1172
  "Гіватаїм",
1110
1173
  "Ельберт",
1111
1174
  "зв'язатися",
1175
+ "Іріною",
1112
1176
  "Кфар",
1113
1177
  "люксовой",
1114
1178
  "мастхэв",
@@ -1124,8 +1188,8 @@
1124
1188
  "раннера",
1125
1189
  "раннере",
1126
1190
  "Ришон",
1127
- "Русский",
1128
1191
  "Рішон",
1192
+ "Русский",
1129
1193
  "стике",
1130
1194
  "Тіква",
1131
1195
  "Українська",
@@ -1135,7 +1199,6 @@
1135
1199
  "Холон",
1136
1200
  "Цион",
1137
1201
  "Ціон",
1138
- "Іріною",
1139
1202
  "אידיאלי",
1140
1203
  "אירינה",
1141
1204
  "אקונה",
@@ -59,7 +59,12 @@ function mergeWithDefaults(userConfig) {
59
59
  ...(userConfig.spellcheck?.ignorePaths || []),
60
60
  ],
61
61
  },
62
- security: userConfig.security || defaults.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,
@@ -1,8 +1,9 @@
1
1
  import { Check } from '../../types';
2
2
  /**
3
- * Dependency vulnerability scan via Anchore's `grype`. Non-blocking and opt-in
4
- * (`grypeScan.enabled: true`): grype must be on the runner, and the check skips
5
- * gracefully when it is absent.
3
+ * Dependency vulnerability scan via Anchore's `grype`. Non-blocking and ON by
4
+ * default — runs unless `grypeScan.enabled` is explicitly `false`. grype is a
5
+ * runner-dependency: it must be on the runner, and the check skips gracefully
6
+ * (not fails) when it is absent.
6
7
  *
7
8
  * grype resolves versions from lockfiles, so its raw output includes the entire
8
9
  * transitive tree — and, because pr-checkmate installs into the consumer's
@@ -18,9 +18,10 @@ function severityRank(severity) {
18
18
  return SEVERITY_ORDER.indexOf((severity ?? '').toLowerCase());
19
19
  }
20
20
  /**
21
- * Dependency vulnerability scan via Anchore's `grype`. Non-blocking and opt-in
22
- * (`grypeScan.enabled: true`): grype must be on the runner, and the check skips
23
- * gracefully when it is absent.
21
+ * Dependency vulnerability scan via Anchore's `grype`. Non-blocking and ON by
22
+ * default — runs unless `grypeScan.enabled` is explicitly `false`. grype is a
23
+ * runner-dependency: it must be on the runner, and the check skips gracefully
24
+ * (not fails) when it is absent.
24
25
  *
25
26
  * grype resolves versions from lockfiles, so its raw output includes the entire
26
27
  * transitive tree — and, because pr-checkmate installs into the consumer's
@@ -35,7 +36,7 @@ exports.grypeScanCheck = {
35
36
  name: 'Grype Scan',
36
37
  phase: 'informational',
37
38
  applies(ctx) {
38
- return ctx.config.grypeScan?.enabled === true;
39
+ return ctx.config.grypeScan?.enabled !== false;
39
40
  },
40
41
  async run(ctx) {
41
42
  const minSeverity = (ctx.config.grypeScan?.minSeverity ?? 'medium').toLowerCase();
@@ -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 directVulns = Object.values(report.vulnerabilities ?? {}).filter(v => v.isDirect && v.name !== ownName && isSeverityAtLeast(v.severity, auditLevel));
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; } });
package/dist/init.js CHANGED
@@ -31,6 +31,9 @@ const DEFAULT_CONFIG = {
31
31
  // Points editors (VS Code, etc.) at the bundled JSON schema for autocomplete
32
32
  // and inline validation of this file.
33
33
  $schema: './node_modules/pr-checkmate/pr-checkmate.schema.json',
34
+ // Available CLI commands — kept at the very top as a quick reference.
35
+ // Informational only; PR CheckMate ignores this at runtime.
36
+ commands: config_1.DEFAULT_COMMANDS,
34
37
  // Human-readable hints. JSON has no comments, so these `//`-prefixed keys are
35
38
  // just informational strings — PR CheckMate ignores them at runtime.
36
39
  '// reporting': [
@@ -44,7 +47,6 @@ const DEFAULT_CONFIG = {
44
47
  // Directories excluded from every check (matched on any path segment). Edit
45
48
  // freely — add your own generated/vendored dirs or remove ones you want scanned.
46
49
  ignoreDirs: config_1.IGNORED_DIRS,
47
- commands: config_1.DEFAULT_COMMANDS,
48
50
  // ESLint — the full default rule set is written out so every rule is visible
49
51
  // and editable. Change any value, or set a rule to "off" to disable it.
50
52
  eslint: {
@@ -134,7 +136,7 @@ const DEFAULT_CONFIG = {
134
136
  dockerfileSecurity: { enabled: true }, // Dockerfile: :latest, USER root, curl|bash, …
135
137
  caseCollision: { enabled: true }, // files differing only by case
136
138
  vulnScan: { enabled: false }, // cross-language dep vulns (osv-scanner, runner-dependency)
137
- grypeScan: { enabled: false, minSeverity: 'medium' }, // dep vulns (grype, non-blocking, runner-dependency)
139
+ grypeScan: { enabled: true, minSeverity: 'medium' }, // dep vulns (grype, non-blocking, runner-dependency; skips if grype absent)
138
140
  // Test-coverage presence. Opt-in: enable once your CI produces a coverage
139
141
  // report (lcov/cobertura/jacoco/…); warns if none is found.
140
142
  coverage: { enabled: false },
@@ -48,12 +48,13 @@ export interface PRCheckMateConfig {
48
48
  };
49
49
  security?: {
50
50
  gitleaks?: {
51
- enabled: boolean;
51
+ enabled?: boolean;
52
52
  version?: string;
53
53
  };
54
54
  'npm-audit'?: {
55
- enabled: boolean;
56
- auditLevel: string;
55
+ enabled?: boolean;
56
+ auditLevel?: string;
57
+ ignore?: string[];
57
58
  };
58
59
  };
59
60
  typecheck?: {
@@ -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 {};
@@ -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",
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.0",
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",
@@ -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" },
@@ -19,10 +19,13 @@
19
19
  "ACMRD",
20
20
  "acodec",
21
21
  "acompressor",
22
+ "Activá",
22
23
  "adminsdk",
23
24
  "adrs",
24
25
  "aesctr",
25
26
  "aesgcm",
27
+ "afip",
28
+ "Afip",
26
29
  "AFIP",
27
30
  "afplay",
28
31
  "Agregar",
@@ -35,13 +38,13 @@
35
38
  "alimiter",
36
39
  "allclose",
37
40
  "Amuta",
41
+ "análisis",
38
42
  "Anchore",
39
43
  "androidpublisher",
40
44
  "androidx",
41
45
  "annualised",
42
46
  "Anthropic",
43
47
  "anypassword",
44
- "análisis",
45
48
  "apikey",
46
49
  "apinick",
47
50
  "apkg",
@@ -87,6 +90,7 @@
87
90
  "autoupdating",
88
91
  "avdmanager",
89
92
  "avds",
93
+ "Avital",
90
94
  "awscli",
91
95
  "awscliv",
92
96
  "awsconfiguration",
@@ -104,6 +108,9 @@
104
108
  "baseweb",
105
109
  "bbox",
106
110
  "bboxes",
111
+ "bcra",
112
+ "Bcra",
113
+ "BCRA",
107
114
  "Bdikat",
108
115
  "BEAGENT",
109
116
  "beforeinstallprompt",
@@ -155,6 +162,8 @@
155
162
  "buildx",
156
163
  "bybit",
157
164
  "bytebuffer",
165
+ "CABA",
166
+ "caea",
158
167
  "caesarea",
159
168
  "Caesarea",
160
169
  "calib",
@@ -205,6 +214,7 @@
205
214
  "colwise",
206
215
  "commitlintrc",
207
216
  "como",
217
+ "compartilos",
208
218
  "completesession",
209
219
  "completetest",
210
220
  "comprobante",
@@ -215,8 +225,11 @@
215
225
  "Configurar",
216
226
  "confirmemail",
217
227
  "confirmpassword",
228
+ "Considerá",
218
229
  "constraintlayout",
230
+ "Consultá",
219
231
  "Contable",
232
+ "Contactá",
220
233
  "containerregistry",
221
234
  "contenteditable",
222
235
  "Cooldown",
@@ -231,6 +244,7 @@
231
244
  "createsession",
232
245
  "createtest",
233
246
  "creationflags",
247
+ "Credito",
234
248
  "creds",
235
249
  "criterios",
236
250
  "crossfade",
@@ -256,8 +270,11 @@
256
270
  "DCMAKE",
257
271
  "ddepth",
258
272
  "ddim",
273
+ "Ddjj",
274
+ "DDJJ",
259
275
  "ddlkidomet",
260
276
  "ddpm",
277
+ "Debito",
261
278
  "decomp",
262
279
  "dedup",
263
280
  "dedups",
@@ -272,6 +289,7 @@
272
289
  "Denona",
273
290
  "depcheckrc",
274
291
  "depthwise",
292
+ "DESCS",
275
293
  "detalladas",
276
294
  "devuser",
277
295
  "DFETCHCONTENT",
@@ -323,6 +341,8 @@
323
341
  "endtable",
324
342
  "engineio",
325
343
  "eoilist",
344
+ "Escaneá",
345
+ "Escaneás",
326
346
  "Esek",
327
347
  "esencial",
328
348
  "eslint",
@@ -336,6 +356,7 @@
336
356
  "executemany",
337
357
  "Exento",
338
358
  "EXIF",
359
+ "exportá",
339
360
  "extralean",
340
361
  "eyecon",
341
362
  "eyetracking",
@@ -347,6 +368,8 @@
347
368
  "FARMHASH",
348
369
  "faststart",
349
370
  "fcpxml",
371
+ "FECAE",
372
+ "FECAEA",
350
373
  "Fecha",
351
374
  "Fechas",
352
375
  "FETCHCONTENT",
@@ -363,6 +386,7 @@
363
386
  "firebaseapp",
364
387
  "firestore",
365
388
  "Firestore",
389
+ "fiscalization",
366
390
  "fitz",
367
391
  "fixedname",
368
392
  "flatbuffer",
@@ -387,9 +411,9 @@
387
411
  "fromarray",
388
412
  "frombuffer",
389
413
  "Fsub",
414
+ "función",
390
415
  "funciona",
391
416
  "funcionalidad",
392
- "función",
393
417
  "FUTX",
394
418
  "gapi",
395
419
  "gastos",
@@ -402,6 +426,7 @@
402
426
  "gemmlowp",
403
427
  "GEMMLOWP",
404
428
  "genai",
429
+ "Generá",
405
430
  "genkey",
406
431
  "germany",
407
432
  "gershayim",
@@ -480,8 +505,12 @@
480
505
  "Hyperedges",
481
506
  "hyperliquid",
482
507
  "idct",
508
+ "idempotently",
483
509
  "idft",
484
510
  "ietf",
511
+ "iibb",
512
+ "Iibb",
513
+ "IIBB",
485
514
  "imageset",
486
515
  "imencode",
487
516
  "imgcodecs",
@@ -496,6 +525,7 @@
496
525
  "initialised",
497
526
  "inputmethod",
498
527
  "Inscripto",
528
+ "inscriptos",
499
529
  "installroot",
500
530
  "instrucciones",
501
531
  "integrat",
@@ -524,6 +554,7 @@
524
554
  "Jsons",
525
555
  "jsqr",
526
556
  "Jsqr",
557
+ "july",
527
558
  "junitxml",
528
559
  "jvmargs",
529
560
  "kama",
@@ -564,11 +595,12 @@
564
595
  "kupat",
565
596
  "langgraph",
566
597
  "laplace",
598
+ "latam",
567
599
  "layernorm",
568
600
  "lbank",
601
+ "leído",
569
602
  "lelvni",
570
603
  "letterboxed",
571
- "leído",
572
604
  "libavcodec",
573
605
  "libavformat",
574
606
  "libavutil",
@@ -612,9 +644,13 @@
612
644
  "Mazav",
613
645
  "mdpi",
614
646
  "Meaghan",
647
+ "Medor",
615
648
  "Megurim",
616
649
  "mekabel",
617
650
  "memswap",
651
+ "mercaderia",
652
+ "mercadolibre",
653
+ "mercadopago",
618
654
  "metadatalist",
619
655
  "Metaspace",
620
656
  "mexc",
@@ -630,6 +666,9 @@
630
666
  "mockito",
631
667
  "modelcontextprotocol",
632
668
  "monkeypatched",
669
+ "monotributista",
670
+ "monotributistas",
671
+ "monotributo",
633
672
  "Monotributo",
634
673
  "Monto",
635
674
  "moov",
@@ -652,6 +691,7 @@
652
691
  "myregistry",
653
692
  "myrepo",
654
693
  "mytoken",
694
+ "Nahman",
655
695
  "Naing",
656
696
  "Namayeshi",
657
697
  "nanargmax",
@@ -712,6 +752,8 @@
712
752
  "opencvcommit",
713
753
  "OPENNI",
714
754
  "openslr",
755
+ "orientative",
756
+ "ORIENTATIVE",
715
757
  "osascript",
716
758
  "Osek",
717
759
  "Osis",
@@ -745,13 +787,14 @@
745
787
  "Pipfile",
746
788
  "pipx",
747
789
  "playwright",
790
+ "podés",
748
791
  "podfile",
749
792
  "poland",
750
793
  "Polishchuk",
794
+ "Política",
751
795
  "poloniex",
752
796
  "polyfit",
753
797
  "polyorder",
754
- "Política",
755
798
  "popleft",
756
799
  "positiving",
757
800
  "posix",
@@ -773,8 +816,8 @@
773
816
  "processlist",
774
817
  "progressbar",
775
818
  "protobuf",
776
- "proyecto",
777
819
  "Próximos",
820
+ "proyecto",
778
821
  "psola",
779
822
  "pthreadpool",
780
823
  "pubspec",
@@ -785,6 +828,8 @@
785
828
  "pycodestyle",
786
829
  "pyflakes",
787
830
  "pyiceberg",
831
+ "pyme",
832
+ "Pyme",
788
833
  "pymediainfo",
789
834
  "pyngrok",
790
835
  "pynput",
@@ -805,6 +850,7 @@
805
850
  "qwen",
806
851
  "Ra'anana",
807
852
  "raanana",
853
+ "raíz",
808
854
  "ramat",
809
855
  "Ramat",
810
856
  "Ramesh",
@@ -812,14 +858,19 @@
812
858
  "randu",
813
859
  "Rango",
814
860
  "Rashum",
861
+ "Rasterizes",
815
862
  "Rastree",
816
863
  "rawvideo",
817
- "raíz",
818
864
  "realtag",
819
865
  "rebal",
820
866
  "rebalance",
821
867
  "rebalancing",
822
868
  "recaptcha",
869
+ "recat",
870
+ "recategorización",
871
+ "recategorizarte",
872
+ "recategorization",
873
+ "Recategorization",
823
874
  "Recibo",
824
875
  "recibos",
825
876
  "Recibos",
@@ -830,7 +881,9 @@
830
881
  "reentrancy",
831
882
  "referer",
832
883
  "Regen",
884
+ "Registrá",
833
885
  "remoteconfig",
886
+ "Renovala",
834
887
  "reporthook",
835
888
  "Requerida",
836
889
  "resendcode",
@@ -935,6 +988,7 @@
935
988
  "suptitle",
936
989
  "supxlabel",
937
990
  "supylabel",
991
+ "Suscribite",
938
992
  "swiftformat",
939
993
  "swiftlint",
940
994
  "swiftpm",
@@ -951,7 +1005,9 @@
951
1005
  "tcwf",
952
1006
  "telaviv",
953
1007
  "temurin",
1008
+ "Tenés",
954
1009
  "tensorflow",
1010
+ "Términos",
955
1011
  "testid",
956
1012
  "testsuite",
957
1013
  "testsuites",
@@ -977,18 +1033,21 @@
977
1033
  "tocken",
978
1034
  "todas",
979
1035
  "tofes",
1036
+ "toggleable",
1037
+ "Toggleable",
980
1038
  "torchcodec",
981
1039
  "totp",
982
1040
  "tpsl",
983
1041
  "tradingview",
984
1042
  "transacciones",
985
1043
  "trapz",
986
- "travis",
987
1044
  "través",
1045
+ "travis",
988
1046
  "trunc",
989
1047
  "tsconfig",
990
1048
  "tsmc",
991
1049
  "ttest",
1050
+ "Tucumán",
992
1051
  "Tukey",
993
1052
  "tulipy",
994
1053
  "Turakhia",
@@ -997,7 +1056,6 @@
997
1056
  "typescript",
998
1057
  "Tzionit",
999
1058
  "tzviat",
1000
- "Términos",
1001
1059
  "ubgjg",
1002
1060
  "udid",
1003
1061
  "ufunc",
@@ -1005,6 +1063,7 @@
1005
1063
  "UiAutomator2",
1006
1064
  "UITM",
1007
1065
  "ukrainian",
1066
+ "Último",
1008
1067
  "undistort",
1009
1068
  "unhedged",
1010
1069
  "unindexed",
@@ -1017,6 +1076,7 @@
1017
1076
  "unsharp",
1018
1077
  "upbit",
1019
1078
  "updateemail",
1079
+ "upsell",
1020
1080
  "usecase",
1021
1081
  "usefixtures",
1022
1082
  "userfound",
@@ -1028,9 +1088,11 @@
1028
1088
  "uuid",
1029
1089
  "uuids",
1030
1090
  "Validatable",
1091
+ "válido",
1031
1092
  "VAQH",
1032
1093
  "vconcat",
1033
1094
  "vectorbt",
1095
+ "vendés",
1034
1096
  "venv",
1035
1097
  "verticalalignment",
1036
1098
  "vfrzk",
@@ -1054,7 +1116,6 @@
1054
1116
  "vulns",
1055
1117
  "vwap",
1056
1118
  "vwma",
1057
- "válido",
1058
1119
  "watchlist",
1059
1120
  "wavesexchange",
1060
1121
  "waze",
@@ -1065,6 +1126,7 @@
1065
1126
  "WHQVLV",
1066
1127
  "workdir",
1067
1128
  "wrongpassword",
1129
+ "WSAA",
1068
1130
  "xapp",
1069
1131
  "xcassets",
1070
1132
  "xcframework",
@@ -1094,8 +1156,9 @@
1094
1156
  "Zehut",
1095
1157
  "zorder",
1096
1158
  "zrufot",
1097
- "Último",
1098
1159
  "Δangle",
1160
+ "Σcredit",
1161
+ "Σdebit",
1099
1162
  "Авів",
1100
1163
  "Беер",
1101
1164
  "Беэр",
@@ -1109,6 +1172,7 @@
1109
1172
  "Гіватаїм",
1110
1173
  "Ельберт",
1111
1174
  "зв'язатися",
1175
+ "Іріною",
1112
1176
  "Кфар",
1113
1177
  "люксовой",
1114
1178
  "мастхэв",
@@ -1124,8 +1188,8 @@
1124
1188
  "раннера",
1125
1189
  "раннере",
1126
1190
  "Ришон",
1127
- "Русский",
1128
1191
  "Рішон",
1192
+ "Русский",
1129
1193
  "стике",
1130
1194
  "Тіква",
1131
1195
  "Українська",
@@ -1135,7 +1199,6 @@
1135
1199
  "Холон",
1136
1200
  "Цион",
1137
1201
  "Ціон",
1138
- "Іріною",
1139
1202
  "אידיאלי",
1140
1203
  "אירינה",
1141
1204
  "אקונה",
@@ -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" },