| import path from "node:path"; | |
| export function isPathInside(basePath: string, candidatePath: string): boolean { | |
| const base = path.resolve(basePath); | |
| const candidate = path.resolve(candidatePath); | |
| const rel = path.relative(base, candidate); | |
| return rel === "" || (!rel.startsWith(`..${path.sep}`) && rel !== ".." && !path.isAbsolute(rel)); | |
| } | |
| export function extensionUsesSkippedScannerPath(entry: string): boolean { | |
| const segments = entry.split(/[\\/]+/).filter(Boolean); | |
| return segments.some( | |
| (segment) => | |
| segment === "node_modules" || | |
| (segment.startsWith(".") && segment !== "." && segment !== ".."), | |
| ); | |
| } | |