( pkg: WorkspacePackage, target: string, preid: string, rootDir: string, )
| 82 | |
| 83 | /** Query published prerelease state for one package at a target version */ |
| 84 | export async function getPublishedPrereleaseState( |
| 85 | pkg: WorkspacePackage, |
| 86 | target: string, |
| 87 | preid: string, |
| 88 | rootDir: string, |
| 89 | ): Promise<PublishedPrereleaseState> { |
| 90 | if (usesNpmRegistry(pkg)) { |
| 91 | const versions = await fetchPublishedVersions(pkg.name, pkg.bumpy?.registry); |
| 92 | return { |
| 93 | counters: extractPrereleaseCounters(versions, target, preid), |
| 94 | stablePublished: versions.includes(target), |
| 95 | }; |
| 96 | } |
| 97 | // Non-npm packages (custom publish command / skipNpmPublish) — derive from git tags, |
| 98 | // matching how the stable flow tracks their published-ness. |
| 99 | const tagVersions = listTags(`${pkg.name}@${target}-${preid}.*`, { cwd: rootDir }).map((t) => |
| 100 | t.slice(pkg.name.length + 1), |
| 101 | ); |
| 102 | return { |
| 103 | counters: extractPrereleaseCounters(tagVersions, target, preid), |
| 104 | stablePublished: listTags(`${pkg.name}@${target}`, { cwd: rootDir }).length > 0, |
| 105 | }; |
| 106 | } |
| 107 | |
| 108 | export interface ChannelReleasePlanResult { |
| 109 | /** The plan with prerelease versions applied (packages already published from HEAD removed) */ |
no test coverage detected
searching dependent graphs…