@next-secure-check/core 0.1.0 → 0.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.
@@ -0,0 +1,7 @@
1
+ import type { FindingContext } from "./types.js";
2
+ export type FileContextClassification = {
3
+ context: FindingContext;
4
+ contextReason: string;
5
+ };
6
+ export declare function classifyFileContext(filePath: string): FileContextClassification;
7
+ //# sourceMappingURL=context-classifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-classifier.d.ts","sourceRoot":"","sources":["../src/context-classifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,yBAAyB,CA8E/E"}
@@ -0,0 +1,139 @@
1
+ export function classifyFileContext(filePath) {
2
+ const normalizedPath = normalizeContextPath(filePath);
3
+ const basename = normalizedPath.split("/").at(-1) ?? normalizedPath;
4
+ if (matchesTestCode(normalizedPath, basename)) {
5
+ return {
6
+ context: "test-code",
7
+ contextReason: "matched test/spec file path"
8
+ };
9
+ }
10
+ if (matchesExampleCode(normalizedPath)) {
11
+ return {
12
+ context: "example-code",
13
+ contextReason: "matched example/demo path"
14
+ };
15
+ }
16
+ if (matchesDocsCode(normalizedPath, basename)) {
17
+ return {
18
+ context: "docs-code",
19
+ contextReason: "matched docs or markdown path"
20
+ };
21
+ }
22
+ if (normalizedPath.startsWith(".github/workflows/")) {
23
+ return {
24
+ context: "github-actions",
25
+ contextReason: "matched GitHub Actions workflow path"
26
+ };
27
+ }
28
+ if (matchesReleaseTooling(normalizedPath, basename)) {
29
+ return {
30
+ context: "release-tooling",
31
+ contextReason: "matched release/tooling path"
32
+ };
33
+ }
34
+ if (matchesCliTooling(normalizedPath)) {
35
+ return {
36
+ context: "cli-tooling",
37
+ contextReason: "matched CLI tooling path"
38
+ };
39
+ }
40
+ if (matchesGeneratedCode(normalizedPath)) {
41
+ return {
42
+ context: "generated-code",
43
+ contextReason: "matched generated/build output path"
44
+ };
45
+ }
46
+ if (matchesTemplateCode(normalizedPath)) {
47
+ return {
48
+ context: "template-code",
49
+ contextReason: "matched template/fixture path"
50
+ };
51
+ }
52
+ if (matchesApiCode(normalizedPath)) {
53
+ return {
54
+ context: "api-code",
55
+ contextReason: "matched Next.js API route path"
56
+ };
57
+ }
58
+ if (matchesAppCode(normalizedPath)) {
59
+ return {
60
+ context: "app-code",
61
+ contextReason: "matched Next.js app/page runtime path"
62
+ };
63
+ }
64
+ return {
65
+ context: "unknown",
66
+ contextReason: "no known file context pattern matched"
67
+ };
68
+ }
69
+ function normalizeContextPath(filePath) {
70
+ return filePath.replace(/\\/g, "/").replace(/^\.\//, "");
71
+ }
72
+ function matchesApiCode(filePath) {
73
+ return (filePath.startsWith("app/api/") ||
74
+ filePath.startsWith("src/app/api/") ||
75
+ filePath.startsWith("pages/api/") ||
76
+ /^apps\/[^/]+\/app\/api\//.test(filePath) ||
77
+ /^apps\/[^/]+\/src\/app\/api\//.test(filePath) ||
78
+ /^apps\/[^/]+\/pages\/api\//.test(filePath));
79
+ }
80
+ function matchesAppCode(filePath) {
81
+ return (filePath.startsWith("app/") ||
82
+ filePath.startsWith("pages/") ||
83
+ filePath.startsWith("components/") ||
84
+ filePath.startsWith("src/app/") ||
85
+ filePath.startsWith("src/pages/") ||
86
+ /^apps\/[^/]+\/app\//.test(filePath) ||
87
+ /^apps\/[^/]+\/src\/app\//.test(filePath) ||
88
+ /^apps\/[^/]+\/pages\//.test(filePath) ||
89
+ /^packages\/[^/]+\/app\//.test(filePath) ||
90
+ /^packages\/[^/]+\/src\/app\//.test(filePath) ||
91
+ /^packages\/[^/]+\/src\/.+\.(tsx|jsx)$/.test(filePath));
92
+ }
93
+ function matchesTestCode(filePath, basename) {
94
+ return (filePath.startsWith("__tests__/") ||
95
+ filePath.includes("/__tests__/") ||
96
+ /\.(test|spec)\.(ts|tsx|js|jsx)$/.test(basename));
97
+ }
98
+ function matchesExampleCode(filePath) {
99
+ return (filePath.startsWith("examples/") ||
100
+ filePath.startsWith("demo/") ||
101
+ filePath.startsWith("demos/") ||
102
+ filePath.startsWith("playground/") ||
103
+ filePath.startsWith("stories/") ||
104
+ filePath.startsWith("storybook/") ||
105
+ /\.stories\.(ts|tsx|js|jsx)$/.test(filePath) ||
106
+ /^apps\/[^/]+\/examples\//.test(filePath) ||
107
+ /^apps\/[^/]+\/app\/examples\//.test(filePath) ||
108
+ /^apps\/[^/]+\/(demo|demos|playground|stories|storybook)\//.test(filePath) ||
109
+ /^apps\/[^/]+\/app\/(demo|demos|playground|stories|storybook)\//.test(filePath));
110
+ }
111
+ function matchesDocsCode(filePath, basename) {
112
+ return filePath.startsWith("docs/") || /\.mdx?$/.test(basename);
113
+ }
114
+ function matchesReleaseTooling(filePath, basename) {
115
+ return (/^\.github\/[^/]+\.(js|ts)$/.test(filePath) ||
116
+ filePath.startsWith("scripts/release/") ||
117
+ /^changeset/i.test(basename));
118
+ }
119
+ function matchesCliTooling(filePath) {
120
+ return (filePath.startsWith("cli/") ||
121
+ filePath.startsWith("src/cli/") ||
122
+ filePath.startsWith("packages/cli/"));
123
+ }
124
+ function matchesGeneratedCode(filePath) {
125
+ return filePath.startsWith("dist/") || filePath.startsWith(".next/") || filePath.startsWith("generated/");
126
+ }
127
+ function matchesTemplateCode(filePath) {
128
+ return (filePath.startsWith("templates/") ||
129
+ filePath.startsWith("fixtures/") ||
130
+ filePath.startsWith("__fixtures__/") ||
131
+ filePath.startsWith("test/fixtures/") ||
132
+ filePath.startsWith("tests/fixtures/") ||
133
+ /^registry\//.test(filePath) ||
134
+ /^apps\/[^/]+\/registry\//.test(filePath) ||
135
+ /^packages\/[^/]+\/registry\//.test(filePath) ||
136
+ /^packages\/[^/]+\/(?:test|tests)\/fixtures\//.test(filePath) ||
137
+ /^packages\/[^/]+\/__fixtures__\//.test(filePath));
138
+ }
139
+ //# sourceMappingURL=context-classifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-classifier.js","sourceRoot":"","sources":["../src/context-classifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Finding } from "./types.js";
2
+ export declare function applyContextTuning(finding: Finding): Finding;
3
+ //# sourceMappingURL=context-tuning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-tuning.d.ts","sourceRoot":"","sources":["../src/context-tuning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,OAAO,EAA4B,MAAM,YAAY,CAAC;AAQhF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAuB5D"}
@@ -0,0 +1,261 @@
1
+ export function applyContextTuning(finding) {
2
+ const adjustment = getContextAdjustment(finding);
3
+ if (!adjustment) {
4
+ return finding;
5
+ }
6
+ const tunedSeverity = adjustment.severity ?? finding.severity;
7
+ const tunedConfidence = adjustment.confidence ?? finding.confidence;
8
+ const severityChanged = tunedSeverity !== finding.severity;
9
+ const confidenceChanged = tunedConfidence !== finding.confidence;
10
+ if (!severityChanged && !confidenceChanged) {
11
+ return finding;
12
+ }
13
+ return {
14
+ ...finding,
15
+ severity: tunedSeverity,
16
+ confidence: tunedConfidence,
17
+ originalSeverity: severityChanged ? finding.severity : finding.originalSeverity,
18
+ originalConfidence: confidenceChanged ? finding.confidence : finding.originalConfidence,
19
+ contextAdjustmentReason: adjustment.reason
20
+ };
21
+ }
22
+ function getContextAdjustment(finding) {
23
+ switch (finding.ruleId) {
24
+ case "injection/command-exec":
25
+ return commandExecAdjustment(finding.context);
26
+ case "injection/raw-sql-concat":
27
+ return rawSqlAdjustment(finding);
28
+ case "auth/admin-route-without-auth":
29
+ return adminRouteAdjustment(finding);
30
+ case "auth/password-without-hashing-library":
31
+ return passwordAdjustment(finding);
32
+ case "upload/missing-file-type-validation":
33
+ case "upload/missing-file-size-limit":
34
+ return uploadAdjustment(finding);
35
+ case "xss/dangerously-set-inner-html":
36
+ return dangerouslySetHtmlAdjustment(finding);
37
+ case "config/next-powered-by-header":
38
+ return nextPoweredByHeaderAdjustment(finding.context);
39
+ case "validation/api-route-without-validation":
40
+ return validationAdjustment(finding.context);
41
+ case "auth/login-without-rate-limit":
42
+ case "auth/register-without-rate-limit":
43
+ return authRateLimitAdjustment(finding.context);
44
+ default:
45
+ return undefined;
46
+ }
47
+ }
48
+ function commandExecAdjustment(context) {
49
+ switch (context) {
50
+ case "release-tooling":
51
+ return {
52
+ severity: "LOW",
53
+ confidence: "LOW",
54
+ reason: "lowered command execution finding in release/tooling context"
55
+ };
56
+ case "cli-tooling":
57
+ return {
58
+ severity: "MEDIUM",
59
+ confidence: "MEDIUM",
60
+ reason: "lowered command execution finding in CLI tooling context"
61
+ };
62
+ case "example-code":
63
+ case "template-code":
64
+ return {
65
+ severity: "MEDIUM",
66
+ confidence: "LOW",
67
+ reason: "lowered command execution finding in example/template context"
68
+ };
69
+ default:
70
+ return undefined;
71
+ }
72
+ }
73
+ function rawSqlAdjustment(finding) {
74
+ switch (finding.context) {
75
+ case "app-code":
76
+ if (isUiOrComponentPath(finding.filePath)) {
77
+ return {
78
+ severity: "MEDIUM",
79
+ confidence: "LOW",
80
+ reason: "lowered raw SQL finding in app component/UI context"
81
+ };
82
+ }
83
+ return undefined;
84
+ case "docs-code":
85
+ case "example-code":
86
+ case "template-code":
87
+ return {
88
+ severity: "MEDIUM",
89
+ confidence: "LOW",
90
+ reason: "lowered raw SQL finding in docs/example/template context"
91
+ };
92
+ default:
93
+ return undefined;
94
+ }
95
+ }
96
+ function passwordAdjustment(finding) {
97
+ switch (finding.context) {
98
+ case "app-code":
99
+ if (isUiOrComponentPath(finding.filePath)) {
100
+ return {
101
+ severity: "MEDIUM",
102
+ confidence: "LOW",
103
+ reason: "lowered password-handling finding in app component/UI context"
104
+ };
105
+ }
106
+ return undefined;
107
+ case "docs-code":
108
+ case "example-code":
109
+ case "template-code":
110
+ return {
111
+ severity: "LOW",
112
+ confidence: "LOW",
113
+ reason: "lowered password-handling finding in docs/example/template context"
114
+ };
115
+ default:
116
+ return undefined;
117
+ }
118
+ }
119
+ function uploadAdjustment(finding) {
120
+ switch (finding.context) {
121
+ case "app-code":
122
+ if (isUiOrComponentPath(finding.filePath)) {
123
+ return {
124
+ severity: "MEDIUM",
125
+ confidence: "LOW",
126
+ reason: "lowered upload validation finding in app component/UI context"
127
+ };
128
+ }
129
+ return undefined;
130
+ case "docs-code":
131
+ case "example-code":
132
+ case "template-code":
133
+ return {
134
+ severity: "LOW",
135
+ confidence: "LOW",
136
+ reason: "lowered upload validation finding in docs/example/template context"
137
+ };
138
+ default:
139
+ return undefined;
140
+ }
141
+ }
142
+ function dangerouslySetHtmlAdjustment(finding) {
143
+ switch (finding.context) {
144
+ case "docs-code":
145
+ case "example-code":
146
+ case "template-code":
147
+ return {
148
+ severity: "MEDIUM",
149
+ confidence: "LOW",
150
+ reason: "lowered dangerouslySetInnerHTML finding in docs/example/template context"
151
+ };
152
+ case "app-code":
153
+ if (isDemoStoryOrFixturePath(finding.filePath)) {
154
+ return {
155
+ confidence: "LOW",
156
+ reason: "lowered dangerouslySetInnerHTML confidence in demo/story/fixture app context"
157
+ };
158
+ }
159
+ if (isUiOrComponentPath(finding.filePath) && !hasExplicitUserControlledHtmlSignal(finding.evidence)) {
160
+ return {
161
+ confidence: "LOW",
162
+ reason: "lowered dangerouslySetInnerHTML confidence in app component/UI context"
163
+ };
164
+ }
165
+ return undefined;
166
+ default:
167
+ return undefined;
168
+ }
169
+ }
170
+ function nextPoweredByHeaderAdjustment(context) {
171
+ switch (context) {
172
+ case "docs-code":
173
+ case "example-code":
174
+ case "template-code":
175
+ return {
176
+ severity: "LOW",
177
+ confidence: "LOW",
178
+ reason: "lowered powered-by header finding in docs/example/template context"
179
+ };
180
+ default:
181
+ return undefined;
182
+ }
183
+ }
184
+ function adminRouteAdjustment(finding) {
185
+ switch (finding.context) {
186
+ case "app-code":
187
+ if (isApiRoutePath(finding.filePath)) {
188
+ return undefined;
189
+ }
190
+ return {
191
+ severity: "MEDIUM",
192
+ confidence: "LOW",
193
+ reason: "lowered admin route finding in non-API app component context"
194
+ };
195
+ case "docs-code":
196
+ case "example-code":
197
+ case "template-code":
198
+ return {
199
+ severity: "LOW",
200
+ confidence: "LOW",
201
+ reason: "lowered admin route finding in docs/example/template context"
202
+ };
203
+ default:
204
+ return undefined;
205
+ }
206
+ }
207
+ function isApiRoutePath(filePath) {
208
+ const normalizedPath = normalizePath(filePath);
209
+ return (normalizedPath.startsWith("app/api/") ||
210
+ normalizedPath.startsWith("src/app/api/") ||
211
+ normalizedPath.startsWith("pages/api/") ||
212
+ /^apps\/[^/]+\/app\/api\//.test(normalizedPath) ||
213
+ /^apps\/[^/]+\/src\/app\/api\//.test(normalizedPath) ||
214
+ /^apps\/[^/]+\/pages\/api\//.test(normalizedPath));
215
+ }
216
+ function isUiOrComponentPath(filePath) {
217
+ const normalizedPath = normalizePath(filePath);
218
+ return (!isApiRoutePath(normalizedPath) &&
219
+ (normalizedPath.includes("/components/") ||
220
+ normalizedPath.includes("/component/") ||
221
+ normalizedPath.includes("/ui/") ||
222
+ normalizedPath.endsWith(".tsx") ||
223
+ normalizedPath.endsWith(".jsx")));
224
+ }
225
+ function isDemoStoryOrFixturePath(filePath) {
226
+ const normalizedPath = normalizePath(filePath);
227
+ return /(^|\/)(demo|demos|storybook|stories|fixtures|examples)(\/|\.|$)/i.test(normalizedPath) || /\.stories\.(tsx|jsx|ts|js)$/.test(normalizedPath);
228
+ }
229
+ function hasExplicitUserControlledHtmlSignal(evidence) {
230
+ return /\b(userInput|searchParams|params|body|request|req|query)\b/i.test(evidence ?? "");
231
+ }
232
+ function normalizePath(filePath) {
233
+ return filePath.replace(/\\/g, "/").replace(/^\.\//, "");
234
+ }
235
+ function validationAdjustment(context) {
236
+ switch (context) {
237
+ case "example-code":
238
+ case "template-code":
239
+ return {
240
+ severity: "LOW",
241
+ confidence: "LOW",
242
+ reason: "lowered API validation finding in example/template context"
243
+ };
244
+ default:
245
+ return undefined;
246
+ }
247
+ }
248
+ function authRateLimitAdjustment(context) {
249
+ switch (context) {
250
+ case "example-code":
251
+ case "template-code":
252
+ return {
253
+ severity: "LOW",
254
+ confidence: "LOW",
255
+ reason: "lowered auth rate-limit finding in example/template context"
256
+ };
257
+ default:
258
+ return undefined;
259
+ }
260
+ }
261
+ //# sourceMappingURL=context-tuning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-tuning.js","sourceRoot":"","sources":["../src/context-tuning.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,7 @@
1
- export type { Confidence, Finding, ProjectInfo, RiskLevel, Rule, ScanContext, ScanOptions, ScanResult, ScanSummary, Severity, SourceFile } from "./types.js";
1
+ export type { Confidence, Finding, FindingContext, MiddlewareSignal, ProjectInfo, RiskLevel, Rule, ScanContext, ScanOptions, ScanResult, ScanSummary, Severity, SourceFile } from "./types.js";
2
+ export { classifyFileContext } from "./context-classifier.js";
3
+ export type { FileContextClassification } from "./context-classifier.js";
4
+ export { applyContextTuning } from "./context-tuning.js";
2
5
  export { collectFiles, normalizePath } from "./file-collector.js";
3
6
  export { detectProject } from "./project-detector.js";
4
7
  export { riskLevelForScore, summarizeFindings } from "./score.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,OAAO,EACP,WAAW,EACX,SAAS,EACT,IAAI,EACJ,WAAW,EACX,WAAW,EACX,UAAU,EACV,WAAW,EACX,QAAQ,EACR,UAAU,EACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE/D,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,SAAU,GAAG,OAAO,YAAY,EAAE,UAAU,CA0BnH"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,IAAI,EACJ,WAAW,EACX,WAAW,EACX,UAAU,EACV,WAAW,EACX,QAAQ,EACR,UAAU,EACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,YAAY,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE/D,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,SAAU,GAAG,OAAO,YAAY,EAAE,UAAU,CA0BnH"}
package/dist/index.js CHANGED
@@ -1,3 +1,5 @@
1
+ export { classifyFileContext } from "./context-classifier.js";
2
+ export { applyContextTuning } from "./context-tuning.js";
1
3
  export { collectFiles, normalizePath } from "./file-collector.js";
2
4
  export { detectProject } from "./project-detector.js";
3
5
  export { riskLevelForScore, summarizeFindings } from "./score.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE/D,MAAM,UAAU,wBAAwB,CAAC,UAAkB,EAAE,WAAW,GAAG,OAAO;IAChF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,OAAO;QACL,OAAO,EAAE;YACP,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,SAAS;YACpB,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,SAAS;SACpB;QACD,OAAO,EAAE;YACP,KAAK,EAAE,GAAG;YACV,SAAS,EAAE,WAAW;YACtB,aAAa,EAAE,CAAC;YAChB,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;SACR;QACD,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE;YACR,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;YAC5C,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAClC,WAAW;SACZ;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE/D,MAAM,UAAU,wBAAwB,CAAC,UAAkB,EAAE,WAAW,GAAG,OAAO;IAChF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,OAAO;QACL,OAAO,EAAE;YACP,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,SAAS;YACpB,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,SAAS;SACpB;QACD,OAAO,EAAE;YACP,KAAK,EAAE,GAAG;YACV,SAAS,EAAE,WAAW;YACtB,aAAa,EAAE,CAAC;YAChB,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;SACR;QACD,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE;YACR,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;YAC5C,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAClC,WAAW;SACZ;KACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAA8B,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtF,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CA4BpG;AAED,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAU5E"}
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAgD,WAAW,EAAE,UAAU,EAAc,MAAM,YAAY,CAAC;AAEpH,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAkCpG;AAED,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAU5E"}
package/dist/scanner.js CHANGED
@@ -1,5 +1,7 @@
1
1
  import { access, stat } from "node:fs/promises";
2
2
  import path from "node:path";
3
+ import { classifyFileContext } from "./context-classifier.js";
4
+ import { applyContextTuning } from "./context-tuning.js";
3
5
  import { collectFiles } from "./file-collector.js";
4
6
  import { detectProject } from "./project-detector.js";
5
7
  import { summarizeFindings } from "./score.js";
@@ -17,9 +19,10 @@ export async function scanProject(targetPath, options = {}) {
17
19
  rootPath,
18
20
  files,
19
21
  project: detection.project,
22
+ middleware: extractMiddlewareSignals(files),
20
23
  packageJson: detection.packageJson
21
24
  };
22
- const findings = sortFindings(await runRules(rules, context));
25
+ const findings = sortFindings(applyContextTuningToFindings(enrichFindingsWithContext(await runRules(rules, context)), options.contextTuning ?? "standard"));
23
26
  return {
24
27
  project: detection.project,
25
28
  summary: summarizeFindings(findings),
@@ -47,6 +50,22 @@ async function runRules(rules, context) {
47
50
  }
48
51
  return findings;
49
52
  }
53
+ function enrichFindingsWithContext(findings) {
54
+ return findings.map((finding) => {
55
+ const classification = classifyFileContext(finding.filePath);
56
+ return {
57
+ ...finding,
58
+ context: classification.context,
59
+ contextReason: classification.contextReason
60
+ };
61
+ });
62
+ }
63
+ function applyContextTuningToFindings(findings, contextTuning) {
64
+ if (contextTuning === "off") {
65
+ return findings;
66
+ }
67
+ return findings.map((finding) => applyContextTuning(finding));
68
+ }
50
69
  function normalizeCategories(categories) {
51
70
  return new Set((categories ?? []).map((category) => category.trim()).filter(Boolean));
52
71
  }
@@ -59,4 +78,29 @@ function sortFindings(findings) {
59
78
  return (a.line ?? 0) - (b.line ?? 0) || a.ruleId.localeCompare(b.ruleId);
60
79
  });
61
80
  }
81
+ function extractMiddlewareSignals(files) {
82
+ return files.filter(isMiddlewareFile).map((file) => ({
83
+ filePath: file.path,
84
+ hasAuthSignal: hasMiddlewareAuthSignal(file.content),
85
+ hasRateLimitSignal: hasMiddlewareRateLimitSignal(file.content),
86
+ matchers: extractMiddlewareMatchers(file.content)
87
+ }));
88
+ }
89
+ function isMiddlewareFile(file) {
90
+ return /^(?:src\/)?middleware\.[tj]s$/.test(file.path);
91
+ }
92
+ function hasMiddlewareAuthSignal(content) {
93
+ return /\b(auth|withAuth|requireAuth|currentUser|getServerSession|clerk|verifyToken|session|isAdmin|role|permission)\b|jwt\.verify/i.test(content);
94
+ }
95
+ function hasMiddlewareRateLimitSignal(content) {
96
+ return /\b(rateLimit|rate-limit|ratelimit|limiter|checkRateLimit|applyRateLimit|upstash|redis|slowDown|throttle)\b|\b429\b|too many requests/i.test(content);
97
+ }
98
+ function extractMiddlewareMatchers(content) {
99
+ const matcherProperty = /matcher\s*:\s*(\[[^\]]+\]|["'`][^"'`]+["'`])/s.exec(content);
100
+ if (!matcherProperty) {
101
+ return [];
102
+ }
103
+ const matcherValue = matcherProperty[1] ?? "";
104
+ return [...matcherValue.matchAll(/["'`]([^"'`]+)["'`]/g)].map((match) => match[1] ?? "").filter(Boolean);
105
+ }
62
106
  //# sourceMappingURL=scanner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAkB,EAAE,UAAuB,EAAE;IAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE;QACzC,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7G,MAAM,OAAO,GAAgB;QAC3B,UAAU;QACV,QAAQ;QACR,KAAK;QACL,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,WAAW,EAAE,SAAS,CAAC,WAAW;KACnC,CAAC;IACF,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAE9D,OAAO;QACL,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,OAAO,EAAE,iBAAiB,CAAC,QAAQ,CAAC;QACpC,QAAQ;QACR,QAAQ,EAAE;YACR,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;YAC5C,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAClC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,OAAO;SAC5C;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,UAAkB;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEtC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,oCAAoC,UAAU,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,KAAa,EAAE,OAAoB;IACzD,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAqB;IAChD,OAAO,IAAI,GAAG,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACxF,CAAC;AAED,SAAS,YAAY,CAAC,QAAmB;IACvC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,WAAW,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export type Severity = "HIGH" | "MEDIUM" | "LOW" | "INFO";
2
2
  export type Confidence = "HIGH" | "MEDIUM" | "LOW";
3
3
  export type RiskLevel = "excellent" | "good" | "medium" | "high" | "critical";
4
+ export type FindingContext = "app-code" | "api-code" | "test-code" | "example-code" | "docs-code" | "github-actions" | "release-tooling" | "cli-tooling" | "generated-code" | "template-code" | "unknown";
4
5
  export type ProjectInfo = {
5
6
  name?: string;
6
7
  framework: "nextjs" | "react" | "node" | "unknown";
@@ -13,8 +14,13 @@ export type Finding = {
13
14
  title: string;
14
15
  severity: Severity;
15
16
  confidence: Confidence;
17
+ originalSeverity?: Severity;
18
+ originalConfidence?: Confidence;
19
+ contextAdjustmentReason?: string;
16
20
  category: string;
17
21
  filePath: string;
22
+ context?: FindingContext;
23
+ contextReason?: string;
18
24
  line?: number;
19
25
  column?: number;
20
26
  evidence?: string;
@@ -52,12 +58,19 @@ export type ScanContext = {
52
58
  rootPath: string;
53
59
  files: SourceFile[];
54
60
  project: ProjectInfo;
61
+ middleware?: MiddlewareSignal[];
55
62
  packageJson?: {
56
63
  name?: string;
57
64
  dependencies: Record<string, string>;
58
65
  devDependencies: Record<string, string>;
59
66
  };
60
67
  };
68
+ export type MiddlewareSignal = {
69
+ filePath: string;
70
+ hasAuthSignal: boolean;
71
+ hasRateLimitSignal: boolean;
72
+ matchers: string[];
73
+ };
61
74
  export type Rule = {
62
75
  id: string;
63
76
  title: string;
@@ -68,6 +81,7 @@ export type Rule = {
68
81
  };
69
82
  export type ScanOptions = {
70
83
  categories?: string[];
84
+ contextTuning?: "standard" | "off";
71
85
  excludePaths?: string[];
72
86
  rules?: Rule[];
73
87
  toolVersion?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-secure-check/core",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "Core scanning engine for next-secure-check",
5
5
  "keywords": [
6
6
  "nextjs",