@pob/version 4.0.0 → 4.1.1

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);
@@ -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 : \"\"}${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 ]);\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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"}
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@pob/version",
3
- "version": "4.0.0",
3
+ "version": "4.1.1",
4
4
  "description": "simple versioning using conventional commits",
5
5
  "keywords": [
6
6
  "bun",
@@ -11,6 +11,9 @@
11
11
  "yarn"
12
12
  ],
13
13
  "homepage": "https://github.com/christophehurpeau/pob",
14
+ "bugs": {
15
+ "url": "https://github.com/christophehurpeau/pob/issues"
16
+ },
14
17
  "license": "MIT",
15
18
  "author": "Christophe Hurpeau <christophe@hurpeau.com> (https://christophe.hurpeau.com)",
16
19
  "repository": {
@@ -40,15 +43,6 @@
40
43
  "publishConfig": {
41
44
  "access": "public"
42
45
  },
43
- "scripts": {
44
- "build": "yarn clean:build && rollup --config rollup.config.mjs",
45
- "clean": "yarn clean:build",
46
- "clean:build": "pob-esbuild-clean-out dist",
47
- "lint": "yarn run lint:eslint",
48
- "lint:eslint": "yarn '../..' run eslint --quiet '@pob/version'",
49
- "start": "yarn clean:build && rollup --config rollup.config.mjs --watch",
50
- "test": "yarn '../..' run test -- '@pob/version'"
51
- },
52
46
  "dependencies": {
53
47
  "commander": "14.0.3",
54
48
  "conventional-changelog-conventionalcommits": "9.3.1",
@@ -56,14 +50,14 @@
56
50
  "conventional-changelog-writer": "8.4.0",
57
51
  "conventional-commits-parser": "6.4.0",
58
52
  "nightingale": "18.1.0",
59
- "semver": "7.8.0"
53
+ "semver": "7.8.1"
60
54
  },
61
55
  "devDependencies": {
62
- "@pob/rollup-esbuild": "9.0.0",
63
56
  "@types/node": "24.12.4",
64
57
  "@types/semver": "7.7.1",
65
58
  "type-fest": "5.6.0",
66
- "typescript": "6.0.3"
59
+ "typescript": "6.0.3",
60
+ "@pob/rollup-esbuild": "9.1.1"
67
61
  },
68
62
  "engines": {
69
63
  "node": ">=24.14.1"
@@ -82,5 +76,15 @@
82
76
  }
83
77
  ],
84
78
  "typescript": true
79
+ },
80
+ "scripts": {
81
+ "build": "pnpm run clean:build && rollup --config rollup.config.mjs",
82
+ "clean": "pnpm run clean:build",
83
+ "clean:build": "pob-esbuild-clean-out dist",
84
+ "lint": "pnpm run lint:eslint",
85
+ "lint:eslint": "pnpm run --dir '../..' eslint --quiet '@pob/version'",
86
+ "start": "pnpm run clean:build && rollup --config rollup.config.mjs --watch",
87
+ "test": "pnpm run --dir '../..' test -- '@pob/version'",
88
+ "tsc": "tsc"
85
89
  }
86
90
  }
