@reliabilityworks/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.
- package/dist/frameworks.d.ts.map +1 -1
- package/dist/frameworks.js +14 -0
- package/dist/frameworks.js.map +1 -1
- package/dist/scan.d.ts.map +1 -1
- package/dist/scan.js +36 -17
- package/dist/scan.js.map +1 -1
- package/dist/types.d.ts +2 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/frameworks.ts +16 -0
- package/src/scan.ts +39 -16
- package/src/types.ts +2 -1
- package/test/fixtures/monorepo/apps/api/express-rules.ts +9 -0
- package/test/fixtures/monorepo/apps/astro/astro.config.mjs +1 -0
- package/test/fixtures/monorepo/apps/astro/package.json +7 -0
- package/test/fixtures/monorepo/apps/astro/src/pages/index.astro +9 -0
- package/test/fixtures/monorepo/apps/expo/app.json +5 -0
- package/test/fixtures/monorepo/apps/expo/package.json +7 -0
- package/test/fixtures/monorepo/apps/expo/src.ts +1 -0
- package/test/fixtures/monorepo/apps/kit/vite.config.js +5 -0
- package/test/fixtures/monorepo/apps/rn/Info.plist +10 -0
- package/test/fixtures/monorepo/apps/rn/android/app/AndroidManifest.xml +3 -0
- package/test/fixtures/monorepo/apps/rn/package.json +7 -0
- package/test/fixtures/monorepo/apps/web/Info.plist +10 -0
- package/test/fixtures/monorepo/apps/web/android/app/AndroidManifest.xml +3 -0
- package/test/fixtures/monorepo/apps/web/decoy.astro +5 -0
- package/test/fixtures/monorepo/apps/web/next.config.js +28 -0
- package/test/fixtures/monorepo/apps/web/public/app.js.map +1 -0
- package/test/fixtures/monorepo/apps/web/public/test.pem +1 -0
- package/test/fixtures/monorepo/apps/web/src/decoy-rn.ts +1 -0
- package/test/fixtures/monorepo/apps/web/src/next-rules.ts +49 -0
- package/test/frameworksWorkspace.test.js +3 -0
- package/test/nextjsRulesetCoverage.test.js +29 -0
package/dist/frameworks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frameworks.d.ts","sourceRoot":"","sources":["../src/frameworks.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,SAAS,CAAA;AAkF9D,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"frameworks.d.ts","sourceRoot":"","sources":["../src/frameworks.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,SAAS,CAAA;AAkF9D,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA6ErF;AAED,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAoBlF;AAED,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA4BhG"}
|
package/dist/frameworks.js
CHANGED
|
@@ -112,6 +112,18 @@ async function detectFrameworks(rootDir) {
|
|
|
112
112
|
pushIf('file: svelte.config.js', await hasFile(rootDir, 'svelte.config.js'), kitEvidence);
|
|
113
113
|
pushIf('file: svelte.config.ts', await hasFile(rootDir, 'svelte.config.ts'), kitEvidence);
|
|
114
114
|
pushIf('dir: src/routes/', await hasDir(rootDir, node_path_1.default.join('src', 'routes')), kitEvidence);
|
|
115
|
+
const astroEvidence = [];
|
|
116
|
+
pushIf('dependency: astro', packageHasDep(pkg, 'astro'), astroEvidence);
|
|
117
|
+
pushIf('dir: src/pages/', await hasDir(rootDir, node_path_1.default.join('src', 'pages')), astroEvidence);
|
|
118
|
+
const astroConfigFiles = [
|
|
119
|
+
'astro.config.mjs',
|
|
120
|
+
'astro.config.js',
|
|
121
|
+
'astro.config.cjs',
|
|
122
|
+
'astro.config.ts',
|
|
123
|
+
];
|
|
124
|
+
for (const f of astroConfigFiles) {
|
|
125
|
+
pushIf(`file: ${f}`, await hasFile(rootDir, f), astroEvidence);
|
|
126
|
+
}
|
|
115
127
|
const frameworks = [];
|
|
116
128
|
if (hasNextDep || hasNextEnv)
|
|
117
129
|
frameworks.push(makeDetection('nextjs', nextEvidence));
|
|
@@ -125,6 +137,8 @@ async function detectFrameworks(rootDir) {
|
|
|
125
137
|
frameworks.push(makeDetection('express', expressEvidence));
|
|
126
138
|
if (hasSvelteKitDep)
|
|
127
139
|
frameworks.push(makeDetection('sveltekit', kitEvidence));
|
|
140
|
+
if (astroEvidence.length > 0)
|
|
141
|
+
frameworks.push(makeDetection('astro', astroEvidence));
|
|
128
142
|
sortFrameworks(frameworks);
|
|
129
143
|
return frameworks;
|
|
130
144
|
}
|
package/dist/frameworks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frameworks.js","sourceRoot":"","sources":["../src/frameworks.ts"],"names":[],"mappings":";;;;;AAwFA,
|
|
1
|
+
{"version":3,"file":"frameworks.js","sourceRoot":"","sources":["../src/frameworks.ts"],"names":[],"mappings":"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"}
|
package/dist/scan.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAIV,WAAW,EACX,UAAU,EACV,QAAQ,EACR,YAAY,EAEb,MAAM,SAAS,CAAA;AAiBhB,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAA;AAE5C,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,QAAQ,CAWpE;
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAIV,WAAW,EACX,UAAU,EACV,QAAQ,EACR,YAAY,EAEb,MAAM,SAAS,CAAA;AAiBhB,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAA;AAE5C,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,QAAQ,CAWpE;AAwPD,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAuG3E"}
|
package/dist/scan.js
CHANGED
|
@@ -93,24 +93,39 @@ const ignoreEntrySchema = zod_1.z.union([
|
|
|
93
93
|
const configSchema = zod_1.z.object({
|
|
94
94
|
ignore: zod_1.z.array(ignoreEntrySchema).optional(),
|
|
95
95
|
});
|
|
96
|
+
function resolveConfigPath(rootDir, candidate) {
|
|
97
|
+
if (!candidate)
|
|
98
|
+
return candidate;
|
|
99
|
+
return node_path_1.default.isAbsolute(candidate) ? candidate : node_path_1.default.join(rootDir, candidate);
|
|
100
|
+
}
|
|
101
|
+
async function loadConfigFromCandidates(candidates) {
|
|
102
|
+
for (const candidate of candidates) {
|
|
103
|
+
if (!(await fileExists(candidate)))
|
|
104
|
+
continue;
|
|
105
|
+
const raw = await promises_1.default.readFile(candidate, 'utf8');
|
|
106
|
+
const parsed = yaml_1.default.parse(raw);
|
|
107
|
+
const validated = configSchema.safeParse(parsed);
|
|
108
|
+
if (!validated.success) {
|
|
109
|
+
throw new Error(`Invalid config at ${candidate}`);
|
|
110
|
+
}
|
|
111
|
+
return validated.data;
|
|
112
|
+
}
|
|
113
|
+
return {};
|
|
114
|
+
}
|
|
96
115
|
function loadConfig(configRootDir, configPath) {
|
|
97
116
|
const candidates = configPath
|
|
98
|
-
? [configPath]
|
|
117
|
+
? [resolveConfigPath(configRootDir, configPath)]
|
|
99
118
|
: [node_path_1.default.join(configRootDir, '.vibesec.yaml'), node_path_1.default.join(configRootDir, '.vibesec.yml')];
|
|
100
|
-
return (
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
return validated.data;
|
|
111
|
-
}
|
|
112
|
-
return {};
|
|
113
|
-
})();
|
|
119
|
+
return loadConfigFromCandidates(candidates);
|
|
120
|
+
}
|
|
121
|
+
function loadBaseline(configRootDir, baselinePath) {
|
|
122
|
+
const candidates = baselinePath
|
|
123
|
+
? [resolveConfigPath(configRootDir, baselinePath)]
|
|
124
|
+
: [
|
|
125
|
+
node_path_1.default.join(configRootDir, '.vibesec.baseline.yaml'),
|
|
126
|
+
node_path_1.default.join(configRootDir, '.vibesec.baseline.yml'),
|
|
127
|
+
];
|
|
128
|
+
return loadConfigFromCandidates(candidates);
|
|
114
129
|
}
|
|
115
130
|
const ruleSchema = zod_1.z.object({
|
|
116
131
|
id: zod_1.z.string().min(1),
|
|
@@ -232,6 +247,10 @@ async function scanProject(options) {
|
|
|
232
247
|
const pathBaseDir = node_path_1.default.resolve(options.pathBaseDir ?? scanDir);
|
|
233
248
|
const maxFileSizeBytes = options.maxFileSizeBytes ?? DEFAULT_MAX_FILE_SIZE_BYTES;
|
|
234
249
|
const config = await loadConfig(configRootDir, options.configPath);
|
|
250
|
+
const baseline = await loadBaseline(configRootDir, options.baselinePath);
|
|
251
|
+
const mergedConfig = {
|
|
252
|
+
ignore: [...(config.ignore ?? []), ...(baseline.ignore ?? [])],
|
|
253
|
+
};
|
|
235
254
|
const additionalRules = options.additionalRules ?? [];
|
|
236
255
|
const rules = [
|
|
237
256
|
...builtinRules_1.BUILTIN_RULES,
|
|
@@ -256,7 +275,7 @@ async function scanProject(options) {
|
|
|
256
275
|
location: { path: toBasePath(relativePath), startLine: 1, startColumn: 1 },
|
|
257
276
|
message: rule.matcher.message,
|
|
258
277
|
});
|
|
259
|
-
if (isIgnored(
|
|
278
|
+
if (isIgnored(mergedConfig, finding)) {
|
|
260
279
|
ignoredFindings += 1;
|
|
261
280
|
continue;
|
|
262
281
|
}
|
|
@@ -296,7 +315,7 @@ async function scanProject(options) {
|
|
|
296
315
|
matchText: match[0],
|
|
297
316
|
lineText,
|
|
298
317
|
});
|
|
299
|
-
if (isIgnored(
|
|
318
|
+
if (isIgnored(mergedConfig, finding)) {
|
|
300
319
|
ignoredFindings += 1;
|
|
301
320
|
continue;
|
|
302
321
|
}
|
package/dist/scan.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":";;;;;AAuCA,gDAWC;AAwPD,kCAuGC;AAjZD,8DAAgC;AAChC,gEAAiC;AACjC,0DAA4B;AAE5B,0DAA0B;AAC1B,0DAAiC;AACjC,6BAAuB;AACvB,gDAAuB;AAEvB,iDAA8C;AAC9C,6CAA+C;AAY/C,MAAM,eAAe,GAAG;IACtB,YAAY;IACZ,oBAAoB;IACpB,YAAY;IACZ,aAAa;IACb,gBAAgB;IAChB,aAAa;IACb,cAAc;IACd,cAAc;IACd,aAAa;IACb,aAAa;CACd,CAAA;AAED,MAAM,2BAA2B,GAAG,IAAI,GAAG,IAAI,CAAA;AAI/C,SAAgB,kBAAkB,CAAC,IAAuB;IACxD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,UAAU;YACb,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;QAC1B,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;QAC1B,KAAK,QAAQ;YACX,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;QAC1B,KAAK,KAAK;YACR,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;IAC5B,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,kBAAE;SACN,IAAI,CAAC,CAAC,CAAC;SACP,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;SAChB,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;AACvB,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,qBAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAChE,CAAC;AAED,SAAS,cAAc,CAAC,MAAc;IACpC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;IAC1B,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,eAAe,CACtB,IAAY,EACZ,UAAkB;IAMlB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;IAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACnC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAA;IAC/B,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAA;IAEzD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IAEhD,OAAO;QACL,UAAU;QACV,YAAY,EAAE,YAAY,GAAG,CAAC;QAC9B,QAAQ;KACT,CAAA;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,IAK5B;IACC,MAAM,QAAQ,GAAG;QACf,QAAQ,IAAI,CAAC,MAAM,EAAE;QACrB,QAAQ,IAAI,CAAC,YAAY,EAAE;QAC3B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS;QACtD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS;KAC3D;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,iBAAiB,GAAG,OAAC,CAAC,KAAK,CAAC;IAChC,OAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,KAAK,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;KAC7C,CAAC;IACF,OAAC,CAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC1B,CAAC;CACH,CAAC,CAAA;AAEF,MAAM,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5B,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAA;AAEF,SAAS,iBAAiB,CAAC,OAAe,EAAE,SAAiB;IAC3D,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAA;IAChC,OAAO,mBAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;AAC/E,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,UAAoB;IAC1D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;YAAE,SAAQ;QAC5C,MAAM,GAAG,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,cAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC9B,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAChD,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,qBAAqB,SAAS,EAAE,CAAC,CAAA;QACnD,CAAC;QACD,OAAO,SAAS,CAAC,IAAI,CAAA;IACvB,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC;AAED,SAAS,UAAU,CAAC,aAAqB,EAAE,UAAmB;IAC5D,MAAM,UAAU,GAAG,UAAU;QAC3B,CAAC,CAAC,CAAC,iBAAiB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC,mBAAI,CAAC,IAAI,CAAC,aAAa,EAAE,eAAe,CAAC,EAAE,mBAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAA;IAEzF,OAAO,wBAAwB,CAAC,UAAU,CAAC,CAAA;AAC7C,CAAC;AAED,SAAS,YAAY,CAAC,aAAqB,EAAE,YAAqB;IAChE,MAAM,UAAU,GAAG,YAAY;QAC7B,CAAC,CAAC,CAAC,iBAAiB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAClD,CAAC,CAAC;YACE,mBAAI,CAAC,IAAI,CAAC,aAAa,EAAE,wBAAwB,CAAC;YAClD,mBAAI,CAAC,IAAI,CAAC,aAAa,EAAE,uBAAuB,CAAC;SAClD,CAAA;IAEL,OAAO,wBAAwB,CAAC,UAAU,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,GAAoB,OAAC,CAAC,MAAM,CAAC;IAC3C,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,QAAQ,EAAE,OAAC,CAAC,KAAK,CAAC;QAChB,OAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QACrB,OAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACjB,OAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACnB,OAAC,CAAC,OAAO,CAAC,KAAK,CAAC;KACjB,CAAC;IACF,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,OAAC,CAAC,KAAK,CAAC;QACf,OAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,eAAe,CAAC;YAChC,KAAK,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACxC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SAC3B,CAAC;QACF,OAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,OAAO,CAAC;YACxB,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5C,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC5B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SAC3B,CAAC;KACH,CAAC;CACH,CAAC,CAAA;AAEF,KAAK,UAAU,eAAe,CAAC,aAAqB,EAAE,cAAuB;IAC3E,MAAM,QAAQ,GAAG,cAAc,IAAI,mBAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IAChF,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;QAAE,OAAO,EAAE,CAAA;IAE5C,MAAM,OAAO,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;IACnE,MAAM,SAAS,GAAG,OAAO;SACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAClB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;IAE9F,MAAM,KAAK,GAAW,EAAE,CAAA;IAExB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAC9C,MAAM,GAAG,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAE/C,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC7E,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QAEvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YAC5C,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAA;YACvD,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,SAAS,CAAC,MAAqB,EAAE,OAAgB;IACxD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAA;IAEnC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,WAAW;gBAAE,OAAO,IAAI,CAAA;YACtD,SAAQ;QACV,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM;YAAE,SAAQ;QAE3C,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QACzD,MAAM,WAAW,GAAG,IAAA,mBAAS,EAAC,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAA;QACzD,IAAI,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;IACrD,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,OAAe;IAC7C,OAAO,IAAA,mBAAE,EAAC,MAAM,EAAE;QAChB,GAAG,EAAE,OAAO;QACZ,GAAG,EAAE,IAAI;QACT,SAAS,EAAE,IAAI;QACf,mBAAmB,EAAE,KAAK;QAC1B,MAAM,EAAE,eAAe;KACxB,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,QAAgB,EAAE,QAAgB;IAClE,MAAM,IAAI,GAAG,MAAM,kBAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACpC,IAAI,IAAI,CAAC,IAAI,GAAG,QAAQ;QAAE,OAAO,IAAI,CAAA;IAErC,MAAM,MAAM,GAAG,MAAM,kBAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IAC3C,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACrC,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;QACzC,IAAI,cAAc,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QAEtC,OAAO,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IACpD,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAOpB;IACC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACvD,MAAM,WAAW,GAAG,mBAAmB,CAAC;QACtC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;QACpB,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;QAChC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAA;IAEF,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;QACpB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;QAC1B,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;QACtC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;QAC5B,YAAY,EAAE,QAAQ,CAAC,IAAI;QAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,WAAW;QACX,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAA;AACH,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,MAAM,OAAO,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAC7C,MAAM,aAAa,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,CAAA;IACpE,MAAM,WAAW,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,CAAA;IAChE,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,2BAA2B,CAAA;IAEhF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;IAClE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;IACxE,MAAM,YAAY,GAAkB;QAClC,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;KAC/D,CAAA;IAED,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,EAAE,CAAA;IACrD,MAAM,KAAK,GAAG;QACZ,GAAG,4BAAa;QAChB,GAAG,CAAC,MAAM,eAAe,CAAC,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QACjE,GAAG,eAAe;KACnB,CAAA;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,MAAM,IAAA,6BAAgB,EAAC,OAAO,CAAC,CAAC,CAAA;IAC1E,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAE7C,MAAM,UAAU,GAAG,CAAC,gBAAwB,EAAU,EAAE;QACtD,MAAM,YAAY,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAA;QACzD,MAAM,GAAG,GAAG,mBAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;QACpD,OAAO,CAAC,GAAG,IAAI,gBAAgB,CAAC,CAAC,KAAK,CAAC,mBAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC5D,CAAC,CAAA;IAED,MAAM,QAAQ,GAAc,EAAE,CAAA;IAC9B,IAAI,eAAe,GAAG,CAAC,CAAA;IAEvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YAC1E,KAAK,MAAM,YAAY,IAAI,OAAO,EAAE,CAAC;gBACnC,MAAM,OAAO,GAAG,WAAW,CAAC;oBAC1B,IAAI;oBACJ,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE;oBAC1E,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;iBAC9B,CAAC,CAAA;gBAEF,IAAI,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC;oBACrC,eAAe,IAAI,CAAC,CAAA;oBACpB,SAAQ;gBACV,CAAC;gBAED,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACxB,CAAC;YACD,SAAQ;QACV,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACrE,MAAM,WAAW,GAAG,IAAA,mBAAS,EAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAA;QAEpE,KAAK,MAAM,YAAY,IAAI,KAAK,EAAE,CAAC;YACjC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;gBAAE,SAAQ;YAExC,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;YACjD,IAAI,IAAmB,CAAA;YACvB,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAA;YAC7D,CAAC;YAAC,MAAM,CAAC;gBACP,SAAQ;YACV,CAAC;YACD,IAAI,CAAC,IAAI;gBAAE,SAAQ;YAEnB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACjC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI;gBAAE,SAAQ;YAE3C,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;YACjF,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YAE7C,MAAM,OAAO,GAAG,WAAW,CAAC;gBAC1B,IAAI;gBACJ,QAAQ,EAAE;oBACR,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC;oBAC9B,SAAS,EAAE,UAAU;oBACrB,WAAW,EAAE,YAAY;iBAC1B;gBACD,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;gBAC7B,OAAO;gBACP,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;gBACnB,QAAQ;aACT,CAAC,CAAA;YAEF,IAAI,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC;gBACrC,eAAe,IAAI,CAAC,CAAA;gBACpB,SAAQ;YACV,CAAC;YAED,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,CAAA;IAExD,OAAO;QACL,OAAO,EAAE,OAAO;QAChB,UAAU;QACV,YAAY,EAAE,KAAK,CAAC,MAAM;QAC1B,eAAe;QACf,QAAQ;KACT,CAAA;AACH,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export type Finding = {
|
|
|
19
19
|
fingerprint: string;
|
|
20
20
|
excerpt?: string;
|
|
21
21
|
};
|
|
22
|
-
export type FrameworkId = 'nextjs' | 'react-native' | 'expo' | 'express' | 'sveltekit';
|
|
22
|
+
export type FrameworkId = 'nextjs' | 'react-native' | 'expo' | 'express' | 'sveltekit' | 'astro';
|
|
23
23
|
export type FrameworkDetection = {
|
|
24
24
|
id: FrameworkId;
|
|
25
25
|
confidence: 'high' | 'medium' | 'low';
|
|
@@ -37,6 +37,7 @@ export type ScanOptions = {
|
|
|
37
37
|
pathBaseDir?: string;
|
|
38
38
|
configRootDir?: string;
|
|
39
39
|
configPath?: string;
|
|
40
|
+
baselinePath?: string;
|
|
40
41
|
customRulesDir?: string;
|
|
41
42
|
frameworks?: FrameworkDetection[];
|
|
42
43
|
additionalRules?: Rule[];
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;AAEjE,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,YAAY,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,EAAE,YAAY,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,eAAe,CAAA;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/frameworks.ts
CHANGED
|
@@ -129,6 +129,20 @@ export async function detectFrameworks(rootDir: string): Promise<FrameworkDetect
|
|
|
129
129
|
pushIf('file: svelte.config.ts', await hasFile(rootDir, 'svelte.config.ts'), kitEvidence)
|
|
130
130
|
pushIf('dir: src/routes/', await hasDir(rootDir, path.join('src', 'routes')), kitEvidence)
|
|
131
131
|
|
|
132
|
+
const astroEvidence: string[] = []
|
|
133
|
+
pushIf('dependency: astro', packageHasDep(pkg, 'astro'), astroEvidence)
|
|
134
|
+
pushIf('dir: src/pages/', await hasDir(rootDir, path.join('src', 'pages')), astroEvidence)
|
|
135
|
+
|
|
136
|
+
const astroConfigFiles = [
|
|
137
|
+
'astro.config.mjs',
|
|
138
|
+
'astro.config.js',
|
|
139
|
+
'astro.config.cjs',
|
|
140
|
+
'astro.config.ts',
|
|
141
|
+
]
|
|
142
|
+
for (const f of astroConfigFiles) {
|
|
143
|
+
pushIf(`file: ${f}`, await hasFile(rootDir, f), astroEvidence)
|
|
144
|
+
}
|
|
145
|
+
|
|
132
146
|
const frameworks: FrameworkDetection[] = []
|
|
133
147
|
|
|
134
148
|
if (hasNextDep || hasNextEnv) frameworks.push(makeDetection('nextjs', nextEvidence))
|
|
@@ -144,6 +158,8 @@ export async function detectFrameworks(rootDir: string): Promise<FrameworkDetect
|
|
|
144
158
|
|
|
145
159
|
if (hasSvelteKitDep) frameworks.push(makeDetection('sveltekit', kitEvidence))
|
|
146
160
|
|
|
161
|
+
if (astroEvidence.length > 0) frameworks.push(makeDetection('astro', astroEvidence))
|
|
162
|
+
|
|
147
163
|
sortFrameworks(frameworks)
|
|
148
164
|
|
|
149
165
|
return frameworks
|
package/src/scan.ts
CHANGED
|
@@ -125,25 +125,43 @@ const configSchema = z.object({
|
|
|
125
125
|
ignore: z.array(ignoreEntrySchema).optional(),
|
|
126
126
|
})
|
|
127
127
|
|
|
128
|
+
function resolveConfigPath(rootDir: string, candidate: string): string {
|
|
129
|
+
if (!candidate) return candidate
|
|
130
|
+
return path.isAbsolute(candidate) ? candidate : path.join(rootDir, candidate)
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
async function loadConfigFromCandidates(candidates: string[]): Promise<VibeSecConfig> {
|
|
134
|
+
for (const candidate of candidates) {
|
|
135
|
+
if (!(await fileExists(candidate))) continue
|
|
136
|
+
const raw = await fs.readFile(candidate, 'utf8')
|
|
137
|
+
const parsed = YAML.parse(raw)
|
|
138
|
+
const validated = configSchema.safeParse(parsed)
|
|
139
|
+
if (!validated.success) {
|
|
140
|
+
throw new Error(`Invalid config at ${candidate}`)
|
|
141
|
+
}
|
|
142
|
+
return validated.data
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
return {}
|
|
146
|
+
}
|
|
147
|
+
|
|
128
148
|
function loadConfig(configRootDir: string, configPath?: string): Promise<VibeSecConfig> {
|
|
129
149
|
const candidates = configPath
|
|
130
|
-
? [configPath]
|
|
150
|
+
? [resolveConfigPath(configRootDir, configPath)]
|
|
131
151
|
: [path.join(configRootDir, '.vibesec.yaml'), path.join(configRootDir, '.vibesec.yml')]
|
|
132
152
|
|
|
133
|
-
return (
|
|
134
|
-
|
|
135
|
-
if (!(await fileExists(candidate))) continue
|
|
136
|
-
const raw = await fs.readFile(candidate, 'utf8')
|
|
137
|
-
const parsed = YAML.parse(raw)
|
|
138
|
-
const validated = configSchema.safeParse(parsed)
|
|
139
|
-
if (!validated.success) {
|
|
140
|
-
throw new Error(`Invalid config at ${candidate}`)
|
|
141
|
-
}
|
|
142
|
-
return validated.data
|
|
143
|
-
}
|
|
153
|
+
return loadConfigFromCandidates(candidates)
|
|
154
|
+
}
|
|
144
155
|
|
|
145
|
-
|
|
146
|
-
|
|
156
|
+
function loadBaseline(configRootDir: string, baselinePath?: string): Promise<VibeSecConfig> {
|
|
157
|
+
const candidates = baselinePath
|
|
158
|
+
? [resolveConfigPath(configRootDir, baselinePath)]
|
|
159
|
+
: [
|
|
160
|
+
path.join(configRootDir, '.vibesec.baseline.yaml'),
|
|
161
|
+
path.join(configRootDir, '.vibesec.baseline.yml'),
|
|
162
|
+
]
|
|
163
|
+
|
|
164
|
+
return loadConfigFromCandidates(candidates)
|
|
147
165
|
}
|
|
148
166
|
|
|
149
167
|
const ruleSchema: z.ZodType<Rule> = z.object({
|
|
@@ -285,6 +303,11 @@ export async function scanProject(options: ScanOptions): Promise<ScanResult> {
|
|
|
285
303
|
const maxFileSizeBytes = options.maxFileSizeBytes ?? DEFAULT_MAX_FILE_SIZE_BYTES
|
|
286
304
|
|
|
287
305
|
const config = await loadConfig(configRootDir, options.configPath)
|
|
306
|
+
const baseline = await loadBaseline(configRootDir, options.baselinePath)
|
|
307
|
+
const mergedConfig: VibeSecConfig = {
|
|
308
|
+
ignore: [...(config.ignore ?? []), ...(baseline.ignore ?? [])],
|
|
309
|
+
}
|
|
310
|
+
|
|
288
311
|
const additionalRules = options.additionalRules ?? []
|
|
289
312
|
const rules = [
|
|
290
313
|
...BUILTIN_RULES,
|
|
@@ -314,7 +337,7 @@ export async function scanProject(options: ScanOptions): Promise<ScanResult> {
|
|
|
314
337
|
message: rule.matcher.message,
|
|
315
338
|
})
|
|
316
339
|
|
|
317
|
-
if (isIgnored(
|
|
340
|
+
if (isIgnored(mergedConfig, finding)) {
|
|
318
341
|
ignoredFindings += 1
|
|
319
342
|
continue
|
|
320
343
|
}
|
|
@@ -358,7 +381,7 @@ export async function scanProject(options: ScanOptions): Promise<ScanResult> {
|
|
|
358
381
|
lineText,
|
|
359
382
|
})
|
|
360
383
|
|
|
361
|
-
if (isIgnored(
|
|
384
|
+
if (isIgnored(mergedConfig, finding)) {
|
|
362
385
|
ignoredFindings += 1
|
|
363
386
|
continue
|
|
364
387
|
}
|
package/src/types.ts
CHANGED
|
@@ -23,7 +23,7 @@ export type Finding = {
|
|
|
23
23
|
excerpt?: string
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
export type FrameworkId = 'nextjs' | 'react-native' | 'expo' | 'express' | 'sveltekit'
|
|
26
|
+
export type FrameworkId = 'nextjs' | 'react-native' | 'expo' | 'express' | 'sveltekit' | 'astro'
|
|
27
27
|
|
|
28
28
|
export type FrameworkDetection = {
|
|
29
29
|
id: FrameworkId
|
|
@@ -44,6 +44,7 @@ export type ScanOptions = {
|
|
|
44
44
|
pathBaseDir?: string
|
|
45
45
|
configRootDir?: string
|
|
46
46
|
configPath?: string
|
|
47
|
+
baselinePath?: string
|
|
47
48
|
customRulesDir?: string
|
|
48
49
|
frameworks?: FrameworkDetection[]
|
|
49
50
|
additionalRules?: Rule[]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default {}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const fixture = "AsyncStorage.setItem('auth_token', 'not-a-real-token')"
|
|
@@ -1,3 +1,31 @@
|
|
|
1
1
|
module.exports = {
|
|
2
2
|
productionBrowserSourceMaps: true,
|
|
3
|
+
poweredByHeader: true,
|
|
4
|
+
reactStrictMode: false,
|
|
5
|
+
compress: false,
|
|
6
|
+
assetPrefix: 'http://cdn.example.com',
|
|
7
|
+
typescript: {
|
|
8
|
+
ignoreBuildErrors: true,
|
|
9
|
+
},
|
|
10
|
+
eslint: {
|
|
11
|
+
ignoreDuringBuilds: true,
|
|
12
|
+
},
|
|
13
|
+
images: {
|
|
14
|
+
dangerouslyAllowSVG: true,
|
|
15
|
+
domains: ['*'],
|
|
16
|
+
remotePatterns: [{ protocol: 'http', hostname: '**' }],
|
|
17
|
+
},
|
|
18
|
+
async headers() {
|
|
19
|
+
return [
|
|
20
|
+
{
|
|
21
|
+
source: '/api/:path*',
|
|
22
|
+
headers: [
|
|
23
|
+
{ key: 'Access-Control-Allow-Origin', value: '*' },
|
|
24
|
+
{ key: 'Access-Control-Allow-Credentials', value: 'true' },
|
|
25
|
+
{ key: 'Access-Control-Allow-Headers', value: '*' },
|
|
26
|
+
{ key: 'Access-Control-Allow-Methods', value: '*' },
|
|
27
|
+
],
|
|
28
|
+
},
|
|
29
|
+
]
|
|
30
|
+
},
|
|
3
31
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
not-a-real-key
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const fixture = "AsyncStorage.setItem('auth_token', 'not-a-real-token')"
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export const nextRulesFixture = {
|
|
2
|
+
revalidate: 0,
|
|
3
|
+
publicSecret: process.env.NEXT_PUBLIC_API_SECRET,
|
|
4
|
+
publicToken: process.env.NEXT_PUBLIC_SESSION_TOKEN,
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export const dangerouslySetInnerHtmlFixture =
|
|
8
|
+
"dangerouslySetInnerHTML={{ __html: '<img src=x onerror=alert(1) />' }}"
|
|
9
|
+
|
|
10
|
+
export const nextjsSecurityFixtures = `
|
|
11
|
+
innerHTML = html
|
|
12
|
+
outerHTML = html
|
|
13
|
+
insertAdjacentHTML('beforeend', html)
|
|
14
|
+
document.write(html)
|
|
15
|
+
document.writeln(html)
|
|
16
|
+
setHeader('Content-Security-Policy', "script-src 'self' 'unsafe-inline'")
|
|
17
|
+
setHeader('Content-Security-Policy', "script-src 'self' 'unsafe-eval'")
|
|
18
|
+
window.postMessage('hello', '*')
|
|
19
|
+
eval(userInput)
|
|
20
|
+
new RegExp(userInput)
|
|
21
|
+
new Function('return 1')()
|
|
22
|
+
setTimeout('alert(1)', 0)
|
|
23
|
+
setInterval('alert(1)', 0)
|
|
24
|
+
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'
|
|
25
|
+
rejectUnauthorized: false
|
|
26
|
+
fetch('http://example.com')
|
|
27
|
+
axios.get('http://example.com')
|
|
28
|
+
exec('id')
|
|
29
|
+
execSync('id')
|
|
30
|
+
spawn('sh', ['-c', 'id'])
|
|
31
|
+
spawnSync('sh', ['-c', 'id'])
|
|
32
|
+
fork('worker.js')
|
|
33
|
+
crypto.createHash('md5')
|
|
34
|
+
crypto.createHash('sha1')
|
|
35
|
+
Math.random()
|
|
36
|
+
console.log(process.env.SECRET)
|
|
37
|
+
localStorage.setItem('auth_token', token)
|
|
38
|
+
sessionStorage.setItem('api_key', key)
|
|
39
|
+
document.cookie = 'session=abc'
|
|
40
|
+
cookie: { secure: false, httpOnly: false, sameSite: 'none', domain: '.example.com', path: '/' }
|
|
41
|
+
origin: '*'
|
|
42
|
+
res.setHeader('Location', req.query.next)
|
|
43
|
+
redirect(searchParams.get('next'))
|
|
44
|
+
debug: true
|
|
45
|
+
yaml.load(userInput)
|
|
46
|
+
vm.runInThisContext(code)
|
|
47
|
+
new vm.Script(code)
|
|
48
|
+
JSON.parse(req.body)
|
|
49
|
+
`
|
|
@@ -12,4 +12,7 @@ test('detectFrameworksInWorkspace finds nested frameworks', async () => {
|
|
|
12
12
|
assert.ok(ids.includes('nextjs'))
|
|
13
13
|
assert.ok(ids.includes('express'))
|
|
14
14
|
assert.ok(ids.includes('sveltekit'))
|
|
15
|
+
assert.ok(ids.includes('astro'))
|
|
16
|
+
assert.ok(ids.includes('react-native'))
|
|
17
|
+
assert.ok(ids.includes('expo'))
|
|
15
18
|
})
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const assert = require('node:assert/strict')
|
|
2
|
+
const fs = require('node:fs/promises')
|
|
3
|
+
const path = require('node:path')
|
|
4
|
+
const test = require('node:test')
|
|
5
|
+
|
|
6
|
+
const { scanProject } = require('../dist/index.js')
|
|
7
|
+
|
|
8
|
+
test('nextjs ruleset has fixture coverage', async () => {
|
|
9
|
+
const fixtureRoot = path.join(__dirname, 'fixtures', 'monorepo', 'apps', 'web')
|
|
10
|
+
const rulesPath = path.join(__dirname, '..', '..', 'rulesets', 'nextjs', 'rules.json')
|
|
11
|
+
|
|
12
|
+
const raw = await fs.readFile(rulesPath, 'utf8')
|
|
13
|
+
const rules = JSON.parse(raw)
|
|
14
|
+
|
|
15
|
+
assert.ok(Array.isArray(rules))
|
|
16
|
+
assert.ok(rules.length >= 60, `Expected at least 60 nextjs rules, got ${rules.length}`)
|
|
17
|
+
|
|
18
|
+
const expectedIds = rules.map((r) => r.id)
|
|
19
|
+
const result = await scanProject({
|
|
20
|
+
rootDir: fixtureRoot,
|
|
21
|
+
pathBaseDir: fixtureRoot,
|
|
22
|
+
additionalRules: rules,
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
const foundIds = new Set(result.findings.map((finding) => finding.ruleId))
|
|
26
|
+
const missing = expectedIds.filter((id) => !foundIds.has(id))
|
|
27
|
+
|
|
28
|
+
assert.equal(missing.length, 0, `Missing nextjs fixture coverage for: ${missing.join(', ')}`)
|
|
29
|
+
})
|