@pob/version 1.0.1 → 1.0.2

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.
Files changed (43) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/index-node.mjs +6 -4
  3. package/dist/index-node.mjs.map +1 -1
  4. package/package.json +1 -1
  5. package/src/commands/version.test.ts +9 -3
  6. package/src/utils/conventionalChangelogUtils.test.ts +1 -1
  7. package/src/utils/githubUtils.ts +5 -3
  8. package/src/utils/mapWorkspaces.test.ts +1 -1
  9. package/src/utils/packageUtils.test.ts +1 -1
  10. package/src/__fixtures__/yarn-with-lifecycle/.yarn/install-state.gz +0 -0
  11. /package/{src/__fixtures__ → __fixtures__}/bun-basic/package.json +0 -0
  12. /package/{src/__fixtures__ → __fixtures__}/bun-no-version/package.json +0 -0
  13. /package/{src/__fixtures__ → __fixtures__}/yarn-basic/package.json +0 -0
  14. /package/{src/__fixtures__ → __fixtures__}/yarn-basic/yarn.lock +0 -0
  15. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo/package.json +0 -0
  16. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo/packages/package-1/package.json +0 -0
  17. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo/packages/package-2/package.json +0 -0
  18. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo/packages/package-3/package.json +0 -0
  19. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo/packages/package-4/package.json +0 -0
  20. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo/packages/package-5/package.json +0 -0
  21. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo/yarn.lock +0 -0
  22. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo-duplicate-names/package.json +0 -0
  23. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo-duplicate-names/packages/pkg-a/package.json +0 -0
  24. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo-duplicate-names/packages/pkg-b/package.json +0 -0
  25. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo-invalid-package-json/package.json +0 -0
  26. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo-invalid-package-json/packages/pkg-with-invalid-json/package.json +0 -0
  27. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo-nested/package.json +0 -0
  28. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo-nested/packages/deep-nested/package.json +0 -0
  29. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo-nested/packages/nested-1/packages/package-nested.json +0 -0
  30. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo-nested/packages/nested-1/packages/package.json +0 -0
  31. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo-nested/packages/package-1/package.json +0 -0
  32. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo-no-name/package.json +0 -0
  33. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo-no-name/packages/no-name-package/package.json +0 -0
  34. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo-object-form/package.json +0 -0
  35. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo-object-form/packages/package-1/package.json +0 -0
  36. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo-object-form/packages/package-2/package.json +0 -0
  37. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo-object-form/packages/package-3/package.json +0 -0
  38. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo-object-form/packages/package-4/package.json +0 -0
  39. /package/{src/__fixtures__ → __fixtures__}/yarn-monorepo-object-form/packages/package-5/package.json +0 -0
  40. /package/{src/__fixtures__ → __fixtures__}/yarn-no-version/package.json +0 -0
  41. /package/{src/__fixtures__ → __fixtures__}/yarn-no-version/yarn.lock +0 -0
  42. /package/{src/__fixtures__ → __fixtures__}/yarn-with-lifecycle/package.json +0 -0
  43. /package/{src/__fixtures__ → __fixtures__}/yarn-with-lifecycle/yarn.lock +0 -0