@@ -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
+ };
@@ -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,195 +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
- ## [4.0.0](https://github.com/christophehurpeau/pob/compare/@pob/version@3.2.0...@pob/version@4.0.0) (2026-05-20)
7
-
8
- ### ⚠ BREAKING CHANGES
9
-
10
- * **deps:** update dependency typescript to v6 (#2752)
11
- * stop using baseUrl replaced by hash slash import
12
- * use oxfmt
13
-
14
- ### Features
15
-
16
- * **deps:** update dependency semver to v7.8.0 ([#2748](https://github.com/christophehurpeau/pob/issues/2748))
17
- * **deps:** update dependency typescript to v6 ([#2752](https://github.com/christophehurpeau/pob/issues/2752))
18
- * stop using baseUrl replaced by hash slash import
19
- * use oxfmt
20
-
21
- Version bump for dependency: @pob/rollup-esbuild
22
-
23
-
24
- ## [3.2.0](https://github.com/christophehurpeau/pob/compare/@pob/version@3.1.0...@pob/version@3.2.0) (2026-05-01)
25
-
26
- ### Features
27
-
28
- * bump eslint-config and eslint-config-typescript-react to version 65.3.0
29
-
30
- Version bump for dependency: @pob/rollup-esbuild
31
-
32
-
33
- ## [3.1.0](https://github.com/christophehurpeau/pob/compare/@pob/version@3.0.0...@pob/version@3.1.0) (2026-05-01)
34
-
35
- ### Features
36
-
37
- * **version:** add title in github release
38
-
39
- Version bump for dependency: @pob/rollup-esbuild
40
-
41
-
42
- ## [3.0.0](https://github.com/christophehurpeau/pob/compare/@pob/version@2.4.0...@pob/version@3.0.0) (2026-04-05)
43
-
44
- ### ⚠ BREAKING CHANGES
45
-
46
- * node 24
47
-
48
- ### Features
49
-
50
- * node 24
51
-
52
- ## [2.4.0](https://github.com/christophehurpeau/pob/compare/@pob/version@2.3.0...@pob/version@2.4.0) (2026-04-05)
53
-
54
- ### Features
55
-
56
- * **deps:** update conventional changelog ([#2719](https://github.com/christophehurpeau/pob/issues/2719))
57
-
58
- ## [2.3.0](https://github.com/christophehurpeau/pob/compare/@pob/version@2.2.0...@pob/version@2.3.0) (2026-03-21)
59
-
60
- ### Features
61
-
62
- * **deps:** update conventional changelog ([#2700](https://github.com/christophehurpeau/pob/issues/2700))
63
-
64
- Version bump for dependency: @pob/rollup-esbuild
65
-
66
-
67
- ## [2.2.0](https://github.com/christophehurpeau/pob/compare/@pob/version@2.1.0...@pob/version@2.2.0) (2026-03-12)
68
-
69
- ### Features
70
-
71
- * update pob/eslint-config
72
-
73
- ### Bug Fixes
74
-
75
- * **deps:** update dependency commander to v14.0.3 ([#2690](https://github.com/christophehurpeau/pob/issues/2690))
76
-
77
- Version bump for dependency: @pob/rollup-esbuild
78
-
79
-
80
- ## [2.1.0](https://github.com/christophehurpeau/pob/compare/@pob/version@2.0.0...@pob/version@2.1.0) (2026-03-01)
81
-
82
- ### Bug Fixes
83
-
84
- * **deps:** update dependency semver to v7.7.4 ([#2696](https://github.com/christophehurpeau/pob/issues/2696))
85
-
86
- Version bump for dependency: @pob/rollup-esbuild
87
-
88
-
89
- ## [2.0.0](https://github.com/christophehurpeau/pob/compare/@pob/version@1.4.3...@pob/version@2.0.0) (2026-03-01)
90
-
91
- ### ⚠ BREAKING CHANGES
92
-
93
- * deprecate pob-babel and babel-preset-pob-env
94
-
95
- ### Features
96
-
97
- * deprecate pob-babel and babel-preset-pob-env
98
-
99
- Version bump for dependency: @pob/rollup-esbuild
100
-
101
-
102
- ## [1.4.3](https://github.com/christophehurpeau/pob/compare/@pob/version@1.4.2...@pob/version@1.4.3) (2026-03-01)
103
-
104
- Version bump for dependency: @pob/rollup-esbuild
105
-
106
-
107
- ## [1.4.2](https://github.com/christophehurpeau/pob/compare/@pob/version@1.4.1...@pob/version@1.4.2) (2025-12-06)
108
-
109
- ### Bug Fixes
110
-
111
- * bun pm pack not bun pack
112
-
113
- ## [1.4.1](https://github.com/christophehurpeau/pob/compare/@pob/version@1.4.0...@pob/version@1.4.1) (2025-12-06)
114
-
115
- ### Reverts
116
-
117
- * Revert "feat: yarn publish with provenance"
118
-
119
- ## [1.4.0](https://github.com/christophehurpeau/pob/compare/@pob/version@1.3.0...@pob/version@1.4.0) (2025-12-06)
120
-
121
- ### Features
122
-
123
- * yarn publish with provenance
124
-
125
- ## [1.3.0](https://github.com/christophehurpeau/pob/compare/@pob/version@1.2.2...@pob/version@1.3.0) (2025-12-06)
126
-
127
- ### Features
128
-
129
- * try to implement provenance publish with bun
130
-
131
- ## [1.2.2](https://github.com/christophehurpeau/pob/compare/@pob/version@1.2.1...@pob/version@1.2.2) (2025-12-06)
132
-
133
- ### Bug Fixes
134
-
135
- * properly configure app published to npm
136
-
137
- ## [1.2.1](https://github.com/christophehurpeau/pob/compare/@pob/version@1.2.0...@pob/version@1.2.1) (2025-12-06)
138
-
139
- ### Bug Fixes
140
-
141
- * always bump when workspace:* is used
142
-
143
- ## [1.2.0](https://github.com/christophehurpeau/pob/compare/@pob/version@1.1.1...@pob/version@1.2.0) (2025-12-06)
144
-
145
- ### Features
146
-
147
- * add support for bun.lock in findRootWorkspace utility
148
-
149
- ## [1.1.1](https://github.com/christophehurpeau/pob/compare/@pob/version@1.1.0...@pob/version@1.1.1) (2025-12-06)
150
-
151
- Note: no notable changes
152
-
153
-
154
- ## [1.1.0](https://github.com/christophehurpeau/pob/compare/@pob/version@1.0.2...@pob/version@1.1.0) (2025-12-06)
155
-
156
- ### Features
157
-
158
- * update actions/checkout from v5 to v6 in workflow files
159
-
160
- ## [1.0.2](https://github.com/christophehurpeau/pob/compare/@pob/version@1.0.1...@pob/version@1.0.2) (2025-12-06)
161
-
162
- ### Bug Fixes
163
-
164
- * fix release notes
165
-
166
- ## [1.0.1](https://github.com/christophehurpeau/pob/compare/@pob/version@1.0.0...@pob/version@1.0.1) (2025-12-06)
167
-
168
- ### Bug Fixes
169
-
170
- * warn if no changes made
171
-
172
- ## [1.0.0](https://github.com/christophehurpeau/pob/compare/@pob/version@5.2.0...@pob/version@1.0.0) (2025-12-06)
173
-
174
- ### ⚠ BREAKING CHANGES
175
-
176
- * use gh cli instead of octokit/rest
177
- * migrate pob-version to @pob/version and add initial bun support
178
-
179
- ### Features
180
-
181
- * drop @pob/version
182
- * migrate pob-version to @pob/version and add initial bun support
183
- * try to implement publish with bun
184
-
185
- ### Bug Fixes
186
-
187
- * use replaceAll for newline handling in version command logging
188
-
189
- ### Code Refactoring
190
-
191
- * use gh cli instead of octokit/rest
192
-
193
- Version bump for dependency: @pob/rollup-esbuild
194
-
195
-