verification-layer 0.27.13 → 0.27.14

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.
@@ -18,5 +18,5 @@ export declare function applyAcknowledgments(findings: Finding[], config: Vlayer
18
18
  /**
19
19
  * Validate acknowledged finding configuration
20
20
  */
21
- export declare function validateAcknowledgedFinding(ack: any, index: number): string[];
21
+ export declare function validateAcknowledgedFinding(ack: unknown, index: number): string[];
22
22
  //# sourceMappingURL=acknowledgments.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"acknowledgments.d.ts","sourceRoot":"","sources":["../src/acknowledgments.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,YAAY,GACnB,mBAAmB,CA+CrB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,OAAO,EAAE,EACnB,MAAM,EAAE,YAAY,GACnB,OAAO,EAAE,CAoBX;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,MAAM,GACZ,MAAM,EAAE,CAiCV"}
1
+ {"version":3,"file":"acknowledgments.d.ts","sourceRoot":"","sources":["../src/acknowledgments.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,YAAY,GACnB,mBAAmB,CA2DrB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,OAAO,EAAE,EACnB,MAAM,EAAE,YAAY,GACnB,OAAO,EAAE,CAoBX;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,MAAM,GACZ,MAAM,EAAE,CAuCV"}
@@ -29,16 +29,28 @@ export function checkAcknowledgment(finding, config) {
29
29
  if (ack.severity && ack.severity !== finding.severity) {
30
30
  continue;
31
31
  }
32
- // Check if acknowledgment has expired
32
+ // Expired acknowledgments must never suppress findings. Return the match
33
+ // metadata so callers can still distinguish an expired exception from no
34
+ // matching exception at all.
33
35
  const expired = ack.expiresAt ? new Date(ack.expiresAt) < new Date() : false;
34
- // All criteria matched
36
+ if (expired) {
37
+ return {
38
+ acknowledged: false,
39
+ reason: ack.reason,
40
+ acknowledgedBy: ack.acknowledgedBy,
41
+ acknowledgedAt: ack.acknowledgedAt,
42
+ ticketUrl: ack.ticketUrl,
43
+ expired: true,
44
+ };
45
+ }
46
+ // All criteria matched and the acknowledgment is still active.
35
47
  return {
36
48
  acknowledged: true,
37
49
  reason: ack.reason,
38
50
  acknowledgedBy: ack.acknowledgedBy,
39
51
  acknowledgedAt: ack.acknowledgedAt,
40
52
  ticketUrl: ack.ticketUrl,
41
- expired,
53
+ expired: false,
42
54
  };
43
55
  }
44
56
  return { acknowledged: false };
@@ -70,30 +82,36 @@ export function applyAcknowledgments(findings, config) {
70
82
  */
71
83
  export function validateAcknowledgedFinding(ack, index) {
72
84
  const errors = [];
73
- if (!ack.pattern || typeof ack.pattern !== 'string') {
85
+ const value = typeof ack === 'object' && ack !== null ? ack : {};
86
+ if (!value.pattern || typeof value.pattern !== 'string') {
74
87
  errors.push(`acknowledgedFindings[${index}]: 'pattern' is required and must be a string`);
75
88
  }
76
- if (!ack.reason || typeof ack.reason !== 'string') {
89
+ if (!value.reason || typeof value.reason !== 'string') {
77
90
  errors.push(`acknowledgedFindings[${index}]: 'reason' is required and must be a string`);
78
91
  }
79
- if (!ack.acknowledgedBy || typeof ack.acknowledgedBy !== 'string') {
92
+ if (!value.acknowledgedBy || typeof value.acknowledgedBy !== 'string') {
80
93
  errors.push(`acknowledgedFindings[${index}]: 'acknowledgedBy' is required and must be a string`);
81
94
  }
82
- if (!ack.acknowledgedAt || typeof ack.acknowledgedAt !== 'string') {
95
+ if (!value.acknowledgedAt || typeof value.acknowledgedAt !== 'string') {
83
96
  errors.push(`acknowledgedFindings[${index}]: 'acknowledgedAt' is required and must be a string`);
84
97
  }
85
98
  else {
86
99
  // Validate ISO 8601 date format
87
- const date = new Date(ack.acknowledgedAt);
100
+ const date = new Date(value.acknowledgedAt);
88
101
  if (isNaN(date.getTime())) {
89
102
  errors.push(`acknowledgedFindings[${index}]: 'acknowledgedAt' must be a valid ISO 8601 date`);
90
103
  }
91
104
  }
92
- if (ack.expiresAt) {
93
- const date = new Date(ack.expiresAt);
94
- if (isNaN(date.getTime())) {
105
+ if (value.expiresAt !== undefined) {
106
+ if (typeof value.expiresAt !== 'string') {
95
107
  errors.push(`acknowledgedFindings[${index}]: 'expiresAt' must be a valid ISO 8601 date`);
96
108
  }
109
+ else {
110
+ const date = new Date(value.expiresAt);
111
+ if (isNaN(date.getTime())) {
112
+ errors.push(`acknowledgedFindings[${index}]: 'expiresAt' must be a valid ISO 8601 date`);
113
+ }
114
+ }
97
115
  }
98
116
  return errors;
99
117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"acknowledgments.js","sourceRoot":"","sources":["../src/acknowledgments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acknowledgments.js","sourceRoot":"","sources":["../src/acknowledgments.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "package": "verification-layer",
3
- "version": "0.27.13",
3
+ "version": "0.27.14",
4
4
  "total": 143,
5
5
  "counts": {
6
6
  "phi-exposure": 29,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "verification-layer",
3
- "version": "0.27.13",
3
+ "version": "0.27.14",
4
4
  "description": "Open-source HIPAA compliance scanner for healthcare code. 143 rules, 5 HIPAA categories. CLI + CI/CD + VS Code.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -27,7 +27,7 @@
27
27
  "start": "node dist/cli.js",
28
28
  "test": "vitest",
29
29
  "test:run": "vitest run",
30
- "lint": "eslint src/",
30
+ "lint": "eslint src/ --max-warnings 23",
31
31
  "typecheck": "tsc --noEmit",
32
32
  "prepare": "husky || true",
33
33
  "prepublishOnly": "npm run build"
@@ -65,15 +65,14 @@
65
65
  },
66
66
  "homepage": "https://github.com/Francosimon53/verification-layer#readme",
67
67
  "devDependencies": {
68
- "@semantic-release/changelog": "^6.0.3",
69
- "@semantic-release/git": "^10.0.1",
68
+ "@eslint/js": "^9.39.5",
70
69
  "@types/node": "^20.0.0",
71
70
  "@typescript-eslint/eslint-plugin": "^8.54.0",
72
71
  "@typescript-eslint/parser": "^8.54.0",
73
- "eslint": "^8.57.0",
72
+ "eslint": "^9.39.5",
74
73
  "husky": "^9.1.7",
75
- "semantic-release": "^24.2.9",
76
74
  "typescript": "^5.4.0",
75
+ "typescript-eslint": "^8.69.0",
77
76
  "vitest": "^4.1.11"
78
77
  },
79
78
  "dependencies": {