UNPKG

syncpack

Version:

Consistent dependency versions in large JavaScript Monorepos

22 lines (21 loc) 1.19 kB
import { Effect, pipe } from 'effect'; import { BaseSpecifier } from './base.js'; import { Specifier } from './index.js'; import { NonSemverError } from './lib/non-semver-error.js'; /** @example "npm:imageoptim-cli@3.1.7" */ export class AliasSpecifier extends BaseSpecifier { _tag = 'Alias'; /** The public name referenced in config */ name = 'alias'; /** Return the version portion if it is valid semver */ getSemver() { return pipe(this.parse(), Effect.mapError(() => new NonSemverError({ specifier: this })), Effect.map(parsed => parsed.subSpec), Effect.flatMap(subSpec => ['range', 'version'].includes(subSpec.type) && subSpec.fetchSpec !== null ? Effect.succeed(subSpec.fetchSpec) : NonSemverError.asEffect(this))); } /** Get a new `Specifier` from the given semver version applied to this one */ setSemver(version) { return pipe(this.parse(), Effect.mapError(() => new NonSemverError({ specifier: this })), Effect.map(parsed => parsed.subSpec), Effect.map(subSpec => subSpec.name || ''), Effect.map(name => `npm:${name}@${version}`), Effect.map(raw => Specifier.create(this.instance, raw))); } }