parseSpec
name@1.2.3 (or @scope/name@1.2.3), or a bare name.
export function parseSpec(spec: string): { name: string; version?: string } { const at = spec.lastIndexOf("@"); return at > 0 ? { name: spec.slice(0, at), version: spec.slice(at + 1).replace(/^v/, "") } : { name: spec }; }