(segments: string[])
| 3 | * Handles patterns: [pkg], [pkg, 'v', version], [@scope, pkg], [@scope, pkg, 'v', version] |
| 4 | */ |
| 5 | export function parsePackageParams(segments: string[]): { |
| 6 | rawPackageName: string |
| 7 | rawVersion: string | undefined |
| 8 | } { |
| 9 | let vIndex = segments.indexOf('v') |
| 10 | |
| 11 | // If we encounter ".../v/v/...", treat the second "v" as the version delimiter. |
| 12 | if (segments[vIndex] === 'v' && segments[vIndex + 1] === 'v') { |
| 13 | vIndex++ |
| 14 | } |
| 15 | |
| 16 | if (vIndex !== -1 && vIndex < segments.length - 1) { |
| 17 | return { |
| 18 | rawPackageName: segments.slice(0, vIndex).join('/'), |
| 19 | rawVersion: segments.slice(vIndex + 1).join('/'), |
| 20 | } |
| 21 | } |
| 22 | |
| 23 | return { |
| 24 | rawPackageName: segments.join('/'), |
| 25 | rawVersion: undefined, |
| 26 | } |
| 27 | } |
no outgoing calls
no test coverage detected