mirror of
https://github.com/pnpm/pnpm.git
synced 2026-07-29 00:47:13 -04:00
23 lines
647 B
TypeScript
23 lines
647 B
TypeScript
const WORKSPACE_PREF_REGEX = /^workspace:(?:(?<alias>[^._/][^@]*)@)?(?<version>.*)$/
|
|
|
|
export class WorkspaceSpec {
|
|
alias?: string
|
|
version: string
|
|
|
|
constructor (version: string, alias?: string) {
|
|
this.version = version
|
|
this.alias = alias
|
|
}
|
|
|
|
static parse (bareSpecifier: string): WorkspaceSpec | null {
|
|
const parts = WORKSPACE_PREF_REGEX.exec(bareSpecifier)
|
|
if (!parts?.groups) return null
|
|
return new WorkspaceSpec(parts.groups.version, parts.groups.alias)
|
|
}
|
|
|
|
toString (): `workspace:${string}` {
|
|
const { alias, version } = this
|
|
return alias ? `workspace:${alias}@${version}` : `workspace:${version}`
|
|
}
|
|
}
|