@pob/version 3.2.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -182,6 +182,23 @@ const BunPackageManager = {
182
182
  }
183
183
  };
184
184
 
185
+ const PnpmPackageManager = {
186
+ async runScript(workspace, scriptName) {
187
+ await execCommand(workspace, ["pnpm", "run", scriptName], "inherit");
188
+ },
189
+ async publish(workspace, options) {
190
+ if (options?.provenance) {
191
+ await execCommand(
192
+ workspace,
193
+ ["pnpm", "publish", "--provenance"],
194
+ "inherit"
195
+ );
196
+ } else {
197
+ await execCommand(workspace, ["pnpm", "publish"], "inherit");
198
+ }
199
+ }
200
+ };
201
+
185
202
  const YarnPackageManager = {
186
203
  async installOnPackageContentChange(rootWorkspace) {
187
204
  await execCommand(rootWorkspace, ["yarn", "install"], "inherit");
@@ -221,9 +238,14 @@ const autoDetectPackageManager = (rootWorkspace) => {
221
238
  const hasNpmPackageLock = existsSync(
222
239
  `${rootWorkspace.cwd}/package-lock.json`
223
240
  );
224
- if ([hasYarnLock, hasBunLockLegacy, hasBunLock, hasNpmPackageLock].filter(
225
- Boolean
226
- ).length > 1) {
241
+ const hasPnpmLock = existsSync(`${rootWorkspace.cwd}/pnpm-lock.yaml`);
242
+ if ([
243
+ hasYarnLock,
244
+ hasBunLockLegacy,
245
+ hasBunLock,
246
+ hasNpmPackageLock,
247
+ hasPnpmLock
248
+ ].filter(Boolean).length > 1) {
227
249
  throw new Error(
228
250
  `Multiple lock files detected in workspace at ${rootWorkspace.cwd}. Please ensure only one lock file is present, or pass --package-manager option to bypass auto-detection.`
229
251
  );
@@ -234,6 +256,9 @@ const autoDetectPackageManager = (rootWorkspace) => {
234
256
  if (hasBunLockLegacy || hasBunLock) {
235
257
  return BunPackageManager;
236
258
  }
259
+ if (hasPnpmLock) {
260
+ return PnpmPackageManager;
261
+ }
237
262
  if (hasNpmPackageLock) {
238
263
  throw new Error(
239
264
  "NPM is not currently supported as a package manager. Please migrate to Yarn or Bun, or open an issue to request support."
@@ -244,15 +269,20 @@ const autoDetectPackageManager = (rootWorkspace) => {
244
269
  );
245
270
  };
246
271
  const getPackageManager = (rootWorkspace, specifiedPackageManager) => {
247
- if (specifiedPackageManager === "bun") {
248
- return BunPackageManager;
249
- }
250
- if (specifiedPackageManager === "yarn") {
251
- return YarnPackageManager;
272
+ switch (specifiedPackageManager) {
273
+ case "bun":
274
+ return BunPackageManager;
275
+ case "yarn":
276
+ return YarnPackageManager;
277
+ case "pnpm":
278
+ return PnpmPackageManager;
279
+ case void 0:
280
+ default: {
281
+ throw new Error(
282
+ "Invalid package manager specified. Supported values are 'bun' and 'yarn'."
283
+ );
284
+ }
252
285
  }
253
- throw new Error(
254
- "Invalid package manager specified. Supported values are 'bun' and 'yarn'."
255
- );
256
286
  };
257
287
 
258
288
  class UsageError extends Error {
@@ -763,7 +793,8 @@ const findRootWorkspace = async (cwd) => {
763
793
  const isRootIfOneOfThesePathsExists = await Promise.all([
764
794
  isAccessible(path.join(currentPath, ".yarnrc.yml")),
765
795
  isAccessible(path.join(currentPath, "yarn.lock")),
766
- isAccessible(path.join(currentPath, "bun.lock"))
796
+ isAccessible(path.join(currentPath, "bun.lock")),
797
+ isAccessible(path.join(currentPath, "pnpm-lock.yaml"))
767
798
  ]);
768
799
  if (isRootIfOneOfThesePathsExists.some(Boolean)) {
769
800
  return createWorkspace(currentPath);
@@ -1031,7 +1062,9 @@ There are uncommitted changes in the git repository. Please commit or stash them
1031
1062
  satisfies(
1032
1063
  dependencyBumpedWorkspace.newVersion,
1033
1064
  dependencyDescriptor.selector,
1034
- { includePrerelease: true }
1065
+ {
1066
+ includePrerelease: true
1067
+ }
1035
1068
  )) {
1036
1069
  continue;
1037
1070
  }
@@ -1311,9 +1344,7 @@ ${tagsInCommitMessage}` : rootNewVersion
1311
1344
  const changelog = changelogs.get(workspace);
1312
1345
  if (!changelog) {
1313
1346
  logger.warn(
1314
- `No changelog found for workspace: ${getWorkspaceName(
1315
- workspace
1316
- )}`
1347
+ `No changelog found for workspace: ${getWorkspaceName(workspace)}`
1317
1348
  );
1318
1349
  return Promise.resolve(void 0);
1319
1350
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index-node.mjs","sources":["../src/utils/execCommand.ts","../src/pm/BunPackageManager.ts","../src/pm/YarnPackageManager.ts","../src/pm/PackageManager.ts","../src/utils/UsageError.ts","../src/utils/mapUtils.ts","../src/utils/packageDependenciesUtils.ts","../src/utils/workspaceUtils.ts","../src/utils/bumpTypeUtils.ts","../src/utils/conventionalChangelogUtils.ts","../src/utils/conventionalCommitConfigUtils.ts","../src/utils/generatorUtils.ts","../src/utils/gitUtils.ts","../src/utils/githubUtils.ts","../src/utils/packageUtils.ts","../src/utils/updateChangelog.ts","../src/commands/version.ts","../src/index.ts"],"sourcesContent":["import childProcess from \"node:child_process\";\nimport type { Workspace } from \"./packageUtils.ts\";\n\ninterface ExecResultIfFailed {\n code: number | null;\n signal: string | null;\n stdout: string;\n stderr: string;\n}\n\ninterface ExecResultIfSuccess {\n code: null;\n signal: null;\n stdout: string;\n stderr: string;\n}\n\ntype ExecResult<Strict extends boolean> = Strict extends true\n ? ExecResultIfSuccess\n : ExecResultIfFailed;\n\nasync function execvp<const Strict extends boolean>(\n command: string,\n args: string[],\n {\n cwd = process.cwd(),\n env = process.env,\n encoding,\n strict,\n stdo = \"pipe\",\n input,\n }: {\n cwd?: string;\n env?: typeof process.env;\n encoding?: BufferEncoding;\n strict?: Strict;\n stdo?: \"inherit\" | \"pipe\";\n input?: string;\n },\n): Promise<ExecResult<Strict>> {\n const stdoutChunks: Uint8Array[] = [];\n const stderrChunks: Uint8Array[] = [];\n if (env.PWD !== undefined) {\n env = { ...env, PWD: cwd };\n }\n const subprocess = childProcess.spawn(command, args, {\n cwd,\n env,\n stdio: [input ? \"pipe\" : \"ignore\", stdo, stdo],\n });\n if (input && subprocess.stdin) {\n // write input to stdin and close it\n subprocess.stdin.write(input);\n subprocess.stdin.end();\n }\n subprocess.stdout?.on(\"data\", (chunk) => {\n stdoutChunks.push(chunk);\n });\n subprocess.stderr?.on(\"data\", (chunk) => {\n stderrChunks.push(chunk);\n });\n return new Promise((resolve, reject) => {\n subprocess.on(\"error\", (err) => {\n reject(new Error(`Process ${command} failed to spawn`));\n });\n subprocess.on(\"close\", (code, signal) => {\n const chunksToString = (chunks: Uint8Array[]): string =>\n stdo === \"inherit\"\n ? \"\"\n : Buffer.concat(chunks).toString(encoding ?? \"utf8\");\n const stdout = chunksToString(stdoutChunks);\n const stderr = chunksToString(stderrChunks);\n if (code === 0 || !strict) {\n resolve({\n code,\n signal,\n stdout,\n stderr,\n } as ExecResult<Strict>);\n } else {\n reject(\n new Error(\n `Process ${[command, ...args].join(\" \")} exited ${code !== null ? `with code ${code}` : `with signal ${signal || \"\"}`}:\\nstdout: ${stdout}\\nstderr: ${stderr}`,\n ),\n );\n }\n });\n });\n}\n\nasync function* spawnStreamStdout<const Strict extends boolean>(\n command: string,\n args: string[],\n {\n cwd = process.cwd(),\n env = process.env,\n encoding,\n strict,\n separator,\n }: {\n cwd?: string;\n env?: typeof process.env;\n encoding?: BufferEncoding;\n strict?: Strict;\n separator: string;\n },\n): AsyncGenerator<string, ExecResult<Strict>, unknown> {\n const stderrChunks: Uint8Array[] = [];\n if (env.PWD !== undefined) {\n env = { ...env, PWD: cwd };\n }\n const subprocess = childProcess.spawn(command, args, {\n cwd,\n env,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n\n subprocess.stderr.on(\"data\", (chunk) => {\n stderrChunks.push(chunk);\n });\n\n let chunk: Buffer;\n let payload: string[];\n let buffer = \"\";\n\n for await (chunk of subprocess.stdout) {\n buffer += chunk.toString();\n\n if (buffer.includes(separator)) {\n payload = buffer.split(separator);\n buffer = payload.pop() || \"\";\n\n yield* payload;\n }\n }\n\n if (buffer) {\n yield buffer;\n }\n\n return new Promise((resolve, reject) => {\n subprocess.on(\"error\", (err) => {\n reject(new Error(`Process ${command} failed to spawn`));\n });\n subprocess.on(\"close\", (code, signal) => {\n const chunksToString = (chunks: Uint8Array[]): string =>\n Buffer.concat(chunks).toString(encoding ?? \"utf8\");\n const stderr = chunksToString(stderrChunks);\n if (code === 0 || !strict) {\n resolve({\n code,\n signal,\n stderr,\n } as ExecResult<Strict>);\n } else {\n reject(\n new Error(\n `Process ${[command, ...args].join(\" \")} exited ${code !== null ? `with code ${code}` : `with signal ${signal || \"\"}`}:\\nstderr: ${stderr}`,\n ),\n );\n }\n });\n });\n}\n\nexport const execCommand = (\n workspace: Workspace,\n commandAndArgs: string[],\n stdo: \"inherit\" | \"pipe\" = \"pipe\",\n): ReturnType<typeof execvp> => {\n const [command, ...args] = commandAndArgs;\n if (command === undefined) {\n throw new Error(\"Command is required\");\n }\n return execvp(command, args, {\n cwd: workspace.cwd,\n strict: true,\n stdo,\n });\n};\n\nexport const execCommandWithInput = (\n workspace: Workspace,\n commandAndArgs: string[],\n input: string,\n stdo: \"inherit\" | \"pipe\" = \"pipe\",\n): ReturnType<typeof execvp> => {\n const [command, ...args] = commandAndArgs;\n if (command === undefined) {\n throw new Error(\"Command is required\");\n }\n return execvp(command, args, {\n cwd: workspace.cwd,\n strict: true,\n stdo,\n input,\n });\n};\n\nexport const execCommandStreamStdout = (\n workspace: Workspace,\n commandAndArgs: string[],\n separator = \"\\n\",\n): AsyncGenerator<string, ExecResult<true>, unknown> => {\n const [command, ...args] = commandAndArgs;\n if (command === undefined) {\n throw new Error(\"Command is required\");\n }\n return spawnStreamStdout(command, args, {\n cwd: workspace.cwd,\n strict: true,\n separator,\n });\n};\n","import { execCommand } from \"../utils/execCommand.ts\";\nimport type {\n PackageManager,\n PackageManagerPublishOptions,\n} from \"./PackageManager.ts\";\n\nexport const BunPackageManager: PackageManager = {\n async runScript(workspace, scriptName) {\n await execCommand(workspace, [\"bun\", \"run\", scriptName], \"inherit\");\n },\n\n async publish(workspace, options?: PackageManagerPublishOptions) {\n if (options?.provenance) {\n // Use bun pack for provenance support\n // See: https://github.com/oven-sh/bun/issues/15601\n const packResult = await execCommand(workspace, [\"bun\", \"pm\", \"pack\"]);\n // Extract .tgz filename from output (find line ending with .tgz)\n const lines = packResult.stdout.trim().split(\"\\n\");\n const tgzPath =\n lines.find((line) => line.endsWith(\".tgz\")) ?? lines.at(-1);\n if (!tgzPath) {\n throw new Error(\"Failed to extract .tgz path from bun pack output\");\n }\n await execCommand(workspace, [\"npm\", \"publish\", \"--provenance\", tgzPath]);\n } else {\n await execCommand(workspace, [\"bun\", \"publish\"], \"inherit\");\n }\n },\n};\n","import { execCommand } from \"../utils/execCommand.ts\";\nimport type { Workspace } from \"../utils/packageUtils.ts\";\nimport type {\n PackageManager,\n PackageManagerPublishOptions,\n} from \"./PackageManager.ts\";\n\nexport const YarnPackageManager: PackageManager = {\n async installOnPackageContentChange(rootWorkspace: Workspace) {\n await execCommand(rootWorkspace, [\"yarn\", \"install\"], \"inherit\");\n },\n\n async runScript(workspace: Workspace, scriptName: string) {\n await execCommand(workspace, [\"yarn\", \"run\", scriptName], \"inherit\");\n },\n\n async publish(workspace: Workspace, options?: PackageManagerPublishOptions) {\n const publishArgs = [\"yarn\", \"npm\", \"publish\"];\n if (options?.provenance) {\n publishArgs.push(\"--provenance\");\n }\n await execCommand(workspace, publishArgs, \"inherit\");\n },\n\n async publishWorkspaces(\n rootWorkspace: Workspace,\n options?: PackageManagerPublishOptions,\n ) {\n const publishArgs = [\n \"yarn\",\n \"workspaces\",\n \"foreach\",\n \"--all\",\n \"--parallel\",\n \"--no-private\",\n \"npm\",\n \"publish\",\n ];\n if (options?.provenance) {\n publishArgs.push(\"--provenance\");\n }\n await execCommand(rootWorkspace, publishArgs, \"inherit\");\n },\n};\n","import { existsSync } from \"node:fs\";\nimport type { Workspace } from \"../utils/packageUtils.ts\";\nimport { BunPackageManager } from \"./BunPackageManager.ts\";\nimport { YarnPackageManager } from \"./YarnPackageManager.ts\";\n\nexport interface PackageManagerPublishOptions {\n provenance?: boolean;\n}\n\nexport interface PackageManager {\n installOnPackageContentChange?: (rootWorkspace: Workspace) => Promise<void>;\n runScript: (workspace: Workspace, scriptName: string) => Promise<void>;\n publish: (\n workspace: Workspace,\n options?: PackageManagerPublishOptions,\n ) => Promise<void>;\n publishWorkspaces?: (\n rootWorkspace: Workspace,\n options?: PackageManagerPublishOptions,\n ) => Promise<void>;\n}\n\nexport const autoDetectPackageManager = (\n rootWorkspace: Workspace,\n): PackageManager => {\n const hasYarnLock = existsSync(`${rootWorkspace.cwd}/yarn.lock`);\n const hasBunLockLegacy = existsSync(`${rootWorkspace.cwd}/bun.lockb`);\n const hasBunLock = existsSync(`${rootWorkspace.cwd}/bun.lock`);\n const hasNpmPackageLock = existsSync(\n `${rootWorkspace.cwd}/package-lock.json`,\n );\n\n if (\n [hasYarnLock, hasBunLockLegacy, hasBunLock, hasNpmPackageLock].filter(\n Boolean,\n ).length > 1\n ) {\n throw new Error(\n `Multiple lock files detected in workspace at ${rootWorkspace.cwd}. Please ensure only one lock file is present, or pass --package-manager option to bypass auto-detection.`,\n );\n }\n\n if (hasYarnLock) {\n return YarnPackageManager;\n }\n\n if (hasBunLockLegacy || hasBunLock) {\n return BunPackageManager;\n }\n\n if (hasNpmPackageLock) {\n throw new Error(\n \"NPM is not currently supported as a package manager. Please migrate to Yarn or Bun, or open an issue to request support.\",\n );\n }\n\n throw new Error(\n `No lock file detected in workspace at ${rootWorkspace.cwd}. Please ensure a supported lock file is present, or pass --package-manager option to bypass auto-detection.`,\n );\n};\n\nexport const getPackageManager = (\n rootWorkspace: Workspace,\n specifiedPackageManager?: \"bun\" | \"yarn\",\n): PackageManager => {\n if (specifiedPackageManager === \"bun\") {\n return BunPackageManager;\n }\n\n if (specifiedPackageManager === \"yarn\") {\n return YarnPackageManager;\n }\n throw new Error(\n \"Invalid package manager specified. Supported values are 'bun' and 'yarn'.\",\n );\n};\n","export class UsageError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"UsageError\";\n }\n}\n","export function getMapArrayItemForKey<K, V>(map: Map<K, V[]>, key: K): V[] {\n let value: V[] | undefined = map.get(key);\n if (value === undefined) {\n map.set(key, (value = [] as V[]));\n }\n return value;\n}\n","/**\n * Combination of an optional scope and name.\n *\n * eg `@npm/types`\n */\nexport interface PackageDescriptorName {\n scope?: string;\n name: string;\n}\n\ninterface DescriptorUtils<Descriptor> {\n parse: (value: string) => Descriptor;\n stringify: (descriptor: Descriptor) => string;\n}\n\nexport const PackageDescriptorNameUtils: DescriptorUtils<PackageDescriptorName> =\n {\n parse: (value) => {\n if (value.startsWith(\"@\")) {\n const [scope, name] = value.slice(1).split(\"/\", 2);\n if (!scope || !name) {\n throw new Error(`Invalid package descriptor name: ${value}`);\n }\n return { scope, name };\n }\n return { name: value };\n },\n stringify: (descriptor) => {\n return descriptor.scope === undefined\n ? descriptor.name\n : `@${descriptor.scope}/${descriptor.name}`;\n },\n };\n\nexport interface PackageDependencyDescriptor {\n key: string;\n name: PackageDescriptorName;\n selector: string; // can be npm tag or version or version range or git url or local folder path\n}\n\ninterface PackageDependencyDescriptorUtils<\n Descriptor = PackageDependencyDescriptor,\n> {\n make: (descriptor: Descriptor, selector: string) => Descriptor;\n parse: (dependencyKey: string, dependencyValue: string) => Descriptor;\n stringify: (descriptor: Descriptor) => [key: string, value: string];\n}\n\nexport const PackageDependencyDescriptorUtils: PackageDependencyDescriptorUtils =\n {\n make: (descriptor, selector) => {\n return { key: descriptor.key, name: descriptor.name, selector };\n },\n parse: (dependencyKey, dependencyValue) => {\n const [name, selector] = dependencyValue.startsWith(\"npm:\")\n ? (() => {\n const v = dependencyValue.slice(\"npm:\".length);\n if (!v.startsWith(\"@\")) return v.split(\"@\", 2) as [string, string];\n const [packageNameWithoutFirstChar, selector] = v\n .slice(1)\n .split(\"@\", 2);\n if (!packageNameWithoutFirstChar || !selector) {\n throw new Error(`Invalid package descriptor: ${dependencyValue}`);\n }\n return [`@${packageNameWithoutFirstChar}`, selector];\n })()\n : [dependencyKey, dependencyValue];\n\n return {\n key: dependencyKey,\n name: PackageDescriptorNameUtils.parse(name),\n selector,\n };\n },\n stringify: (descriptor) => {\n return [descriptor.key, descriptor.selector];\n },\n };\n\n// export const PackageDependencySelectorUtils;\n","/* eslint-disable complexity */\nimport path from \"node:path\";\nimport { getMapArrayItemForKey } from \"./mapUtils.ts\";\nimport type { PackageDependencyDescriptor } from \"./packageDependenciesUtils.ts\";\nimport {\n PackageDependencyDescriptorUtils,\n PackageDescriptorNameUtils,\n} from \"./packageDependenciesUtils.ts\";\nimport type { ProjectWorkspace, Workspace } from \"./packageUtils.ts\";\n\nconst allDependenciesTypes = [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n] as const;\nexport type DependencyType = (typeof allDependenciesTypes)[number];\n\nexport const getWorkspaceName = (workspace: Workspace): string => {\n return (\n workspace.pkg.name ?? (path.basename(workspace.cwd) || \"unnamed-workspace\")\n );\n};\n\ntype WorkspacesDependenciesMap = Map<\n Workspace,\n [Workspace, DependencyType, PackageDependencyDescriptor][]\n>;\n\nexport const buildDependentsMaps = (\n project: ProjectWorkspace,\n): WorkspacesDependenciesMap => {\n const dependentsMap: WorkspacesDependenciesMap = new Map<\n Workspace,\n [Workspace, DependencyType, PackageDependencyDescriptor][]\n >();\n\n // Note that we need to do this before applying the new versions,\n // otherwise the `findWorkspacesByDescriptor` calls won't be able to\n // resolve the workspaces anymore (because the workspace versions will\n // have changed and won't match the outdated dependencies).\n\n for (const [, dependent] of project.children) {\n for (const set of allDependenciesTypes) {\n for (const [dependencyKey, dependencyValue] of Object.entries(\n dependent.pkg[set] || {},\n )) {\n if (!dependencyValue) continue;\n const descriptor = PackageDependencyDescriptorUtils.parse(\n dependencyKey,\n dependencyValue,\n );\n const workspace = project.children.get(\n PackageDescriptorNameUtils.stringify(descriptor.name),\n );\n if (!workspace) continue;\n\n const dependents = getMapArrayItemForKey(dependentsMap, workspace);\n dependents.push([dependent, set, descriptor]);\n }\n }\n }\n\n return dependentsMap;\n};\n\nexport const buildDependenciesMaps = (\n project: ProjectWorkspace,\n): WorkspacesDependenciesMap => {\n const dependenciesMap: WorkspacesDependenciesMap = new Map<\n Workspace,\n [Workspace, DependencyType, PackageDependencyDescriptor][]\n >();\n\n // Note that we need to do this before applying the new versions,\n // otherwise the `findWorkspacesByDescriptor` calls won't be able to\n // resolve the workspaces anymore (because the workspace versions will\n // have changed and won't match the outdated dependencies).\n\n for (const dependent of project.children.values()) {\n for (const set of allDependenciesTypes) {\n for (const [dependencyKey, dependencyValue] of Object.entries(\n dependent.pkg[set] || {},\n )) {\n if (!dependencyValue) continue;\n const descriptor = PackageDependencyDescriptorUtils.parse(\n dependencyKey,\n dependencyValue,\n );\n\n const workspace = project.children.get(\n PackageDescriptorNameUtils.stringify(descriptor.name),\n );\n if (!workspace) continue;\n\n const dependencies = getMapArrayItemForKey(dependenciesMap, dependent);\n dependencies.push([workspace, set, descriptor]);\n }\n }\n }\n\n return dependenciesMap;\n};\n\nexport const buildTopologicalOrderBatches = (\n project: ProjectWorkspace,\n dependenciesMap: WorkspacesDependenciesMap,\n): Workspace[][] => {\n const batches: Workspace[][] = [];\n\n const added = new Set<Workspace>();\n const toAdd = new Set<Workspace>([\n project.root,\n ...project.children.values(),\n ]);\n\n while (toAdd.size > 0) {\n const batch = new Set<Workspace>();\n for (const workspace of toAdd) {\n // make sure top level workspace is always in the last batch\n if (workspace === project.root && toAdd.size > 1) {\n continue;\n }\n\n const dependencies = dependenciesMap.get(workspace);\n if (!dependencies || dependencies.every((w) => added.has(w[0]))) {\n batch.add(workspace);\n }\n }\n\n for (const workspace of batch) {\n added.add(workspace);\n toAdd.delete(workspace);\n }\n\n if (batch.size === 0) {\n throw new Error(\"Circular dependency detected\");\n }\n batches.push([...batch]);\n }\n\n return batches;\n};\n","import semver from \"semver\";\nimport { UsageError } from \"./UsageError.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\nimport { getWorkspaceName } from \"./workspaceUtils.ts\";\n\nexport type BumpType = \"major\" | \"minor\" | \"patch\";\n\n// https://github.com/yarnpkg/berry/blob/506ded5f5f5a89553435940c74f1d857fd685a42/packages/plugin-version/sources/versionUtils.ts#L10\n// Basically we only support auto-upgrading the ranges that are very simple (^x.y.z, ~x.y.z, >=x.y.z, and of course x.y.z)\nconst SUPPORTED_UPGRADE_REGEXP =\n // eslint-disable-next-line regexp/no-unused-capturing-group\n /^((?:>=|[~^])?)(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(-(0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*)(\\.(0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*))*)?(\\+[0-9a-z-]+(\\.[0-9a-z-]+)*)?$/i;\n\nconst yarnWorkspaceProtocol = \"workspace:\";\n\nexport const calcBumpRange = (\n workspace: Workspace,\n range: string,\n newVersion: string,\n): string => {\n if (range === \"*\") {\n return range;\n }\n\n let useWorkspaceProtocol = false;\n\n if (range.startsWith(yarnWorkspaceProtocol)) {\n const slicedRange = range.slice(yarnWorkspaceProtocol.length);\n\n // Workspaces referenced through their path never get upgraded (\"workspace:packages/yarnpkg-core\")\n if (slicedRange === workspace.relativeCwd) {\n return range;\n }\n\n if (slicedRange === \"*\") {\n return range;\n }\n\n range = slicedRange;\n useWorkspaceProtocol = true;\n }\n\n const parsed = SUPPORTED_UPGRADE_REGEXP.exec(range);\n if (!parsed) {\n const workspaceName = getWorkspaceName(workspace);\n throw new Error(`Couldn't bump range ${range} in ${workspaceName}`);\n }\n\n return `${useWorkspaceProtocol ? yarnWorkspaceProtocol : \"\"}${\n parsed[1] ?? \"\"\n }${newVersion}`;\n};\n\nexport const getHighestBumpType = (bumpTypes: BumpType[]): BumpType => {\n if (bumpTypes.includes(\"major\")) {\n return \"major\";\n }\n\n if (bumpTypes.includes(\"minor\")) {\n return \"minor\";\n }\n\n return \"patch\";\n};\n\nexport const calcBumpType = (\n bumpType: BumpType,\n maxBumpType: BumpType,\n): BumpType => {\n if (maxBumpType === \"major\") {\n return bumpType;\n }\n\n if (maxBumpType === \"minor\") {\n return bumpType === \"major\" || bumpType === \"minor\" ? \"minor\" : \"patch\";\n }\n\n return \"patch\";\n};\n\nconst incVersion = (version: string, bumpType: BumpType): string | null => {\n // handle breaking of 0.x\n if (bumpType === \"major\" && semver.major(version) === 0) {\n bumpType = \"minor\";\n }\n return semver.inc(version, bumpType);\n};\n\nexport const incrementVersion = (\n workspace: Workspace,\n currentVersion: string,\n bumpType: BumpType,\n): string => {\n const newVersion = incVersion(currentVersion, bumpType);\n\n if (!newVersion) {\n throw new UsageError(\n `Could not determine next version for \"${getWorkspaceName(\n workspace,\n )}\" (currentVersion: ${currentVersion}, bumpType: ${bumpType}})`,\n );\n }\n\n return newVersion;\n};\n\n// const createPrerelease = (\n// version: string,\n// prereleaseType: ReleaseType,\n// prereleaseId: string,\n// ) => {\n// return semver.inc(version, prereleaseType, prereleaseId);\n// };\n","import { writeChangelogString } from \"conventional-changelog-writer\";\nimport { parseCommits as createConventionalCommitsParser } from \"conventional-commits-parser\";\nimport type { Commit, ParserStreamOptions } from \"conventional-commits-parser\";\nimport type { PackageJson } from \"type-fest\";\nimport type { ConventionalChangelogConfig } from \"./conventionalCommitConfigUtils.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\n\nexport interface WhatBump {\n level: 0 | 1 | 2;\n reason: string;\n}\nexport type WhatBumpResult = WhatBump | null | undefined;\nexport interface BumperRecommendation extends WhatBump {\n releaseType: \"major\" | \"minor\" | \"patch\";\n commits: Commit[];\n}\nexport interface EmptyBumperRecommendation {\n commits: Commit[];\n}\nexport type BumperRecommendationResult =\n | BumperRecommendation\n | EmptyBumperRecommendation;\n\nexport interface Preset {\n whatBump: (commits: Commit[]) => Promise<WhatBumpResult> | WhatBumpResult;\n tags?: unknown;\n commits?: unknown;\n parser?: ParserStreamOptions;\n}\n\nconst versions: BumperRecommendation[\"releaseType\"][] = [\n \"major\",\n \"minor\",\n \"patch\",\n];\n\nexport const recommendBump = async (\n commits: Parameters<ConventionalChangelogConfig[\"whatBump\"]>[0],\n config: ConventionalChangelogConfig,\n): Promise<Partial<BumperRecommendation>> => {\n const whatBump = config.whatBump;\n if (!whatBump) {\n throw new Error(\"whatBump method is missing in config\");\n }\n const result = { ...(await whatBump(commits)) };\n\n return {\n ...result,\n releaseType: result.level != null ? versions[result.level] : undefined,\n };\n};\n\nexport type Commits = Parameters<ConventionalChangelogConfig[\"whatBump\"]>[0];\n\nexport const generateChangelog = (\n workspace: Workspace,\n pkg: PackageJson,\n config: ConventionalChangelogConfig,\n previousTag: string | null,\n newTag: string | null,\n commits: Commits | undefined,\n date: string,\n // eslint-disable-next-line @typescript-eslint/max-params\n): Promise<string> => {\n if (!newTag) {\n throw new Error(`Missing new tag for package \"${pkg.name ?? \"\"}\"`);\n }\n\n const originUrl =\n typeof pkg.repository === \"string\" ? pkg.repository : pkg.repository?.url;\n const match =\n originUrl &&\n typeof originUrl === \"string\" &&\n /^(?:git@|https?:\\/\\/)(?:([^./:]+(?:\\.com)?)[/:])?([^/:]+)\\/([^./:]+)(?:.git)?/.exec(\n originUrl,\n );\n const [, gitHost, gitAccount, repoName] = match || [\n undefined,\n undefined,\n undefined,\n undefined,\n ];\n\n return writeChangelogString(\n commits ?? [],\n {\n // @ts-expect-error - missing types\n previousTag,\n currentTag: newTag,\n linkCompare: previousTag != null,\n version: pkg.version,\n host: gitHost ? `https://${gitHost}` : undefined,\n owner: gitAccount,\n repository: repoName,\n date,\n },\n // @ts-expect-error - missing types\n config.writer,\n );\n};\n\nexport const createCommitsParser = (config: ConventionalChangelogConfig) => {\n return createConventionalCommitsParser(config.parser);\n};\n","import { loadPreset } from \"conventional-changelog-preset-loader\";\nimport { UsageError } from \"./UsageError.ts\";\nimport type { Preset } from \"./conventionalChangelogUtils.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\n\nexport type ConventionalChangelogConfig = Preset;\n\nexport const loadConventionalCommitConfig = async (\n rootWorkspace: Workspace,\n preset: string,\n): Promise<ConventionalChangelogConfig> => {\n try {\n return await loadPreset<ConventionalChangelogConfig>(preset);\n } catch (error: any) {\n throw new UsageError(\n `Failed to require preset \"${preset}\": ${error.message as string}`,\n );\n }\n};\n","export async function asyncIterableToArray<T>(\n asyncIterable: AsyncIterable<T>,\n): Promise<T[]> {\n const result: T[] = [];\n\n for await (const value of asyncIterable) {\n result.push(value);\n }\n\n return result;\n}\n","import semver from \"semver\";\nimport { UsageError } from \"./UsageError.ts\";\nimport { execCommand, execCommandStreamStdout } from \"./execCommand.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\n\nexport const getGitCurrentBranch = async (\n workspace: Workspace,\n): Promise<string> => {\n const { stdout } = await execCommand(workspace, [\n \"git\",\n \"rev-parse\",\n \"--abbrev-ref\",\n \"HEAD\",\n ]);\n const currentBranch = stdout.trim();\n\n if (currentBranch === \"HEAD\") {\n throw new UsageError(\"HEAD is detached. Please checkout a branch.\");\n }\n\n return currentBranch;\n};\n\nexport const createGitCommit = async (\n workspace: Workspace,\n commitMessage: string,\n): Promise<void> => {\n await execCommand(workspace, [\"git\", \"add\", \"-A\"]);\n\n await execCommand(workspace, [\n \"git\",\n \"commit\",\n \"--no-verify\",\n \"-m\",\n commitMessage,\n ]);\n};\n\nexport const createGitTag = async (\n workspace: Workspace,\n newTag: string,\n): Promise<void> => {\n await execCommand(workspace, [\"git\", \"tag\", newTag, \"-m\", newTag]);\n};\n\nexport const pushCommitsAndTags = async (\n workspace: Workspace,\n gitRemote: string,\n currentBranch: string,\n): Promise<void> => {\n await execCommand(workspace, [\n \"git\",\n \"push\",\n \"--follow-tags\",\n \"--no-verify\",\n \"--atomic\",\n gitRemote,\n currentBranch,\n ]);\n};\n\nexport const isBehindRemote = async (\n workspace: Workspace,\n gitRemote: string,\n currentBranch: string,\n): Promise<boolean> => {\n await execCommand(workspace, [\"git\", \"remote\", \"update\", gitRemote]);\n const { stdout } = await execCommand(workspace, [\n \"git\",\n \"rev-list\",\n \"--left-right\",\n \"--count\",\n `${gitRemote}/${currentBranch}..${currentBranch}`,\n ]);\n\n const [behind] = stdout.split(\"\\t\").map((val) => parseInt(val, 10));\n\n return behind ? behind > 0 : false;\n};\n\nexport const getDirtyFiles = async (workspace: Workspace): Promise<string> => {\n const { stdout: dirtyFiles } = await execCommand(workspace, [\n \"git\",\n \"status\",\n \"--porcelain\",\n ]);\n return dirtyFiles;\n};\n\nconst toArray = <T>(input: T | T[]): T[] =>\n Array.isArray(input) ? input : [input];\n\nexport interface GitTagVersion {\n tag: string;\n version: string;\n}\n\nexport const getGitLatestTagVersion = async (\n workspace: Workspace,\n {\n prefix,\n skipUnstable,\n since,\n from = \"\",\n to = \"HEAD\",\n path,\n }: {\n prefix?: string;\n skipUnstable?: boolean;\n since?: Date | string;\n from?: string;\n to?: string;\n path?: string[] | string;\n } = {},\n): Promise<GitTagVersion | null> => {\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n const tagRegex = /tag:\\s*(.+?)[,)]/gi;\n for await (const chunk of execCommandStreamStdout(workspace, [\n \"git\",\n \"log\",\n \"--no-color\",\n \"--date-order\",\n \"--format=%d\",\n ...(since\n ? [`--since=${since instanceof Date ? since.toISOString() : since}`]\n : []),\n [from, to].filter(Boolean).join(\"..\"),\n ...(path ? [\"--\", ...toArray(path)] : []),\n ])) {\n const trimmed = chunk.trim();\n if (!trimmed) continue;\n const matches = trimmed.matchAll(tagRegex);\n for (const match of matches) {\n const tag = match[1];\n if (!tag) continue;\n if (prefix && !tag.startsWith(prefix)) {\n continue;\n }\n const version = prefix ? tag.slice(prefix.length) : tag;\n if (!semver.valid(version)) {\n continue;\n }\n if (skipUnstable && semver.prerelease(version)) {\n continue;\n }\n return { tag, version };\n }\n }\n\n return null;\n};\n\nconst GIT_COMMIT_SEPARATOR =\n \"------------------------ >8 ------------------------\";\n\nexport const getGitCommits = (\n workspace: Workspace,\n {\n path,\n from = \"\",\n to = \"HEAD\",\n format = \"%B\",\n reverse,\n merges,\n since,\n }: {\n format?: string;\n path?: string[] | string;\n from?: string;\n to?: string;\n reverse?: boolean;\n merges?: boolean;\n since?: Date | string;\n } = {},\n) => {\n return execCommandStreamStdout(\n workspace,\n [\n \"git\",\n \"log\",\n `--format=${format}%n${GIT_COMMIT_SEPARATOR}`,\n ...(since\n ? [`--since=${since instanceof Date ? since.toISOString() : since}`]\n : []),\n ...(reverse ? [\"--reverse\"] : []),\n ...(merges ? [\"--merges\"] : []),\n ...(merges === false ? [\"--no-merges\"] : []),\n [from, to].filter(Boolean).join(\"..\"),\n ...(path ? [\"--\", ...toArray(path)] : []),\n ],\n GIT_COMMIT_SEPARATOR,\n );\n};\n","import { UsageError } from \"./UsageError.ts\";\nimport { execCommandWithInput } from \"./execCommand.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\n\nexport async function ensureGhCliAvailable(\n workspace: Workspace,\n): Promise<void> {\n const { GH_TOKEN } = process.env;\n\n if (!GH_TOKEN) {\n throw new UsageError('\"GH_TOKEN\" environment variable required');\n }\n\n try {\n // Use existing execCommand helper pattern by spawning gh --version\n // We import execCommand lazily to avoid cycles when utils are used elsewhere\n const { execCommand } = await import(\"./execCommand.ts\");\n await execCommand(workspace, [\"gh\", \"--version\"]);\n } catch {\n throw new UsageError(\n 'The \"gh\" CLI is required. Please install GitHub CLI: https://cli.github.com/',\n );\n }\n}\n\ninterface ParsedGithubUrl {\n username: string;\n reponame: string;\n}\n\nconst githubRegex = /^https?:\\/\\/github.com\\/([^#/]+)\\/([^#/]+?)(?:\\.git)?$/;\nexport const parseGithubRepoUrl = (workspace: Workspace): ParsedGithubUrl => {\n const repository = workspace.pkg.repository;\n\n const url: string | undefined =\n typeof repository === \"string\" ? repository : repository?.url;\n\n if (!url) {\n throw new Error(\n \"No repository URL found in manifest. Please add one and try again. https://docs.npmjs.com/cli/v9/configuring-npm/package-json#repository\",\n );\n }\n const match = githubRegex.exec(url);\n\n if (!match) {\n throw new Error(`Invalid GitHub repository URL: \"${url}\"`);\n }\n const [, username, reponame] = match;\n if (!username || !reponame) {\n throw new Error(`Invalid GitHub repository URL: \"${url}\"`);\n }\n return { username, reponame };\n};\n\nconst extractHostnameFromGheApiUrl = (gheApiUrl: string): string | null => {\n try {\n const url = new URL(gheApiUrl);\n return url.hostname || null;\n } catch {\n // fallback: try to strip protocol and path\n const m = /^https?:\\/\\/([^/]+)/.exec(gheApiUrl);\n return m?.[1] || null;\n }\n};\n\nexport const createGhRelease = async (\n workspace: Workspace,\n opts: {\n parsedRepoUrl: ParsedGithubUrl;\n tag: string;\n title: string; // title is not necessary but slack release bot shows \"undefined\" if not provided\n body: string;\n prerelease: boolean;\n },\n): Promise<void> => {\n const { parsedRepoUrl, tag, title, body, prerelease } = opts;\n\n const { GH_TOKEN, GHE_API_URL } = process.env;\n\n if (!GH_TOKEN) {\n await ensureGhCliAvailable(workspace);\n return;\n }\n\n // Determine hostname for GHE if provided\n const args: string[] = [\n \"release\",\n \"create\",\n tag,\n \"--title\",\n title,\n \"--repo\",\n `${parsedRepoUrl.username}/${parsedRepoUrl.reponame}`,\n ];\n\n if (prerelease) {\n args.push(\"--prerelease\");\n }\n\n if (GHE_API_URL) {\n const hostname = extractHostnameFromGheApiUrl(GHE_API_URL);\n if (hostname) {\n args.push(\"--hostname\", hostname);\n }\n }\n\n try {\n await execCommandWithInput(\n workspace,\n [\"gh\", ...args, \"--notes-file\", \"-\"],\n body,\n );\n } catch (error) {\n // execCommandWithInput will include stdout/stderr in its error message when strict\n throw new Error(\n `gh release create failed: ${String(error instanceof Error ? error.message : error)}`,\n { cause: error },\n );\n }\n};\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport fs, { glob } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type { PackageJson } from \"type-fest\";\n\nexport interface Workspace {\n readonly cwd: string;\n readonly relativeCwd?: string;\n readonly pkg: PackageJson;\n}\n\nexport interface ProjectWorkspace {\n readonly root: Workspace;\n readonly children: Map<string, Workspace>;\n}\n\nasync function mapWorkspacesFromPkg({\n cwd,\n pkg,\n}: {\n cwd: string;\n pkg: PackageJson;\n}): Promise<Map<string, Workspace>> {\n const workspacesPatterns: string[] = Array.isArray(pkg.workspaces)\n ? pkg.workspaces\n : pkg.workspaces?.packages || [];\n\n const map = new Map<string, Workspace>();\n\n for (const pattern of workspacesPatterns) {\n const normalized = pattern.endsWith(\"package.json\")\n ? pattern\n : `${pattern.replace(/\\/*$/, \"\")}/package.json`;\n\n const files = glob(normalized, { cwd });\n for await (const file of files) {\n const packageDir = path.join(cwd, path.dirname(file));\n const packageJson: PackageJson = await readPkg(packageDir);\n const workspaceName = packageJson.name || path.basename(packageDir);\n if (map.has(workspaceName)) {\n const existingWorkspace = map.get(workspaceName);\n if (existingWorkspace && existingWorkspace.cwd !== packageDir) {\n throw new Error(\n `must not have multiple workspaces with the same name\\npackage '${workspaceName}' has conflicts in the following paths:\\n ${existingWorkspace.cwd}\\n ${packageDir}`,\n );\n }\n // if it's the same package dir, ignore duplicate match\n if (existingWorkspace?.cwd === packageDir) continue;\n }\n map.set(workspaceName, { cwd: packageDir, pkg: packageJson });\n }\n }\n return map;\n}\n\nexport const createProjectWorkspace = async (\n root: Workspace,\n): Promise<ProjectWorkspace> => {\n const map: Map<string, Workspace> = root.pkg.workspaces\n ? await mapWorkspacesFromPkg({ cwd: root.cwd, pkg: root.pkg })\n : new Map();\n\n const children = new Map<string, Workspace>(\n [...map.entries()].map(([packageName, workspace]) => {\n const w: Workspace = {\n ...workspace,\n relativeCwd: path.relative(root.cwd, workspace.cwd),\n };\n return [packageName, w] as const;\n }),\n );\n return { root, children };\n};\n\nconst isAccessible = (path: string): Promise<boolean> =>\n fs.access(path).then(\n () => true,\n () => false,\n );\n\nexport const findRootWorkspace = async (\n cwd: string,\n): Promise<Workspace | null> => {\n let currentPath = cwd;\n do {\n const isRootIfOneOfThesePathsExists = await Promise.all([\n isAccessible(path.join(currentPath, \".yarnrc.yml\")),\n isAccessible(path.join(currentPath, \"yarn.lock\")),\n isAccessible(path.join(currentPath, \"bun.lock\")),\n ]);\n if (isRootIfOneOfThesePathsExists.some(Boolean)) {\n return createWorkspace(currentPath);\n }\n currentPath = path.dirname(currentPath);\n } while (currentPath && currentPath !== \"/\");\n return null;\n};\n\nconst getPackageJsonPath = (cwd: string): string =>\n path.join(cwd, \"package.json\");\n\nexport const createWorkspace = async (path: string): Promise<Workspace> => {\n const pkg = await readPkg(path);\n return { cwd: path, pkg };\n};\n\nexport async function writePkg(workspace: Workspace): Promise<void> {\n const string = `${JSON.stringify(workspace.pkg, null, 2)}\\n`;\n await fs.writeFile(getPackageJsonPath(workspace.cwd), string, \"utf8\");\n}\n\nexport async function readPkg(cwd: string): Promise<PackageJson> {\n const packagePath = getPackageJsonPath(cwd);\n // eslint-disable-next-line @typescript-eslint/use-unknown-in-catch-callback-variable\n const pkg = await fs.readFile(packagePath, \"utf8\").catch((error: Error) => {\n throw new Error(\n `Failed to read \"${packagePath}\": ${error instanceof Error ? error.message : String(error)}`,\n );\n });\n try {\n return JSON.parse(pkg);\n } catch (error: unknown) {\n throw new Error(\n `Failed to parse \"${packagePath}\": ${error instanceof Error ? error.message : String(error)}`,\n { cause: error },\n );\n }\n}\n","import fs from \"node:fs/promises\";\n\nconst COMMIT_GUIDELINE =\n \"See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.\";\n\nconst CHANGELOG_HEADER = [\n \"# Changelog\",\n \"\",\n \"All notable changes to this project will be documented in this file.\",\n COMMIT_GUIDELINE,\n \"\",\n].join(\"\\n\");\n\nexport const updateChangelogFile = async (\n versionChangelogContent: string,\n tagPrefix: string,\n file = \"CHANGELOG.md\",\n): Promise<void> => {\n const START_OF_LAST_RELEASE_PATTERN = new RegExp(\n `(^#+ \\\\[?(?:${tagPrefix})?\\\\d+\\\\.\\\\d+\\\\.\\\\d+|<a name=)`,\n \"m\",\n );\n\n let oldContent = \"\";\n\n try {\n oldContent = await fs.readFile(file, \"utf8\");\n const oldContentStart = oldContent.search(START_OF_LAST_RELEASE_PATTERN);\n // find the position of the last release and remove header:\n if (oldContentStart !== -1) {\n oldContent = oldContent.slice(Math.max(0, oldContentStart));\n }\n } catch {}\n\n await fs.writeFile(\n file,\n `${CHANGELOG_HEADER}\\n${versionChangelogContent}\\n${oldContent}`,\n );\n};\n","/* eslint-disable complexity */\n\nimport { Option, program } from \"commander\";\nimport { LoggerCLI } from \"nightingale\";\nimport { satisfies } from \"semver\";\nimport {\n autoDetectPackageManager,\n getPackageManager,\n} from \"../pm/PackageManager.ts\";\nimport { UsageError } from \"../utils/UsageError.ts\";\nimport type { BumpType } from \"../utils/bumpTypeUtils.ts\";\nimport {\n calcBumpRange,\n calcBumpType,\n getHighestBumpType,\n incrementVersion,\n} from \"../utils/bumpTypeUtils.ts\";\nimport {\n createCommitsParser,\n generateChangelog,\n recommendBump,\n} from \"../utils/conventionalChangelogUtils.ts\";\nimport { loadConventionalCommitConfig } from \"../utils/conventionalCommitConfigUtils.ts\";\nimport { asyncIterableToArray } from \"../utils/generatorUtils.ts\";\nimport type { GitTagVersion } from \"../utils/gitUtils.ts\";\nimport {\n createGitCommit,\n createGitTag,\n getDirtyFiles,\n getGitCommits,\n getGitCurrentBranch,\n getGitLatestTagVersion,\n isBehindRemote,\n pushCommitsAndTags,\n} from \"../utils/gitUtils.ts\";\nimport {\n createGhRelease,\n ensureGhCliAvailable,\n parseGithubRepoUrl,\n} from \"../utils/githubUtils.ts\";\nimport {\n PackageDependencyDescriptorUtils,\n PackageDescriptorNameUtils,\n} from \"../utils/packageDependenciesUtils.ts\";\nimport type { PackageDependencyDescriptor } from \"../utils/packageDependenciesUtils.ts\";\nimport type { Workspace } from \"../utils/packageUtils.ts\";\nimport {\n createProjectWorkspace,\n createWorkspace,\n findRootWorkspace,\n writePkg,\n} from \"../utils/packageUtils.ts\";\nimport { updateChangelogFile } from \"../utils/updateChangelog.ts\";\nimport type { DependencyType } from \"../utils/workspaceUtils.ts\";\nimport {\n buildDependenciesMaps,\n buildTopologicalOrderBatches,\n getWorkspaceName,\n} from \"../utils/workspaceUtils.ts\";\n\nexport interface VersionCommandOptions {\n cwd: string;\n includesRoot: boolean;\n dryRun: boolean;\n force?: \"major\" | \"minor\" | \"patch\";\n prerelease?: string;\n json: boolean;\n preset: string;\n tagVersionPrefix: string;\n changelog: string;\n commitMessage: string;\n createRelease: boolean;\n bumpDependentsHighestAs: \"major\" | \"minor\" | \"patch\";\n alwaysBumpPeerDependencies: boolean;\n gitRemote: string;\n ignoreChanges?: string;\n verbose?: boolean;\n cwdIsRoot?: boolean;\n packageManager?: \"bun\" | \"yarn\";\n publish?: boolean;\n publishProvenance?: boolean;\n}\n\ninterface BumpableWorkspace {\n workspace: Workspace;\n previousTag?: string;\n workspaceName: string;\n isRoot: boolean;\n version: string;\n}\n\ninterface ChangedWorkspace {\n bumpReason?: string;\n bumpType: BumpType;\n}\n\ninterface NoVersionToUpdateWorkspace {\n // for legacy configuration not using workspaces ranges https://yarnpkg.com/features/workspaces#workspace-ranges-workspace\n dependenciesToBump: [DependencyType, PackageDependencyDescriptor, string][];\n}\n\ninterface BumpedWorkspace extends ChangedWorkspace, NoVersionToUpdateWorkspace {\n bumpForDependenciesReasons?: string[];\n hasChanged: boolean;\n currentVersion: string;\n newVersion: string;\n newTag: string | null;\n}\n\nconst todayInYYYYMMDD = (): string => {\n // sv-SEis used for yyyy-mm-dd format\n const dateFormatter = Intl.DateTimeFormat(\"sv-SE\", {\n timeZone: \"UTC\",\n });\n return dateFormatter.format(new Date());\n};\n\nexport const versionCommandAction = async (\n options: VersionCommandOptions,\n { logger = new LoggerCLI(\"@pob/version\", { json: options.json }) } = {},\n): Promise<void> => {\n const rootWorkspace = await (options.cwdIsRoot\n ? createWorkspace(options.cwd)\n : findRootWorkspace(options.cwd));\n\n if (!rootWorkspace) {\n throw new UsageError(\"Could not find root workspace from this path.\");\n }\n\n const packageManager = options.packageManager\n ? getPackageManager(rootWorkspace, options.packageManager)\n : autoDetectPackageManager(rootWorkspace);\n\n const project = await createProjectWorkspace(rootWorkspace);\n\n if (!options.dryRun) {\n const dirtyFiles = await getDirtyFiles(project.root);\n if (dirtyFiles) {\n throw new Error(\n `Dirty Files:\\n${dirtyFiles}\\n\\nThere are uncommitted changes in the git repository. Please commit or stash them first.`,\n );\n }\n }\n\n const rootWorkspaceChildren = [...project.children.values()];\n let rootNewVersion = \"\";\n let rootNewTag = \"\";\n const isMonorepo = rootWorkspaceChildren.length > 0;\n const isMonorepoVersionIndependent = isMonorepo && !rootWorkspace.pkg.version;\n const workspaces =\n !(isMonorepo && !rootWorkspaceChildren) || options.includesRoot\n ? [rootWorkspace, ...rootWorkspaceChildren]\n : rootWorkspaceChildren;\n\n if (options.prerelease) {\n throw new UsageError(\"--prerelease is not supported yet.\");\n }\n if (options.ignoreChanges) {\n throw new UsageError(\"--ignore-changes is not supported yet.\");\n }\n\n const [conventionalCommitConfig, parsedRepoUrl, gitCurrentBranch] =\n await Promise.all([\n loadConventionalCommitConfig(rootWorkspace, options.preset),\n options.createRelease\n ? parseGithubRepoUrl(rootWorkspace)\n : Promise.resolve(null),\n getGitCurrentBranch(rootWorkspace),\n // ensure gh CLI is available early to fail fast if necessary\n options.createRelease\n ? ensureGhCliAvailable(rootWorkspace)\n : Promise.resolve(undefined),\n ]);\n\n const rootPreviousVersionTagPromise =\n options.force || isMonorepoVersionIndependent\n ? null\n : getGitLatestTagVersion(rootWorkspace, {\n prefix: options.tagVersionPrefix,\n skipUnstable: true,\n });\n\n const buildTagName = (workspace: Workspace, version: string): string =>\n `${\n isMonorepo && workspace !== rootWorkspace\n ? `${getWorkspaceName(workspace)}@`\n : options.tagVersionPrefix\n }${version}`;\n\n const changedWorkspaces = new Map<Workspace, ChangedWorkspace>();\n const dependenciesMap = isMonorepo ? buildDependenciesMaps(project) : null;\n\n const bumpableWorkspaces: BumpableWorkspace[] = [];\n\n logger.group(\n options.force\n ? \"Check all workspaces (force option)\"\n : \"Finding changed workspaces\",\n () => {\n // check workspaces and create bumpableWorkspaces\n\n for (const workspace of workspaces) {\n const workspaceName = getWorkspaceName(workspace);\n const isRoot = workspace === rootWorkspace;\n if (isRoot && isMonorepo && isMonorepoVersionIndependent) continue;\n\n const version = workspace.pkg.version;\n\n if (!version || version === \"0.0.0\") {\n if (\n (isRoot || isMonorepoVersionIndependent) &&\n (!isMonorepo || !isMonorepoVersionIndependent)\n ) {\n throw new UsageError(\n 'package.json has no version in its manifest. For the first release, set to \"1.0.0-pre\" or \"0.1.0-pre\".',\n );\n }\n\n logger.info(`${workspaceName}: skipped (no version)`);\n continue;\n }\n\n bumpableWorkspaces.push({\n workspace,\n workspaceName,\n isRoot,\n version,\n });\n }\n\n if (bumpableWorkspaces.length > 0) {\n logger.info(\"Found bumpable workspaces\", {\n count: bumpableWorkspaces.length,\n });\n }\n },\n );\n\n const previousTagVersionByWorkspace = new Map<\n Workspace,\n GitTagVersion | null\n >(\n await Promise.all(\n bumpableWorkspaces.map(async ({ workspace, workspaceName, isRoot }) => {\n const packageOption =\n isMonorepo && isMonorepoVersionIndependent\n ? workspaceName\n : undefined;\n\n const tagPrefix = packageOption\n ? `${packageOption}@`\n : options.tagVersionPrefix;\n\n const previousTagAndVersion = await (isRoot ||\n !isMonorepoVersionIndependent\n ? rootPreviousVersionTagPromise\n : getGitLatestTagVersion(rootWorkspace, {\n path: workspace.relativeCwd,\n prefix: tagPrefix,\n skipUnstable: true,\n }));\n\n return [workspace, previousTagAndVersion] as const;\n }),\n ),\n );\n\n if (options.dryRun) {\n logger.info(\"Previous tags\", {\n previousTagByWorkspace: Object.fromEntries(\n [...previousTagVersionByWorkspace.entries()].map(\n ([workspace, previousTagVersion]) => [\n getWorkspaceName(workspace),\n previousTagVersion?.tag,\n ],\n ),\n ),\n });\n }\n\n const parseCommits = createCommitsParser(conventionalCommitConfig);\n\n const commitsByWorkspace = options.force\n ? undefined\n : new Map(\n await Promise.all(\n bumpableWorkspaces.map(async ({ workspace }) => {\n const previousTagVersion =\n previousTagVersionByWorkspace.get(workspace);\n\n const commits = await asyncIterableToArray(\n parseCommits(\n getGitCommits(rootWorkspace, {\n path: workspace.relativeCwd,\n from: previousTagVersion?.tag || undefined,\n }),\n ),\n );\n\n return [workspace, commits] as const;\n }),\n ),\n );\n\n await logger.group(\"Finding changed workspaces\", async () => {\n for (const { workspace, workspaceName } of bumpableWorkspaces) {\n let bumpType: BumpType | null = null;\n let bumpReason: string | undefined;\n\n if (options.force) {\n bumpType = options.force;\n bumpReason = \"forced by --force flag\";\n } else {\n const commits = commitsByWorkspace?.get(workspace);\n\n // No changes found for this package\n if (!commits || commits.length === 0) {\n logger.info(`${workspaceName}: skipped (no changes)`);\n continue;\n }\n\n const { releaseType, reason } = await recommendBump(\n commits,\n conventionalCommitConfig,\n );\n bumpReason = reason;\n\n if (releaseType) {\n bumpType = releaseType satisfies BumpType;\n }\n }\n\n if (bumpType) {\n if (isMonorepo && !workspace.pkg.name) {\n throw new Error(\"Workspace name is required\");\n }\n\n const currentVersion = workspace.pkg.version;\n\n if (!currentVersion) {\n throw new UsageError(\n `Invalid \"${getWorkspaceName(workspace)}\" version`,\n );\n }\n\n changedWorkspaces.set(workspace, {\n bumpType,\n bumpReason,\n });\n }\n }\n\n if (changedWorkspaces.size === 0) {\n logger.info(\"No changed workspaces\");\n }\n });\n\n const bumpedWorkspaces = new Map<Workspace, BumpedWorkspace>();\n const noVersionToUpdateWorkspaces = new Map<\n Workspace,\n NoVersionToUpdateWorkspace\n >();\n const batches = dependenciesMap\n ? buildTopologicalOrderBatches(project, dependenciesMap)\n : [[rootWorkspace]];\n\n logger.group(\"Preparing bumping\", () => {\n for (const batch of batches) {\n for (const workspace of batch) {\n const currentVersion = workspace.pkg.version;\n\n if (!currentVersion && !workspace.pkg.private) {\n throw new UsageError(\n `Invalid \"${getWorkspaceName(workspace)}\" version`,\n );\n }\n\n const changedWorkspace = changedWorkspaces.get(workspace);\n let bumpType: BumpType | null = null;\n const bumpReasons: string[] = [];\n const dependenciesToBump: BumpedWorkspace[\"dependenciesToBump\"] = [];\n\n if (changedWorkspace) {\n bumpType = changedWorkspace.bumpType;\n bumpReasons.push(changedWorkspace.bumpReason || \"by commits\");\n }\n\n const dependencies = dependenciesMap?.get(workspace);\n\n if (dependencies) {\n for (const [\n dependencyWorkspace,\n dependencyType,\n dependencyDescriptor,\n ] of dependencies) {\n const dependencyBumpedWorkspace =\n bumpedWorkspaces.get(dependencyWorkspace);\n\n if (!dependencyBumpedWorkspace) {\n continue;\n }\n\n if (\n dependencyType === \"peerDependencies\" &&\n !options.alwaysBumpPeerDependencies &&\n // skip when peerdependency with a new version satisfied by the existing range.\n satisfies(\n dependencyBumpedWorkspace.newVersion,\n dependencyDescriptor.selector,\n { includePrerelease: true },\n )\n ) {\n continue;\n }\n\n const newRange = calcBumpRange(\n workspace,\n dependencyDescriptor.selector,\n dependencyBumpedWorkspace.newVersion,\n );\n\n if (\n dependencyDescriptor.selector === newRange &&\n newRange !== \"workspace:*\"\n ) {\n continue;\n }\n\n dependenciesToBump.push([\n dependencyType,\n dependencyDescriptor,\n newRange,\n ]);\n\n bumpType = getHighestBumpType([\n bumpType ?? \"patch\",\n calcBumpType(\n dependencyBumpedWorkspace.bumpType,\n options.bumpDependentsHighestAs,\n ),\n ]);\n\n bumpReasons.push(\n `Version bump for dependency: ${PackageDescriptorNameUtils.stringify(dependencyDescriptor.name)}`,\n );\n }\n }\n\n const workspaceName = getWorkspaceName(workspace);\n if (!currentVersion) {\n logger.info(`${workspaceName}: skipped (no version)`);\n if (workspace !== rootWorkspace) {\n noVersionToUpdateWorkspaces.set(workspace, {\n dependenciesToBump,\n });\n }\n } else if (!bumpType) {\n logger.info(\n `${workspaceName}: skipped (${\n changedWorkspace\n ? `no bump recommended by ${options.preset}`\n : \"no changes\"\n })`,\n );\n } else {\n const newVersion = incrementVersion(\n workspace,\n currentVersion,\n bumpType,\n );\n\n const tagName = buildTagName(workspace, newVersion);\n\n if (workspace === rootWorkspace) {\n rootNewVersion = newVersion;\n rootNewTag = tagName;\n }\n\n if (workspace !== rootWorkspace || !isMonorepo) {\n const bumpReason = bumpReasons.join(\"\\n\");\n bumpedWorkspaces.set(workspace, {\n currentVersion,\n bumpType,\n bumpReason,\n bumpForDependenciesReasons: changedWorkspace\n ? bumpReasons.slice(1)\n : bumpReasons,\n newVersion,\n newTag: tagName,\n hasChanged: changedWorkspace !== undefined,\n dependenciesToBump,\n });\n\n logger.info(\n `${workspaceName}: ${currentVersion} -> ${\n !isMonorepo || isMonorepoVersionIndependent\n ? newVersion\n : \"bump\"\n } (${bumpReason.replaceAll(\"\\n\", \" ; \")})`,\n );\n // TODO Json only:\n // logger.info({\n // cwd: npath.fromPortablePath(workspace.cwd),\n // ident: workspaceName,\n // oldVersion: currentVersion,\n // ...(isMonorepoVersionIndependent ? { newVersion } : {}),\n // bumpType,\n // bumpReasons,\n // });\n }\n }\n }\n }\n });\n\n // TODO ask for confirmation\n // if (!this.yes) {\n // }\n\n // TODO do this entire phase here, not override for not independent only\n if (isMonorepo && !isMonorepoVersionIndependent) {\n const currentVersion = rootWorkspace.pkg.version!;\n const highestBumpType = getHighestBumpType(\n [...bumpedWorkspaces.values()].map(({ bumpType }) => bumpType),\n );\n const newVersion = incrementVersion(\n rootWorkspace,\n currentVersion,\n highestBumpType,\n );\n rootNewVersion = newVersion;\n rootNewTag = buildTagName(rootWorkspace, newVersion);\n\n [...bumpedWorkspaces.entries()].forEach(([workspace, bumpedWorkspace]) => {\n const isRoot = workspace === rootWorkspace;\n if (isRoot) {\n throw new Error(\"Unexpected root found in bumped workspaces\");\n }\n bumpedWorkspace.bumpType = highestBumpType;\n bumpedWorkspace.newVersion = newVersion;\n bumpedWorkspace.newTag = null;\n });\n\n [\n ...bumpedWorkspaces.entries(),\n ...noVersionToUpdateWorkspaces.entries(),\n ].forEach(([workspace, { dependenciesToBump }]) => {\n dependenciesToBump.forEach((dependencyToBump) => {\n dependencyToBump[2] = calcBumpRange(\n workspace,\n dependencyToBump[1].selector,\n newVersion,\n );\n });\n });\n\n bumpedWorkspaces.set(rootWorkspace, {\n currentVersion,\n bumpType: highestBumpType,\n hasChanged: true,\n newVersion: rootNewVersion,\n newTag: rootNewTag,\n dependenciesToBump: [],\n });\n\n logger.info(\n `${currentVersion} -> ${newVersion}`,\n // TODO Json only:\n // {\n // oldVersion: currentVersion,\n // newVersion, },\n );\n }\n\n await logger.group(\"Applying changes\", async () => {\n // Update lockfile ; must be done to make sure preversion script can be ran\n\n if (!options.dryRun) {\n if (packageManager.installOnPackageContentChange) {\n logger.info(`${getWorkspaceName(rootWorkspace)}: Running install`);\n await packageManager.installOnPackageContentChange(rootWorkspace);\n }\n\n logger.info(\"Lifecycle script: preversion\");\n\n if (\n isMonorepoVersionIndependent &&\n rootWorkspace.pkg.scripts?.preversion\n ) {\n await packageManager.runScript(rootWorkspace, \"preversion\");\n }\n\n // lifecycle: preversion\n for (const workspace of bumpedWorkspaces.keys()) {\n if (workspace.pkg.scripts?.preversion) {\n await packageManager.runScript(workspace, \"preversion\");\n }\n }\n\n logger.info(\"Modifying versions in package.json\");\n // update versions\n\n await Promise.all(\n [...bumpedWorkspaces.entries()].map(\n ([workspace, { newVersion, dependenciesToBump }]) => {\n workspace.pkg.version = newVersion;\n\n for (const [\n dependencyType,\n dependencyDescriptor,\n dependencyNewRange,\n ] of dependenciesToBump) {\n const newDescriptor = PackageDependencyDescriptorUtils.make(\n dependencyDescriptor,\n dependencyNewRange,\n );\n const [key, newValue] =\n PackageDependencyDescriptorUtils.stringify(newDescriptor);\n workspace.pkg[dependencyType]![key] = newValue;\n }\n\n return writePkg(workspace);\n },\n ),\n );\n\n if (packageManager.installOnPackageContentChange) {\n // Update lockfile ; must be done before running again lifecycle scripts\n logger.info(`${getWorkspaceName(rootWorkspace)}: Running install`);\n await packageManager.installOnPackageContentChange(rootWorkspace);\n }\n\n // lifecycle: version\n logger.info(\"Lifecycle script: version\");\n for (const workspace of bumpedWorkspaces.keys()) {\n if (workspace.pkg.scripts?.version) {\n await packageManager.runScript(workspace, \"version\");\n }\n }\n }\n\n if (isMonorepoVersionIndependent && rootWorkspace.pkg.scripts?.version) {\n await packageManager.runScript(rootWorkspace, \"version\");\n }\n });\n\n const changelogs = new Map<Workspace, string>();\n\n await Promise.all(\n [...bumpedWorkspaces.entries()].map(\n async ([\n workspace,\n { newTag, hasChanged, bumpReason, bumpForDependenciesReasons },\n ]) => {\n // const workspaceRelativePath =\n // rootWorkspace === workspace\n // ? undefined\n // : path.relative(rootWorkspace.cwd, workspace.cwd);\n\n const commits = commitsByWorkspace?.get(workspace);\n\n let changelog = await generateChangelog(\n rootWorkspace,\n workspace.pkg,\n conventionalCommitConfig,\n previousTagVersionByWorkspace.get(workspace)?.tag || null,\n isMonorepoVersionIndependent ? newTag : rootNewTag,\n commits,\n todayInYYYYMMDD(),\n // {\n // path: workspaceRelativePath,\n // previousTag: previousTagByWorkspace.get(workspace) || undefined,\n // verbose: options.verbose,\n // tagPrefix: options.tagVersionPrefix,\n // lernaPackage:\n // rootWorkspace === workspace\n // ? undefined\n // : getWorkspaceName(workspace),\n // },\n );\n\n if (bumpForDependenciesReasons && workspace !== rootWorkspace) {\n if (bumpForDependenciesReasons.length > 0) {\n changelog += `${!changelog.endsWith(\"\\n\\n\") ? \"\\n\" : \"\"}${bumpForDependenciesReasons.join(\"\\n\")}\\n\\n`;\n }\n }\n\n if (changelog.slice(changelog.indexOf(\"\\n\")).trim().length === 0) {\n changelog += `${!changelog.endsWith(\"\\n\\n\") ? \"\\n\" : \"\"}Note: no notable changes\\n\\n`;\n }\n\n if (!changelog && rootWorkspace === workspace) {\n throw new Error(\"No changelog found for root workspace\");\n }\n\n changelogs.set(workspace, changelog);\n\n if (options.changelog) {\n if (options.dryRun) {\n logger.info(\n `${getWorkspaceName(workspace)}: ${\n options.changelog\n }\\n${changelog}`,\n );\n } else {\n await updateChangelogFile(\n changelog,\n options.tagVersionPrefix,\n `${workspace.cwd}/${options.changelog}`,\n );\n }\n }\n },\n ),\n );\n\n if (!options.dryRun) {\n logger.separator();\n\n if (packageManager.installOnPackageContentChange) {\n // install to update versions in lock file\n logger.info(`${getWorkspaceName(rootWorkspace)}: Running install`);\n await packageManager.installOnPackageContentChange(rootWorkspace);\n }\n\n logger.separator();\n\n const changedFiles = await getDirtyFiles(project.root);\n\n if (changedFiles) {\n logger.info(\"Commit, tag and push\", {\n changedFiles,\n });\n\n const tagsSet = new Set<string>(\n [...bumpedWorkspaces.values()]\n .map(({ newTag }) => newTag)\n .filter((newTag) => newTag !== null),\n );\n\n const tagsInCommitMessage = [...tagsSet]\n .map((tag) => `- ${tag}`)\n .join(\"\\n\");\n const message = options.commitMessage\n .replace(/\\\\n/g, \"\\n\")\n .replace(\n /%a/g,\n isMonorepoVersionIndependent\n ? `\\n\\n${tagsInCommitMessage}`\n : rootNewVersion,\n )\n .replace(/%s/g, rootNewTag)\n .replace(/%v/g, rootNewVersion)\n .replace(/%t/g, tagsInCommitMessage);\n\n await createGitCommit(rootWorkspace, message);\n\n for (const [workspace, { newTag }] of bumpedWorkspaces.entries()) {\n if (newTag === null) continue;\n await createGitTag(workspace, newTag);\n }\n\n if (\n await isBehindRemote(rootWorkspace, options.gitRemote, gitCurrentBranch)\n ) {\n logger.error(\"Remote is ahead, aborting\");\n // eslint-disable-next-line unicorn/no-process-exit\n process.exit(1);\n }\n\n await pushCommitsAndTags(\n rootWorkspace,\n options.gitRemote,\n gitCurrentBranch,\n );\n\n // run postversion\n if (rootWorkspace.pkg.scripts?.postversion) {\n logger.info(\"Lifecycle script: postversion\");\n await packageManager.runScript(rootWorkspace, \"postversion\");\n }\n\n // TODO open github PR\n\n if (options.createRelease && parsedRepoUrl) {\n logger.info(\"Create git release\");\n\n await Promise.all(\n [...bumpedWorkspaces.entries()].map(([workspace, { newTag }]) => {\n if (newTag === null) return Promise.resolve(undefined);\n const changelog = changelogs.get(workspace);\n if (!changelog) {\n logger.warn(\n `No changelog found for workspace: ${getWorkspaceName(\n workspace,\n )}`,\n );\n return Promise.resolve(undefined);\n }\n return createGhRelease(workspace, {\n parsedRepoUrl,\n title: newTag,\n tag: newTag,\n body: changelog,\n prerelease: !!options.prerelease,\n });\n }),\n );\n }\n\n if (!options.publish) {\n return;\n }\n await logger.group(\"Publishing packages\", async () => {\n if (packageManager.publishWorkspaces) {\n await packageManager.publishWorkspaces(rootWorkspace, {\n provenance: options.publishProvenance,\n });\n } else {\n for (const [workspace] of bumpedWorkspaces.entries()) {\n if (workspace.pkg.private) {\n logger.info(\n `Skipping private workspace ${getWorkspaceName(workspace)}`,\n );\n continue;\n }\n\n logger.info(`Publishing ${getWorkspaceName(workspace)}`);\n await packageManager.publish(workspace, {\n provenance: options.publishProvenance,\n });\n }\n }\n });\n } else {\n logger.warn(\"No changes made. Nothing to commit.\");\n }\n }\n};\n\nexport const Defaults: VersionCommandOptions = {\n cwd: process.cwd(),\n includesRoot: false,\n dryRun: false,\n json: false,\n preset: \"conventional-changelog-conventionalcommits\",\n tagVersionPrefix: \"v\",\n changelog: \"CHANGELOG.md\",\n commitMessage: \"chore: release %a\",\n createRelease: false,\n bumpDependentsHighestAs: \"major\",\n alwaysBumpPeerDependencies: false,\n gitRemote: \"origin\",\n verbose: false,\n publish: false,\n publishProvenance: false,\n};\n\nexport default program\n .command(\"version\", { isDefault: true })\n .usage(\"Bump package version using conventional commit\")\n .addOption(\n new Option(\"--includes-root\", \"Release root workspace [untested]\").default(\n Defaults.includesRoot,\n ),\n )\n .addOption(new Option(\"--cwd\", \"working directory\").default(process.cwd()))\n .addOption(\n new Option(\n \"--dry-run\",\n \"Print the versions without actually generating the package archive\",\n ).default(Defaults.dryRun),\n )\n .addOption(new Option(\"-v,--verbose\").default(Defaults.verbose))\n .addOption(\n new Option(\"--force <type>\", \"Specify the release type\").choices([\n \"major\",\n \"minor\",\n \"patch\",\n ]),\n )\n .addOption(\n new Option(\n \"--prerelease [releaseType]\",\n \"Add a prerelease identifier to new versions\",\n ),\n )\n .addOption(\n new Option(\n \"--preset <presetName>\",\n \"Conventional Changelog preset to require. Defaults to conventional-changelog-conventionalcommits.\",\n ).default(\"conventional-changelog-conventionalcommits\"),\n )\n .addOption(\n new Option(\"--tag-version-prefix <prefix>\", \"Tag version prefix\").default(\n Defaults.tagVersionPrefix,\n ),\n )\n .addOption(\n new Option(\n \"--changelog <path>\",\n \"Changelog path. Default to CHANGELOG.md.\",\n ).default(Defaults.changelog),\n )\n .addOption(\n new Option(\n \"-m,--commit-message <message>\",\n 'Commit message. Default to \"chore: release %a\". You can use %v for the version, %s for the version with prefix, %t to list tags, %a for auto best display.',\n ).default(Defaults.commitMessage),\n )\n .addOption(\n new Option(\"--create-release <type>\", \"Create a release\").choices([\n \"github\",\n ]),\n )\n .addOption(\n new Option(\n \"--bump-dependents-highest-as <type>\",\n \"Bump dependents highest version as major, minor or patch\",\n )\n .choices([\"major\", \"minor\", \"patch\"])\n .default(Defaults.bumpDependentsHighestAs),\n )\n .addOption(\n new Option(\n \"--always-bump-peer-dependencies\",\n \"Always bump peer dependencies. Default to bumping only if the version doesn't satisfies the peer dependency range.\",\n ).default(Defaults.alwaysBumpPeerDependencies),\n )\n .addOption(\n new Option(\n \"--git-remote <remote-name>\",\n \"Git remote to push commits and tags to\",\n ).default(Defaults.gitRemote),\n )\n .addOption(\n new Option(\n \"--ignore-changes <glob>\",\n 'Ignore changes in files matching the glob. Example: \"**/*.test.js\"',\n ),\n )\n .addOption(new Option(\"--json\", \"Logger json\"))\n .addOption(\n new Option(\n \"--package-manager <manager>\",\n \"Specify the package manager to use (bun or yarn). Autodetected if not specified.\",\n ).choices([\"bun\", \"yarn\"]),\n )\n .addOption(new Option(\"--publish\", \"Publish after versioning\").default(false))\n .addOption(\n new Option(\n \"--publish-provenance\",\n \"Generate provenance attestation when publishing (if supported by package manager)\",\n ).default(false),\n )\n .action((options) => versionCommandAction(options));\n","import fs from \"node:fs\";\nimport { program } from \"commander\";\n\nimport \"./commands/version.ts\";\n\n// relative to dist directory\nconst pkg = JSON.parse(\n // eslint-disable-next-line unicorn/prefer-json-parse-buffer\n fs.readFileSync(new URL(\"../package.json\", import.meta.url), \"utf8\"),\n);\n\nprogram.name(pkg.name).description(pkg.description).version(pkg.version);\nprogram.parse();\n"],"names":["chunk","selector","createConventionalCommitsParser","path","fs"],"mappings":"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"}
1
+ {"version":3,"file":"index-node.mjs","sources":["../src/utils/execCommand.ts","../src/pm/BunPackageManager.ts","../src/pm/PnpmPackageManager.ts","../src/pm/YarnPackageManager.ts","../src/pm/PackageManager.ts","../src/utils/UsageError.ts","../src/utils/mapUtils.ts","../src/utils/packageDependenciesUtils.ts","../src/utils/workspaceUtils.ts","../src/utils/bumpTypeUtils.ts","../src/utils/conventionalChangelogUtils.ts","../src/utils/conventionalCommitConfigUtils.ts","../src/utils/generatorUtils.ts","../src/utils/gitUtils.ts","../src/utils/githubUtils.ts","../src/utils/packageUtils.ts","../src/utils/updateChangelog.ts","../src/commands/version.ts","../src/index.ts"],"sourcesContent":["import childProcess from \"node:child_process\";\nimport type { Workspace } from \"./packageUtils.ts\";\n\ninterface ExecResultIfFailed {\n code: number | null;\n signal: string | null;\n stdout: string;\n stderr: string;\n}\n\ninterface ExecResultIfSuccess {\n code: null;\n signal: null;\n stdout: string;\n stderr: string;\n}\n\ntype ExecResult<Strict extends boolean> = Strict extends true\n ? ExecResultIfSuccess\n : ExecResultIfFailed;\n\nasync function execvp<const Strict extends boolean>(\n command: string,\n args: string[],\n {\n cwd = process.cwd(),\n env = process.env,\n encoding,\n strict,\n stdo = \"pipe\",\n input,\n }: {\n cwd?: string;\n env?: typeof process.env;\n encoding?: BufferEncoding;\n strict?: Strict;\n stdo?: \"inherit\" | \"pipe\";\n input?: string;\n },\n): Promise<ExecResult<Strict>> {\n const stdoutChunks: Uint8Array[] = [];\n const stderrChunks: Uint8Array[] = [];\n if (env.PWD !== undefined) {\n env = { ...env, PWD: cwd };\n }\n const subprocess = childProcess.spawn(command, args, {\n cwd,\n env,\n stdio: [input ? \"pipe\" : \"ignore\", stdo, stdo],\n });\n if (input && subprocess.stdin) {\n // write input to stdin and close it\n subprocess.stdin.write(input);\n subprocess.stdin.end();\n }\n subprocess.stdout?.on(\"data\", (chunk) => {\n stdoutChunks.push(chunk);\n });\n subprocess.stderr?.on(\"data\", (chunk) => {\n stderrChunks.push(chunk);\n });\n return new Promise((resolve, reject) => {\n subprocess.on(\"error\", (err) => {\n reject(new Error(`Process ${command} failed to spawn`));\n });\n subprocess.on(\"close\", (code, signal) => {\n const chunksToString = (chunks: Uint8Array[]): string =>\n stdo === \"inherit\"\n ? \"\"\n : Buffer.concat(chunks).toString(encoding ?? \"utf8\");\n const stdout = chunksToString(stdoutChunks);\n const stderr = chunksToString(stderrChunks);\n if (code === 0 || !strict) {\n resolve({\n code,\n signal,\n stdout,\n stderr,\n } as ExecResult<Strict>);\n } else {\n reject(\n new Error(\n `Process ${[command, ...args].join(\" \")} exited ${code !== null ? `with code ${code}` : `with signal ${signal || \"\"}`}:\\nstdout: ${stdout}\\nstderr: ${stderr}`,\n ),\n );\n }\n });\n });\n}\n\nasync function* spawnStreamStdout<const Strict extends boolean>(\n command: string,\n args: string[],\n {\n cwd = process.cwd(),\n env = process.env,\n encoding,\n strict,\n separator,\n }: {\n cwd?: string;\n env?: typeof process.env;\n encoding?: BufferEncoding;\n strict?: Strict;\n separator: string;\n },\n): AsyncGenerator<string, ExecResult<Strict>, unknown> {\n const stderrChunks: Uint8Array[] = [];\n if (env.PWD !== undefined) {\n env = { ...env, PWD: cwd };\n }\n const subprocess = childProcess.spawn(command, args, {\n cwd,\n env,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n\n subprocess.stderr.on(\"data\", (chunk) => {\n stderrChunks.push(chunk);\n });\n\n let chunk: Buffer;\n let payload: string[];\n let buffer = \"\";\n\n for await (chunk of subprocess.stdout) {\n buffer += chunk.toString();\n\n if (buffer.includes(separator)) {\n payload = buffer.split(separator);\n buffer = payload.pop() || \"\";\n\n yield* payload;\n }\n }\n\n if (buffer) {\n yield buffer;\n }\n\n return new Promise((resolve, reject) => {\n subprocess.on(\"error\", (err) => {\n reject(new Error(`Process ${command} failed to spawn`));\n });\n subprocess.on(\"close\", (code, signal) => {\n const chunksToString = (chunks: Uint8Array[]): string =>\n Buffer.concat(chunks).toString(encoding ?? \"utf8\");\n const stderr = chunksToString(stderrChunks);\n if (code === 0 || !strict) {\n resolve({\n code,\n signal,\n stderr,\n } as ExecResult<Strict>);\n } else {\n reject(\n new Error(\n `Process ${[command, ...args].join(\" \")} exited ${code !== null ? `with code ${code}` : `with signal ${signal || \"\"}`}:\\nstderr: ${stderr}`,\n ),\n );\n }\n });\n });\n}\n\nexport const execCommand = (\n workspace: Workspace,\n commandAndArgs: string[],\n stdo: \"inherit\" | \"pipe\" = \"pipe\",\n): ReturnType<typeof execvp> => {\n const [command, ...args] = commandAndArgs;\n if (command === undefined) {\n throw new Error(\"Command is required\");\n }\n return execvp(command, args, {\n cwd: workspace.cwd,\n strict: true,\n stdo,\n });\n};\n\nexport const execCommandWithInput = (\n workspace: Workspace,\n commandAndArgs: string[],\n input: string,\n stdo: \"inherit\" | \"pipe\" = \"pipe\",\n): ReturnType<typeof execvp> => {\n const [command, ...args] = commandAndArgs;\n if (command === undefined) {\n throw new Error(\"Command is required\");\n }\n return execvp(command, args, {\n cwd: workspace.cwd,\n strict: true,\n stdo,\n input,\n });\n};\n\nexport const execCommandStreamStdout = (\n workspace: Workspace,\n commandAndArgs: string[],\n separator = \"\\n\",\n): AsyncGenerator<string, ExecResult<true>, unknown> => {\n const [command, ...args] = commandAndArgs;\n if (command === undefined) {\n throw new Error(\"Command is required\");\n }\n return spawnStreamStdout(command, args, {\n cwd: workspace.cwd,\n strict: true,\n separator,\n });\n};\n","import { execCommand } from \"../utils/execCommand.ts\";\nimport type {\n PackageManager,\n PackageManagerPublishOptions,\n} from \"./PackageManager.ts\";\n\nexport const BunPackageManager: PackageManager = {\n async runScript(workspace, scriptName) {\n await execCommand(workspace, [\"bun\", \"run\", scriptName], \"inherit\");\n },\n\n async publish(workspace, options?: PackageManagerPublishOptions) {\n if (options?.provenance) {\n // Use bun pack for provenance support\n // See: https://github.com/oven-sh/bun/issues/15601\n const packResult = await execCommand(workspace, [\"bun\", \"pm\", \"pack\"]);\n // Extract .tgz filename from output (find line ending with .tgz)\n const lines = packResult.stdout.trim().split(\"\\n\");\n const tgzPath =\n lines.find((line) => line.endsWith(\".tgz\")) ?? lines.at(-1);\n if (!tgzPath) {\n throw new Error(\"Failed to extract .tgz path from bun pack output\");\n }\n await execCommand(workspace, [\"npm\", \"publish\", \"--provenance\", tgzPath]);\n } else {\n await execCommand(workspace, [\"bun\", \"publish\"], \"inherit\");\n }\n },\n};\n","import { execCommand } from \"../utils/execCommand.ts\";\nimport type {\n PackageManager,\n PackageManagerPublishOptions,\n} from \"./PackageManager.ts\";\n\nexport const PnpmPackageManager: PackageManager = {\n async runScript(workspace, scriptName) {\n await execCommand(workspace, [\"pnpm\", \"run\", scriptName], \"inherit\");\n },\n\n async publish(workspace, options?: PackageManagerPublishOptions) {\n if (options?.provenance) {\n await execCommand(\n workspace,\n [\"pnpm\", \"publish\", \"--provenance\"],\n \"inherit\",\n );\n } else {\n await execCommand(workspace, [\"pnpm\", \"publish\"], \"inherit\");\n }\n },\n};\n","import { execCommand } from \"../utils/execCommand.ts\";\nimport type { Workspace } from \"../utils/packageUtils.ts\";\nimport type {\n PackageManager,\n PackageManagerPublishOptions,\n} from \"./PackageManager.ts\";\n\nexport const YarnPackageManager: PackageManager = {\n async installOnPackageContentChange(rootWorkspace: Workspace) {\n await execCommand(rootWorkspace, [\"yarn\", \"install\"], \"inherit\");\n },\n\n async runScript(workspace: Workspace, scriptName: string) {\n await execCommand(workspace, [\"yarn\", \"run\", scriptName], \"inherit\");\n },\n\n async publish(workspace: Workspace, options?: PackageManagerPublishOptions) {\n const publishArgs = [\"yarn\", \"npm\", \"publish\"];\n if (options?.provenance) {\n publishArgs.push(\"--provenance\");\n }\n await execCommand(workspace, publishArgs, \"inherit\");\n },\n\n async publishWorkspaces(\n rootWorkspace: Workspace,\n options?: PackageManagerPublishOptions,\n ) {\n const publishArgs = [\n \"yarn\",\n \"workspaces\",\n \"foreach\",\n \"--all\",\n \"--parallel\",\n \"--no-private\",\n \"npm\",\n \"publish\",\n ];\n if (options?.provenance) {\n publishArgs.push(\"--provenance\");\n }\n await execCommand(rootWorkspace, publishArgs, \"inherit\");\n },\n};\n","import { existsSync } from \"node:fs\";\nimport type { Workspace } from \"../utils/packageUtils.ts\";\nimport { BunPackageManager } from \"./BunPackageManager.ts\";\nimport { PnpmPackageManager } from \"./PnpmPackageManager.ts\";\nimport { YarnPackageManager } from \"./YarnPackageManager.ts\";\n\nexport interface PackageManagerPublishOptions {\n provenance?: boolean;\n}\n\nexport interface PackageManager {\n installOnPackageContentChange?: (rootWorkspace: Workspace) => Promise<void>;\n runScript: (workspace: Workspace, scriptName: string) => Promise<void>;\n publish: (\n workspace: Workspace,\n options?: PackageManagerPublishOptions,\n ) => Promise<void>;\n publishWorkspaces?: (\n rootWorkspace: Workspace,\n options?: PackageManagerPublishOptions,\n ) => Promise<void>;\n}\n\nexport const autoDetectPackageManager = (\n rootWorkspace: Workspace,\n): PackageManager => {\n const hasYarnLock = existsSync(`${rootWorkspace.cwd}/yarn.lock`);\n const hasBunLockLegacy = existsSync(`${rootWorkspace.cwd}/bun.lockb`);\n const hasBunLock = existsSync(`${rootWorkspace.cwd}/bun.lock`);\n const hasNpmPackageLock = existsSync(\n `${rootWorkspace.cwd}/package-lock.json`,\n );\n const hasPnpmLock = existsSync(`${rootWorkspace.cwd}/pnpm-lock.yaml`);\n\n if (\n [\n hasYarnLock,\n hasBunLockLegacy,\n hasBunLock,\n hasNpmPackageLock,\n hasPnpmLock,\n ].filter(Boolean).length > 1\n ) {\n throw new Error(\n `Multiple lock files detected in workspace at ${rootWorkspace.cwd}. Please ensure only one lock file is present, or pass --package-manager option to bypass auto-detection.`,\n );\n }\n\n if (hasYarnLock) {\n return YarnPackageManager;\n }\n\n if (hasBunLockLegacy || hasBunLock) {\n return BunPackageManager;\n }\n\n if (hasPnpmLock) {\n return PnpmPackageManager;\n }\n\n if (hasNpmPackageLock) {\n throw new Error(\n \"NPM is not currently supported as a package manager. Please migrate to Yarn or Bun, or open an issue to request support.\",\n );\n }\n\n throw new Error(\n `No lock file detected in workspace at ${rootWorkspace.cwd}. Please ensure a supported lock file is present, or pass --package-manager option to bypass auto-detection.`,\n );\n};\n\nexport const getPackageManager = (\n rootWorkspace: Workspace,\n specifiedPackageManager?: \"bun\" | \"pnpm\" | \"yarn\",\n): PackageManager => {\n switch (specifiedPackageManager) {\n case \"bun\":\n return BunPackageManager;\n case \"yarn\":\n return YarnPackageManager;\n case \"pnpm\":\n return PnpmPackageManager;\n case undefined:\n default: {\n throw new Error(\n \"Invalid package manager specified. Supported values are 'bun' and 'yarn'.\",\n );\n }\n }\n};\n","export class UsageError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"UsageError\";\n }\n}\n","export function getMapArrayItemForKey<K, V>(map: Map<K, V[]>, key: K): V[] {\n let value: V[] | undefined = map.get(key);\n if (value === undefined) {\n map.set(key, (value = [] as V[]));\n }\n return value;\n}\n","/**\n * Combination of an optional scope and name.\n *\n * eg `@npm/types`\n */\nexport interface PackageDescriptorName {\n scope?: string;\n name: string;\n}\n\ninterface DescriptorUtils<Descriptor> {\n parse: (value: string) => Descriptor;\n stringify: (descriptor: Descriptor) => string;\n}\n\nexport const PackageDescriptorNameUtils: DescriptorUtils<PackageDescriptorName> =\n {\n parse: (value) => {\n if (value.startsWith(\"@\")) {\n const [scope, name] = value.slice(1).split(\"/\", 2);\n if (!scope || !name) {\n throw new Error(`Invalid package descriptor name: ${value}`);\n }\n return { scope, name };\n }\n return { name: value };\n },\n stringify: (descriptor) => {\n return descriptor.scope === undefined\n ? descriptor.name\n : `@${descriptor.scope}/${descriptor.name}`;\n },\n };\n\nexport interface PackageDependencyDescriptor {\n key: string;\n name: PackageDescriptorName;\n selector: string; // can be npm tag or version or version range or git url or local folder path\n}\n\ninterface PackageDependencyDescriptorUtils<\n Descriptor = PackageDependencyDescriptor,\n> {\n make: (descriptor: Descriptor, selector: string) => Descriptor;\n parse: (dependencyKey: string, dependencyValue: string) => Descriptor;\n stringify: (descriptor: Descriptor) => [key: string, value: string];\n}\n\nexport const PackageDependencyDescriptorUtils: PackageDependencyDescriptorUtils =\n {\n make: (descriptor, selector) => {\n return { key: descriptor.key, name: descriptor.name, selector };\n },\n parse: (dependencyKey, dependencyValue) => {\n const [name, selector] = dependencyValue.startsWith(\"npm:\")\n ? (() => {\n const v = dependencyValue.slice(\"npm:\".length);\n if (!v.startsWith(\"@\")) return v.split(\"@\", 2) as [string, string];\n const [packageNameWithoutFirstChar, selector] = v\n .slice(1)\n .split(\"@\", 2);\n if (!packageNameWithoutFirstChar || !selector) {\n throw new Error(`Invalid package descriptor: ${dependencyValue}`);\n }\n return [`@${packageNameWithoutFirstChar}`, selector];\n })()\n : [dependencyKey, dependencyValue];\n\n return {\n key: dependencyKey,\n name: PackageDescriptorNameUtils.parse(name),\n selector,\n };\n },\n stringify: (descriptor) => {\n return [descriptor.key, descriptor.selector];\n },\n };\n\n// export const PackageDependencySelectorUtils;\n","/* eslint-disable complexity */\nimport path from \"node:path\";\nimport { getMapArrayItemForKey } from \"./mapUtils.ts\";\nimport type { PackageDependencyDescriptor } from \"./packageDependenciesUtils.ts\";\nimport {\n PackageDependencyDescriptorUtils,\n PackageDescriptorNameUtils,\n} from \"./packageDependenciesUtils.ts\";\nimport type { ProjectWorkspace, Workspace } from \"./packageUtils.ts\";\n\nconst allDependenciesTypes = [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n] as const;\nexport type DependencyType = (typeof allDependenciesTypes)[number];\n\nexport const getWorkspaceName = (workspace: Workspace): string => {\n return (\n workspace.pkg.name ?? (path.basename(workspace.cwd) || \"unnamed-workspace\")\n );\n};\n\ntype WorkspacesDependenciesMap = Map<\n Workspace,\n [Workspace, DependencyType, PackageDependencyDescriptor][]\n>;\n\nexport const buildDependentsMaps = (\n project: ProjectWorkspace,\n): WorkspacesDependenciesMap => {\n const dependentsMap: WorkspacesDependenciesMap = new Map<\n Workspace,\n [Workspace, DependencyType, PackageDependencyDescriptor][]\n >();\n\n // Note that we need to do this before applying the new versions,\n // otherwise the `findWorkspacesByDescriptor` calls won't be able to\n // resolve the workspaces anymore (because the workspace versions will\n // have changed and won't match the outdated dependencies).\n\n for (const [, dependent] of project.children) {\n for (const set of allDependenciesTypes) {\n for (const [dependencyKey, dependencyValue] of Object.entries(\n dependent.pkg[set] || {},\n )) {\n if (!dependencyValue) continue;\n const descriptor = PackageDependencyDescriptorUtils.parse(\n dependencyKey,\n dependencyValue,\n );\n const workspace = project.children.get(\n PackageDescriptorNameUtils.stringify(descriptor.name),\n );\n if (!workspace) continue;\n\n const dependents = getMapArrayItemForKey(dependentsMap, workspace);\n dependents.push([dependent, set, descriptor]);\n }\n }\n }\n\n return dependentsMap;\n};\n\nexport const buildDependenciesMaps = (\n project: ProjectWorkspace,\n): WorkspacesDependenciesMap => {\n const dependenciesMap: WorkspacesDependenciesMap = new Map<\n Workspace,\n [Workspace, DependencyType, PackageDependencyDescriptor][]\n >();\n\n // Note that we need to do this before applying the new versions,\n // otherwise the `findWorkspacesByDescriptor` calls won't be able to\n // resolve the workspaces anymore (because the workspace versions will\n // have changed and won't match the outdated dependencies).\n\n for (const dependent of project.children.values()) {\n for (const set of allDependenciesTypes) {\n for (const [dependencyKey, dependencyValue] of Object.entries(\n dependent.pkg[set] || {},\n )) {\n if (!dependencyValue) continue;\n const descriptor = PackageDependencyDescriptorUtils.parse(\n dependencyKey,\n dependencyValue,\n );\n\n const workspace = project.children.get(\n PackageDescriptorNameUtils.stringify(descriptor.name),\n );\n if (!workspace) continue;\n\n const dependencies = getMapArrayItemForKey(dependenciesMap, dependent);\n dependencies.push([workspace, set, descriptor]);\n }\n }\n }\n\n return dependenciesMap;\n};\n\nexport const buildTopologicalOrderBatches = (\n project: ProjectWorkspace,\n dependenciesMap: WorkspacesDependenciesMap,\n): Workspace[][] => {\n const batches: Workspace[][] = [];\n\n const added = new Set<Workspace>();\n const toAdd = new Set<Workspace>([\n project.root,\n ...project.children.values(),\n ]);\n\n while (toAdd.size > 0) {\n const batch = new Set<Workspace>();\n for (const workspace of toAdd) {\n // make sure top level workspace is always in the last batch\n if (workspace === project.root && toAdd.size > 1) {\n continue;\n }\n\n const dependencies = dependenciesMap.get(workspace);\n if (!dependencies || dependencies.every((w) => added.has(w[0]))) {\n batch.add(workspace);\n }\n }\n\n for (const workspace of batch) {\n added.add(workspace);\n toAdd.delete(workspace);\n }\n\n if (batch.size === 0) {\n throw new Error(\"Circular dependency detected\");\n }\n batches.push([...batch]);\n }\n\n return batches;\n};\n","import semver from \"semver\";\nimport { UsageError } from \"./UsageError.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\nimport { getWorkspaceName } from \"./workspaceUtils.ts\";\n\nexport type BumpType = \"major\" | \"minor\" | \"patch\";\n\n// https://github.com/yarnpkg/berry/blob/506ded5f5f5a89553435940c74f1d857fd685a42/packages/plugin-version/sources/versionUtils.ts#L10\n// Basically we only support auto-upgrading the ranges that are very simple (^x.y.z, ~x.y.z, >=x.y.z, and of course x.y.z)\nconst SUPPORTED_UPGRADE_REGEXP =\n // eslint-disable-next-line regexp/no-unused-capturing-group\n /^((?:>=|[~^])?)(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(-(0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*)(\\.(0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*))*)?(\\+[0-9a-z-]+(\\.[0-9a-z-]+)*)?$/i;\n\nconst yarnWorkspaceProtocol = \"workspace:\";\n\nexport const calcBumpRange = (\n workspace: Workspace,\n range: string,\n newVersion: string,\n): string => {\n if (range === \"*\") {\n return range;\n }\n\n let useWorkspaceProtocol = false;\n\n if (range.startsWith(yarnWorkspaceProtocol)) {\n const slicedRange = range.slice(yarnWorkspaceProtocol.length);\n\n // Workspaces referenced through their path never get upgraded (\"workspace:packages/yarnpkg-core\")\n if (slicedRange === workspace.relativeCwd) {\n return range;\n }\n\n if (slicedRange === \"*\") {\n return range;\n }\n\n range = slicedRange;\n useWorkspaceProtocol = true;\n }\n\n const parsed = SUPPORTED_UPGRADE_REGEXP.exec(range);\n if (!parsed) {\n const workspaceName = getWorkspaceName(workspace);\n throw new Error(`Couldn't bump range ${range} in ${workspaceName}`);\n }\n\n return `${useWorkspaceProtocol ? yarnWorkspaceProtocol : \"\"}${parsed[1] ?? \"\"}${newVersion}`;\n};\n\nexport const getHighestBumpType = (bumpTypes: BumpType[]): BumpType => {\n if (bumpTypes.includes(\"major\")) {\n return \"major\";\n }\n\n if (bumpTypes.includes(\"minor\")) {\n return \"minor\";\n }\n\n return \"patch\";\n};\n\nexport const calcBumpType = (\n bumpType: BumpType,\n maxBumpType: BumpType,\n): BumpType => {\n if (maxBumpType === \"major\") {\n return bumpType;\n }\n\n if (maxBumpType === \"minor\") {\n return bumpType === \"major\" || bumpType === \"minor\" ? \"minor\" : \"patch\";\n }\n\n return \"patch\";\n};\n\nconst incVersion = (version: string, bumpType: BumpType): string | null => {\n // handle breaking of 0.x\n if (bumpType === \"major\" && semver.major(version) === 0) {\n bumpType = \"minor\";\n }\n return semver.inc(version, bumpType);\n};\n\nexport const incrementVersion = (\n workspace: Workspace,\n currentVersion: string,\n bumpType: BumpType,\n): string => {\n const newVersion = incVersion(currentVersion, bumpType);\n\n if (!newVersion) {\n throw new UsageError(\n `Could not determine next version for \"${getWorkspaceName(\n workspace,\n )}\" (currentVersion: ${currentVersion}, bumpType: ${bumpType}})`,\n );\n }\n\n return newVersion;\n};\n\n// const createPrerelease = (\n// version: string,\n// prereleaseType: ReleaseType,\n// prereleaseId: string,\n// ) => {\n// return semver.inc(version, prereleaseType, prereleaseId);\n// };\n","import { writeChangelogString } from \"conventional-changelog-writer\";\nimport { parseCommits as createConventionalCommitsParser } from \"conventional-commits-parser\";\nimport type { Commit, ParserStreamOptions } from \"conventional-commits-parser\";\nimport type { PackageJson } from \"type-fest\";\nimport type { ConventionalChangelogConfig } from \"./conventionalCommitConfigUtils.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\n\nexport interface WhatBump {\n level: 0 | 1 | 2;\n reason: string;\n}\nexport type WhatBumpResult = WhatBump | null | undefined;\nexport interface BumperRecommendation extends WhatBump {\n releaseType: \"major\" | \"minor\" | \"patch\";\n commits: Commit[];\n}\nexport interface EmptyBumperRecommendation {\n commits: Commit[];\n}\nexport type BumperRecommendationResult =\n | BumperRecommendation\n | EmptyBumperRecommendation;\n\nexport interface Preset {\n whatBump: (commits: Commit[]) => Promise<WhatBumpResult> | WhatBumpResult;\n tags?: unknown;\n commits?: unknown;\n parser?: ParserStreamOptions;\n}\n\nconst versions: BumperRecommendation[\"releaseType\"][] = [\n \"major\",\n \"minor\",\n \"patch\",\n];\n\nexport const recommendBump = async (\n commits: Parameters<ConventionalChangelogConfig[\"whatBump\"]>[0],\n config: ConventionalChangelogConfig,\n): Promise<Partial<BumperRecommendation>> => {\n const whatBump = config.whatBump;\n if (!whatBump) {\n throw new Error(\"whatBump method is missing in config\");\n }\n const result = { ...(await whatBump(commits)) };\n\n return {\n ...result,\n releaseType: result.level != null ? versions[result.level] : undefined,\n };\n};\n\nexport type Commits = Parameters<ConventionalChangelogConfig[\"whatBump\"]>[0];\n\nexport const generateChangelog = (\n workspace: Workspace,\n pkg: PackageJson,\n config: ConventionalChangelogConfig,\n previousTag: string | null,\n newTag: string | null,\n commits: Commits | undefined,\n date: string,\n // eslint-disable-next-line @typescript-eslint/max-params\n): Promise<string> => {\n if (!newTag) {\n throw new Error(`Missing new tag for package \"${pkg.name ?? \"\"}\"`);\n }\n\n const originUrl =\n typeof pkg.repository === \"string\" ? pkg.repository : pkg.repository?.url;\n const match =\n originUrl &&\n typeof originUrl === \"string\" &&\n /^(?:git@|https?:\\/\\/)(?:([^./:]+(?:\\.com)?)[/:])?([^/:]+)\\/([^./:]+)(?:.git)?/.exec(\n originUrl,\n );\n const [, gitHost, gitAccount, repoName] = match || [\n undefined,\n undefined,\n undefined,\n undefined,\n ];\n\n return writeChangelogString(\n commits ?? [],\n {\n // @ts-expect-error - missing types\n previousTag,\n currentTag: newTag,\n linkCompare: previousTag != null,\n version: pkg.version,\n host: gitHost ? `https://${gitHost}` : undefined,\n owner: gitAccount,\n repository: repoName,\n date,\n },\n // @ts-expect-error - missing types\n config.writer,\n );\n};\n\nexport const createCommitsParser = (config: ConventionalChangelogConfig) => {\n return createConventionalCommitsParser(config.parser);\n};\n","import { loadPreset } from \"conventional-changelog-preset-loader\";\nimport { UsageError } from \"./UsageError.ts\";\nimport type { Preset } from \"./conventionalChangelogUtils.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\n\nexport type ConventionalChangelogConfig = Preset;\n\nexport const loadConventionalCommitConfig = async (\n rootWorkspace: Workspace,\n preset: string,\n): Promise<ConventionalChangelogConfig> => {\n try {\n return await loadPreset<ConventionalChangelogConfig>(preset);\n } catch (error: any) {\n throw new UsageError(\n `Failed to require preset \"${preset}\": ${error.message as string}`,\n );\n }\n};\n","export async function asyncIterableToArray<T>(\n asyncIterable: AsyncIterable<T>,\n): Promise<T[]> {\n const result: T[] = [];\n\n for await (const value of asyncIterable) {\n result.push(value);\n }\n\n return result;\n}\n","import semver from \"semver\";\nimport { UsageError } from \"./UsageError.ts\";\nimport { execCommand, execCommandStreamStdout } from \"./execCommand.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\n\nexport const getGitCurrentBranch = async (\n workspace: Workspace,\n): Promise<string> => {\n const { stdout } = await execCommand(workspace, [\n \"git\",\n \"rev-parse\",\n \"--abbrev-ref\",\n \"HEAD\",\n ]);\n const currentBranch = stdout.trim();\n\n if (currentBranch === \"HEAD\") {\n throw new UsageError(\"HEAD is detached. Please checkout a branch.\");\n }\n\n return currentBranch;\n};\n\nexport const createGitCommit = async (\n workspace: Workspace,\n commitMessage: string,\n): Promise<void> => {\n await execCommand(workspace, [\"git\", \"add\", \"-A\"]);\n\n await execCommand(workspace, [\n \"git\",\n \"commit\",\n \"--no-verify\",\n \"-m\",\n commitMessage,\n ]);\n};\n\nexport const createGitTag = async (\n workspace: Workspace,\n newTag: string,\n): Promise<void> => {\n await execCommand(workspace, [\"git\", \"tag\", newTag, \"-m\", newTag]);\n};\n\nexport const pushCommitsAndTags = async (\n workspace: Workspace,\n gitRemote: string,\n currentBranch: string,\n): Promise<void> => {\n await execCommand(workspace, [\n \"git\",\n \"push\",\n \"--follow-tags\",\n \"--no-verify\",\n \"--atomic\",\n gitRemote,\n currentBranch,\n ]);\n};\n\nexport const isBehindRemote = async (\n workspace: Workspace,\n gitRemote: string,\n currentBranch: string,\n): Promise<boolean> => {\n await execCommand(workspace, [\"git\", \"remote\", \"update\", gitRemote]);\n const { stdout } = await execCommand(workspace, [\n \"git\",\n \"rev-list\",\n \"--left-right\",\n \"--count\",\n `${gitRemote}/${currentBranch}..${currentBranch}`,\n ]);\n\n const [behind] = stdout.split(\"\\t\").map((val) => parseInt(val, 10));\n\n return behind ? behind > 0 : false;\n};\n\nexport const getDirtyFiles = async (workspace: Workspace): Promise<string> => {\n const { stdout: dirtyFiles } = await execCommand(workspace, [\n \"git\",\n \"status\",\n \"--porcelain\",\n ]);\n return dirtyFiles;\n};\n\nconst toArray = <T>(input: T | T[]): T[] =>\n Array.isArray(input) ? input : [input];\n\nexport interface GitTagVersion {\n tag: string;\n version: string;\n}\n\nexport const getGitLatestTagVersion = async (\n workspace: Workspace,\n {\n prefix,\n skipUnstable,\n since,\n from = \"\",\n to = \"HEAD\",\n path,\n }: {\n prefix?: string;\n skipUnstable?: boolean;\n since?: Date | string;\n from?: string;\n to?: string;\n path?: string[] | string;\n } = {},\n): Promise<GitTagVersion | null> => {\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n const tagRegex = /tag:\\s*(.+?)[,)]/gi;\n for await (const chunk of execCommandStreamStdout(workspace, [\n \"git\",\n \"log\",\n \"--no-color\",\n \"--date-order\",\n \"--format=%d\",\n ...(since\n ? [`--since=${since instanceof Date ? since.toISOString() : since}`]\n : []),\n [from, to].filter(Boolean).join(\"..\"),\n ...(path ? [\"--\", ...toArray(path)] : []),\n ])) {\n const trimmed = chunk.trim();\n if (!trimmed) continue;\n const matches = trimmed.matchAll(tagRegex);\n for (const match of matches) {\n const tag = match[1];\n if (!tag) continue;\n if (prefix && !tag.startsWith(prefix)) {\n continue;\n }\n const version = prefix ? tag.slice(prefix.length) : tag;\n if (!semver.valid(version)) {\n continue;\n }\n if (skipUnstable && semver.prerelease(version)) {\n continue;\n }\n return { tag, version };\n }\n }\n\n return null;\n};\n\nconst GIT_COMMIT_SEPARATOR =\n \"------------------------ >8 ------------------------\";\n\nexport const getGitCommits = (\n workspace: Workspace,\n {\n path,\n from = \"\",\n to = \"HEAD\",\n format = \"%B\",\n reverse,\n merges,\n since,\n }: {\n format?: string;\n path?: string[] | string;\n from?: string;\n to?: string;\n reverse?: boolean;\n merges?: boolean;\n since?: Date | string;\n } = {},\n) => {\n return execCommandStreamStdout(\n workspace,\n [\n \"git\",\n \"log\",\n `--format=${format}%n${GIT_COMMIT_SEPARATOR}`,\n ...(since\n ? [`--since=${since instanceof Date ? since.toISOString() : since}`]\n : []),\n ...(reverse ? [\"--reverse\"] : []),\n ...(merges ? [\"--merges\"] : []),\n ...(merges === false ? [\"--no-merges\"] : []),\n [from, to].filter(Boolean).join(\"..\"),\n ...(path ? [\"--\", ...toArray(path)] : []),\n ],\n GIT_COMMIT_SEPARATOR,\n );\n};\n","import { UsageError } from \"./UsageError.ts\";\nimport { execCommandWithInput } from \"./execCommand.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\n\nexport async function ensureGhCliAvailable(\n workspace: Workspace,\n): Promise<void> {\n const { GH_TOKEN } = process.env;\n\n if (!GH_TOKEN) {\n throw new UsageError('\"GH_TOKEN\" environment variable required');\n }\n\n try {\n // Use existing execCommand helper pattern by spawning gh --version\n // We import execCommand lazily to avoid cycles when utils are used elsewhere\n const { execCommand } = await import(\"./execCommand.ts\");\n await execCommand(workspace, [\"gh\", \"--version\"]);\n } catch {\n throw new UsageError(\n 'The \"gh\" CLI is required. Please install GitHub CLI: https://cli.github.com/',\n );\n }\n}\n\ninterface ParsedGithubUrl {\n username: string;\n reponame: string;\n}\n\nconst githubRegex = /^https?:\\/\\/github.com\\/([^#/]+)\\/([^#/]+?)(?:\\.git)?$/;\nexport const parseGithubRepoUrl = (workspace: Workspace): ParsedGithubUrl => {\n const repository = workspace.pkg.repository;\n\n const url: string | undefined =\n typeof repository === \"string\" ? repository : repository?.url;\n\n if (!url) {\n throw new Error(\n \"No repository URL found in manifest. Please add one and try again. https://docs.npmjs.com/cli/v9/configuring-npm/package-json#repository\",\n );\n }\n const match = githubRegex.exec(url);\n\n if (!match) {\n throw new Error(`Invalid GitHub repository URL: \"${url}\"`);\n }\n const [, username, reponame] = match;\n if (!username || !reponame) {\n throw new Error(`Invalid GitHub repository URL: \"${url}\"`);\n }\n return { username, reponame };\n};\n\nconst extractHostnameFromGheApiUrl = (gheApiUrl: string): string | null => {\n try {\n const url = new URL(gheApiUrl);\n return url.hostname || null;\n } catch {\n // fallback: try to strip protocol and path\n const m = /^https?:\\/\\/([^/]+)/.exec(gheApiUrl);\n return m?.[1] || null;\n }\n};\n\nexport const createGhRelease = async (\n workspace: Workspace,\n opts: {\n parsedRepoUrl: ParsedGithubUrl;\n tag: string;\n title: string; // title is not necessary but slack release bot shows \"undefined\" if not provided\n body: string;\n prerelease: boolean;\n },\n): Promise<void> => {\n const { parsedRepoUrl, tag, title, body, prerelease } = opts;\n\n const { GH_TOKEN, GHE_API_URL } = process.env;\n\n if (!GH_TOKEN) {\n await ensureGhCliAvailable(workspace);\n return;\n }\n\n // Determine hostname for GHE if provided\n const args: string[] = [\n \"release\",\n \"create\",\n tag,\n \"--title\",\n title,\n \"--repo\",\n `${parsedRepoUrl.username}/${parsedRepoUrl.reponame}`,\n ];\n\n if (prerelease) {\n args.push(\"--prerelease\");\n }\n\n if (GHE_API_URL) {\n const hostname = extractHostnameFromGheApiUrl(GHE_API_URL);\n if (hostname) {\n args.push(\"--hostname\", hostname);\n }\n }\n\n try {\n await execCommandWithInput(\n workspace,\n [\"gh\", ...args, \"--notes-file\", \"-\"],\n body,\n );\n } catch (error) {\n // execCommandWithInput will include stdout/stderr in its error message when strict\n throw new Error(\n `gh release create failed: ${String(error instanceof Error ? error.message : error)}`,\n { cause: error },\n );\n }\n};\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport fs, { glob } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type { PackageJson } from \"type-fest\";\n\nexport interface Workspace {\n readonly cwd: string;\n readonly relativeCwd?: string;\n readonly pkg: PackageJson;\n}\n\nexport interface ProjectWorkspace {\n readonly root: Workspace;\n readonly children: Map<string, Workspace>;\n}\n\nasync function mapWorkspacesFromPkg({\n cwd,\n pkg,\n}: {\n cwd: string;\n pkg: PackageJson;\n}): Promise<Map<string, Workspace>> {\n const workspacesPatterns: string[] = Array.isArray(pkg.workspaces)\n ? pkg.workspaces\n : pkg.workspaces?.packages || [];\n\n const map = new Map<string, Workspace>();\n\n for (const pattern of workspacesPatterns) {\n const normalized = pattern.endsWith(\"package.json\")\n ? pattern\n : `${pattern.replace(/\\/*$/, \"\")}/package.json`;\n\n const files = glob(normalized, { cwd });\n for await (const file of files) {\n const packageDir = path.join(cwd, path.dirname(file));\n const packageJson: PackageJson = await readPkg(packageDir);\n const workspaceName = packageJson.name || path.basename(packageDir);\n if (map.has(workspaceName)) {\n const existingWorkspace = map.get(workspaceName);\n if (existingWorkspace && existingWorkspace.cwd !== packageDir) {\n throw new Error(\n `must not have multiple workspaces with the same name\\npackage '${workspaceName}' has conflicts in the following paths:\\n ${existingWorkspace.cwd}\\n ${packageDir}`,\n );\n }\n // if it's the same package dir, ignore duplicate match\n if (existingWorkspace?.cwd === packageDir) continue;\n }\n map.set(workspaceName, { cwd: packageDir, pkg: packageJson });\n }\n }\n return map;\n}\n\nexport const createProjectWorkspace = async (\n root: Workspace,\n): Promise<ProjectWorkspace> => {\n const map: Map<string, Workspace> = root.pkg.workspaces\n ? await mapWorkspacesFromPkg({ cwd: root.cwd, pkg: root.pkg })\n : new Map();\n\n const children = new Map<string, Workspace>(\n [...map.entries()].map(([packageName, workspace]) => {\n const w: Workspace = {\n ...workspace,\n relativeCwd: path.relative(root.cwd, workspace.cwd),\n };\n return [packageName, w] as const;\n }),\n );\n return { root, children };\n};\n\nconst isAccessible = (path: string): Promise<boolean> =>\n fs.access(path).then(\n () => true,\n () => false,\n );\n\nexport const findRootWorkspace = async (\n cwd: string,\n): Promise<Workspace | null> => {\n let currentPath = cwd;\n do {\n const isRootIfOneOfThesePathsExists = await Promise.all([\n isAccessible(path.join(currentPath, \".yarnrc.yml\")),\n isAccessible(path.join(currentPath, \"yarn.lock\")),\n isAccessible(path.join(currentPath, \"bun.lock\")),\n isAccessible(path.join(currentPath, \"pnpm-lock.yaml\")),\n ]);\n if (isRootIfOneOfThesePathsExists.some(Boolean)) {\n return createWorkspace(currentPath);\n }\n currentPath = path.dirname(currentPath);\n } while (currentPath && currentPath !== \"/\");\n return null;\n};\n\nconst getPackageJsonPath = (cwd: string): string =>\n path.join(cwd, \"package.json\");\n\nexport const createWorkspace = async (path: string): Promise<Workspace> => {\n const pkg = await readPkg(path);\n return { cwd: path, pkg };\n};\n\nexport async function writePkg(workspace: Workspace): Promise<void> {\n const string = `${JSON.stringify(workspace.pkg, null, 2)}\\n`;\n await fs.writeFile(getPackageJsonPath(workspace.cwd), string, \"utf8\");\n}\n\nexport async function readPkg(cwd: string): Promise<PackageJson> {\n const packagePath = getPackageJsonPath(cwd);\n // eslint-disable-next-line @typescript-eslint/use-unknown-in-catch-callback-variable\n const pkg = await fs.readFile(packagePath, \"utf8\").catch((error: Error) => {\n throw new Error(\n `Failed to read \"${packagePath}\": ${error instanceof Error ? error.message : String(error)}`,\n );\n });\n try {\n return JSON.parse(pkg);\n } catch (error: unknown) {\n throw new Error(\n `Failed to parse \"${packagePath}\": ${error instanceof Error ? error.message : String(error)}`,\n { cause: error },\n );\n }\n}\n","import fs from \"node:fs/promises\";\n\nconst COMMIT_GUIDELINE =\n \"See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.\";\n\nconst CHANGELOG_HEADER = [\n \"# Changelog\",\n \"\",\n \"All notable changes to this project will be documented in this file.\",\n COMMIT_GUIDELINE,\n \"\",\n].join(\"\\n\");\n\nexport const updateChangelogFile = async (\n versionChangelogContent: string,\n tagPrefix: string,\n file = \"CHANGELOG.md\",\n): Promise<void> => {\n const START_OF_LAST_RELEASE_PATTERN = new RegExp(\n `(^#+ \\\\[?(?:${tagPrefix})?\\\\d+\\\\.\\\\d+\\\\.\\\\d+|<a name=)`,\n \"m\",\n );\n\n let oldContent = \"\";\n\n try {\n oldContent = await fs.readFile(file, \"utf8\");\n const oldContentStart = oldContent.search(START_OF_LAST_RELEASE_PATTERN);\n // find the position of the last release and remove header:\n if (oldContentStart !== -1) {\n oldContent = oldContent.slice(Math.max(0, oldContentStart));\n }\n } catch {}\n\n await fs.writeFile(\n file,\n `${CHANGELOG_HEADER}\\n${versionChangelogContent}\\n${oldContent}`,\n );\n};\n","/* eslint-disable complexity */\n\nimport { Option, program } from \"commander\";\nimport { LoggerCLI } from \"nightingale\";\nimport { satisfies } from \"semver\";\nimport {\n autoDetectPackageManager,\n getPackageManager,\n} from \"../pm/PackageManager.ts\";\nimport { UsageError } from \"../utils/UsageError.ts\";\nimport type { BumpType } from \"../utils/bumpTypeUtils.ts\";\nimport {\n calcBumpRange,\n calcBumpType,\n getHighestBumpType,\n incrementVersion,\n} from \"../utils/bumpTypeUtils.ts\";\nimport {\n createCommitsParser,\n generateChangelog,\n recommendBump,\n} from \"../utils/conventionalChangelogUtils.ts\";\nimport { loadConventionalCommitConfig } from \"../utils/conventionalCommitConfigUtils.ts\";\nimport { asyncIterableToArray } from \"../utils/generatorUtils.ts\";\nimport type { GitTagVersion } from \"../utils/gitUtils.ts\";\nimport {\n createGitCommit,\n createGitTag,\n getDirtyFiles,\n getGitCommits,\n getGitCurrentBranch,\n getGitLatestTagVersion,\n isBehindRemote,\n pushCommitsAndTags,\n} from \"../utils/gitUtils.ts\";\nimport {\n createGhRelease,\n ensureGhCliAvailable,\n parseGithubRepoUrl,\n} from \"../utils/githubUtils.ts\";\nimport {\n PackageDependencyDescriptorUtils,\n PackageDescriptorNameUtils,\n} from \"../utils/packageDependenciesUtils.ts\";\nimport type { PackageDependencyDescriptor } from \"../utils/packageDependenciesUtils.ts\";\nimport type { Workspace } from \"../utils/packageUtils.ts\";\nimport {\n createProjectWorkspace,\n createWorkspace,\n findRootWorkspace,\n writePkg,\n} from \"../utils/packageUtils.ts\";\nimport { updateChangelogFile } from \"../utils/updateChangelog.ts\";\nimport type { DependencyType } from \"../utils/workspaceUtils.ts\";\nimport {\n buildDependenciesMaps,\n buildTopologicalOrderBatches,\n getWorkspaceName,\n} from \"../utils/workspaceUtils.ts\";\n\nexport interface VersionCommandOptions {\n cwd: string;\n includesRoot: boolean;\n dryRun: boolean;\n force?: \"major\" | \"minor\" | \"patch\";\n prerelease?: string;\n json: boolean;\n preset: string;\n tagVersionPrefix: string;\n changelog: string;\n commitMessage: string;\n createRelease: boolean;\n bumpDependentsHighestAs: \"major\" | \"minor\" | \"patch\";\n alwaysBumpPeerDependencies: boolean;\n gitRemote: string;\n ignoreChanges?: string;\n verbose?: boolean;\n cwdIsRoot?: boolean;\n packageManager?: \"bun\" | \"yarn\";\n publish?: boolean;\n publishProvenance?: boolean;\n}\n\ninterface BumpableWorkspace {\n workspace: Workspace;\n previousTag?: string;\n workspaceName: string;\n isRoot: boolean;\n version: string;\n}\n\ninterface ChangedWorkspace {\n bumpReason?: string;\n bumpType: BumpType;\n}\n\ninterface NoVersionToUpdateWorkspace {\n // for legacy configuration not using workspaces ranges https://yarnpkg.com/features/workspaces#workspace-ranges-workspace\n dependenciesToBump: [DependencyType, PackageDependencyDescriptor, string][];\n}\n\ninterface BumpedWorkspace extends ChangedWorkspace, NoVersionToUpdateWorkspace {\n bumpForDependenciesReasons?: string[];\n hasChanged: boolean;\n currentVersion: string;\n newVersion: string;\n newTag: string | null;\n}\n\nconst todayInYYYYMMDD = (): string => {\n // sv-SEis used for yyyy-mm-dd format\n const dateFormatter = Intl.DateTimeFormat(\"sv-SE\", {\n timeZone: \"UTC\",\n });\n return dateFormatter.format(new Date());\n};\n\nexport const versionCommandAction = async (\n options: VersionCommandOptions,\n { logger = new LoggerCLI(\"@pob/version\", { json: options.json }) } = {},\n): Promise<void> => {\n const rootWorkspace = await (options.cwdIsRoot\n ? createWorkspace(options.cwd)\n : findRootWorkspace(options.cwd));\n\n if (!rootWorkspace) {\n throw new UsageError(\"Could not find root workspace from this path.\");\n }\n\n const packageManager = options.packageManager\n ? getPackageManager(rootWorkspace, options.packageManager)\n : autoDetectPackageManager(rootWorkspace);\n\n const project = await createProjectWorkspace(rootWorkspace);\n\n if (!options.dryRun) {\n const dirtyFiles = await getDirtyFiles(project.root);\n if (dirtyFiles) {\n throw new Error(\n `Dirty Files:\\n${dirtyFiles}\\n\\nThere are uncommitted changes in the git repository. Please commit or stash them first.`,\n );\n }\n }\n\n const rootWorkspaceChildren = [...project.children.values()];\n let rootNewVersion = \"\";\n let rootNewTag = \"\";\n const isMonorepo = rootWorkspaceChildren.length > 0;\n const isMonorepoVersionIndependent = isMonorepo && !rootWorkspace.pkg.version;\n const workspaces =\n !(isMonorepo && !rootWorkspaceChildren) || options.includesRoot\n ? [rootWorkspace, ...rootWorkspaceChildren]\n : rootWorkspaceChildren;\n\n if (options.prerelease) {\n throw new UsageError(\"--prerelease is not supported yet.\");\n }\n if (options.ignoreChanges) {\n throw new UsageError(\"--ignore-changes is not supported yet.\");\n }\n\n const [conventionalCommitConfig, parsedRepoUrl, gitCurrentBranch] =\n await Promise.all([\n loadConventionalCommitConfig(rootWorkspace, options.preset),\n options.createRelease\n ? parseGithubRepoUrl(rootWorkspace)\n : Promise.resolve(null),\n getGitCurrentBranch(rootWorkspace),\n // ensure gh CLI is available early to fail fast if necessary\n options.createRelease\n ? ensureGhCliAvailable(rootWorkspace)\n : Promise.resolve(undefined),\n ]);\n\n const rootPreviousVersionTagPromise =\n options.force || isMonorepoVersionIndependent\n ? null\n : getGitLatestTagVersion(rootWorkspace, {\n prefix: options.tagVersionPrefix,\n skipUnstable: true,\n });\n\n const buildTagName = (workspace: Workspace, version: string): string =>\n `${\n isMonorepo && workspace !== rootWorkspace\n ? `${getWorkspaceName(workspace)}@`\n : options.tagVersionPrefix\n }${version}`;\n\n const changedWorkspaces = new Map<Workspace, ChangedWorkspace>();\n const dependenciesMap = isMonorepo ? buildDependenciesMaps(project) : null;\n\n const bumpableWorkspaces: BumpableWorkspace[] = [];\n\n logger.group(\n options.force\n ? \"Check all workspaces (force option)\"\n : \"Finding changed workspaces\",\n () => {\n // check workspaces and create bumpableWorkspaces\n\n for (const workspace of workspaces) {\n const workspaceName = getWorkspaceName(workspace);\n const isRoot = workspace === rootWorkspace;\n if (isRoot && isMonorepo && isMonorepoVersionIndependent) continue;\n\n const version = workspace.pkg.version;\n\n if (!version || version === \"0.0.0\") {\n if (\n (isRoot || isMonorepoVersionIndependent) &&\n (!isMonorepo || !isMonorepoVersionIndependent)\n ) {\n throw new UsageError(\n 'package.json has no version in its manifest. For the first release, set to \"1.0.0-pre\" or \"0.1.0-pre\".',\n );\n }\n\n logger.info(`${workspaceName}: skipped (no version)`);\n continue;\n }\n\n bumpableWorkspaces.push({\n workspace,\n workspaceName,\n isRoot,\n version,\n });\n }\n\n if (bumpableWorkspaces.length > 0) {\n logger.info(\"Found bumpable workspaces\", {\n count: bumpableWorkspaces.length,\n });\n }\n },\n );\n\n const previousTagVersionByWorkspace = new Map<\n Workspace,\n GitTagVersion | null\n >(\n await Promise.all(\n bumpableWorkspaces.map(async ({ workspace, workspaceName, isRoot }) => {\n const packageOption =\n isMonorepo && isMonorepoVersionIndependent\n ? workspaceName\n : undefined;\n\n const tagPrefix = packageOption\n ? `${packageOption}@`\n : options.tagVersionPrefix;\n\n const previousTagAndVersion = await (isRoot ||\n !isMonorepoVersionIndependent\n ? rootPreviousVersionTagPromise\n : getGitLatestTagVersion(rootWorkspace, {\n path: workspace.relativeCwd,\n prefix: tagPrefix,\n skipUnstable: true,\n }));\n\n return [workspace, previousTagAndVersion] as const;\n }),\n ),\n );\n\n if (options.dryRun) {\n logger.info(\"Previous tags\", {\n previousTagByWorkspace: Object.fromEntries(\n [...previousTagVersionByWorkspace.entries()].map(\n ([workspace, previousTagVersion]) => [\n getWorkspaceName(workspace),\n previousTagVersion?.tag,\n ],\n ),\n ),\n });\n }\n\n const parseCommits = createCommitsParser(conventionalCommitConfig);\n\n const commitsByWorkspace = options.force\n ? undefined\n : new Map(\n await Promise.all(\n bumpableWorkspaces.map(async ({ workspace }) => {\n const previousTagVersion =\n previousTagVersionByWorkspace.get(workspace);\n\n const commits = await asyncIterableToArray(\n parseCommits(\n getGitCommits(rootWorkspace, {\n path: workspace.relativeCwd,\n from: previousTagVersion?.tag || undefined,\n }),\n ),\n );\n\n return [workspace, commits] as const;\n }),\n ),\n );\n\n await logger.group(\"Finding changed workspaces\", async () => {\n for (const { workspace, workspaceName } of bumpableWorkspaces) {\n let bumpType: BumpType | null = null;\n let bumpReason: string | undefined;\n\n if (options.force) {\n bumpType = options.force;\n bumpReason = \"forced by --force flag\";\n } else {\n const commits = commitsByWorkspace?.get(workspace);\n\n // No changes found for this package\n if (!commits || commits.length === 0) {\n logger.info(`${workspaceName}: skipped (no changes)`);\n continue;\n }\n\n const { releaseType, reason } = await recommendBump(\n commits,\n conventionalCommitConfig,\n );\n bumpReason = reason;\n\n if (releaseType) {\n bumpType = releaseType satisfies BumpType;\n }\n }\n\n if (bumpType) {\n if (isMonorepo && !workspace.pkg.name) {\n throw new Error(\"Workspace name is required\");\n }\n\n const currentVersion = workspace.pkg.version;\n\n if (!currentVersion) {\n throw new UsageError(\n `Invalid \"${getWorkspaceName(workspace)}\" version`,\n );\n }\n\n changedWorkspaces.set(workspace, {\n bumpType,\n bumpReason,\n });\n }\n }\n\n if (changedWorkspaces.size === 0) {\n logger.info(\"No changed workspaces\");\n }\n });\n\n const bumpedWorkspaces = new Map<Workspace, BumpedWorkspace>();\n const noVersionToUpdateWorkspaces = new Map<\n Workspace,\n NoVersionToUpdateWorkspace\n >();\n const batches = dependenciesMap\n ? buildTopologicalOrderBatches(project, dependenciesMap)\n : [[rootWorkspace]];\n\n logger.group(\"Preparing bumping\", () => {\n for (const batch of batches) {\n for (const workspace of batch) {\n const currentVersion = workspace.pkg.version;\n\n if (!currentVersion && !workspace.pkg.private) {\n throw new UsageError(\n `Invalid \"${getWorkspaceName(workspace)}\" version`,\n );\n }\n\n const changedWorkspace = changedWorkspaces.get(workspace);\n let bumpType: BumpType | null = null;\n const bumpReasons: string[] = [];\n const dependenciesToBump: BumpedWorkspace[\"dependenciesToBump\"] = [];\n\n if (changedWorkspace) {\n bumpType = changedWorkspace.bumpType;\n bumpReasons.push(changedWorkspace.bumpReason || \"by commits\");\n }\n\n const dependencies = dependenciesMap?.get(workspace);\n\n if (dependencies) {\n for (const [\n dependencyWorkspace,\n dependencyType,\n dependencyDescriptor,\n ] of dependencies) {\n const dependencyBumpedWorkspace =\n bumpedWorkspaces.get(dependencyWorkspace);\n\n if (!dependencyBumpedWorkspace) {\n continue;\n }\n\n if (\n dependencyType === \"peerDependencies\" &&\n !options.alwaysBumpPeerDependencies &&\n // skip when peerdependency with a new version satisfied by the existing range.\n satisfies(\n dependencyBumpedWorkspace.newVersion,\n dependencyDescriptor.selector,\n {\n includePrerelease: true,\n },\n )\n ) {\n continue;\n }\n\n const newRange = calcBumpRange(\n workspace,\n dependencyDescriptor.selector,\n dependencyBumpedWorkspace.newVersion,\n );\n\n if (\n dependencyDescriptor.selector === newRange &&\n newRange !== \"workspace:*\"\n ) {\n continue;\n }\n\n dependenciesToBump.push([\n dependencyType,\n dependencyDescriptor,\n newRange,\n ]);\n\n bumpType = getHighestBumpType([\n bumpType ?? \"patch\",\n calcBumpType(\n dependencyBumpedWorkspace.bumpType,\n options.bumpDependentsHighestAs,\n ),\n ]);\n\n bumpReasons.push(\n `Version bump for dependency: ${PackageDescriptorNameUtils.stringify(dependencyDescriptor.name)}`,\n );\n }\n }\n\n const workspaceName = getWorkspaceName(workspace);\n if (!currentVersion) {\n logger.info(`${workspaceName}: skipped (no version)`);\n if (workspace !== rootWorkspace) {\n noVersionToUpdateWorkspaces.set(workspace, {\n dependenciesToBump,\n });\n }\n } else if (!bumpType) {\n logger.info(\n `${workspaceName}: skipped (${\n changedWorkspace\n ? `no bump recommended by ${options.preset}`\n : \"no changes\"\n })`,\n );\n } else {\n const newVersion = incrementVersion(\n workspace,\n currentVersion,\n bumpType,\n );\n\n const tagName = buildTagName(workspace, newVersion);\n\n if (workspace === rootWorkspace) {\n rootNewVersion = newVersion;\n rootNewTag = tagName;\n }\n\n if (workspace !== rootWorkspace || !isMonorepo) {\n const bumpReason = bumpReasons.join(\"\\n\");\n bumpedWorkspaces.set(workspace, {\n currentVersion,\n bumpType,\n bumpReason,\n bumpForDependenciesReasons: changedWorkspace\n ? bumpReasons.slice(1)\n : bumpReasons,\n newVersion,\n newTag: tagName,\n hasChanged: changedWorkspace !== undefined,\n dependenciesToBump,\n });\n\n logger.info(\n `${workspaceName}: ${currentVersion} -> ${\n !isMonorepo || isMonorepoVersionIndependent\n ? newVersion\n : \"bump\"\n } (${bumpReason.replaceAll(\"\\n\", \" ; \")})`,\n );\n // TODO Json only:\n // logger.info({\n // cwd: npath.fromPortablePath(workspace.cwd),\n // ident: workspaceName,\n // oldVersion: currentVersion,\n // ...(isMonorepoVersionIndependent ? { newVersion } : {}),\n // bumpType,\n // bumpReasons,\n // });\n }\n }\n }\n }\n });\n\n // TODO ask for confirmation\n // if (!this.yes) {\n // }\n\n // TODO do this entire phase here, not override for not independent only\n if (isMonorepo && !isMonorepoVersionIndependent) {\n const currentVersion = rootWorkspace.pkg.version!;\n const highestBumpType = getHighestBumpType(\n [...bumpedWorkspaces.values()].map(({ bumpType }) => bumpType),\n );\n const newVersion = incrementVersion(\n rootWorkspace,\n currentVersion,\n highestBumpType,\n );\n rootNewVersion = newVersion;\n rootNewTag = buildTagName(rootWorkspace, newVersion);\n\n [...bumpedWorkspaces.entries()].forEach(([workspace, bumpedWorkspace]) => {\n const isRoot = workspace === rootWorkspace;\n if (isRoot) {\n throw new Error(\"Unexpected root found in bumped workspaces\");\n }\n bumpedWorkspace.bumpType = highestBumpType;\n bumpedWorkspace.newVersion = newVersion;\n bumpedWorkspace.newTag = null;\n });\n\n [\n ...bumpedWorkspaces.entries(),\n ...noVersionToUpdateWorkspaces.entries(),\n ].forEach(([workspace, { dependenciesToBump }]) => {\n dependenciesToBump.forEach((dependencyToBump) => {\n dependencyToBump[2] = calcBumpRange(\n workspace,\n dependencyToBump[1].selector,\n newVersion,\n );\n });\n });\n\n bumpedWorkspaces.set(rootWorkspace, {\n currentVersion,\n bumpType: highestBumpType,\n hasChanged: true,\n newVersion: rootNewVersion,\n newTag: rootNewTag,\n dependenciesToBump: [],\n });\n\n logger.info(\n `${currentVersion} -> ${newVersion}`,\n // TODO Json only:\n // {\n // oldVersion: currentVersion,\n // newVersion, },\n );\n }\n\n await logger.group(\"Applying changes\", async () => {\n // Update lockfile ; must be done to make sure preversion script can be ran\n\n if (!options.dryRun) {\n if (packageManager.installOnPackageContentChange) {\n logger.info(`${getWorkspaceName(rootWorkspace)}: Running install`);\n await packageManager.installOnPackageContentChange(rootWorkspace);\n }\n\n logger.info(\"Lifecycle script: preversion\");\n\n if (\n isMonorepoVersionIndependent &&\n rootWorkspace.pkg.scripts?.preversion\n ) {\n await packageManager.runScript(rootWorkspace, \"preversion\");\n }\n\n // lifecycle: preversion\n for (const workspace of bumpedWorkspaces.keys()) {\n if (workspace.pkg.scripts?.preversion) {\n await packageManager.runScript(workspace, \"preversion\");\n }\n }\n\n logger.info(\"Modifying versions in package.json\");\n // update versions\n\n await Promise.all(\n [...bumpedWorkspaces.entries()].map(\n ([workspace, { newVersion, dependenciesToBump }]) => {\n workspace.pkg.version = newVersion;\n\n for (const [\n dependencyType,\n dependencyDescriptor,\n dependencyNewRange,\n ] of dependenciesToBump) {\n const newDescriptor = PackageDependencyDescriptorUtils.make(\n dependencyDescriptor,\n dependencyNewRange,\n );\n const [key, newValue] =\n PackageDependencyDescriptorUtils.stringify(newDescriptor);\n workspace.pkg[dependencyType]![key] = newValue;\n }\n\n return writePkg(workspace);\n },\n ),\n );\n\n if (packageManager.installOnPackageContentChange) {\n // Update lockfile ; must be done before running again lifecycle scripts\n logger.info(`${getWorkspaceName(rootWorkspace)}: Running install`);\n await packageManager.installOnPackageContentChange(rootWorkspace);\n }\n\n // lifecycle: version\n logger.info(\"Lifecycle script: version\");\n for (const workspace of bumpedWorkspaces.keys()) {\n if (workspace.pkg.scripts?.version) {\n await packageManager.runScript(workspace, \"version\");\n }\n }\n }\n\n if (isMonorepoVersionIndependent && rootWorkspace.pkg.scripts?.version) {\n await packageManager.runScript(rootWorkspace, \"version\");\n }\n });\n\n const changelogs = new Map<Workspace, string>();\n\n await Promise.all(\n [...bumpedWorkspaces.entries()].map(\n async ([\n workspace,\n { newTag, hasChanged, bumpReason, bumpForDependenciesReasons },\n ]) => {\n // const workspaceRelativePath =\n // rootWorkspace === workspace\n // ? undefined\n // : path.relative(rootWorkspace.cwd, workspace.cwd);\n\n const commits = commitsByWorkspace?.get(workspace);\n\n let changelog = await generateChangelog(\n rootWorkspace,\n workspace.pkg,\n conventionalCommitConfig,\n previousTagVersionByWorkspace.get(workspace)?.tag || null,\n isMonorepoVersionIndependent ? newTag : rootNewTag,\n commits,\n todayInYYYYMMDD(),\n // {\n // path: workspaceRelativePath,\n // previousTag: previousTagByWorkspace.get(workspace) || undefined,\n // verbose: options.verbose,\n // tagPrefix: options.tagVersionPrefix,\n // lernaPackage:\n // rootWorkspace === workspace\n // ? undefined\n // : getWorkspaceName(workspace),\n // },\n );\n\n if (bumpForDependenciesReasons && workspace !== rootWorkspace) {\n if (bumpForDependenciesReasons.length > 0) {\n changelog += `${!changelog.endsWith(\"\\n\\n\") ? \"\\n\" : \"\"}${bumpForDependenciesReasons.join(\"\\n\")}\\n\\n`;\n }\n }\n\n if (changelog.slice(changelog.indexOf(\"\\n\")).trim().length === 0) {\n changelog += `${!changelog.endsWith(\"\\n\\n\") ? \"\\n\" : \"\"}Note: no notable changes\\n\\n`;\n }\n\n if (!changelog && rootWorkspace === workspace) {\n throw new Error(\"No changelog found for root workspace\");\n }\n\n changelogs.set(workspace, changelog);\n\n if (options.changelog) {\n if (options.dryRun) {\n logger.info(\n `${getWorkspaceName(workspace)}: ${options.changelog}\\n${changelog}`,\n );\n } else {\n await updateChangelogFile(\n changelog,\n options.tagVersionPrefix,\n `${workspace.cwd}/${options.changelog}`,\n );\n }\n }\n },\n ),\n );\n\n if (!options.dryRun) {\n logger.separator();\n\n if (packageManager.installOnPackageContentChange) {\n // install to update versions in lock file\n logger.info(`${getWorkspaceName(rootWorkspace)}: Running install`);\n await packageManager.installOnPackageContentChange(rootWorkspace);\n }\n\n logger.separator();\n\n const changedFiles = await getDirtyFiles(project.root);\n\n if (changedFiles) {\n logger.info(\"Commit, tag and push\", {\n changedFiles,\n });\n\n const tagsSet = new Set<string>(\n [...bumpedWorkspaces.values()]\n .map(({ newTag }) => newTag)\n .filter((newTag) => newTag !== null),\n );\n\n const tagsInCommitMessage = [...tagsSet]\n .map((tag) => `- ${tag}`)\n .join(\"\\n\");\n const message = options.commitMessage\n .replace(/\\\\n/g, \"\\n\")\n .replace(\n /%a/g,\n isMonorepoVersionIndependent\n ? `\\n\\n${tagsInCommitMessage}`\n : rootNewVersion,\n )\n .replace(/%s/g, rootNewTag)\n .replace(/%v/g, rootNewVersion)\n .replace(/%t/g, tagsInCommitMessage);\n\n await createGitCommit(rootWorkspace, message);\n\n for (const [workspace, { newTag }] of bumpedWorkspaces.entries()) {\n if (newTag === null) continue;\n await createGitTag(workspace, newTag);\n }\n\n if (\n await isBehindRemote(rootWorkspace, options.gitRemote, gitCurrentBranch)\n ) {\n logger.error(\"Remote is ahead, aborting\");\n // eslint-disable-next-line unicorn/no-process-exit\n process.exit(1);\n }\n\n await pushCommitsAndTags(\n rootWorkspace,\n options.gitRemote,\n gitCurrentBranch,\n );\n\n // run postversion\n if (rootWorkspace.pkg.scripts?.postversion) {\n logger.info(\"Lifecycle script: postversion\");\n await packageManager.runScript(rootWorkspace, \"postversion\");\n }\n\n // TODO open github PR\n\n if (options.createRelease && parsedRepoUrl) {\n logger.info(\"Create git release\");\n\n await Promise.all(\n [...bumpedWorkspaces.entries()].map(([workspace, { newTag }]) => {\n if (newTag === null) return Promise.resolve(undefined);\n const changelog = changelogs.get(workspace);\n if (!changelog) {\n logger.warn(\n `No changelog found for workspace: ${getWorkspaceName(workspace)}`,\n );\n return Promise.resolve(undefined);\n }\n return createGhRelease(workspace, {\n parsedRepoUrl,\n title: newTag,\n tag: newTag,\n body: changelog,\n prerelease: !!options.prerelease,\n });\n }),\n );\n }\n\n if (!options.publish) {\n return;\n }\n await logger.group(\"Publishing packages\", async () => {\n if (packageManager.publishWorkspaces) {\n await packageManager.publishWorkspaces(rootWorkspace, {\n provenance: options.publishProvenance,\n });\n } else {\n for (const [workspace] of bumpedWorkspaces.entries()) {\n if (workspace.pkg.private) {\n logger.info(\n `Skipping private workspace ${getWorkspaceName(workspace)}`,\n );\n continue;\n }\n\n logger.info(`Publishing ${getWorkspaceName(workspace)}`);\n await packageManager.publish(workspace, {\n provenance: options.publishProvenance,\n });\n }\n }\n });\n } else {\n logger.warn(\"No changes made. Nothing to commit.\");\n }\n }\n};\n\nexport const Defaults: VersionCommandOptions = {\n cwd: process.cwd(),\n includesRoot: false,\n dryRun: false,\n json: false,\n preset: \"conventional-changelog-conventionalcommits\",\n tagVersionPrefix: \"v\",\n changelog: \"CHANGELOG.md\",\n commitMessage: \"chore: release %a\",\n createRelease: false,\n bumpDependentsHighestAs: \"major\",\n alwaysBumpPeerDependencies: false,\n gitRemote: \"origin\",\n verbose: false,\n publish: false,\n publishProvenance: false,\n};\n\nexport default program\n .command(\"version\", { isDefault: true })\n .usage(\"Bump package version using conventional commit\")\n .addOption(\n new Option(\"--includes-root\", \"Release root workspace [untested]\").default(\n Defaults.includesRoot,\n ),\n )\n .addOption(new Option(\"--cwd\", \"working directory\").default(process.cwd()))\n .addOption(\n new Option(\n \"--dry-run\",\n \"Print the versions without actually generating the package archive\",\n ).default(Defaults.dryRun),\n )\n .addOption(new Option(\"-v,--verbose\").default(Defaults.verbose))\n .addOption(\n new Option(\"--force <type>\", \"Specify the release type\").choices([\n \"major\",\n \"minor\",\n \"patch\",\n ]),\n )\n .addOption(\n new Option(\n \"--prerelease [releaseType]\",\n \"Add a prerelease identifier to new versions\",\n ),\n )\n .addOption(\n new Option(\n \"--preset <presetName>\",\n \"Conventional Changelog preset to require. Defaults to conventional-changelog-conventionalcommits.\",\n ).default(\"conventional-changelog-conventionalcommits\"),\n )\n .addOption(\n new Option(\"--tag-version-prefix <prefix>\", \"Tag version prefix\").default(\n Defaults.tagVersionPrefix,\n ),\n )\n .addOption(\n new Option(\n \"--changelog <path>\",\n \"Changelog path. Default to CHANGELOG.md.\",\n ).default(Defaults.changelog),\n )\n .addOption(\n new Option(\n \"-m,--commit-message <message>\",\n 'Commit message. Default to \"chore: release %a\". You can use %v for the version, %s for the version with prefix, %t to list tags, %a for auto best display.',\n ).default(Defaults.commitMessage),\n )\n .addOption(\n new Option(\"--create-release <type>\", \"Create a release\").choices([\n \"github\",\n ]),\n )\n .addOption(\n new Option(\n \"--bump-dependents-highest-as <type>\",\n \"Bump dependents highest version as major, minor or patch\",\n )\n .choices([\"major\", \"minor\", \"patch\"])\n .default(Defaults.bumpDependentsHighestAs),\n )\n .addOption(\n new Option(\n \"--always-bump-peer-dependencies\",\n \"Always bump peer dependencies. Default to bumping only if the version doesn't satisfies the peer dependency range.\",\n ).default(Defaults.alwaysBumpPeerDependencies),\n )\n .addOption(\n new Option(\n \"--git-remote <remote-name>\",\n \"Git remote to push commits and tags to\",\n ).default(Defaults.gitRemote),\n )\n .addOption(\n new Option(\n \"--ignore-changes <glob>\",\n 'Ignore changes in files matching the glob. Example: \"**/*.test.js\"',\n ),\n )\n .addOption(new Option(\"--json\", \"Logger json\"))\n .addOption(\n new Option(\n \"--package-manager <manager>\",\n \"Specify the package manager to use (bun or yarn). Autodetected if not specified.\",\n ).choices([\"bun\", \"yarn\"]),\n )\n .addOption(new Option(\"--publish\", \"Publish after versioning\").default(false))\n .addOption(\n new Option(\n \"--publish-provenance\",\n \"Generate provenance attestation when publishing (if supported by package manager)\",\n ).default(false),\n )\n .action((options) => versionCommandAction(options));\n","import fs from \"node:fs\";\nimport { program } from \"commander\";\n\nimport \"./commands/version.ts\";\n\n// relative to dist directory\nconst pkg = JSON.parse(\n // eslint-disable-next-line unicorn/prefer-json-parse-buffer\n fs.readFileSync(new URL(\"../package.json\", import.meta.url), \"utf8\"),\n);\n\nprogram.name(pkg.name).description(pkg.description).version(pkg.version);\nprogram.parse();\n"],"names":["chunk","selector","createConventionalCommitsParser","path","fs"],"mappings":"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"}
package/package.json CHANGED
@@ -1,30 +1,32 @@
1
1
  {
2
2
  "name": "@pob/version",
3
- "version": "3.2.0",
3
+ "version": "4.1.0",
4
4
  "description": "simple versioning using conventional commits",
5
5
  "keywords": [
6
- "semantic-release",
7
- "conventional-commits",
8
- "yarn",
9
6
  "bun",
7
+ "conventional-commits",
8
+ "semantic-release",
9
+ "version",
10
10
  "versioning",
11
- "version"
11
+ "yarn"
12
12
  ],
13
- "author": "Christophe Hurpeau <christophe@hurpeau.com> (https://christophe.hurpeau.com)",
13
+ "homepage": "https://github.com/christophehurpeau/pob",
14
14
  "license": "MIT",
15
+ "author": "Christophe Hurpeau <christophe@hurpeau.com> (https://christophe.hurpeau.com)",
15
16
  "repository": {
16
17
  "type": "git",
17
18
  "url": "https://github.com/christophehurpeau/pob.git",
18
19
  "directory": "@pob/version"
19
20
  },
20
- "homepage": "https://github.com/christophehurpeau/pob",
21
- "type": "module",
22
- "engines": {
23
- "node": ">=24.0.0"
24
- },
25
21
  "bin": {
26
22
  "pob-version": "./dist/index-node.mjs"
27
23
  },
24
+ "files": [
25
+ "src",
26
+ "dist",
27
+ "bin"
28
+ ],
29
+ "type": "module",
28
30
  "main": "./dist/index-node.mjs",
29
31
  "exports": {
30
32
  "./package.json": "./package.json",
@@ -38,19 +40,24 @@
38
40
  "publishConfig": {
39
41
  "access": "public"
40
42
  },
41
- "files": [
42
- "src",
43
- "dist",
44
- "bin"
45
- ],
46
- "scripts": {
47
- "build": "yarn clean:build && rollup --config rollup.config.mjs",
48
- "clean": "yarn clean:build",
49
- "clean:build": "pob-esbuild-clean-out dist",
50
- "lint": "yarn run lint:eslint",
51
- "lint:eslint": "yarn ''../..'' run eslint --quiet '@pob/version'",
52
- "start": "yarn clean:build && rollup --config rollup.config.mjs --watch",
53
- "test": "yarn '../..' run test -- '@pob/version'"
43
+ "dependencies": {
44
+ "commander": "14.0.3",
45
+ "conventional-changelog-conventionalcommits": "9.3.1",
46
+ "conventional-changelog-preset-loader": "5.0.0",
47
+ "conventional-changelog-writer": "8.4.0",
48
+ "conventional-commits-parser": "6.4.0",
49
+ "nightingale": "18.1.0",
50
+ "semver": "7.8.0"
51
+ },
52
+ "devDependencies": {
53
+ "@types/node": "24.12.4",
54
+ "@types/semver": "7.7.1",
55
+ "type-fest": "5.6.0",
56
+ "typescript": "6.0.3",
57
+ "@pob/rollup-esbuild": "9.1.0"
58
+ },
59
+ "engines": {
60
+ "node": ">=24.14.1"
54
61
  },
55
62
  "pob": {
56
63
  "bundler": "rollup-esbuild",
@@ -67,21 +74,13 @@
67
74
  ],
68
75
  "typescript": true
69
76
  },
70
- "prettier": "@pob/root/prettier-config",
71
- "dependencies": {
72
- "commander": "14.0.3",
73
- "conventional-changelog-conventionalcommits": "9.3.1",
74
- "conventional-changelog-preset-loader": "5.0.0",
75
- "conventional-changelog-writer": "8.4.0",
76
- "conventional-commits-parser": "6.4.0",
77
- "nightingale": "18.1.0",
78
- "semver": "7.7.4"
79
- },
80
- "devDependencies": {
81
- "@pob/rollup-esbuild": "8.3.0",
82
- "@types/node": "24.12.2",
83
- "@types/semver": "7.7.1",
84
- "type-fest": "5.5.0",
85
- "typescript": "5.9.3"
77
+ "scripts": {
78
+ "build": "pnpm run clean:build && rollup --config rollup.config.mjs",
79
+ "clean": "pnpm run clean:build",
80
+ "clean:build": "pob-esbuild-clean-out dist",
81
+ "lint": "pnpm run lint:eslint",
82
+ "lint:eslint": "pnpm run --dir '../..' eslint --quiet '@pob/version'",
83
+ "start": "pnpm run clean:build && rollup --config rollup.config.mjs --watch",
84
+ "test": "pnpm run --dir '../..' test -- '@pob/version'"
86
85
  }
87
86
  }
@@ -407,7 +407,9 @@ export const versionCommandAction = async (
407
407
  satisfies(
408
408
  dependencyBumpedWorkspace.newVersion,
409
409
  dependencyDescriptor.selector,
410
- { includePrerelease: true },
410
+ {
411
+ includePrerelease: true,
412
+ },
411
413
  )
412
414
  ) {
413
415
  continue;
@@ -698,9 +700,7 @@ export const versionCommandAction = async (
698
700
  if (options.changelog) {
699
701
  if (options.dryRun) {
700
702
  logger.info(
701
- `${getWorkspaceName(workspace)}: ${
702
- options.changelog
703
- }\n${changelog}`,
703
+ `${getWorkspaceName(workspace)}: ${options.changelog}\n${changelog}`,
704
704
  );
705
705
  } else {
706
706
  await updateChangelogFile(
@@ -791,9 +791,7 @@ export const versionCommandAction = async (
791
791
  const changelog = changelogs.get(workspace);
792
792
  if (!changelog) {
793
793
  logger.warn(
794
- `No changelog found for workspace: ${getWorkspaceName(
795
- workspace,
796
- )}`,
794
+ `No changelog found for workspace: ${getWorkspaceName(workspace)}`,
797
795
  );
798
796
  return Promise.resolve(undefined);
799
797
  }
@@ -1,6 +1,7 @@
1
1
  import { existsSync } from "node:fs";
2
2
  import type { Workspace } from "../utils/packageUtils.ts";
3
3
  import { BunPackageManager } from "./BunPackageManager.ts";
4
+ import { PnpmPackageManager } from "./PnpmPackageManager.ts";
4
5
  import { YarnPackageManager } from "./YarnPackageManager.ts";
5
6
 
6
7
  export interface PackageManagerPublishOptions {
@@ -29,11 +30,16 @@ export const autoDetectPackageManager = (
29
30
  const hasNpmPackageLock = existsSync(
30
31
  `${rootWorkspace.cwd}/package-lock.json`,
31
32
  );
33
+ const hasPnpmLock = existsSync(`${rootWorkspace.cwd}/pnpm-lock.yaml`);
32
34
 
33
35
  if (
34
- [hasYarnLock, hasBunLockLegacy, hasBunLock, hasNpmPackageLock].filter(
35
- Boolean,
36
- ).length > 1
36
+ [
37
+ hasYarnLock,
38
+ hasBunLockLegacy,
39
+ hasBunLock,
40
+ hasNpmPackageLock,
41
+ hasPnpmLock,
42
+ ].filter(Boolean).length > 1
37
43
  ) {
38
44
  throw new Error(
39
45
  `Multiple lock files detected in workspace at ${rootWorkspace.cwd}. Please ensure only one lock file is present, or pass --package-manager option to bypass auto-detection.`,
@@ -48,6 +54,10 @@ export const autoDetectPackageManager = (
48
54
  return BunPackageManager;
49
55
  }
50
56
 
57
+ if (hasPnpmLock) {
58
+ return PnpmPackageManager;
59
+ }
60
+
51
61
  if (hasNpmPackageLock) {
52
62
  throw new Error(
53
63
  "NPM is not currently supported as a package manager. Please migrate to Yarn or Bun, or open an issue to request support.",
@@ -61,16 +71,20 @@ export const autoDetectPackageManager = (
61
71
 
62
72
  export const getPackageManager = (
63
73
  rootWorkspace: Workspace,
64
- specifiedPackageManager?: "bun" | "yarn",
74
+ specifiedPackageManager?: "bun" | "pnpm" | "yarn",
65
75
  ): PackageManager => {
66
- if (specifiedPackageManager === "bun") {
67
- return BunPackageManager;
68
- }
69
-
70
- if (specifiedPackageManager === "yarn") {
71
- return YarnPackageManager;
76
+ switch (specifiedPackageManager) {
77
+ case "bun":
78
+ return BunPackageManager;
79
+ case "yarn":
80
+ return YarnPackageManager;
81
+ case "pnpm":
82
+ return PnpmPackageManager;
83
+ case undefined:
84
+ default: {
85
+ throw new Error(
86
+ "Invalid package manager specified. Supported values are 'bun' and 'yarn'.",
87
+ );
88
+ }
72
89
  }
73
- throw new Error(
74
- "Invalid package manager specified. Supported values are 'bun' and 'yarn'.",
75
- );
76
90
  };
@@ -0,0 +1,23 @@
1
+ import { execCommand } from "../utils/execCommand.ts";
2
+ import type {
3
+ PackageManager,
4
+ PackageManagerPublishOptions,
5
+ } from "./PackageManager.ts";
6
+
7
+ export const PnpmPackageManager: PackageManager = {
8
+ async runScript(workspace, scriptName) {
9
+ await execCommand(workspace, ["pnpm", "run", scriptName], "inherit");
10
+ },
11
+
12
+ async publish(workspace, options?: PackageManagerPublishOptions) {
13
+ if (options?.provenance) {
14
+ await execCommand(
15
+ workspace,
16
+ ["pnpm", "publish", "--provenance"],
17
+ "inherit",
18
+ );
19
+ } else {
20
+ await execCommand(workspace, ["pnpm", "publish"], "inherit");
21
+ }
22
+ },
23
+ };
@@ -46,9 +46,7 @@ export const calcBumpRange = (
46
46
  throw new Error(`Couldn't bump range ${range} in ${workspaceName}`);
47
47
  }
48
48
 
49
- return `${useWorkspaceProtocol ? yarnWorkspaceProtocol : ""}${
50
- parsed[1] ?? ""
51
- }${newVersion}`;
49
+ return `${useWorkspaceProtocol ? yarnWorkspaceProtocol : ""}${parsed[1] ?? ""}${newVersion}`;
52
50
  };
53
51
 
54
52
  export const getHighestBumpType = (bumpTypes: BumpType[]): BumpType => {
@@ -87,6 +87,7 @@ export const findRootWorkspace = async (
87
87
  isAccessible(path.join(currentPath, ".yarnrc.yml")),
88
88
  isAccessible(path.join(currentPath, "yarn.lock")),
89
89
  isAccessible(path.join(currentPath, "bun.lock")),
90
+ isAccessible(path.join(currentPath, "pnpm-lock.yaml")),
90
91
  ]);
91
92
  if (isRootIfOneOfThesePathsExists.some(Boolean)) {
92
93
  return createWorkspace(currentPath);
package/CHANGELOG.md DELETED
@@ -1,177 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file.
4
- See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
-
6
- ## [3.2.0](https://github.com/christophehurpeau/pob/compare/@pob/version@3.1.0...@pob/version@3.2.0) (2026-05-01)
7
-
8
- ### Features
9
-
10
- * bump eslint-config and eslint-config-typescript-react to version 65.3.0
11
-
12
- Version bump for dependency: @pob/rollup-esbuild
13
-
14
-
15
- ## [3.1.0](https://github.com/christophehurpeau/pob/compare/@pob/version@3.0.0...@pob/version@3.1.0) (2026-05-01)
16
-
17
- ### Features
18
-
19
- * **version:** add title in github release
20
-
21
- Version bump for dependency: @pob/rollup-esbuild
22
-
23
-
24
- ## [3.0.0](https://github.com/christophehurpeau/pob/compare/@pob/version@2.4.0...@pob/version@3.0.0) (2026-04-05)
25
-
26
- ### ⚠ BREAKING CHANGES
27
-
28
- * node 24
29
-
30
- ### Features
31
-
32
- * node 24
33
-
34
- ## [2.4.0](https://github.com/christophehurpeau/pob/compare/@pob/version@2.3.0...@pob/version@2.4.0) (2026-04-05)
35
-
36
- ### Features
37
-
38
- * **deps:** update conventional changelog ([#2719](https://github.com/christophehurpeau/pob/issues/2719))
39
-
40
- ## [2.3.0](https://github.com/christophehurpeau/pob/compare/@pob/version@2.2.0...@pob/version@2.3.0) (2026-03-21)
41
-
42
- ### Features
43
-
44
- * **deps:** update conventional changelog ([#2700](https://github.com/christophehurpeau/pob/issues/2700))
45
-
46
- Version bump for dependency: @pob/rollup-esbuild
47
-
48
-
49
- ## [2.2.0](https://github.com/christophehurpeau/pob/compare/@pob/version@2.1.0...@pob/version@2.2.0) (2026-03-12)
50
-
51
- ### Features
52
-
53
- * update pob/eslint-config
54
-
55
- ### Bug Fixes
56
-
57
- * **deps:** update dependency commander to v14.0.3 ([#2690](https://github.com/christophehurpeau/pob/issues/2690))
58
-
59
- Version bump for dependency: @pob/rollup-esbuild
60
-
61
-
62
- ## [2.1.0](https://github.com/christophehurpeau/pob/compare/@pob/version@2.0.0...@pob/version@2.1.0) (2026-03-01)
63
-
64
- ### Bug Fixes
65
-
66
- * **deps:** update dependency semver to v7.7.4 ([#2696](https://github.com/christophehurpeau/pob/issues/2696))
67
-
68
- Version bump for dependency: @pob/rollup-esbuild
69
-
70
-
71
- ## [2.0.0](https://github.com/christophehurpeau/pob/compare/@pob/version@1.4.3...@pob/version@2.0.0) (2026-03-01)
72
-
73
- ### ⚠ BREAKING CHANGES
74
-
75
- * deprecate pob-babel and babel-preset-pob-env
76
-
77
- ### Features
78
-
79
- * deprecate pob-babel and babel-preset-pob-env
80
-
81
- Version bump for dependency: @pob/rollup-esbuild
82
-
83
-
84
- ## [1.4.3](https://github.com/christophehurpeau/pob/compare/@pob/version@1.4.2...@pob/version@1.4.3) (2026-03-01)
85
-
86
- Version bump for dependency: @pob/rollup-esbuild
87
-
88
-
89
- ## [1.4.2](https://github.com/christophehurpeau/pob/compare/@pob/version@1.4.1...@pob/version@1.4.2) (2025-12-06)
90
-
91
- ### Bug Fixes
92
-
93
- * bun pm pack not bun pack
94
-
95
- ## [1.4.1](https://github.com/christophehurpeau/pob/compare/@pob/version@1.4.0...@pob/version@1.4.1) (2025-12-06)
96
-
97
- ### Reverts
98
-
99
- * Revert "feat: yarn publish with provenance"
100
-
101
- ## [1.4.0](https://github.com/christophehurpeau/pob/compare/@pob/version@1.3.0...@pob/version@1.4.0) (2025-12-06)
102
-
103
- ### Features
104
-
105
- * yarn publish with provenance
106
-
107
- ## [1.3.0](https://github.com/christophehurpeau/pob/compare/@pob/version@1.2.2...@pob/version@1.3.0) (2025-12-06)
108
-
109
- ### Features
110
-
111
- * try to implement provenance publish with bun
112
-
113
- ## [1.2.2](https://github.com/christophehurpeau/pob/compare/@pob/version@1.2.1...@pob/version@1.2.2) (2025-12-06)
114
-
115
- ### Bug Fixes
116
-
117
- * properly configure app published to npm
118
-
119
- ## [1.2.1](https://github.com/christophehurpeau/pob/compare/@pob/version@1.2.0...@pob/version@1.2.1) (2025-12-06)
120
-
121
- ### Bug Fixes
122
-
123
- * always bump when workspace:* is used
124
-
125
- ## [1.2.0](https://github.com/christophehurpeau/pob/compare/@pob/version@1.1.1...@pob/version@1.2.0) (2025-12-06)
126
-
127
- ### Features
128
-
129
- * add support for bun.lock in findRootWorkspace utility
130
-
131
- ## [1.1.1](https://github.com/christophehurpeau/pob/compare/@pob/version@1.1.0...@pob/version@1.1.1) (2025-12-06)
132
-
133
- Note: no notable changes
134
-
135
-
136
- ## [1.1.0](https://github.com/christophehurpeau/pob/compare/@pob/version@1.0.2...@pob/version@1.1.0) (2025-12-06)
137
-
138
- ### Features
139
-
140
- * update actions/checkout from v5 to v6 in workflow files
141
-
142
- ## [1.0.2](https://github.com/christophehurpeau/pob/compare/@pob/version@1.0.1...@pob/version@1.0.2) (2025-12-06)
143
-
144
- ### Bug Fixes
145
-
146
- * fix release notes
147
-
148
- ## [1.0.1](https://github.com/christophehurpeau/pob/compare/@pob/version@1.0.0...@pob/version@1.0.1) (2025-12-06)
149
-
150
- ### Bug Fixes
151
-
152
- * warn if no changes made
153
-
154
- ## [1.0.0](https://github.com/christophehurpeau/pob/compare/@pob/version@5.2.0...@pob/version@1.0.0) (2025-12-06)
155
-
156
- ### ⚠ BREAKING CHANGES
157
-
158
- * use gh cli instead of octokit/rest
159
- * migrate pob-version to @pob/version and add initial bun support
160
-
161
- ### Features
162
-
163
- * drop @pob/version
164
- * migrate pob-version to @pob/version and add initial bun support
165
- * try to implement publish with bun
166
-
167
- ### Bug Fixes
168
-
169
- * use replaceAll for newline handling in version command logging
170
-
171
- ### Code Refactoring
172
-
173
- * use gh cli instead of octokit/rest
174
-
175
- Version bump for dependency: @pob/rollup-esbuild
176
-
177
-