(version: string, range: string, currentVersion?: string)
| 14 | * @param currentVersion - The dependency's current version, used to resolve workspace:^ and workspace:~ |
| 15 | */ |
| 16 | export function satisfies(version: string, range: string, currentVersion?: string): boolean { |
| 17 | // Handle workspace: protocol — resolve shorthands using currentVersion |
| 18 | if (range.startsWith('workspace:')) { |
| 19 | const cleanRange = range.slice('workspace:'.length); |
| 20 | if (!cleanRange || cleanRange === '*') return true; |
| 21 | if (cleanRange === '^' || cleanRange === '~') { |
| 22 | if (!currentVersion) return true; // can't resolve without current version |
| 23 | const resolved = `${cleanRange}${currentVersion}`; |
| 24 | return verkitSatisfies(version, resolved); |
| 25 | } |
| 26 | return verkitSatisfies(version, cleanRange); |
| 27 | } |
| 28 | // catalog: references can't be range-checked without catalog data, |
| 29 | // so treat them as always satisfied (don't trigger out-of-range bumps) |
| 30 | if (range.startsWith('catalog:')) return true; |
| 31 | |
| 32 | if (!range || range === '*') return true; |
| 33 | return verkitSatisfies(version, range); |
| 34 | } |
| 35 | |
| 36 | /** Strip workspace: protocol from version ranges */ |
| 37 | export function stripProtocol(range: string): string { |
no outgoing calls
no test coverage detected
searching dependent graphs…