UNPKG

syncpack

Version:

Consistent dependency versions in large JavaScript Monorepos

76 lines (75 loc) 2.82 kB
import { DELETE } from '../version-group/lib/delete.js'; import { AliasSpecifier } from './alias.js'; import { DeleteSpecifier } from './delete.js'; import { ExactSpecifier } from './exact.js'; import { FileSpecifier } from './file.js'; import { HostedGitSpecifier } from './hosted-git.js'; import { LatestSpecifier } from './latest.js'; import { parseSpecifier } from './lib/parse-specifier.js'; import { RangeSpecifier } from './range.js'; import { TagSpecifier } from './tag.js'; import { UnsupportedSpecifier } from './unsupported.js'; import { UrlSpecifier } from './url.js'; import { WorkspaceProtocolSpecifier } from './workspace-protocol.js'; export var Specifier; (function (Specifier) { Specifier.Alias = AliasSpecifier; Specifier.Delete = DeleteSpecifier; Specifier.Exact = ExactSpecifier; Specifier.File = FileSpecifier; Specifier.HostedGit = HostedGitSpecifier; Specifier.Latest = LatestSpecifier; Specifier.Range = RangeSpecifier; Specifier.Tag = TagSpecifier; Specifier.Unsupported = UnsupportedSpecifier; Specifier.Url = UrlSpecifier; Specifier.WorkspaceProtocol = WorkspaceProtocolSpecifier; function create(instance, raw) { if (raw === DELETE) { return new Specifier.Delete({ instance, raw }); } if (!raw) { return new Specifier.Unsupported({ instance, raw }); } try { const data = { instance, raw: raw === 'latest' ? '*' : raw, }; const parsed = parseSpecifier(instance.name, data.raw, instance.packageJsonFile); const type = parsed.type; if (data.raw === '*') { return new Specifier.Latest(data); } if (type === 'version') { return new Specifier.Exact(data); } if (type === 'range') { return new Specifier.Range(data); } if (type === 'workspaceProtocol') { return new Specifier.WorkspaceProtocol(data); } if (type === 'alias') { return new Specifier.Alias(data); } if (type === 'file' || type === 'directory') { return new Specifier.File(data); } if (type === 'remote') { return new Specifier.Url(data); } if (type === 'git') { return new Specifier.HostedGit(data); } if (type === 'tag') { return new Specifier.Tag(data); } return new Specifier.Unsupported(data); } catch { return new Specifier.Unsupported({ instance, raw }); } } Specifier.create = create; })(Specifier || (Specifier = {}));