UNPKG

deprecopilot

Version:

Automated dependency management with AI-powered codemods

58 lines (57 loc) 1.94 kB
import { existsSync } from 'fs'; import { readFile } from 'fs/promises'; export function detectPackageManager() { if (existsSync('pnpm-lock.yaml')) return 'pnpm'; if (existsSync('yarn.lock')) return 'yarn'; if (existsSync('package-lock.json')) return 'npm'; return 'npm'; } export async function getPackageJson() { const pkgRaw = await readFile('package.json', 'utf-8'); return JSON.parse(pkgRaw); } export async function getCurrentVersion(pkgName) { const pkg = await getPackageJson(); for (const depType of ['dependencies', 'devDependencies', 'peerDependencies']) { if (pkg[depType] && pkg[depType][pkgName]) return pkg[depType][pkgName].replace(/^[^\d]*/, ''); } return null; } export function stubDetectBreaking(pkgName, from, to) { if (!from || !to) return []; const parse = (v) => { const m = v.match(/(\d+)\.(\d+)\.(\d+)/); if (!m) return { major: 0, minor: 0, patch: 0 }; return { major: +m[1], minor: +m[2], patch: +m[3] }; }; const a = parse(from); const b = parse(to); if (a.major !== b.major) return [`Detected major upgrade for ${pkgName}: ${from}${to}`]; return []; } export async function findSourceFilesUsing(pkgName) { // Simple stub: return all .js/.ts files in src/ (real impl: AST scan for imports) const { readdir, stat } = await import('fs/promises'); async function walk(dir) { let files = []; for (const entry of await readdir(dir)) { const full = dir + '/' + entry; const s = await stat(full); if (s.isDirectory()) files = files.concat(await walk(full)); else if (full.endsWith('.js') || full.endsWith('.ts')) files.push(full); } return files; } if (!existsSync('src')) return []; return walk('src'); }