package/CHANGELOG.md CHANGED
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [1.0.2](https://github.com/christophehurpeau/pob/compare/@pob/version@1.0.1...@pob/version@1.0.2) (2025-12-06)
7
+
8
+ ### Bug Fixes
9
+
10
+ * fix release notes
11
+
6
12
  ## [1.0.1](https://github.com/christophehurpeau/pob/compare/@pob/version@1.0.0...@pob/version@1.0.1) (2025-12-06)
7
13
 
8
14
  ### Bug Fixes
@@ -669,9 +669,7 @@ const createGhRelease = async (workspace, opts) => {
669
669
  "create",
670
670
  tag,
671
671
  "--repo",
672
- `${parsedRepoUrl.username}/${parsedRepoUrl.reponame}`,
673
- "--notes",
674
- "-"
672
+ `${parsedRepoUrl.username}/${parsedRepoUrl.reponame}`
675
673
  ];
676
674
  if (prerelease) {
677
675
  args.push("--prerelease");
@@ -683,7 +681,11 @@ const createGhRelease = async (workspace, opts) => {
683
681
  }
684
682
  }
685
683
  try {
686
- await execCommandWithInput(workspace, ["gh", ...args], body);
684
+ await execCommandWithInput(
685
+ workspace,
686
+ ["gh", ...args, "--notes-file", "-"],
687
+ body
688
+ );
687
689
  } catch (error) {
688
690
  throw new Error(
689
691
  `gh release create failed: ${String(error instanceof Error ? error.message : error)}`
@@ -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 { PackageManager } 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) {\n await execCommand(workspace, [\"bun\", \"publish\"], \"inherit\");\n },\n};\n","import { execCommand } from \"../utils/execCommand.ts\";\nimport type { Workspace } from \"../utils/packageUtils.ts\";\nimport type { PackageManager } 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) {\n await execCommand(workspace, [\"yarn\", \"npm\", \"publish\"], \"inherit\");\n },\n\n async publishWorkspaces(rootWorkspace: Workspace) {\n await execCommand(\n rootWorkspace,\n [\n \"yarn\",\n \"workspaces\",\n \"foreach\",\n \"--all\",\n \"--parallel\",\n \"--no-private\",\n \"npm\",\n \"publish\",\n ],\n \"inherit\",\n );\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 PackageManager {\n installOnPackageContentChange?: (rootWorkspace: Workspace) => Promise<void>;\n runScript: (workspace: Workspace, scriptName: string) => Promise<void>;\n publish: (workspace: Workspace) => Promise<void>;\n publishWorkspaces?: (rootWorkspace: Workspace) => Promise<void>;\n}\n\nexport const autoDetectPackageManager = (\n rootWorkspace: Workspace,\n): PackageManager => {\n const hasYarnLock = existsSync(`${rootWorkspace.cwd}/yarn.lock`);\n const hasBunLockLegacy = existsSync(`${rootWorkspace.cwd}/bun.lockb`);\n const hasBunLock = existsSync(`${rootWorkspace.cwd}/bun.lock`);\n const hasNpmPackageLock = existsSync(\n `${rootWorkspace.cwd}/package-lock.json`,\n );\n\n if (\n [hasYarnLock, hasBunLockLegacy, hasBunLock, hasNpmPackageLock].filter(\n Boolean,\n ).length > 1\n ) {\n throw new Error(\n `Multiple lock files detected in workspace at ${rootWorkspace.cwd}. Please ensure only one lock file is present, or pass --package-manager option to bypass auto-detection.`,\n );\n }\n\n if (hasYarnLock) {\n return YarnPackageManager;\n }\n\n if (hasBunLockLegacy || hasBunLock) {\n return BunPackageManager;\n }\n\n if (hasNpmPackageLock) {\n throw new Error(\n \"NPM is not currently supported as a package manager. Please migrate to Yarn or Bun, or open an issue to request support.\",\n );\n }\n\n throw new Error(\n `No lock file detected in workspace at ${rootWorkspace.cwd}. Please ensure a supported lock file is present, or pass --package-manager option to bypass auto-detection.`,\n );\n};\n\nexport const getPackageManager = (\n rootWorkspace: Workspace,\n specifiedPackageManager?: \"bun\" | \"yarn\",\n): PackageManager => {\n if (specifiedPackageManager === \"bun\") {\n return BunPackageManager;\n }\n\n if (specifiedPackageManager === \"yarn\") {\n return YarnPackageManager;\n }\n throw new Error(\n \"Invalid package manager specified. Supported values are 'bun' and 'yarn'.\",\n );\n};\n","export class UsageError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"UsageError\";\n }\n}\n","export function getMapArrayItemForKey<K, V>(map: Map<K, V[]>, key: K): V[] {\n let value: V[] | undefined = map.get(key);\n if (value === undefined) {\n map.set(key, (value = [] as V[]));\n }\n return value;\n}\n","/**\n * Combination of an optional scope and name.\n *\n * eg `@npm/types`\n */\nexport interface PackageDescriptorName {\n scope?: string;\n name: string;\n}\n\ninterface DescriptorUtils<Descriptor> {\n parse: (value: string) => Descriptor;\n stringify: (descriptor: Descriptor) => string;\n}\n\nexport const PackageDescriptorNameUtils: DescriptorUtils<PackageDescriptorName> =\n {\n parse: (value) => {\n if (value.startsWith(\"@\")) {\n const [scope, name] = value.slice(1).split(\"/\", 2);\n if (!scope || !name) {\n throw new Error(`Invalid package descriptor name: ${value}`);\n }\n return { scope, name };\n }\n return { name: value };\n },\n stringify: (descriptor) => {\n return descriptor.scope === undefined\n ? descriptor.name\n : `@${descriptor.scope}/${descriptor.name}`;\n },\n };\n\nexport interface PackageDependencyDescriptor {\n key: string;\n name: PackageDescriptorName;\n selector: string; // can be npm tag or version or version range or git url or local folder path\n}\n\ninterface PackageDependencyDescriptorUtils<\n Descriptor = PackageDependencyDescriptor,\n> {\n make: (descriptor: Descriptor, selector: string) => Descriptor;\n parse: (dependencyKey: string, dependencyValue: string) => Descriptor;\n stringify: (descriptor: Descriptor) => [key: string, value: string];\n}\n\nexport const PackageDependencyDescriptorUtils: PackageDependencyDescriptorUtils =\n {\n make: (descriptor, selector) => {\n return { key: descriptor.key, name: descriptor.name, selector };\n },\n parse: (dependencyKey, dependencyValue) => {\n const [name, selector] = dependencyValue.startsWith(\"npm:\")\n ? (() => {\n const v = dependencyValue.slice(\"npm:\".length);\n if (!v.startsWith(\"@\")) return v.split(\"@\", 2) as [string, string];\n const [packageNameWithoutFirstChar, selector] = v\n .slice(1)\n .split(\"@\", 2);\n if (!packageNameWithoutFirstChar || !selector) {\n throw new Error(`Invalid package descriptor: ${dependencyValue}`);\n }\n return [`@${packageNameWithoutFirstChar}`, selector];\n })()\n : [dependencyKey, dependencyValue];\n\n return {\n key: dependencyKey,\n name: PackageDescriptorNameUtils.parse(name),\n selector,\n };\n },\n stringify: (descriptor) => {\n return [descriptor.key, descriptor.selector];\n },\n };\n\n// export const PackageDependencySelectorUtils;\n","/* eslint-disable complexity */\nimport path from \"node:path\";\nimport { getMapArrayItemForKey } from \"./mapUtils.ts\";\nimport type { PackageDependencyDescriptor } from \"./packageDependenciesUtils.ts\";\nimport {\n PackageDependencyDescriptorUtils,\n PackageDescriptorNameUtils,\n} from \"./packageDependenciesUtils.ts\";\nimport type { ProjectWorkspace, Workspace } from \"./packageUtils.ts\";\n\nconst allDependenciesTypes = [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n] as const;\nexport type DependencyType = (typeof allDependenciesTypes)[number];\n\nexport const getWorkspaceName = (workspace: Workspace): string => {\n return (\n workspace.pkg.name ?? (path.basename(workspace.cwd) || \"unnamed-workspace\")\n );\n};\n\ntype WorkspacesDependenciesMap = Map<\n Workspace,\n [Workspace, DependencyType, PackageDependencyDescriptor][]\n>;\n\nexport const buildDependentsMaps = (\n project: ProjectWorkspace,\n): WorkspacesDependenciesMap => {\n const dependentsMap: WorkspacesDependenciesMap = new Map<\n Workspace,\n [Workspace, DependencyType, PackageDependencyDescriptor][]\n >();\n\n // Note that we need to do this before applying the new versions,\n // otherwise the `findWorkspacesByDescriptor` calls won't be able to\n // resolve the workspaces anymore (because the workspace versions will\n // have changed and won't match the outdated dependencies).\n\n for (const [, dependent] of project.children) {\n for (const set of allDependenciesTypes) {\n for (const [dependencyKey, dependencyValue] of Object.entries(\n dependent.pkg[set] || {},\n )) {\n if (!dependencyValue) continue;\n const descriptor = PackageDependencyDescriptorUtils.parse(\n dependencyKey,\n dependencyValue,\n );\n const workspace = project.children.get(\n PackageDescriptorNameUtils.stringify(descriptor.name),\n );\n if (!workspace) continue;\n\n const dependents = getMapArrayItemForKey(dependentsMap, workspace);\n dependents.push([dependent, set, descriptor]);\n }\n }\n }\n\n return dependentsMap;\n};\n\nexport const buildDependenciesMaps = (\n project: ProjectWorkspace,\n): WorkspacesDependenciesMap => {\n const dependenciesMap: WorkspacesDependenciesMap = new Map<\n Workspace,\n [Workspace, DependencyType, PackageDependencyDescriptor][]\n >();\n\n // Note that we need to do this before applying the new versions,\n // otherwise the `findWorkspacesByDescriptor` calls won't be able to\n // resolve the workspaces anymore (because the workspace versions will\n // have changed and won't match the outdated dependencies).\n\n for (const dependent of project.children.values()) {\n for (const set of allDependenciesTypes) {\n for (const [dependencyKey, dependencyValue] of Object.entries(\n dependent.pkg[set] || {},\n )) {\n if (!dependencyValue) continue;\n const descriptor = PackageDependencyDescriptorUtils.parse(\n dependencyKey,\n dependencyValue,\n );\n\n const workspace = project.children.get(\n PackageDescriptorNameUtils.stringify(descriptor.name),\n );\n if (!workspace) continue;\n\n const dependencies = getMapArrayItemForKey(dependenciesMap, dependent);\n dependencies.push([workspace, set, descriptor]);\n }\n }\n }\n\n return dependenciesMap;\n};\n\nexport const buildTopologicalOrderBatches = (\n project: ProjectWorkspace,\n dependenciesMap: WorkspacesDependenciesMap,\n): Workspace[][] => {\n const batches: Workspace[][] = [];\n\n const added = new Set<Workspace>();\n const toAdd = new Set<Workspace>([\n project.root,\n ...project.children.values(),\n ]);\n\n while (toAdd.size > 0) {\n const batch = new Set<Workspace>();\n for (const workspace of toAdd) {\n // make sure top level workspace is always in the last batch\n if (workspace === project.root && toAdd.size > 1) {\n continue;\n }\n\n const dependencies = dependenciesMap.get(workspace);\n if (!dependencies || dependencies.every((w) => added.has(w[0]))) {\n batch.add(workspace);\n }\n }\n\n for (const workspace of batch) {\n added.add(workspace);\n toAdd.delete(workspace);\n }\n\n if (batch.size === 0) {\n throw new Error(\"Circular dependency detected\");\n }\n batches.push([...batch]);\n }\n\n return batches;\n};\n","import semver from \"semver\";\nimport { UsageError } from \"./UsageError.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\nimport { getWorkspaceName } from \"./workspaceUtils.ts\";\n\nexport type BumpType = \"major\" | \"minor\" | \"patch\";\n\n// https://github.com/yarnpkg/berry/blob/506ded5f5f5a89553435940c74f1d857fd685a42/packages/plugin-version/sources/versionUtils.ts#L10\n// Basically we only support auto-upgrading the ranges that are very simple (^x.y.z, ~x.y.z, >=x.y.z, and of course x.y.z)\nconst SUPPORTED_UPGRADE_REGEXP =\n // eslint-disable-next-line regexp/no-unused-capturing-group\n /^((?:>=|[~^])?)(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(-(0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*)(\\.(0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*))*)?(\\+[0-9a-z-]+(\\.[0-9a-z-]+)*)?$/i;\n\nconst yarnWorkspaceProtocol = \"workspace:\";\n\nexport const calcBumpRange = (\n workspace: Workspace,\n range: string,\n newVersion: string,\n): string => {\n if (range === \"*\") {\n return range;\n }\n\n let useWorkspaceProtocol = false;\n\n if (range.startsWith(yarnWorkspaceProtocol)) {\n const slicedRange = range.slice(yarnWorkspaceProtocol.length);\n\n // Workspaces referenced through their path never get upgraded (\"workspace:packages/yarnpkg-core\")\n if (slicedRange === workspace.relativeCwd) {\n return range;\n }\n\n if (slicedRange === \"*\") {\n return range;\n }\n\n range = slicedRange;\n useWorkspaceProtocol = true;\n }\n\n const parsed = SUPPORTED_UPGRADE_REGEXP.exec(range);\n if (!parsed) {\n const workspaceName = getWorkspaceName(workspace);\n throw new Error(`Couldn't bump range ${range} in ${workspaceName}`);\n }\n\n return `${useWorkspaceProtocol ? yarnWorkspaceProtocol : \"\"}${\n parsed[1] ?? \"\"\n }${newVersion}`;\n};\n\nexport const getHighestBumpType = (bumpTypes: BumpType[]): BumpType => {\n if (bumpTypes.includes(\"major\")) {\n return \"major\";\n }\n\n if (bumpTypes.includes(\"minor\")) {\n return \"minor\";\n }\n\n return \"patch\";\n};\n\nexport const calcBumpType = (\n bumpType: BumpType,\n maxBumpType: BumpType,\n): BumpType => {\n if (maxBumpType === \"major\") {\n return bumpType;\n }\n\n if (maxBumpType === \"minor\") {\n return bumpType === \"major\" || bumpType === \"minor\" ? \"minor\" : \"patch\";\n }\n\n return \"patch\";\n};\n\nconst incVersion = (version: string, bumpType: BumpType): string | null => {\n // handle breaking of 0.x\n if (bumpType === \"major\" && semver.major(version) === 0) {\n bumpType = \"minor\";\n }\n return semver.inc(version, bumpType);\n};\n\nexport const incrementVersion = (\n workspace: Workspace,\n currentVersion: string,\n bumpType: BumpType,\n): string => {\n const newVersion = incVersion(currentVersion, bumpType);\n\n if (!newVersion) {\n throw new UsageError(\n `Could not determine next version for \"${getWorkspaceName(\n workspace,\n )}\" (currentVersion: ${currentVersion}, bumpType: ${bumpType}})`,\n );\n }\n\n return newVersion;\n};\n\n// const createPrerelease = (\n// version: string,\n// prereleaseType: ReleaseType,\n// prereleaseId: string,\n// ) => {\n// return semver.inc(version, prereleaseType, prereleaseId);\n// };\n","import { writeChangelogString } from \"conventional-changelog-writer\";\nimport { parseCommits as createConventionalCommitsParser } from \"conventional-commits-parser\";\nimport type { Commit, ParserStreamOptions } from \"conventional-commits-parser\";\nimport type { PackageJson } from \"type-fest\";\nimport type { ConventionalChangelogConfig } from \"./conventionalCommitConfigUtils.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\n\nexport interface WhatBump {\n level: 0 | 1 | 2;\n reason: string;\n}\nexport type WhatBumpResult = WhatBump | null | undefined;\nexport interface BumperRecommendation extends WhatBump {\n releaseType: \"major\" | \"minor\" | \"patch\";\n commits: Commit[];\n}\nexport interface EmptyBumperRecommendation {\n commits: Commit[];\n}\nexport type BumperRecommendationResult =\n | BumperRecommendation\n | EmptyBumperRecommendation;\n\nexport interface Preset {\n whatBump: (commits: Commit[]) => Promise<WhatBumpResult> | WhatBumpResult;\n tags?: unknown;\n commits?: unknown;\n parser?: ParserStreamOptions;\n}\n\nconst versions: BumperRecommendation[\"releaseType\"][] = [\n \"major\",\n \"minor\",\n \"patch\",\n];\n\nexport const recommendBump = async (\n commits: Parameters<ConventionalChangelogConfig[\"whatBump\"]>[0],\n config: ConventionalChangelogConfig,\n): Promise<Partial<BumperRecommendation>> => {\n const whatBump = config.whatBump;\n if (!whatBump) {\n throw new Error(\"whatBump method is missing in config\");\n }\n const result = { ...(await whatBump(commits)) };\n\n return {\n ...result,\n releaseType: result.level != null ? versions[result.level] : undefined,\n };\n};\n\nexport type Commits = Parameters<ConventionalChangelogConfig[\"whatBump\"]>[0];\n\nexport const generateChangelog = (\n workspace: Workspace,\n pkg: PackageJson,\n config: ConventionalChangelogConfig,\n previousTag: string | null,\n newTag: string | null,\n commits: Commits | undefined,\n date: string,\n // eslint-disable-next-line @typescript-eslint/max-params\n): Promise<string> => {\n if (!newTag) {\n throw new Error(`Missing new tag for package \"${pkg.name ?? \"\"}\"`);\n }\n\n const originUrl =\n typeof pkg.repository === \"string\" ? pkg.repository : pkg.repository?.url;\n const match =\n originUrl &&\n typeof originUrl === \"string\" &&\n /^(?:git@|https?:\\/\\/)(?:([^./:]+(?:\\.com)?)[/:])?([^/:]+)\\/([^./:]+)(?:.git)?/.exec(\n originUrl,\n );\n const [, gitHost, gitAccount, repoName] = match || [\n undefined,\n undefined,\n undefined,\n undefined,\n ];\n\n return writeChangelogString(\n commits ?? [],\n {\n // @ts-expect-error - missing types\n previousTag,\n currentTag: newTag,\n linkCompare: previousTag != null,\n version: pkg.version,\n host: gitHost ? `https://${gitHost}` : undefined,\n owner: gitAccount,\n repository: repoName,\n date,\n },\n // @ts-expect-error - missing types\n config.writer,\n );\n};\n\nexport const createCommitsParser = (config: ConventionalChangelogConfig) => {\n return createConventionalCommitsParser(config.parser);\n};\n","// eslint-disable-next-line import/no-unresolved\nimport { 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 body: string;\n prerelease: boolean;\n },\n): Promise<void> => {\n const { parsedRepoUrl, tag, 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 \"--repo\",\n `${parsedRepoUrl.username}/${parsedRepoUrl.reponame}`,\n \"--notes\",\n \"-\",\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(workspace, [\"gh\", ...args], body);\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 );\n }\n};\n","/* eslint-disable @typescript-eslint/no-use-before-define */\n// eslint-disable-next-line n/no-unsupported-features/node-builtins\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 && 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 ]);\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 );\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}\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 ? parseGithubRepoUrl(rootWorkspace) : undefined,\n getGitCurrentBranch(rootWorkspace),\n // ensure gh CLI is available early to fail fast if necessary\n options.createRelease ? ensureGhCliAvailable(rootWorkspace) : 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 as BumpType;\n }\n }\n\n if (bumpType) {\n if (isMonorepo && !workspace.pkg.name) {\n throw new Error(\"Workspace name is required\");\n }\n\n const currentVersion = workspace.pkg.version;\n\n if (!currentVersion) {\n throw new UsageError(\n `Invalid \"${getWorkspaceName(workspace)}\" version`,\n );\n }\n\n changedWorkspaces.set(workspace, {\n bumpType,\n bumpReason,\n });\n }\n }\n\n if (changedWorkspaces.size === 0) {\n logger.info(\"No changed workspaces\");\n }\n });\n\n const bumpedWorkspaces = new Map<Workspace, BumpedWorkspace>();\n const noVersionToUpdateWorkspaces = new Map<\n Workspace,\n NoVersionToUpdateWorkspace\n >();\n const batches = dependenciesMap\n ? buildTopologicalOrderBatches(project, dependenciesMap)\n : [[rootWorkspace]];\n\n logger.group(\"Preparing bumping\", () => {\n for (const batch of batches) {\n for (const workspace of batch) {\n const currentVersion = workspace.pkg.version;\n\n if (!currentVersion && !workspace.pkg.private) {\n throw new UsageError(\n `Invalid \"${getWorkspaceName(workspace)}\" version`,\n );\n }\n\n const changedWorkspace = changedWorkspaces.get(workspace);\n let bumpType: BumpType | null = null;\n const bumpReasons: string[] = [];\n const dependenciesToBump: BumpedWorkspace[\"dependenciesToBump\"] = [];\n\n if (changedWorkspace) {\n bumpType = changedWorkspace.bumpType;\n bumpReasons.push(changedWorkspace.bumpReason || \"by commits\");\n }\n\n const dependencies = dependenciesMap?.get(workspace);\n\n if (dependencies) {\n for (const [\n dependencyWorkspace,\n dependencyType,\n dependencyDescriptor,\n ] of dependencies) {\n const dependencyBumpedWorkspace =\n bumpedWorkspaces.get(dependencyWorkspace);\n\n if (!dependencyBumpedWorkspace) {\n continue;\n }\n\n if (\n dependencyType === \"peerDependencies\" &&\n !options.alwaysBumpPeerDependencies &&\n // skip when peerdependency with a new version satisfied by the existing range.\n satisfies(\n dependencyBumpedWorkspace.newVersion,\n dependencyDescriptor.selector,\n { includePrerelease: true },\n )\n ) {\n continue;\n }\n\n const newRange = calcBumpRange(\n workspace,\n dependencyDescriptor.selector,\n dependencyBumpedWorkspace.newVersion,\n );\n\n if (dependencyDescriptor.selector === newRange) {\n continue;\n }\n\n dependenciesToBump.push([\n dependencyType,\n dependencyDescriptor,\n newRange,\n ]);\n\n bumpType = getHighestBumpType([\n bumpType ?? \"patch\",\n calcBumpType(\n dependencyBumpedWorkspace.bumpType,\n options.bumpDependentsHighestAs,\n ),\n ]);\n\n bumpReasons.push(\n `Version bump for dependency: ${PackageDescriptorNameUtils.stringify(dependencyDescriptor.name)}`,\n );\n }\n }\n\n const workspaceName = getWorkspaceName(workspace);\n if (!currentVersion) {\n logger.info(`${workspaceName}: skipped (no version)`);\n if (workspace !== rootWorkspace) {\n noVersionToUpdateWorkspaces.set(workspace, {\n dependenciesToBump,\n });\n }\n } else if (!bumpType) {\n logger.info(\n `${workspaceName}: skipped (${\n changedWorkspace\n ? `no bump recommended by ${options.preset}`\n : \"no changes\"\n })`,\n );\n } else {\n const newVersion = incrementVersion(\n workspace,\n currentVersion,\n bumpType,\n );\n\n const tagName = buildTagName(workspace, newVersion);\n\n if (workspace === rootWorkspace) {\n rootNewVersion = newVersion;\n rootNewTag = tagName;\n }\n\n if (workspace !== rootWorkspace || !isMonorepo) {\n const bumpReason = bumpReasons.join(\"\\n\");\n bumpedWorkspaces.set(workspace, {\n currentVersion,\n bumpType,\n bumpReason,\n bumpForDependenciesReasons: changedWorkspace\n ? bumpReasons.slice(1)\n : bumpReasons,\n newVersion,\n newTag: tagName,\n hasChanged: changedWorkspace !== undefined,\n dependenciesToBump,\n });\n\n logger.info(\n `${workspaceName}: ${currentVersion} -> ${\n !isMonorepo || isMonorepoVersionIndependent\n ? newVersion\n : \"bump\"\n } (${bumpReason.replaceAll(\"\\n\", \" ; \")})`,\n );\n // TODO Json only:\n // logger.info({\n // cwd: npath.fromPortablePath(workspace.cwd),\n // ident: workspaceName,\n // oldVersion: currentVersion,\n // ...(isMonorepoVersionIndependent ? { newVersion } : {}),\n // bumpType,\n // bumpReasons,\n // });\n }\n }\n }\n }\n });\n\n // TODO ask for confirmation\n // if (!this.yes) {\n // }\n\n // TODO do this entire phase here, not override for not independent only\n if (isMonorepo && !isMonorepoVersionIndependent) {\n const currentVersion = rootWorkspace.pkg.version!;\n const highestBumpType = getHighestBumpType(\n [...bumpedWorkspaces.values()].map(({ bumpType }) => bumpType),\n );\n const newVersion = incrementVersion(\n rootWorkspace,\n currentVersion,\n highestBumpType,\n );\n rootNewVersion = newVersion;\n rootNewTag = buildTagName(rootWorkspace, newVersion);\n\n [...bumpedWorkspaces.entries()].forEach(([workspace, bumpedWorkspace]) => {\n const isRoot = workspace === rootWorkspace;\n if (isRoot) {\n throw new Error(\"Unexpected root found in bumped workspaces\");\n }\n bumpedWorkspace.bumpType = highestBumpType;\n bumpedWorkspace.newVersion = newVersion;\n bumpedWorkspace.newTag = null;\n });\n\n [\n ...bumpedWorkspaces.entries(),\n ...noVersionToUpdateWorkspaces.entries(),\n ].forEach(([workspace, { dependenciesToBump }]) => {\n dependenciesToBump.forEach((dependencyToBump) => {\n dependencyToBump[2] = calcBumpRange(\n workspace,\n dependencyToBump[1].selector,\n newVersion,\n );\n });\n });\n\n bumpedWorkspaces.set(rootWorkspace, {\n currentVersion,\n bumpType: highestBumpType,\n hasChanged: true,\n newVersion: rootNewVersion,\n newTag: rootNewTag,\n dependenciesToBump: [],\n });\n\n logger.info(\n `${currentVersion} -> ${newVersion}`,\n // TODO Json only:\n // {\n // oldVersion: currentVersion,\n // newVersion, },\n );\n }\n\n await logger.group(\"Applying changes\", async () => {\n // Update lockfile ; must be done to make sure preversion script can be ran\n\n if (!options.dryRun) {\n if (packageManager.installOnPackageContentChange) {\n logger.info(`${getWorkspaceName(rootWorkspace)}: Running install`);\n await packageManager.installOnPackageContentChange(rootWorkspace);\n }\n\n logger.info(\"Lifecycle script: preversion\");\n\n if (\n isMonorepoVersionIndependent &&\n rootWorkspace.pkg.scripts?.preversion\n ) {\n await packageManager.runScript(rootWorkspace, \"preversion\");\n }\n\n // lifecycle: preversion\n for (const workspace of bumpedWorkspaces.keys()) {\n if (workspace.pkg.scripts?.preversion) {\n await packageManager.runScript(workspace, \"preversion\");\n }\n }\n\n logger.info(\"Modifying versions in package.json\");\n // update versions\n\n await Promise.all(\n [...bumpedWorkspaces.entries()].map(\n ([workspace, { newVersion, dependenciesToBump }]) => {\n workspace.pkg.version = newVersion;\n\n for (const [\n dependencyType,\n dependencyDescriptor,\n dependencyNewRange,\n ] of dependenciesToBump) {\n const newDescriptor = PackageDependencyDescriptorUtils.make(\n dependencyDescriptor,\n dependencyNewRange,\n );\n const [key, newValue] =\n PackageDependencyDescriptorUtils.stringify(newDescriptor);\n workspace.pkg[dependencyType]![key] = newValue;\n }\n\n return writePkg(workspace);\n },\n ),\n );\n\n if (packageManager.installOnPackageContentChange) {\n // Update lockfile ; must be done before running again lifecycle scripts\n logger.info(`${getWorkspaceName(rootWorkspace)}: Running install`);\n await packageManager.installOnPackageContentChange(rootWorkspace);\n }\n\n // lifecycle: version\n logger.info(\"Lifecycle script: version\");\n for (const workspace of bumpedWorkspaces.keys()) {\n if (workspace.pkg.scripts?.version) {\n await packageManager.runScript(workspace, \"version\");\n }\n }\n }\n\n if (isMonorepoVersionIndependent && rootWorkspace.pkg.scripts?.version) {\n await packageManager.runScript(rootWorkspace, \"version\");\n }\n });\n\n const changelogs = new Map<Workspace, string>();\n\n await Promise.all(\n [...bumpedWorkspaces.entries()].map(\n async ([\n workspace,\n { newTag, hasChanged, bumpReason, bumpForDependenciesReasons },\n ]) => {\n // const workspaceRelativePath =\n // rootWorkspace === workspace\n // ? undefined\n // : path.relative(rootWorkspace.cwd, workspace.cwd);\n\n const commits = commitsByWorkspace?.get(workspace);\n\n let changelog = await generateChangelog(\n rootWorkspace,\n workspace.pkg,\n conventionalCommitConfig,\n previousTagVersionByWorkspace.get(workspace)?.tag || null,\n isMonorepoVersionIndependent ? newTag : rootNewTag,\n commits,\n todayInYYYYMMDD(),\n // {\n // path: workspaceRelativePath,\n // previousTag: previousTagByWorkspace.get(workspace) || undefined,\n // verbose: options.verbose,\n // tagPrefix: options.tagVersionPrefix,\n // lernaPackage:\n // rootWorkspace === workspace\n // ? undefined\n // : getWorkspaceName(workspace),\n // },\n );\n\n if (bumpForDependenciesReasons && workspace !== rootWorkspace) {\n if (bumpForDependenciesReasons.length > 0) {\n changelog += `${!changelog.endsWith(\"\\n\\n\") ? \"\\n\" : \"\"}${bumpForDependenciesReasons.join(\"\\n\")}\\n\\n`;\n }\n }\n\n if (changelog.slice(changelog.indexOf(\"\\n\")).trim().length === 0) {\n changelog += `${!changelog.endsWith(\"\\n\\n\") ? \"\\n\" : \"\"}Note: no notable changes\\n\\n`;\n }\n\n if (!changelog && rootWorkspace === workspace) {\n throw new Error(\"No changelog found for root workspace\");\n }\n\n changelogs.set(workspace, changelog);\n\n if (options.changelog) {\n if (options.dryRun) {\n logger.info(\n `${getWorkspaceName(workspace)}: ${\n options.changelog\n }\\n${changelog}`,\n );\n } else {\n await updateChangelogFile(\n changelog,\n options.tagVersionPrefix,\n `${workspace.cwd}/${options.changelog}`,\n );\n }\n }\n },\n ),\n );\n\n if (!options.dryRun) {\n logger.separator();\n\n if (packageManager.installOnPackageContentChange) {\n // install to update versions in lock file\n logger.info(`${getWorkspaceName(rootWorkspace)}: Running install`);\n await packageManager.installOnPackageContentChange(rootWorkspace);\n }\n\n logger.separator();\n\n const changedFiles = await getDirtyFiles(project.root);\n\n if (changedFiles) {\n logger.info(\"Commit, tag and push\", {\n changedFiles,\n });\n\n const tagsSet = new Set<string>(\n [...bumpedWorkspaces.values()]\n .map(({ newTag }) => newTag)\n .filter((newTag) => newTag !== null),\n );\n\n const tagsInCommitMessage = [...tagsSet]\n .map((tag) => `- ${tag}`)\n .join(\"\\n\");\n const message = options.commitMessage\n .replace(/\\\\n/g, \"\\n\")\n .replace(\n /%a/g,\n isMonorepoVersionIndependent\n ? `\\n\\n${tagsInCommitMessage}`\n : rootNewVersion,\n )\n .replace(/%s/g, rootNewTag)\n .replace(/%v/g, rootNewVersion)\n .replace(/%t/g, tagsInCommitMessage);\n\n await createGitCommit(rootWorkspace, message);\n\n for (const [workspace, { newTag }] of bumpedWorkspaces.entries()) {\n if (newTag === null) continue;\n await createGitTag(workspace, newTag);\n }\n\n if (\n await isBehindRemote(rootWorkspace, options.gitRemote, gitCurrentBranch)\n ) {\n logger.error(\"Remote is ahead, aborting\");\n // eslint-disable-next-line unicorn/no-process-exit\n process.exit(1);\n }\n\n await pushCommitsAndTags(\n rootWorkspace,\n options.gitRemote,\n gitCurrentBranch,\n );\n\n // run postversion\n if (rootWorkspace.pkg.scripts?.postversion) {\n logger.info(\"Lifecycle script: postversion\");\n await packageManager.runScript(rootWorkspace, \"postversion\");\n }\n\n // TODO open github PR\n\n if (options.createRelease && parsedRepoUrl) {\n logger.info(\"Create git release\");\n\n await Promise.all(\n [...bumpedWorkspaces.entries()].map(([workspace, { newTag }]) => {\n if (newTag === null) return undefined;\n const changelog = changelogs.get(workspace);\n if (!changelog) {\n logger.warn(\n `No changelog found for workspace: ${getWorkspaceName(\n workspace,\n )}`,\n );\n return undefined;\n }\n return createGhRelease(workspace, {\n parsedRepoUrl,\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 } 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 }\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};\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 .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/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 { PackageManager } 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) {\n await execCommand(workspace, [\"bun\", \"publish\"], \"inherit\");\n },\n};\n","import { execCommand } from \"../utils/execCommand.ts\";\nimport type { Workspace } from \"../utils/packageUtils.ts\";\nimport type { PackageManager } 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) {\n await execCommand(workspace, [\"yarn\", \"npm\", \"publish\"], \"inherit\");\n },\n\n async publishWorkspaces(rootWorkspace: Workspace) {\n await execCommand(\n rootWorkspace,\n [\n \"yarn\",\n \"workspaces\",\n \"foreach\",\n \"--all\",\n \"--parallel\",\n \"--no-private\",\n \"npm\",\n \"publish\",\n ],\n \"inherit\",\n );\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 PackageManager {\n installOnPackageContentChange?: (rootWorkspace: Workspace) => Promise<void>;\n runScript: (workspace: Workspace, scriptName: string) => Promise<void>;\n publish: (workspace: Workspace) => Promise<void>;\n publishWorkspaces?: (rootWorkspace: Workspace) => Promise<void>;\n}\n\nexport const autoDetectPackageManager = (\n rootWorkspace: Workspace,\n): PackageManager => {\n const hasYarnLock = existsSync(`${rootWorkspace.cwd}/yarn.lock`);\n const hasBunLockLegacy = existsSync(`${rootWorkspace.cwd}/bun.lockb`);\n const hasBunLock = existsSync(`${rootWorkspace.cwd}/bun.lock`);\n const hasNpmPackageLock = existsSync(\n `${rootWorkspace.cwd}/package-lock.json`,\n );\n\n if (\n [hasYarnLock, hasBunLockLegacy, hasBunLock, hasNpmPackageLock].filter(\n Boolean,\n ).length > 1\n ) {\n throw new Error(\n `Multiple lock files detected in workspace at ${rootWorkspace.cwd}. Please ensure only one lock file is present, or pass --package-manager option to bypass auto-detection.`,\n );\n }\n\n if (hasYarnLock) {\n return YarnPackageManager;\n }\n\n if (hasBunLockLegacy || hasBunLock) {\n return BunPackageManager;\n }\n\n if (hasNpmPackageLock) {\n throw new Error(\n \"NPM is not currently supported as a package manager. Please migrate to Yarn or Bun, or open an issue to request support.\",\n );\n }\n\n throw new Error(\n `No lock file detected in workspace at ${rootWorkspace.cwd}. Please ensure a supported lock file is present, or pass --package-manager option to bypass auto-detection.`,\n );\n};\n\nexport const getPackageManager = (\n rootWorkspace: Workspace,\n specifiedPackageManager?: \"bun\" | \"yarn\",\n): PackageManager => {\n if (specifiedPackageManager === \"bun\") {\n return BunPackageManager;\n }\n\n if (specifiedPackageManager === \"yarn\") {\n return YarnPackageManager;\n }\n throw new Error(\n \"Invalid package manager specified. Supported values are 'bun' and 'yarn'.\",\n );\n};\n","export class UsageError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"UsageError\";\n }\n}\n","export function getMapArrayItemForKey<K, V>(map: Map<K, V[]>, key: K): V[] {\n let value: V[] | undefined = map.get(key);\n if (value === undefined) {\n map.set(key, (value = [] as V[]));\n }\n return value;\n}\n","/**\n * Combination of an optional scope and name.\n *\n * eg `@npm/types`\n */\nexport interface PackageDescriptorName {\n scope?: string;\n name: string;\n}\n\ninterface DescriptorUtils<Descriptor> {\n parse: (value: string) => Descriptor;\n stringify: (descriptor: Descriptor) => string;\n}\n\nexport const PackageDescriptorNameUtils: DescriptorUtils<PackageDescriptorName> =\n {\n parse: (value) => {\n if (value.startsWith(\"@\")) {\n const [scope, name] = value.slice(1).split(\"/\", 2);\n if (!scope || !name) {\n throw new Error(`Invalid package descriptor name: ${value}`);\n }\n return { scope, name };\n }\n return { name: value };\n },\n stringify: (descriptor) => {\n return descriptor.scope === undefined\n ? descriptor.name\n : `@${descriptor.scope}/${descriptor.name}`;\n },\n };\n\nexport interface PackageDependencyDescriptor {\n key: string;\n name: PackageDescriptorName;\n selector: string; // can be npm tag or version or version range or git url or local folder path\n}\n\ninterface PackageDependencyDescriptorUtils<\n Descriptor = PackageDependencyDescriptor,\n> {\n make: (descriptor: Descriptor, selector: string) => Descriptor;\n parse: (dependencyKey: string, dependencyValue: string) => Descriptor;\n stringify: (descriptor: Descriptor) => [key: string, value: string];\n}\n\nexport const PackageDependencyDescriptorUtils: PackageDependencyDescriptorUtils =\n {\n make: (descriptor, selector) => {\n return { key: descriptor.key, name: descriptor.name, selector };\n },\n parse: (dependencyKey, dependencyValue) => {\n const [name, selector] = dependencyValue.startsWith(\"npm:\")\n ? (() => {\n const v = dependencyValue.slice(\"npm:\".length);\n if (!v.startsWith(\"@\")) return v.split(\"@\", 2) as [string, string];\n const [packageNameWithoutFirstChar, selector] = v\n .slice(1)\n .split(\"@\", 2);\n if (!packageNameWithoutFirstChar || !selector) {\n throw new Error(`Invalid package descriptor: ${dependencyValue}`);\n }\n return [`@${packageNameWithoutFirstChar}`, selector];\n })()\n : [dependencyKey, dependencyValue];\n\n return {\n key: dependencyKey,\n name: PackageDescriptorNameUtils.parse(name),\n selector,\n };\n },\n stringify: (descriptor) => {\n return [descriptor.key, descriptor.selector];\n },\n };\n\n// export const PackageDependencySelectorUtils;\n","/* eslint-disable complexity */\nimport path from \"node:path\";\nimport { getMapArrayItemForKey } from \"./mapUtils.ts\";\nimport type { PackageDependencyDescriptor } from \"./packageDependenciesUtils.ts\";\nimport {\n PackageDependencyDescriptorUtils,\n PackageDescriptorNameUtils,\n} from \"./packageDependenciesUtils.ts\";\nimport type { ProjectWorkspace, Workspace } from \"./packageUtils.ts\";\n\nconst allDependenciesTypes = [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n] as const;\nexport type DependencyType = (typeof allDependenciesTypes)[number];\n\nexport const getWorkspaceName = (workspace: Workspace): string => {\n return (\n workspace.pkg.name ?? (path.basename(workspace.cwd) || \"unnamed-workspace\")\n );\n};\n\ntype WorkspacesDependenciesMap = Map<\n Workspace,\n [Workspace, DependencyType, PackageDependencyDescriptor][]\n>;\n\nexport const buildDependentsMaps = (\n project: ProjectWorkspace,\n): WorkspacesDependenciesMap => {\n const dependentsMap: WorkspacesDependenciesMap = new Map<\n Workspace,\n [Workspace, DependencyType, PackageDependencyDescriptor][]\n >();\n\n // Note that we need to do this before applying the new versions,\n // otherwise the `findWorkspacesByDescriptor` calls won't be able to\n // resolve the workspaces anymore (because the workspace versions will\n // have changed and won't match the outdated dependencies).\n\n for (const [, dependent] of project.children) {\n for (const set of allDependenciesTypes) {\n for (const [dependencyKey, dependencyValue] of Object.entries(\n dependent.pkg[set] || {},\n )) {\n if (!dependencyValue) continue;\n const descriptor = PackageDependencyDescriptorUtils.parse(\n dependencyKey,\n dependencyValue,\n );\n const workspace = project.children.get(\n PackageDescriptorNameUtils.stringify(descriptor.name),\n );\n if (!workspace) continue;\n\n const dependents = getMapArrayItemForKey(dependentsMap, workspace);\n dependents.push([dependent, set, descriptor]);\n }\n }\n }\n\n return dependentsMap;\n};\n\nexport const buildDependenciesMaps = (\n project: ProjectWorkspace,\n): WorkspacesDependenciesMap => {\n const dependenciesMap: WorkspacesDependenciesMap = new Map<\n Workspace,\n [Workspace, DependencyType, PackageDependencyDescriptor][]\n >();\n\n // Note that we need to do this before applying the new versions,\n // otherwise the `findWorkspacesByDescriptor` calls won't be able to\n // resolve the workspaces anymore (because the workspace versions will\n // have changed and won't match the outdated dependencies).\n\n for (const dependent of project.children.values()) {\n for (const set of allDependenciesTypes) {\n for (const [dependencyKey, dependencyValue] of Object.entries(\n dependent.pkg[set] || {},\n )) {\n if (!dependencyValue) continue;\n const descriptor = PackageDependencyDescriptorUtils.parse(\n dependencyKey,\n dependencyValue,\n );\n\n const workspace = project.children.get(\n PackageDescriptorNameUtils.stringify(descriptor.name),\n );\n if (!workspace) continue;\n\n const dependencies = getMapArrayItemForKey(dependenciesMap, dependent);\n dependencies.push([workspace, set, descriptor]);\n }\n }\n }\n\n return dependenciesMap;\n};\n\nexport const buildTopologicalOrderBatches = (\n project: ProjectWorkspace,\n dependenciesMap: WorkspacesDependenciesMap,\n): Workspace[][] => {\n const batches: Workspace[][] = [];\n\n const added = new Set<Workspace>();\n const toAdd = new Set<Workspace>([\n project.root,\n ...project.children.values(),\n ]);\n\n while (toAdd.size > 0) {\n const batch = new Set<Workspace>();\n for (const workspace of toAdd) {\n // make sure top level workspace is always in the last batch\n if (workspace === project.root && toAdd.size > 1) {\n continue;\n }\n\n const dependencies = dependenciesMap.get(workspace);\n if (!dependencies || dependencies.every((w) => added.has(w[0]))) {\n batch.add(workspace);\n }\n }\n\n for (const workspace of batch) {\n added.add(workspace);\n toAdd.delete(workspace);\n }\n\n if (batch.size === 0) {\n throw new Error(\"Circular dependency detected\");\n }\n batches.push([...batch]);\n }\n\n return batches;\n};\n","import semver from \"semver\";\nimport { UsageError } from \"./UsageError.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\nimport { getWorkspaceName } from \"./workspaceUtils.ts\";\n\nexport type BumpType = \"major\" | \"minor\" | \"patch\";\n\n// https://github.com/yarnpkg/berry/blob/506ded5f5f5a89553435940c74f1d857fd685a42/packages/plugin-version/sources/versionUtils.ts#L10\n// Basically we only support auto-upgrading the ranges that are very simple (^x.y.z, ~x.y.z, >=x.y.z, and of course x.y.z)\nconst SUPPORTED_UPGRADE_REGEXP =\n // eslint-disable-next-line regexp/no-unused-capturing-group\n /^((?:>=|[~^])?)(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(-(0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*)(\\.(0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*))*)?(\\+[0-9a-z-]+(\\.[0-9a-z-]+)*)?$/i;\n\nconst yarnWorkspaceProtocol = \"workspace:\";\n\nexport const calcBumpRange = (\n workspace: Workspace,\n range: string,\n newVersion: string,\n): string => {\n if (range === \"*\") {\n return range;\n }\n\n let useWorkspaceProtocol = false;\n\n if (range.startsWith(yarnWorkspaceProtocol)) {\n const slicedRange = range.slice(yarnWorkspaceProtocol.length);\n\n // Workspaces referenced through their path never get upgraded (\"workspace:packages/yarnpkg-core\")\n if (slicedRange === workspace.relativeCwd) {\n return range;\n }\n\n if (slicedRange === \"*\") {\n return range;\n }\n\n range = slicedRange;\n useWorkspaceProtocol = true;\n }\n\n const parsed = SUPPORTED_UPGRADE_REGEXP.exec(range);\n if (!parsed) {\n const workspaceName = getWorkspaceName(workspace);\n throw new Error(`Couldn't bump range ${range} in ${workspaceName}`);\n }\n\n return `${useWorkspaceProtocol ? yarnWorkspaceProtocol : \"\"}${\n parsed[1] ?? \"\"\n }${newVersion}`;\n};\n\nexport const getHighestBumpType = (bumpTypes: BumpType[]): BumpType => {\n if (bumpTypes.includes(\"major\")) {\n return \"major\";\n }\n\n if (bumpTypes.includes(\"minor\")) {\n return \"minor\";\n }\n\n return \"patch\";\n};\n\nexport const calcBumpType = (\n bumpType: BumpType,\n maxBumpType: BumpType,\n): BumpType => {\n if (maxBumpType === \"major\") {\n return bumpType;\n }\n\n if (maxBumpType === \"minor\") {\n return bumpType === \"major\" || bumpType === \"minor\" ? \"minor\" : \"patch\";\n }\n\n return \"patch\";\n};\n\nconst incVersion = (version: string, bumpType: BumpType): string | null => {\n // handle breaking of 0.x\n if (bumpType === \"major\" && semver.major(version) === 0) {\n bumpType = \"minor\";\n }\n return semver.inc(version, bumpType);\n};\n\nexport const incrementVersion = (\n workspace: Workspace,\n currentVersion: string,\n bumpType: BumpType,\n): string => {\n const newVersion = incVersion(currentVersion, bumpType);\n\n if (!newVersion) {\n throw new UsageError(\n `Could not determine next version for \"${getWorkspaceName(\n workspace,\n )}\" (currentVersion: ${currentVersion}, bumpType: ${bumpType}})`,\n );\n }\n\n return newVersion;\n};\n\n// const createPrerelease = (\n// version: string,\n// prereleaseType: ReleaseType,\n// prereleaseId: string,\n// ) => {\n// return semver.inc(version, prereleaseType, prereleaseId);\n// };\n","import { writeChangelogString } from \"conventional-changelog-writer\";\nimport { parseCommits as createConventionalCommitsParser } from \"conventional-commits-parser\";\nimport type { Commit, ParserStreamOptions } from \"conventional-commits-parser\";\nimport type { PackageJson } from \"type-fest\";\nimport type { ConventionalChangelogConfig } from \"./conventionalCommitConfigUtils.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\n\nexport interface WhatBump {\n level: 0 | 1 | 2;\n reason: string;\n}\nexport type WhatBumpResult = WhatBump | null | undefined;\nexport interface BumperRecommendation extends WhatBump {\n releaseType: \"major\" | \"minor\" | \"patch\";\n commits: Commit[];\n}\nexport interface EmptyBumperRecommendation {\n commits: Commit[];\n}\nexport type BumperRecommendationResult =\n | BumperRecommendation\n | EmptyBumperRecommendation;\n\nexport interface Preset {\n whatBump: (commits: Commit[]) => Promise<WhatBumpResult> | WhatBumpResult;\n tags?: unknown;\n commits?: unknown;\n parser?: ParserStreamOptions;\n}\n\nconst versions: BumperRecommendation[\"releaseType\"][] = [\n \"major\",\n \"minor\",\n \"patch\",\n];\n\nexport const recommendBump = async (\n commits: Parameters<ConventionalChangelogConfig[\"whatBump\"]>[0],\n config: ConventionalChangelogConfig,\n): Promise<Partial<BumperRecommendation>> => {\n const whatBump = config.whatBump;\n if (!whatBump) {\n throw new Error(\"whatBump method is missing in config\");\n }\n const result = { ...(await whatBump(commits)) };\n\n return {\n ...result,\n releaseType: result.level != null ? versions[result.level] : undefined,\n };\n};\n\nexport type Commits = Parameters<ConventionalChangelogConfig[\"whatBump\"]>[0];\n\nexport const generateChangelog = (\n workspace: Workspace,\n pkg: PackageJson,\n config: ConventionalChangelogConfig,\n previousTag: string | null,\n newTag: string | null,\n commits: Commits | undefined,\n date: string,\n // eslint-disable-next-line @typescript-eslint/max-params\n): Promise<string> => {\n if (!newTag) {\n throw new Error(`Missing new tag for package \"${pkg.name ?? \"\"}\"`);\n }\n\n const originUrl =\n typeof pkg.repository === \"string\" ? pkg.repository : pkg.repository?.url;\n const match =\n originUrl &&\n typeof originUrl === \"string\" &&\n /^(?:git@|https?:\\/\\/)(?:([^./:]+(?:\\.com)?)[/:])?([^/:]+)\\/([^./:]+)(?:.git)?/.exec(\n originUrl,\n );\n const [, gitHost, gitAccount, repoName] = match || [\n undefined,\n undefined,\n undefined,\n undefined,\n ];\n\n return writeChangelogString(\n commits ?? [],\n {\n // @ts-expect-error - missing types\n previousTag,\n currentTag: newTag,\n linkCompare: previousTag != null,\n version: pkg.version,\n host: gitHost ? `https://${gitHost}` : undefined,\n owner: gitAccount,\n repository: repoName,\n date,\n },\n // @ts-expect-error - missing types\n config.writer,\n );\n};\n\nexport const createCommitsParser = (config: ConventionalChangelogConfig) => {\n return createConventionalCommitsParser(config.parser);\n};\n","// eslint-disable-next-line import/no-unresolved\nimport { 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 body: string;\n prerelease: boolean;\n },\n): Promise<void> => {\n const { parsedRepoUrl, tag, 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 \"--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 );\n }\n};\n","/* eslint-disable @typescript-eslint/no-use-before-define */\n// eslint-disable-next-line n/no-unsupported-features/node-builtins\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 && 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 ]);\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 );\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}\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 ? parseGithubRepoUrl(rootWorkspace) : undefined,\n getGitCurrentBranch(rootWorkspace),\n // ensure gh CLI is available early to fail fast if necessary\n options.createRelease ? ensureGhCliAvailable(rootWorkspace) : 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 as BumpType;\n }\n }\n\n if (bumpType) {\n if (isMonorepo && !workspace.pkg.name) {\n throw new Error(\"Workspace name is required\");\n }\n\n const currentVersion = workspace.pkg.version;\n\n if (!currentVersion) {\n throw new UsageError(\n `Invalid \"${getWorkspaceName(workspace)}\" version`,\n );\n }\n\n changedWorkspaces.set(workspace, {\n bumpType,\n bumpReason,\n });\n }\n }\n\n if (changedWorkspaces.size === 0) {\n logger.info(\"No changed workspaces\");\n }\n });\n\n const bumpedWorkspaces = new Map<Workspace, BumpedWorkspace>();\n const noVersionToUpdateWorkspaces = new Map<\n Workspace,\n NoVersionToUpdateWorkspace\n >();\n const batches = dependenciesMap\n ? buildTopologicalOrderBatches(project, dependenciesMap)\n : [[rootWorkspace]];\n\n logger.group(\"Preparing bumping\", () => {\n for (const batch of batches) {\n for (const workspace of batch) {\n const currentVersion = workspace.pkg.version;\n\n if (!currentVersion && !workspace.pkg.private) {\n throw new UsageError(\n `Invalid \"${getWorkspaceName(workspace)}\" version`,\n );\n }\n\n const changedWorkspace = changedWorkspaces.get(workspace);\n let bumpType: BumpType | null = null;\n const bumpReasons: string[] = [];\n const dependenciesToBump: BumpedWorkspace[\"dependenciesToBump\"] = [];\n\n if (changedWorkspace) {\n bumpType = changedWorkspace.bumpType;\n bumpReasons.push(changedWorkspace.bumpReason || \"by commits\");\n }\n\n const dependencies = dependenciesMap?.get(workspace);\n\n if (dependencies) {\n for (const [\n dependencyWorkspace,\n dependencyType,\n dependencyDescriptor,\n ] of dependencies) {\n const dependencyBumpedWorkspace =\n bumpedWorkspaces.get(dependencyWorkspace);\n\n if (!dependencyBumpedWorkspace) {\n continue;\n }\n\n if (\n dependencyType === \"peerDependencies\" &&\n !options.alwaysBumpPeerDependencies &&\n // skip when peerdependency with a new version satisfied by the existing range.\n satisfies(\n dependencyBumpedWorkspace.newVersion,\n dependencyDescriptor.selector,\n { includePrerelease: true },\n )\n ) {\n continue;\n }\n\n const newRange = calcBumpRange(\n workspace,\n dependencyDescriptor.selector,\n dependencyBumpedWorkspace.newVersion,\n );\n\n if (dependencyDescriptor.selector === newRange) {\n continue;\n }\n\n dependenciesToBump.push([\n dependencyType,\n dependencyDescriptor,\n newRange,\n ]);\n\n bumpType = getHighestBumpType([\n bumpType ?? \"patch\",\n calcBumpType(\n dependencyBumpedWorkspace.bumpType,\n options.bumpDependentsHighestAs,\n ),\n ]);\n\n bumpReasons.push(\n `Version bump for dependency: ${PackageDescriptorNameUtils.stringify(dependencyDescriptor.name)}`,\n );\n }\n }\n\n const workspaceName = getWorkspaceName(workspace);\n if (!currentVersion) {\n logger.info(`${workspaceName}: skipped (no version)`);\n if (workspace !== rootWorkspace) {\n noVersionToUpdateWorkspaces.set(workspace, {\n dependenciesToBump,\n });\n }\n } else if (!bumpType) {\n logger.info(\n `${workspaceName}: skipped (${\n changedWorkspace\n ? `no bump recommended by ${options.preset}`\n : \"no changes\"\n })`,\n );\n } else {\n const newVersion = incrementVersion(\n workspace,\n currentVersion,\n bumpType,\n );\n\n const tagName = buildTagName(workspace, newVersion);\n\n if (workspace === rootWorkspace) {\n rootNewVersion = newVersion;\n rootNewTag = tagName;\n }\n\n if (workspace !== rootWorkspace || !isMonorepo) {\n const bumpReason = bumpReasons.join(\"\\n\");\n bumpedWorkspaces.set(workspace, {\n currentVersion,\n bumpType,\n bumpReason,\n bumpForDependenciesReasons: changedWorkspace\n ? bumpReasons.slice(1)\n : bumpReasons,\n newVersion,\n newTag: tagName,\n hasChanged: changedWorkspace !== undefined,\n dependenciesToBump,\n });\n\n logger.info(\n `${workspaceName}: ${currentVersion} -> ${\n !isMonorepo || isMonorepoVersionIndependent\n ? newVersion\n : \"bump\"\n } (${bumpReason.replaceAll(\"\\n\", \" ; \")})`,\n );\n // TODO Json only:\n // logger.info({\n // cwd: npath.fromPortablePath(workspace.cwd),\n // ident: workspaceName,\n // oldVersion: currentVersion,\n // ...(isMonorepoVersionIndependent ? { newVersion } : {}),\n // bumpType,\n // bumpReasons,\n // });\n }\n }\n }\n }\n });\n\n // TODO ask for confirmation\n // if (!this.yes) {\n // }\n\n // TODO do this entire phase here, not override for not independent only\n if (isMonorepo && !isMonorepoVersionIndependent) {\n const currentVersion = rootWorkspace.pkg.version!;\n const highestBumpType = getHighestBumpType(\n [...bumpedWorkspaces.values()].map(({ bumpType }) => bumpType),\n );\n const newVersion = incrementVersion(\n rootWorkspace,\n currentVersion,\n highestBumpType,\n );\n rootNewVersion = newVersion;\n rootNewTag = buildTagName(rootWorkspace, newVersion);\n\n [...bumpedWorkspaces.entries()].forEach(([workspace, bumpedWorkspace]) => {\n const isRoot = workspace === rootWorkspace;\n if (isRoot) {\n throw new Error(\"Unexpected root found in bumped workspaces\");\n }\n bumpedWorkspace.bumpType = highestBumpType;\n bumpedWorkspace.newVersion = newVersion;\n bumpedWorkspace.newTag = null;\n });\n\n [\n ...bumpedWorkspaces.entries(),\n ...noVersionToUpdateWorkspaces.entries(),\n ].forEach(([workspace, { dependenciesToBump }]) => {\n dependenciesToBump.forEach((dependencyToBump) => {\n dependencyToBump[2] = calcBumpRange(\n workspace,\n dependencyToBump[1].selector,\n newVersion,\n );\n });\n });\n\n bumpedWorkspaces.set(rootWorkspace, {\n currentVersion,\n bumpType: highestBumpType,\n hasChanged: true,\n newVersion: rootNewVersion,\n newTag: rootNewTag,\n dependenciesToBump: [],\n });\n\n logger.info(\n `${currentVersion} -> ${newVersion}`,\n // TODO Json only:\n // {\n // oldVersion: currentVersion,\n // newVersion, },\n );\n }\n\n await logger.group(\"Applying changes\", async () => {\n // Update lockfile ; must be done to make sure preversion script can be ran\n\n if (!options.dryRun) {\n if (packageManager.installOnPackageContentChange) {\n logger.info(`${getWorkspaceName(rootWorkspace)}: Running install`);\n await packageManager.installOnPackageContentChange(rootWorkspace);\n }\n\n logger.info(\"Lifecycle script: preversion\");\n\n if (\n isMonorepoVersionIndependent &&\n rootWorkspace.pkg.scripts?.preversion\n ) {\n await packageManager.runScript(rootWorkspace, \"preversion\");\n }\n\n // lifecycle: preversion\n for (const workspace of bumpedWorkspaces.keys()) {\n if (workspace.pkg.scripts?.preversion) {\n await packageManager.runScript(workspace, \"preversion\");\n }\n }\n\n logger.info(\"Modifying versions in package.json\");\n // update versions\n\n await Promise.all(\n [...bumpedWorkspaces.entries()].map(\n ([workspace, { newVersion, dependenciesToBump }]) => {\n workspace.pkg.version = newVersion;\n\n for (const [\n dependencyType,\n dependencyDescriptor,\n dependencyNewRange,\n ] of dependenciesToBump) {\n const newDescriptor = PackageDependencyDescriptorUtils.make(\n dependencyDescriptor,\n dependencyNewRange,\n );\n const [key, newValue] =\n PackageDependencyDescriptorUtils.stringify(newDescriptor);\n workspace.pkg[dependencyType]![key] = newValue;\n }\n\n return writePkg(workspace);\n },\n ),\n );\n\n if (packageManager.installOnPackageContentChange) {\n // Update lockfile ; must be done before running again lifecycle scripts\n logger.info(`${getWorkspaceName(rootWorkspace)}: Running install`);\n await packageManager.installOnPackageContentChange(rootWorkspace);\n }\n\n // lifecycle: version\n logger.info(\"Lifecycle script: version\");\n for (const workspace of bumpedWorkspaces.keys()) {\n if (workspace.pkg.scripts?.version) {\n await packageManager.runScript(workspace, \"version\");\n }\n }\n }\n\n if (isMonorepoVersionIndependent && rootWorkspace.pkg.scripts?.version) {\n await packageManager.runScript(rootWorkspace, \"version\");\n }\n });\n\n const changelogs = new Map<Workspace, string>();\n\n await Promise.all(\n [...bumpedWorkspaces.entries()].map(\n async ([\n workspace,\n { newTag, hasChanged, bumpReason, bumpForDependenciesReasons },\n ]) => {\n // const workspaceRelativePath =\n // rootWorkspace === workspace\n // ? undefined\n // : path.relative(rootWorkspace.cwd, workspace.cwd);\n\n const commits = commitsByWorkspace?.get(workspace);\n\n let changelog = await generateChangelog(\n rootWorkspace,\n workspace.pkg,\n conventionalCommitConfig,\n previousTagVersionByWorkspace.get(workspace)?.tag || null,\n isMonorepoVersionIndependent ? newTag : rootNewTag,\n commits,\n todayInYYYYMMDD(),\n // {\n // path: workspaceRelativePath,\n // previousTag: previousTagByWorkspace.get(workspace) || undefined,\n // verbose: options.verbose,\n // tagPrefix: options.tagVersionPrefix,\n // lernaPackage:\n // rootWorkspace === workspace\n // ? undefined\n // : getWorkspaceName(workspace),\n // },\n );\n\n if (bumpForDependenciesReasons && workspace !== rootWorkspace) {\n if (bumpForDependenciesReasons.length > 0) {\n changelog += `${!changelog.endsWith(\"\\n\\n\") ? \"\\n\" : \"\"}${bumpForDependenciesReasons.join(\"\\n\")}\\n\\n`;\n }\n }\n\n if (changelog.slice(changelog.indexOf(\"\\n\")).trim().length === 0) {\n changelog += `${!changelog.endsWith(\"\\n\\n\") ? \"\\n\" : \"\"}Note: no notable changes\\n\\n`;\n }\n\n if (!changelog && rootWorkspace === workspace) {\n throw new Error(\"No changelog found for root workspace\");\n }\n\n changelogs.set(workspace, changelog);\n\n if (options.changelog) {\n if (options.dryRun) {\n logger.info(\n `${getWorkspaceName(workspace)}: ${\n options.changelog\n }\\n${changelog}`,\n );\n } else {\n await updateChangelogFile(\n changelog,\n options.tagVersionPrefix,\n `${workspace.cwd}/${options.changelog}`,\n );\n }\n }\n },\n ),\n );\n\n if (!options.dryRun) {\n logger.separator();\n\n if (packageManager.installOnPackageContentChange) {\n // install to update versions in lock file\n logger.info(`${getWorkspaceName(rootWorkspace)}: Running install`);\n await packageManager.installOnPackageContentChange(rootWorkspace);\n }\n\n logger.separator();\n\n const changedFiles = await getDirtyFiles(project.root);\n\n if (changedFiles) {\n logger.info(\"Commit, tag and push\", {\n changedFiles,\n });\n\n const tagsSet = new Set<string>(\n [...bumpedWorkspaces.values()]\n .map(({ newTag }) => newTag)\n .filter((newTag) => newTag !== null),\n );\n\n const tagsInCommitMessage = [...tagsSet]\n .map((tag) => `- ${tag}`)\n .join(\"\\n\");\n const message = options.commitMessage\n .replace(/\\\\n/g, \"\\n\")\n .replace(\n /%a/g,\n isMonorepoVersionIndependent\n ? `\\n\\n${tagsInCommitMessage}`\n : rootNewVersion,\n )\n .replace(/%s/g, rootNewTag)\n .replace(/%v/g, rootNewVersion)\n .replace(/%t/g, tagsInCommitMessage);\n\n await createGitCommit(rootWorkspace, message);\n\n for (const [workspace, { newTag }] of bumpedWorkspaces.entries()) {\n if (newTag === null) continue;\n await createGitTag(workspace, newTag);\n }\n\n if (\n await isBehindRemote(rootWorkspace, options.gitRemote, gitCurrentBranch)\n ) {\n logger.error(\"Remote is ahead, aborting\");\n // eslint-disable-next-line unicorn/no-process-exit\n process.exit(1);\n }\n\n await pushCommitsAndTags(\n rootWorkspace,\n options.gitRemote,\n gitCurrentBranch,\n );\n\n // run postversion\n if (rootWorkspace.pkg.scripts?.postversion) {\n logger.info(\"Lifecycle script: postversion\");\n await packageManager.runScript(rootWorkspace, \"postversion\");\n }\n\n // TODO open github PR\n\n if (options.createRelease && parsedRepoUrl) {\n logger.info(\"Create git release\");\n\n await Promise.all(\n [...bumpedWorkspaces.entries()].map(([workspace, { newTag }]) => {\n if (newTag === null) return undefined;\n const changelog = changelogs.get(workspace);\n if (!changelog) {\n logger.warn(\n `No changelog found for workspace: ${getWorkspaceName(\n workspace,\n )}`,\n );\n return undefined;\n }\n return createGhRelease(workspace, {\n parsedRepoUrl,\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 } 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 }\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};\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 .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": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "simple versioning using conventional commits",
5
5
  "keywords": [
6
6
  "semantic-release",
@@ -63,7 +63,7 @@ describe("version", () => {
63
63
  packageManager,
64
64
  cwd: fileURLToPath(
65
65
  new URL(
66
- `../__fixtures__/${packageManager}-no-version`,
66
+ `../../__fixtures__/${packageManager}-no-version`,
67
67
  import.meta.url,
68
68
  ),
69
69
  ),
@@ -85,7 +85,10 @@ describe("version", () => {
85
85
  dryRun: true,
86
86
  packageManager,
87
87
  cwd: fileURLToPath(
88
- new URL(`../__fixtures__/${packageManager}-basic`, import.meta.url),
88
+ new URL(
89
+ `../../__fixtures__/${packageManager}-basic`,
90
+ import.meta.url,
91
+ ),
89
92
  ),
90
93
  });
91
94
  expect(exitCode).toBe(1);
@@ -103,7 +106,10 @@ describe("version", () => {
103
106
  dryRun: true,
104
107
  packageManager,
105
108
  cwd: fileURLToPath(
106
- new URL(`../__fixtures__/${packageManager}-basic`, import.meta.url),
109
+ new URL(
110
+ `../../__fixtures__/${packageManager}-basic`,
111
+ import.meta.url,
112
+ ),
107
113
  ),
108
114
  });
109
115
  expect(stderr).toBeFalsy();
@@ -307,7 +307,7 @@ describe("recommendBump", () => {
307
307
 
308
308
  describe("generateChangelog", () => {
309
309
  const mockCwd = fileURLToPath(
310
- new URL("../__fixtures__/yarn-basic", import.meta.url),
310
+ new URL("../../__fixtures__/yarn-basic", import.meta.url),
311
311
  );
312
312
 
313
313
  describe("single package scenarios", () => {
@@ -88,8 +88,6 @@ export const createGhRelease = async (
88
88
  tag,
89
89
  "--repo",
90
90
  `${parsedRepoUrl.username}/${parsedRepoUrl.reponame}`,
91
- "--notes",
92
- "-",
93
91
  ];
94
92
 
95
93
  if (prerelease) {
@@ -104,7 +102,11 @@ export const createGhRelease = async (
104
102
  }
105
103
 
106
104
  try {
107
- await execCommandWithInput(workspace, ["gh", ...args], body);
105
+ await execCommandWithInput(
106
+ workspace,
107
+ ["gh", ...args, "--notes-file", "-"],
108
+ body,
109
+ );
108
110
  } catch (error) {
109
111
  // execCommandWithInput will include stdout/stderr in its error message when strict
110
112
  throw new Error(
@@ -5,7 +5,7 @@ import { createProjectWorkspace, createWorkspace } from "./packageUtils.ts";
5
5
  const toAbs = (p: string) => path.resolve(p);
6
6
 
7
7
  const fixturesRoot = path.resolve(
8
- new URL("../__fixtures__", import.meta.url).pathname,
8
+ new URL("../../__fixtures__", import.meta.url).pathname,
9
9
  );
10
10
 
11
11
  describe("mapWorkspaces - baseline checks", () => {
@@ -7,7 +7,7 @@ import {
7
7
  } from "./packageUtils.ts";
8
8
 
9
9
  const fixturesRoot = path.resolve(
10
- new URL("../__fixtures__", import.meta.url).pathname,
10
+ new URL("../../__fixtures__", import.meta.url).pathname,
11
11
  );
12
12
 
13
13
  describe("packageUtils integration", () => {