UNPKG

epd

Version:

Enhanced peer dependency resolution for npm, yarn, and pnpm

35 lines 1.42 kB
import { fetchPackageVersions } from './registry.js'; export async function smartResolve(conflicts, strategy = 'smart') { const resolutions = []; for (const [pkg, versions] of Object.entries(conflicts)) { const available = await fetchPackageVersions(pkg); let resolved; let resolutionStrategy; if (strategy === 'stable') { resolved = versions.find(v => !v.includes('beta') && !v.includes('alpha')) || versions[0]; resolutionStrategy = 'stability'; } else { // Smart: prefer latest stable that satisfies most requirements resolved = available.find(v => versions.some(req => satisfiesRange(v, req))) || versions[0]; resolutionStrategy = 'compatibility'; } resolutions.push({ package: pkg, resolvedVersion: resolved, strategy: resolutionStrategy, confidence: calculateConfidence(versions, resolved) }); } return resolutions; } function satisfiesRange(version, range) { // Simplified semver check const cleanVersion = version.replace(/[^\d\.]/g, ''); const cleanRange = range.replace(/[^\d\.]/g, ''); return cleanVersion.startsWith(cleanRange.split('.')[0]); } function calculateConfidence(versions, resolved) { return versions.includes(resolved) ? 0.9 : 0.6; } //# sourceMappingURL=smart-resolver.js.map