shadowaudit
Advanced tools
| import { Route } from '../types'; | ||
| /** | ||
| * Parse a NestJS TypeScript source string and return the routes detected in it. | ||
| * | ||
| * NestJS uses a two-level routing system: | ||
| * 1. @Controller('prefix') — sets a path prefix for all routes in the class | ||
| * 2. @Get('/path'), @Post('/path'), etc. — individual route handlers | ||
| * | ||
| * The full route path = controller prefix + method path. | ||
| * | ||
| * Auth detection: | ||
| * - @UseGuards on the controller class → all methods have auth | ||
| * - @UseGuards on the method → that method has auth | ||
| * - @Public() on the method → overrides controller-level guards (no auth) | ||
| */ | ||
| export declare function parseRoutesFromNestJS(code: string, filename: string, authPatterns: string[]): Promise<Route[]>; | ||
| /** | ||
| * Recursively scan a directory for NestJS route definitions. | ||
| * | ||
| * Detects @Controller('prefix') + @Get('/path') / @Post('/path') / etc. | ||
| * Combines controller prefix with method path for full route path. | ||
| * Detects @UseGuards for auth, @Public() for public routes. | ||
| * | ||
| * Supports: | ||
| * - Controller-level @UseGuards (applies to all methods) | ||
| * - Method-level @UseGuards (overrides per method) | ||
| * - @Public() decorator (marks route as public, overrides guards) | ||
| * - Express :param syntax (converted to {param} for OpenAPI) | ||
| */ | ||
| export declare function scanNestJS(dir: string, ignore: string[], authPatterns: string[]): Promise<Route[]>; | ||
| export default scanNestJS; | ||
| //# sourceMappingURL=nestjs.d.ts.map |
| {"version":3,"file":"nestjs.d.ts","sourceRoot":"","sources":["../../src/scanners/nestjs.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAiJjC;;;;;;;;;;;;;GAaG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,KAAK,EAAE,CAAC,CAwHlB;AA4BD;;;;;;;;;;;;GAYG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EAAE,EAChB,YAAY,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,KAAK,EAAE,CAAC,CA8ClB;AAED,eAAe,UAAU,CAAC"} |
| "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 __importDefault = (this && this.__importDefault) || function (mod) { | ||
| return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.parseRoutesFromNestJS = parseRoutesFromNestJS; | ||
| exports.scanNestJS = scanNestJS; | ||
| const promises_1 = require("fs/promises"); | ||
| const glob_1 = __importDefault(require("glob")); | ||
| const path = __importStar(require("path")); | ||
| const logger_1 = require("../utils/logger"); | ||
| function glob(pattern, options) { | ||
| return new Promise((resolve, reject) => { | ||
| (0, glob_1.default)(pattern, options, (err, matches) => { | ||
| if (err) | ||
| reject(err); | ||
| else | ||
| resolve(matches ?? []); | ||
| }); | ||
| }); | ||
| } | ||
| /** | ||
| * Hardcoded NestJS auth patterns. | ||
| * NestJS uses Guards for auth — @UseGuards(JwtAuthGuard), @UseGuards(AuthGuard), etc. | ||
| */ | ||
| const HARDCODED_PATTERNS = [ | ||
| '@UseGuards', | ||
| 'JwtAuthGuard', | ||
| 'AuthGuard', | ||
| 'RolesGuard', | ||
| 'PermissionGuard', | ||
| 'JwtStrategy', | ||
| 'AuthService', | ||
| 'accessToken', | ||
| 'isAuthenticated', | ||
| 'Public', | ||
| '@Public()', | ||
| ]; | ||
| const AUTH_WINDOW_BELOW = 5; | ||
| /** | ||
| * Matches NestJS route decorators: | ||
| * | ||
| * @Get('/users') | ||
| * @Post('/users') | ||
| * @Put('/users/:id') | ||
| * @Delete('/users/:id') | ||
| * @Patch('/users/:id') | ||
| * @All('/users') | ||
| * @Head('/users') | ||
| * @Options('/users') | ||
| * | ||
| * Also matches without a path (controller-level prefix only): | ||
| * @Get() | ||
| * | ||
| * Capture groups: | ||
| * 1 — HTTP method (get, post, put, delete, patch, all, head, options) | ||
| * 2 — path string (single or double quoted, or empty if no path) | ||
| */ | ||
| const NESTJS_ROUTE_REGEX = /^(\s*)@(Get|Post|Put|Delete|Patch|All|Head|Options)\s*(?:\(\s*['"](.*?)['"]\s*\))?/; | ||
| /** | ||
| * Matches NestJS controller decorators: | ||
| * | ||
| * @Controller('users') | ||
| * @Controller('api/v1/users') | ||
| * @Controller() | ||
| * | ||
| * Capture groups: | ||
| * 1 — controller path prefix (without leading/trailing slashes) | ||
| */ | ||
| const CONTROLLER_REGEX = /^(\s*)@Controller\s*\(\s*['"]?([^'")\s]*)['"]?\s*\)/; | ||
| /** | ||
| * Matches NestJS Guard decorators on methods or classes: | ||
| * | ||
| * @UseGuards(JwtAuthGuard) | ||
| * @UseGuards(AuthGuard('jwt')) | ||
| * @UseGuards(RolesGuard, JwtAuthGuard) | ||
| */ | ||
| const USE_GUARDS_REGEX = /@UseGuards\s*\(/; | ||
| /** | ||
| * Matches @Public() decorator (NestJS public route marker) | ||
| */ | ||
| const PUBLIC_REGEX = /@Public\s*\(\s*\)/; | ||
| /** | ||
| * Detects auth on a NestJS route by scanning the decorator line and a few | ||
| * lines above (for @UseGuards on the method) and checking if the controller | ||
| * class has @UseGuards (applies to all methods in the controller). | ||
| */ | ||
| function detectNestJSAuth(lines, decoratorLineIdx, controllerHasGuards, authPatterns) { | ||
| // Check a few lines above AND below the route decorator for method-level | ||
| // @UseGuards and @Public(). In NestJS, decorators are often stacked: | ||
| // @Get('public') | ||
| // @Public() | ||
| // publicRoute() {} | ||
| // | ||
| // @Post('secure') | ||
| // @UseGuards(JwtAuthGuard) | ||
| // secureRoute() {} | ||
| // | ||
| // v0.7.0: Strip import lines to prevent false positives from import | ||
| // statements like `import { JwtAuthGuard } from './jwt-auth.guard'` | ||
| const startIdx = Math.max(0, decoratorLineIdx - 5); | ||
| const endIdx = Math.min(lines.length - 1, decoratorLineIdx + 3); // +3 for stacked decorators below | ||
| const windowLines = []; | ||
| for (let i = startIdx; i <= endIdx; i++) { | ||
| const line = lines[i] ?? ''; | ||
| // Skip import lines — they contain class names that match auth patterns | ||
| // but have nothing to do with per-route auth | ||
| if (line.trim().startsWith('import ')) | ||
| continue; | ||
| windowLines.push(line); | ||
| } | ||
| const windowText = windowLines.join('\n'); | ||
| // Check for @Public() — if present, route is public (no auth) | ||
| if (PUBLIC_REGEX.test(windowText)) { | ||
| return false; | ||
| } | ||
| // Check for @UseGuards on the method | ||
| if (USE_GUARDS_REGEX.test(windowText)) { | ||
| return true; | ||
| } | ||
| // Check user-configured patterns in the window | ||
| for (const p of authPatterns) { | ||
| if (p && windowText.includes(p)) | ||
| return true; | ||
| } | ||
| // Check hardcoded patterns in the window | ||
| for (const p of HARDCODED_PATTERNS) { | ||
| if (windowText.includes(p)) | ||
| return true; | ||
| } | ||
| // If controller has @UseGuards, all methods inherit auth | ||
| // (unless overridden by @Public()) | ||
| if (controllerHasGuards) { | ||
| return true; | ||
| } | ||
| return false; | ||
| } | ||
| /** | ||
| * Parse a NestJS TypeScript source string and return the routes detected in it. | ||
| * | ||
| * NestJS uses a two-level routing system: | ||
| * 1. @Controller('prefix') — sets a path prefix for all routes in the class | ||
| * 2. @Get('/path'), @Post('/path'), etc. — individual route handlers | ||
| * | ||
| * The full route path = controller prefix + method path. | ||
| * | ||
| * Auth detection: | ||
| * - @UseGuards on the controller class → all methods have auth | ||
| * - @UseGuards on the method → that method has auth | ||
| * - @Public() on the method → overrides controller-level guards (no auth) | ||
| */ | ||
| async function parseRoutesFromNestJS(code, filename, authPatterns) { | ||
| const lines = code.split('\n'); | ||
| const routes = []; | ||
| const controllers = []; | ||
| for (let i = 0; i < lines.length; i++) { | ||
| const controllerMatch = lines[i].match(CONTROLLER_REGEX); | ||
| if (!controllerMatch) | ||
| continue; | ||
| // Find the class name — look at the next few lines (decorators may be between) | ||
| let className = 'Unknown'; | ||
| let classLineIdx = -1; | ||
| for (let j = i + 1; j < Math.min(i + 10, lines.length); j++) { | ||
| const classNameMatch = lines[j].match(/export\s+class\s+(\w+)/); | ||
| if (classNameMatch) { | ||
| className = classNameMatch[1]; | ||
| classLineIdx = j; | ||
| break; | ||
| } | ||
| } | ||
| const prefix = controllerMatch[2] || ''; | ||
| // Check if @UseGuards is on the controller — it can be above OR below | ||
| // the @Controller decorator (NestJS allows multiple decorators stacked) | ||
| let hasGuards = false; | ||
| // Check lines above @Controller | ||
| for (let j = Math.max(0, i - 5); j <= i; j++) { | ||
| if (USE_GUARDS_REGEX.test(lines[j])) { | ||
| hasGuards = true; | ||
| break; | ||
| } | ||
| } | ||
| // Also check lines between @Controller and the class definition | ||
| if (!hasGuards && classLineIdx >= 0) { | ||
| for (let j = i + 1; j < classLineIdx; j++) { | ||
| if (USE_GUARDS_REGEX.test(lines[j])) { | ||
| hasGuards = true; | ||
| break; | ||
| } | ||
| } | ||
| } | ||
| // Find the end of the class (next class or end of file) | ||
| // Start searching from the class definition line, not from i+2 | ||
| let endLine = lines.length - 1; | ||
| const searchStart = classLineIdx >= 0 ? classLineIdx + 1 : i + 2; | ||
| for (let j = searchStart; j < lines.length; j++) { | ||
| if (/^export\s+class\s+\w+/.test(lines[j].trim())) { | ||
| endLine = j - 1; | ||
| break; | ||
| } | ||
| } | ||
| controllers.push({ | ||
| name: className, | ||
| prefix, | ||
| hasGuards, | ||
| startLine: i, | ||
| endLine, | ||
| }); | ||
| } | ||
| // Second pass: find route decorators within each controller | ||
| for (const controller of controllers) { | ||
| for (let i = controller.startLine; i <= controller.endLine; i++) { | ||
| const match = lines[i].match(NESTJS_ROUTE_REGEX); | ||
| if (!match) | ||
| continue; | ||
| const method = match[2].toUpperCase(); | ||
| const methodPath = match[3] || ''; // Empty if @Get() with no path | ||
| // Combine controller prefix + method path | ||
| let fullPath = ''; | ||
| if (controller.prefix && methodPath) { | ||
| fullPath = `/${controller.prefix}/${methodPath}`; | ||
| } | ||
| else if (controller.prefix) { | ||
| fullPath = `/${controller.prefix}`; | ||
| } | ||
| else if (methodPath) { | ||
| fullPath = `/${methodPath}`; | ||
| } | ||
| else { | ||
| fullPath = '/'; | ||
| } | ||
| // Normalize: remove double slashes, trailing slash (unless root) | ||
| fullPath = fullPath.replace(/\/+/g, '/'); | ||
| if (fullPath.length > 1 && fullPath.endsWith('/')) { | ||
| fullPath = fullPath.slice(0, -1); | ||
| } | ||
| // Convert Express :param syntax to OpenAPI {param} (NestJS uses Express syntax) | ||
| fullPath = fullPath.replace(/:(\w+)/g, '{$1}'); | ||
| const lineNum = i + 1; | ||
| const hasAuth = detectNestJSAuth(lines, i, controller.hasGuards, authPatterns); | ||
| routes.push({ | ||
| method, | ||
| path: fullPath, | ||
| file: filename, | ||
| line: lineNum, | ||
| hasAuth, | ||
| }); | ||
| } | ||
| } | ||
| // Also handle routes outside of controllers (shouldn't happen in NestJS, but be safe) | ||
| // Skip for now — all NestJS routes must be inside @Controller classes | ||
| return routes; | ||
| } | ||
| function dedupRoutes(routes) { | ||
| const seen = new Set(); | ||
| const result = []; | ||
| for (const r of routes) { | ||
| const key = `${r.method}|${r.path}|${r.file}`; | ||
| if (!seen.has(key)) { | ||
| seen.add(key); | ||
| result.push(r); | ||
| } | ||
| } | ||
| return result; | ||
| } | ||
| function shouldExcludeFile(absPath, ignore) { | ||
| const segments = absPath.split(path.sep); | ||
| for (const ig of ignore) { | ||
| if (segments.includes(ig)) | ||
| return true; | ||
| } | ||
| if (segments.includes('test') || segments.includes('tests')) | ||
| return true; | ||
| if (segments.includes('__tests__')) | ||
| return true; | ||
| const basename = path.basename(absPath); | ||
| if (basename.endsWith('.spec.ts') || basename.endsWith('.test.ts')) | ||
| return true; | ||
| if (basename.endsWith('.e2e-spec.ts')) | ||
| return true; | ||
| return false; | ||
| } | ||
| /** | ||
| * Recursively scan a directory for NestJS route definitions. | ||
| * | ||
| * Detects @Controller('prefix') + @Get('/path') / @Post('/path') / etc. | ||
| * Combines controller prefix with method path for full route path. | ||
| * Detects @UseGuards for auth, @Public() for public routes. | ||
| * | ||
| * Supports: | ||
| * - Controller-level @UseGuards (applies to all methods) | ||
| * - Method-level @UseGuards (overrides per method) | ||
| * - @Public() decorator (marks route as public, overrides guards) | ||
| * - Express :param syntax (converted to {param} for OpenAPI) | ||
| */ | ||
| async function scanNestJS(dir, ignore, authPatterns) { | ||
| const absDir = path.resolve(dir); | ||
| const allRoutes = []; | ||
| let allFiles; | ||
| try { | ||
| allFiles = await glob('**/*.{ts,js}', { | ||
| cwd: absDir, | ||
| absolute: true, | ||
| dot: false, | ||
| nodir: true, | ||
| }); | ||
| } | ||
| catch { | ||
| logger_1.logger.warn(`Could not scan directory: ${absDir}`); | ||
| return []; | ||
| } | ||
| for (const absPath of allFiles) { | ||
| if (shouldExcludeFile(absPath, ignore)) | ||
| continue; | ||
| let content; | ||
| try { | ||
| content = await (0, promises_1.readFile)(absPath, 'utf-8'); | ||
| } | ||
| catch { | ||
| logger_1.logger.warn(`Could not read: ${absPath}`); | ||
| continue; | ||
| } | ||
| // Quick filter: skip files that don't contain @Controller or route decorators | ||
| if (!content.includes('@Controller') && !content.includes('@Get') && !content.includes('@Post')) { | ||
| continue; | ||
| } | ||
| const relPath = path.relative(absDir, absPath).replace(/\\/g, '/'); | ||
| const routes = await parseRoutesFromNestJS(content, relPath, authPatterns); | ||
| allRoutes.push(...routes); | ||
| } | ||
| const deduped = dedupRoutes(allRoutes); | ||
| deduped.sort((a, b) => { | ||
| if (a.file !== b.file) | ||
| return a.file < b.file ? -1 : 1; | ||
| return a.line - b.line; | ||
| }); | ||
| return deduped; | ||
| } | ||
| exports.default = scanNestJS; | ||
| //# sourceMappingURL=nestjs.js.map |
| {"version":3,"file":"nestjs.js","sourceRoot":"","sources":["../../src/scanners/nestjs.ts"],"names":[],"mappings":"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"} |
+16
-1
@@ -65,2 +65,3 @@ #!/usr/bin/env node | ||
| const flask_1 = require("./scanners/flask"); | ||
| const nestjs_1 = require("./scanners/nestjs"); | ||
| const spec_1 = require("./parsers/spec"); | ||
@@ -98,3 +99,12 @@ const comparator_1 = require("./comparator"); | ||
| if (fs.existsSync(pkgJsonPath)) { | ||
| return 'express'; | ||
| try { | ||
| const pkg = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf-8')); | ||
| const deps = { ...pkg.dependencies, ...pkg.devDependencies }; | ||
| if (deps['@nestjs/core']) | ||
| return 'nestjs'; | ||
| return 'express'; | ||
| } | ||
| catch { | ||
| return 'express'; | ||
| } | ||
| } | ||
@@ -230,2 +240,7 @@ const reqPath = path.join(dir, 'requirements.txt'); | ||
| } | ||
| else if (framework === 'nestjs') { | ||
| logger_1.logger.info('Running NestJS route scanner...'); | ||
| scannedRoutes = await (0, nestjs_1.scanNestJS)(config.dir, config.ignore, config.authPatterns); | ||
| logger_1.logger.success(`Found ${scannedRoutes.length} NestJS routes in ${config.dir}`); | ||
| } | ||
| // STEP 2 — Compare against spec (if provided) | ||
@@ -232,0 +247,0 @@ let result; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"action.js","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"action.js","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"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"} |
+23
-2
@@ -48,2 +48,3 @@ #!/usr/bin/env node | ||
| const flask_1 = require("./scanners/flask"); | ||
| const nestjs_1 = require("./scanners/nestjs"); | ||
| const spec_1 = require("./parsers/spec"); | ||
@@ -63,3 +64,3 @@ const comparator_1 = require("./comparator"); | ||
| .option('--fail-on <level>', 'Fail CI pipeline on: critical, high, info') | ||
| .option('--framework <name>', 'Force framework: express, fastapi, django, flask') | ||
| .option('--framework <name>', 'Force framework: express, fastapi, django, flask, nestjs') | ||
| .option('--generate-spec', 'Generate OpenAPI spec from scanned routes (no comparison)') | ||
@@ -86,3 +87,14 @@ .option('--diff', 'Show only new findings since last scan (requires persistent cache)'); | ||
| if (fs.existsSync(pkgJsonPath)) { | ||
| return 'express'; | ||
| try { | ||
| const pkg = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf-8')); | ||
| const deps = { ...pkg.dependencies, ...pkg.devDependencies }; | ||
| if (deps['@nestjs/core']) | ||
| return 'nestjs'; | ||
| if (deps['express']) | ||
| return 'express'; | ||
| return 'express'; // Default for Node.js projects | ||
| } | ||
| catch { | ||
| return 'express'; | ||
| } | ||
| } | ||
@@ -225,2 +237,11 @@ const reqPath = path.join(dir, 'requirements.txt'); | ||
| } | ||
| else if (framework === 'nestjs') { | ||
| logger_1.logger.info('Running NestJS route scanner...'); | ||
| scannedRoutes = await (0, nestjs_1.scanNestJS)(config.dir, config.ignore, config.authPatterns); | ||
| logger_1.logger.success(`Found ${scannedRoutes.length} NestJS routes in ${config.dir}`); | ||
| scannedRoutes.forEach((r) => { | ||
| const authTag = r.hasAuth ? ' [auth]' : ' [no auth]'; | ||
| logger_1.logger.info(` ${r.method} ${r.path} → ${r.file}:${r.line}${authTag}`); | ||
| }); | ||
| } | ||
| // v0.4.0: Auto-spec generation — generate OpenAPI spec from scanned routes | ||
@@ -227,0 +248,0 @@ // v0.5.1: Fix BUG 1 — restore console.log before outputting spec JSON |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yCAAoC;AACpC,uCAAyB;AACzB,2CAA6B;AAC7B,8DAA8D;AAC9D,kDAAyD;AACzD,2CAAwC;AACxC,qCAAsC;AACtC,gDAAiD;AACjD,gDAAiD;AACjD,8CAA+C;AAC/C,4CAA6C;AAC7C,8CAA+C;AAC/C,yCAAyD;AACzD,6CAAkE;AAClE,8CAAkD;AAClD,4CAAiD;AACjD,iCAAkI;AAGlI,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,OAAO,CAAC,sBAAW,CAAC;KACpB,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC;KAC3C,MAAM,CAAC,eAAe,EAAE,mCAAmC,CAAC;KAC5D,MAAM,CAAC,iBAAiB,EAAE,mCAAmC,CAAC;KAC9D,MAAM,CAAC,mBAAmB,EAAE,2CAA2C,CAAC;KACxE,MAAM,CAAC,oBAAoB,EAAE,0DAA0D,CAAC;KACxF,MAAM,CAAC,iBAAiB,EAAE,2DAA2D,CAAC;KACtF,MAAM,CAAC,QAAQ,EAAE,oEAAoE,CAAC,CAAC;AAE1F;;;;;;;;;;;;;;;GAeG;AACH,KAAK,UAAU,eAAe,CAC5B,GAAW;IAEX,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACnD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;YAC7D,IAAI,IAAI,CAAC,cAAc,CAAC;gBAAE,OAAO,QAAQ,CAAC;YAC1C,IAAI,IAAI,CAAC,SAAS,CAAC;gBAAE,OAAO,SAAS,CAAC;YACtC,OAAO,SAAS,CAAC,CAAC,+BAA+B;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IACnD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5D,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,OAAO,SAAS,CAAC;YAC9C,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,OAAO,QAAQ,CAAC;YAC5C,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,OAAO,OAAO,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,sDAAsD;QACxD,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IACvD,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YACnE,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,OAAO,SAAS,CAAC;YAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,OAAO,QAAQ,CAAC;YAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,OAAO,OAAO,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;QACvB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAE/B,6EAA6E;IAC7E,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS;QAAE,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAC1D,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;QAAE,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC7D,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;QAAE,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACnE,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;QAAE,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACnE,oEAAoE;IACpE,gEAAgE;IAChE,wEAAwE;IACxE,yEAAyE;IACzE,IAAI,SAAiB,CAAC;IACtB,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACpC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,sEAAsE;YACtE,oEAAoE;YACpE,SAAS,GAAG,SAAS,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,QAAQ,CAAC;QACvB,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,0EAA0E;IAC1E,0DAA0D;IAC1D,EAAE;IACF,kEAAkE;IAClE,MAAM,iBAAiB,GACrB,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC;IACnL,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC;IACnC,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,MAAM,GAAW,MAAM,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC;IAElD,8EAA8E;IAC9E,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,sBAAsB,sBAAW,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,eAAM,CAAC,IAAI,CACT,yEAAyE,CAC1E,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,yEAAyE;IACzE,kDAAkD;IAClD,MAAM,gBAAgB,GACpB,OAAO,CAAC,SAAS,KAAK,SAAS;QAC7B,CAAC,CAAC,GAAG,SAAS,kBAAkB;QAChC,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,sBAAsB,sBAAW,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAElD,eAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACzC,eAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,IAAI,IAAI,cAAc,EAAE,CAAC,CAAC;IAC5D,eAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,eAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,eAAM,CAAC,IAAI,CAAC,eAAe,gBAAgB,EAAE,CAAC,CAAC;IAE/C,IAAI,aAAa,GAAY,EAAE,CAAC;IAEhC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,eAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACnD,aAAa,GAAG,MAAM,IAAA,qBAAW,EAC/B,MAAM,CAAC,GAAI,EACX,MAAM,CAAC,MAAO,EACd,MAAM,CAAC,YAAa,CACrB,CAAC;QACF,eAAM,CAAC,OAAO,CACZ,SAAS,aAAa,CAAC,MAAM,cAAc,MAAM,CAAC,GAAG,EAAE,CACxD,CAAC;QACF,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1B,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;YACrD,eAAM,CAAC,IAAI,CACT,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,OAAO,EAAE,CAC1D,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QACnC,eAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAChD,aAAa,GAAG,MAAM,IAAA,qBAAW,EAC/B,MAAM,CAAC,GAAI,EACX,MAAM,CAAC,MAAO,EACd,MAAM,CAAC,YAAa,CACrB,CAAC;QACF,eAAM,CAAC,OAAO,CACZ,SAAS,aAAa,CAAC,MAAM,sBAAsB,MAAM,CAAC,GAAG,EAAE,CAChE,CAAC;QACF,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1B,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;YACrD,eAAM,CAAC,IAAI,CACT,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,OAAO,EAAE,CAC1D,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,eAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,aAAa,GAAG,MAAM,IAAA,mBAAU,EAC9B,MAAM,CAAC,GAAI,EACX,MAAM,CAAC,MAAO,EACd,MAAM,CAAC,YAAa,CACrB,CAAC;QACF,eAAM,CAAC,OAAO,CACZ,SAAS,aAAa,CAAC,MAAM,qBAAqB,MAAM,CAAC,GAAG,EAAE,CAC/D,CAAC;QACF,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1B,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;YACrD,eAAM,CAAC,IAAI,CACT,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,OAAO,EAAE,CAC1D,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QACjC,eAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC9C,aAAa,GAAG,MAAM,IAAA,iBAAS,EAC7B,MAAM,CAAC,GAAI,EACX,MAAM,CAAC,MAAO,EACd,MAAM,CAAC,YAAa,CACrB,CAAC;QACF,eAAM,CAAC,OAAO,CACZ,SAAS,aAAa,CAAC,MAAM,oBAAoB,MAAM,CAAC,GAAG,EAAE,CAC9D,CAAC;QACF,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1B,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;YACrD,eAAM,CAAC,IAAI,CACT,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,OAAO,EAAE,CAC1D,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,eAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,aAAa,GAAG,MAAM,IAAA,mBAAU,EAC9B,MAAM,CAAC,GAAI,EACX,MAAM,CAAC,MAAO,EACd,MAAM,CAAC,YAAa,CACrB,CAAC;QACF,eAAM,CAAC,OAAO,CACZ,SAAS,aAAa,CAAC,MAAM,qBAAqB,MAAM,CAAC,GAAG,EAAE,CAC/D,CAAC;QACF,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1B,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;YACrD,eAAM,CAAC,IAAI,CACT,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,OAAO,EAAE,CAC1D,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,sEAAsE;IACtE,8DAA8D;IAC9D,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,eAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,IAAA,mBAAY,EAAC,aAAa,EAAE,2BAA2B,EAAE,sBAAW,CAAC,CAAC;QACnF,uDAAuD;QACvD,OAAO,CAAC,GAAG,GAAG,cAAc,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,2EAA2E;IAC3E,mEAAmE;IACnE,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,eAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,eAAM,CAAC,IAAI,CACT,0EAA0E,CAC3E,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,0EAA0E;IAC1E,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAY,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,gBAAgB,GAAG,MAAM,IAAA,gBAAS,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,IAAA,gCAAmB,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7D,MAAM,MAAM,GAAG,IAAA,0BAAa,EAAC,aAAa,EAAE,gBAAgB,EAAE;QAC5D,YAAY,EAAE,QAAQ,CAAC,QAAQ;QAC/B,gBAAgB,EAAE,QAAQ,CAAC,YAAY;KACxC,CAAC,CAAC;IAEH,sBAAsB;IACtB,IAAI,UAAU,GAAsB,IAAI,CAAC;IACzC,IAAI,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC;IACxC,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,yEAAyE;QACzE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAc,CAAC,CAAC;QAC3D,IAAA,sBAAe,EAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAA,gBAAS,EAAC,SAAS,CAAC,CAAC;QAEnC,MAAM,WAAW,GAAG;YAClB,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG;YACtB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,SAAS;SACV,CAAC;QAEF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,oBAAoB;YACpB,cAAc,GAAG,IAAI,CAAC;YACtB,eAAM,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;QAC7F,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,KAAK,oBAAa,EAAE,CAAC;YAC3C,2BAA2B;YAC3B,eAAM,CAAC,IAAI,CAAC,6BAA6B,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;QAChF,CAAC;aAAM,IACL,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG;YACtC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,EACxC,CAAC;YACD,gCAAgC;YAChC,eAAM,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,wBAAwB;YACxB,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACjD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE;gBAC9F,QAAQ,EAAE,EAAE,CAAC,QAAQ;gBACrB,MAAM,EAAE,EAAE,CAAC,QAAQ,KAAK,UAAU;oBAChC,CAAC,CAAC,gGAAgG;oBAClG,CAAC,CAAC,yFAAyF;aAC9F,CAAC,CAAC,CAAC;YAEJ,UAAU,GAAG,IAAA,kBAAW,EAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;YAC1D,iBAAiB,GAAG,UAAU,CAAC,WAAW,CAAC;YAE3C,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5B,eAAM,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,WAAW,CAAC,MAAM,SAAS,UAAU,CAAC,gBAAgB,CAAC,MAAM,cAAc,UAAU,CAAC,iBAAiB,CAAC,MAAM,YAAY,CAAC,CAAC;YAC5J,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;QAED,+BAA+B;QAC/B,IAAA,gBAAS,EAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACrD,CAAC;IAED,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,eAAM,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IAC5D,eAAM,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IACjE,eAAM,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IACnE,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,2EAA2E;IAC3E,gEAAgE;IAChE,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC/E,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;IACxF,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAEhF,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtD,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;QAC5E,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtE,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;IACD,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpC,+DAA+D;IAC/D,sEAAsE;IACtE,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,GAAG,cAAc,CAAC;IAC/B,CAAC;IAED,wEAAwE;IACxE,IAAI,OAAO,CAAC,IAAI,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,kBAAkB,GAAkB;YACxC,GAAG,MAAM;YACT,QAAQ,EAAE,UAAU,CAAC,WAAW;YAChC,KAAK,EAAE;gBACL,GAAG,MAAM,CAAC,KAAK;gBACf,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,MAAM;gBAC9E,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM;gBACtE,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM;aACvE;SACF,CAAC;QACF,IAAA,oBAAY,EAAC,kBAAkB,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAEnD,uCAAuC;QACvC,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,IAAI,UAAU,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC3C,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACtC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACzF,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,CAAC,IAAI,IAAI,cAAc,EAAE,CAAC;QAC1C,IAAA,oBAAY,EAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;SAAM,CAAC;QACN,IAAA,oBAAY,EAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC;AAED,IAAI,EAAE,CAAC"} |
+1
-1
| { | ||
| "name": "shadowaudit", | ||
| "version": "0.6.1", | ||
| "version": "0.7.0", | ||
| "description": "Static API security scanner — detects undocumented and unauthenticated Express.js routes before they reach production", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
+47
-10
@@ -43,3 +43,3 @@ # shadowaudit | ||
| ```yaml | ||
| - uses: darkmaster0345/shadow-Audit@v0.6.1 | ||
| - uses: darkmaster0345/shadow-Audit@v0.7.0 | ||
| with: | ||
@@ -120,4 +120,5 @@ dir: './src' | ||
| - **FastAPI** ✅ (decorator-based route extraction, `Depends()` auth detection, `include_router` prefix reconciliation) | ||
| - **Django** ✅ (`path()`/`re_path()`/`url()` extraction, DRF router support, `include()` prefix reconciliation, cross-file auth via `views.py`) | ||
| - **Flask** ✅ (`@app.route()` / `@bp.route()` decorator extraction, `methods=` multi-method, `@login_required` auth detection) | ||
| - **Django** ✅ (`path()`/`re_path()`/`url()` extraction, DRF router support, class-based views (ModelViewSet, APIView, generics), `include()` prefix reconciliation, cross-file auth via `views.py`) | ||
| - **Flask** ✅ (`@app.route()` / `@bp.route()` decorator extraction, `methods=` multi-method (list + tuple syntax), `@login_required` auth detection) | ||
| - **NestJS** ✅ (`@Controller()` + `@Get()` / `@Post()` decorator extraction, `@UseGuards()` auth detection, `@Public()` override, controller prefix + method path combination) | ||
@@ -149,2 +150,8 @@ --- | ||
| # Only show NEW findings since last scan (perfect for PRs) | ||
| shadowaudit --dir ./src --spec ./openapi.json --diff | ||
| # Don't have a spec? Generate one from your code | ||
| shadowaudit --dir ./src --framework express --generate-spec > openapi.json | ||
| # Output as JSON (pipe to jq for CI integrations) | ||
@@ -172,6 +179,33 @@ shadowaudit --dir ./src --spec ./openapi.json --format json | jq '.findings | length' | ||
| --fail-on <level> Fail CI pipeline on: critical, high, info (default: "critical") | ||
| --framework <name> Force framework: express, fastapi, django (default: "auto") | ||
| --framework <name> Force framework: express, fastapi, django, flask, nestjs (default: "auto") | ||
| --generate-spec Generate OpenAPI spec from scanned routes (no comparison) | ||
| --diff Show only new findings since last scan (requires --spec) | ||
| -h, --help display help for command | ||
| ``` | ||
| ### `--diff` mode (v0.6.0+) | ||
| Show **only new findings** since the last scan — perfect for PR workflows where you don't want to see the same 50 pre-existing findings on every PR. | ||
| ```bash | ||
| # First run — full scan, cache saved | ||
| shadowaudit --dir ./src --spec ./openapi.json --diff | ||
| # Second run — only NEW findings shown | ||
| shadowaudit --dir ./src --spec ./openapi.json --diff | ||
| ``` | ||
| - Cache stored at `.shadowaudit-cache.json` (auto-added to `.gitignore`) | ||
| - Resolved findings shown as green ✓ section | ||
| - Exit code based on NEW findings only (pre-existing findings don't fail CI) | ||
| - For GitHub Actions: use `actions/cache` to persist `.shadowaudit-cache.json` between runs | ||
| ### `--generate-spec` (v0.4.0+) | ||
| Don't have an OpenAPI spec? Generate one from your code: | ||
| ```bash | ||
| shadowaudit --dir ./src --framework express --generate-spec > openapi.json | ||
| ``` | ||
| ### Exit codes | ||
@@ -244,3 +278,3 @@ | ||
| "tool": "shadowaudit", | ||
| "version": "0.3.0", | ||
| "version": "0.6.1", | ||
| "timestamp": "2026-01-15T12:00:00.000Z", | ||
@@ -283,3 +317,3 @@ "stats": { "total": 7, "documented": 5, "undocumented": 2, "critical": 2, "high": 0, "info": 0 } | ||
| ╔════════════════════════════════╗ | ||
| ║ shadowaudit v0.3.0 ║ | ||
| ║ shadowaudit v0.7.0 ║ | ||
| ║ API Shadow Route Scanner ║ | ||
@@ -408,2 +442,3 @@ ╚════════════════════════════════╝ | ||
| │ ├── comparator.ts # Delta comparator (route diffing + severity scoring) | ||
| │ ├── diff.ts # --diff mode (local cache + new/resolved detection) | ||
| │ ├── types.ts # Shared TypeScript interfaces | ||
@@ -413,3 +448,3 @@ │ ├── scanners/ | ||
| │ │ ├── fastapi.ts # FastAPI route extractor (decorators + include_router) | ||
| │ │ ├── django.ts # Django route extractor (path() + include() + cross-file auth) | ||
| │ │ ├── django.ts # Django route extractor (path() + CBV + cross-file auth) | ||
| │ │ ├── flask.ts # Flask route extractor (@app.route + methods=) | ||
@@ -430,5 +465,6 @@ │ │ └── auth.ts # Auth middleware detector (AST + string-based) | ||
| │ └── logger.ts # Colored console output | ||
| ├── tests/ # 128 tests across 15 files | ||
| ├── tests/ # 139 tests across 16 files | ||
| │ ├── config.test.ts | ||
| │ ├── comparator.test.ts | ||
| │ ├── diff.test.ts | ||
| │ ├── scanners/ | ||
@@ -438,2 +474,3 @@ │ │ ├── express.test.ts | ||
| │ │ ├── django.test.ts | ||
| │ │ ├── django-cbv.test.ts | ||
| │ │ ├── flask.test.ts | ||
@@ -455,3 +492,3 @@ │ │ └── auth.test.ts | ||
| ├── action.yml # GitHub Marketplace Action definition | ||
| ├── ROADMAP.md # v0.6.1 → v1.0.0 roadmap | ||
| ├── ROADMAP.md # v0.7.0 → v1.0.0 roadmap | ||
| ├── CONTRIBUTING.md # How to add framework scanners | ||
@@ -475,3 +512,3 @@ ├── package.json | ||
| # Run tests (128 tests across 15 test files) | ||
| # Run tests (139 tests across 16 test files) | ||
| npm test | ||
@@ -478,0 +515,0 @@ |
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
389355
7.83%84
5%5847
8.1%540
7.36%22
4.76%