UNPKG

vibe-guard

Version:

🛡️ Vibe-Guard Security Scanner - Catch security issues before they catch you!

128 lines 5.43 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Reporter = exports.FileScanner = exports.VibeGuard = void 0; const fs = __importStar(require("fs")); const path = __importStar(require("path")); const scanner_1 = require("./scanner"); const reporter_1 = require("./reporter"); const exposed_secrets_1 = require("./rules/exposed-secrets"); const missing_authentication_1 = require("./rules/missing-authentication"); const open_cors_1 = require("./rules/open-cors"); const hardcoded_sensitive_data_1 = require("./rules/hardcoded-sensitive-data"); const insecure_http_1 = require("./rules/insecure-http"); const sql_injection_1 = require("./rules/sql-injection"); const unvalidated_input_1 = require("./rules/unvalidated-input"); const directory_traversal_1 = require("./rules/directory-traversal"); const insecure_dependencies_1 = require("./rules/insecure-dependencies"); const missing_security_headers_1 = require("./rules/missing-security-headers"); class VibeGuard { constructor() { this.rules = [ new exposed_secrets_1.ExposedSecretsRule(), new missing_authentication_1.MissingAuthenticationRule(), new open_cors_1.OpenCorsRule(), new hardcoded_sensitive_data_1.HardcodedSensitiveDataRule(), new insecure_http_1.InsecureHttpRule(), new sql_injection_1.SqlInjectionRule(), new unvalidated_input_1.UnvalidatedInputRule(), new directory_traversal_1.DirectoryTraversalRule(), new insecure_dependencies_1.InsecureDependenciesRule(), new missing_security_headers_1.MissingSecurityHeadersRule() ]; this.scanner = new scanner_1.FileScanner(); this.reporter = new reporter_1.Reporter(); } async scan(options) { const targetPath = path.resolve(options.target); // Verify target exists if (!fs.existsSync(targetPath)) { throw new Error(`Target path does not exist: ${targetPath}`); } const stats = fs.statSync(targetPath); if (stats.isFile()) { return await this.scanner.scanFile(targetPath, this.rules); } else if (stats.isDirectory()) { return await this.scanner.scanDirectory(targetPath, this.rules); } else { throw new Error(`Target path is neither a file nor a directory: ${targetPath}`); } } formatResults(result, format = 'table') { switch (format) { case 'json': return this.reporter.formatJson(result); case 'table': default: return this.reporter.formatTable(result); } } async scanAndFormat(options) { const result = await this.scan(options); return this.formatResults(result, options.format); } getRules() { return [...this.rules]; } getRuleByName(name) { return this.rules.find(rule => rule.name === name); } getVersion() { try { const packagePath = path.join(__dirname, '..', 'package.json'); const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf-8')); return packageJson.version || '1.0.0'; } catch { return '1.0.0'; } } } exports.VibeGuard = VibeGuard; // Export everything for external use __exportStar(require("./types"), exports); __exportStar(require("./rules"), exports); var scanner_2 = require("./scanner"); Object.defineProperty(exports, "FileScanner", { enumerable: true, get: function () { return scanner_2.FileScanner; } }); var reporter_2 = require("./reporter"); Object.defineProperty(exports, "Reporter", { enumerable: true, get: function () { return reporter_2.Reporter; } }); // Default export exports.default = VibeGuard; //# sourceMappingURL=index.js.map