@pob/version 2.4.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/dist/index-node.mjs +4 -1
- package/dist/index-node.mjs.map +1 -1
- package/package.json +6 -6
- package/src/commands/version.ts +1 -0
- package/src/utils/githubUtils.ts +4 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,25 @@
|
|
|
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
|
+
## [3.1.0](https://github.com/christophehurpeau/pob/compare/@pob/version@3.0.0...@pob/version@3.1.0) (2026-05-01)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* **version:** add title in github release
|
|
11
|
+
|
|
12
|
+
Version bump for dependency: @pob/rollup-esbuild
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
## [3.0.0](https://github.com/christophehurpeau/pob/compare/@pob/version@2.4.0...@pob/version@3.0.0) (2026-04-05)
|
|
16
|
+
|
|
17
|
+
### ⚠ BREAKING CHANGES
|
|
18
|
+
|
|
19
|
+
* node 24
|
|
20
|
+
|
|
21
|
+
### Features
|
|
22
|
+
|
|
23
|
+
* node 24
|
|
24
|
+
|
|
6
25
|
## [2.4.0](https://github.com/christophehurpeau/pob/compare/@pob/version@2.3.0...@pob/version@2.4.0) (2026-04-05)
|
|
7
26
|
|
|
8
27
|
### Features
|
package/dist/index-node.mjs
CHANGED
|
@@ -672,7 +672,7 @@ const extractHostnameFromGheApiUrl = (gheApiUrl) => {
|
|
|
672
672
|
}
|
|
673
673
|
};
|
|
674
674
|
const createGhRelease = async (workspace, opts) => {
|
|
675
|
-
const { parsedRepoUrl, tag, body, prerelease } = opts;
|
|
675
|
+
const { parsedRepoUrl, tag, title, body, prerelease } = opts;
|
|
676
676
|
const { GH_TOKEN, GHE_API_URL } = process.env;
|
|
677
677
|
if (!GH_TOKEN) {
|
|
678
678
|
await ensureGhCliAvailable(workspace);
|
|
@@ -682,6 +682,8 @@ const createGhRelease = async (workspace, opts) => {
|
|
|
682
682
|
"release",
|
|
683
683
|
"create",
|
|
684
684
|
tag,
|
|
685
|
+
"--title",
|
|
686
|
+
title,
|
|
685
687
|
"--repo",
|
|
686
688
|
`${parsedRepoUrl.username}/${parsedRepoUrl.reponame}`
|
|
687
689
|
];
|
|
@@ -1317,6 +1319,7 @@ ${tagsInCommitMessage}` : rootNewVersion
|
|
|
1317
1319
|
}
|
|
1318
1320
|
return createGhRelease(workspace, {
|
|
1319
1321
|
parsedRepoUrl,
|
|
1322
|
+
title: newTag,
|
|
1320
1323
|
tag: newTag,
|
|
1321
1324
|
body: changelog,
|
|
1322
1325
|
prerelease: !!options.prerelease
|
package/dist/index-node.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-node.mjs","sources":["../src/utils/execCommand.ts","../src/pm/BunPackageManager.ts","../src/pm/YarnPackageManager.ts","../src/pm/PackageManager.ts","../src/utils/UsageError.ts","../src/utils/mapUtils.ts","../src/utils/packageDependenciesUtils.ts","../src/utils/workspaceUtils.ts","../src/utils/bumpTypeUtils.ts","../src/utils/conventionalChangelogUtils.ts","../src/utils/conventionalCommitConfigUtils.ts","../src/utils/generatorUtils.ts","../src/utils/gitUtils.ts","../src/utils/githubUtils.ts","../src/utils/packageUtils.ts","../src/utils/updateChangelog.ts","../src/commands/version.ts","../src/index.ts"],"sourcesContent":["import childProcess from \"node:child_process\";\nimport type { Workspace } from \"./packageUtils.ts\";\n\ninterface ExecResultIfFailed {\n code: number | null;\n signal: string | null;\n stdout: string;\n stderr: string;\n}\n\ninterface ExecResultIfSuccess {\n code: null;\n signal: null;\n stdout: string;\n stderr: string;\n}\n\ntype ExecResult<Strict extends boolean> = Strict extends true\n ? ExecResultIfSuccess\n : ExecResultIfFailed;\n\nasync function execvp<const Strict extends boolean>(\n command: string,\n args: string[],\n {\n cwd = process.cwd(),\n env = process.env,\n encoding,\n strict,\n stdo = \"pipe\",\n input,\n }: {\n cwd?: string;\n env?: typeof process.env;\n encoding?: BufferEncoding;\n strict?: Strict;\n stdo?: \"inherit\" | \"pipe\";\n input?: string;\n },\n): Promise<ExecResult<Strict>> {\n const stdoutChunks: Uint8Array[] = [];\n const stderrChunks: Uint8Array[] = [];\n if (env.PWD !== undefined) {\n env = { ...env, PWD: cwd };\n }\n const subprocess = childProcess.spawn(command, args, {\n cwd,\n env,\n stdio: [input ? \"pipe\" : \"ignore\", stdo, stdo],\n });\n if (input && subprocess.stdin) {\n // write input to stdin and close it\n subprocess.stdin.write(input);\n subprocess.stdin.end();\n }\n subprocess.stdout?.on(\"data\", (chunk) => {\n stdoutChunks.push(chunk);\n });\n subprocess.stderr?.on(\"data\", (chunk) => {\n stderrChunks.push(chunk);\n });\n return new Promise((resolve, reject) => {\n subprocess.on(\"error\", (err) => {\n reject(new Error(`Process ${command} failed to spawn`));\n });\n subprocess.on(\"close\", (code, signal) => {\n const chunksToString = (chunks: Uint8Array[]): string =>\n stdo === \"inherit\"\n ? \"\"\n : Buffer.concat(chunks).toString(encoding ?? \"utf8\");\n const stdout = chunksToString(stdoutChunks);\n const stderr = chunksToString(stderrChunks);\n if (code === 0 || !strict) {\n resolve({\n code,\n signal,\n stdout,\n stderr,\n } as ExecResult<Strict>);\n } else {\n reject(\n new Error(\n `Process ${[command, ...args].join(\" \")} exited ${code !== null ? `with code ${code}` : `with signal ${signal || \"\"}`}:\\nstdout: ${stdout}\\nstderr: ${stderr}`,\n ),\n );\n }\n });\n });\n}\n\nasync function* spawnStreamStdout<const Strict extends boolean>(\n command: string,\n args: string[],\n {\n cwd = process.cwd(),\n env = process.env,\n encoding,\n strict,\n separator,\n }: {\n cwd?: string;\n env?: typeof process.env;\n encoding?: BufferEncoding;\n strict?: Strict;\n separator: string;\n },\n): AsyncGenerator<string, ExecResult<Strict>, unknown> {\n const stderrChunks: Uint8Array[] = [];\n if (env.PWD !== undefined) {\n env = { ...env, PWD: cwd };\n }\n const subprocess = childProcess.spawn(command, args, {\n cwd,\n env,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n\n subprocess.stderr.on(\"data\", (chunk) => {\n stderrChunks.push(chunk);\n });\n\n let chunk: Buffer;\n let payload: string[];\n let buffer = \"\";\n\n for await (chunk of subprocess.stdout) {\n buffer += chunk.toString();\n\n if (buffer.includes(separator)) {\n payload = buffer.split(separator);\n buffer = payload.pop() || \"\";\n\n yield* payload;\n }\n }\n\n if (buffer) {\n yield buffer;\n }\n\n return new Promise((resolve, reject) => {\n subprocess.on(\"error\", (err) => {\n reject(new Error(`Process ${command} failed to spawn`));\n });\n subprocess.on(\"close\", (code, signal) => {\n const chunksToString = (chunks: Uint8Array[]): string =>\n Buffer.concat(chunks).toString(encoding ?? \"utf8\");\n const stderr = chunksToString(stderrChunks);\n if (code === 0 || !strict) {\n resolve({\n code,\n signal,\n stderr,\n } as ExecResult<Strict>);\n } else {\n reject(\n new Error(\n `Process ${[command, ...args].join(\" \")} exited ${code !== null ? `with code ${code}` : `with signal ${signal || \"\"}`}:\\nstderr: ${stderr}`,\n ),\n );\n }\n });\n });\n}\n\nexport const execCommand = (\n workspace: Workspace,\n commandAndArgs: string[],\n stdo: \"inherit\" | \"pipe\" = \"pipe\",\n): ReturnType<typeof execvp> => {\n const [command, ...args] = commandAndArgs;\n if (command === undefined) {\n throw new Error(\"Command is required\");\n }\n return execvp(command, args, {\n cwd: workspace.cwd,\n strict: true,\n stdo,\n });\n};\n\nexport const execCommandWithInput = (\n workspace: Workspace,\n commandAndArgs: string[],\n input: string,\n stdo: \"inherit\" | \"pipe\" = \"pipe\",\n): ReturnType<typeof execvp> => {\n const [command, ...args] = commandAndArgs;\n if (command === undefined) {\n throw new Error(\"Command is required\");\n }\n return execvp(command, args, {\n cwd: workspace.cwd,\n strict: true,\n stdo,\n input,\n });\n};\n\nexport const execCommandStreamStdout = (\n workspace: Workspace,\n commandAndArgs: string[],\n separator = \"\\n\",\n): AsyncGenerator<string, ExecResult<true>, unknown> => {\n const [command, ...args] = commandAndArgs;\n if (command === undefined) {\n throw new Error(\"Command is required\");\n }\n return spawnStreamStdout(command, args, {\n cwd: workspace.cwd,\n strict: true,\n separator,\n });\n};\n","import { execCommand } from \"../utils/execCommand.ts\";\nimport type {\n PackageManager,\n PackageManagerPublishOptions,\n} from \"./PackageManager.ts\";\n\nexport const BunPackageManager: PackageManager = {\n async runScript(workspace, scriptName) {\n await execCommand(workspace, [\"bun\", \"run\", scriptName], \"inherit\");\n },\n\n async publish(workspace, options?: PackageManagerPublishOptions) {\n if (options?.provenance) {\n // Use bun pack for provenance support\n // See: https://github.com/oven-sh/bun/issues/15601\n const packResult = await execCommand(workspace, [\"bun\", \"pm\", \"pack\"]);\n // Extract .tgz filename from output (find line ending with .tgz)\n const lines = packResult.stdout.trim().split(\"\\n\");\n const tgzPath =\n lines.find((line) => line.endsWith(\".tgz\")) ?? lines.at(-1);\n if (!tgzPath) {\n throw new Error(\"Failed to extract .tgz path from bun pack output\");\n }\n await execCommand(workspace, [\"npm\", \"publish\", \"--provenance\", tgzPath]);\n } else {\n await execCommand(workspace, [\"bun\", \"publish\"], \"inherit\");\n }\n },\n};\n","import { execCommand } from \"../utils/execCommand.ts\";\nimport type { Workspace } from \"../utils/packageUtils.ts\";\nimport type {\n PackageManager,\n PackageManagerPublishOptions,\n} from \"./PackageManager.ts\";\n\nexport const YarnPackageManager: PackageManager = {\n async installOnPackageContentChange(rootWorkspace: Workspace) {\n await execCommand(rootWorkspace, [\"yarn\", \"install\"], \"inherit\");\n },\n\n async runScript(workspace: Workspace, scriptName: string) {\n await execCommand(workspace, [\"yarn\", \"run\", scriptName], \"inherit\");\n },\n\n async publish(workspace: Workspace, options?: PackageManagerPublishOptions) {\n const publishArgs = [\"yarn\", \"npm\", \"publish\"];\n if (options?.provenance) {\n publishArgs.push(\"--provenance\");\n }\n await execCommand(workspace, publishArgs, \"inherit\");\n },\n\n async publishWorkspaces(\n rootWorkspace: Workspace,\n options?: PackageManagerPublishOptions,\n ) {\n const publishArgs = [\n \"yarn\",\n \"workspaces\",\n \"foreach\",\n \"--all\",\n \"--parallel\",\n \"--no-private\",\n \"npm\",\n \"publish\",\n ];\n if (options?.provenance) {\n publishArgs.push(\"--provenance\");\n }\n await execCommand(rootWorkspace, publishArgs, \"inherit\");\n },\n};\n","import { existsSync } from \"node:fs\";\nimport type { Workspace } from \"../utils/packageUtils.ts\";\nimport { BunPackageManager } from \"./BunPackageManager.ts\";\nimport { YarnPackageManager } from \"./YarnPackageManager.ts\";\n\nexport interface PackageManagerPublishOptions {\n provenance?: boolean;\n}\n\nexport interface PackageManager {\n installOnPackageContentChange?: (rootWorkspace: Workspace) => Promise<void>;\n runScript: (workspace: Workspace, scriptName: string) => Promise<void>;\n publish: (\n workspace: Workspace,\n options?: PackageManagerPublishOptions,\n ) => Promise<void>;\n publishWorkspaces?: (\n rootWorkspace: Workspace,\n options?: PackageManagerPublishOptions,\n ) => Promise<void>;\n}\n\nexport const autoDetectPackageManager = (\n rootWorkspace: Workspace,\n): PackageManager => {\n const hasYarnLock = existsSync(`${rootWorkspace.cwd}/yarn.lock`);\n const hasBunLockLegacy = existsSync(`${rootWorkspace.cwd}/bun.lockb`);\n const hasBunLock = existsSync(`${rootWorkspace.cwd}/bun.lock`);\n const hasNpmPackageLock = existsSync(\n `${rootWorkspace.cwd}/package-lock.json`,\n );\n\n if (\n [hasYarnLock, hasBunLockLegacy, hasBunLock, hasNpmPackageLock].filter(\n Boolean,\n ).length > 1\n ) {\n throw new Error(\n `Multiple lock files detected in workspace at ${rootWorkspace.cwd}. Please ensure only one lock file is present, or pass --package-manager option to bypass auto-detection.`,\n );\n }\n\n if (hasYarnLock) {\n return YarnPackageManager;\n }\n\n if (hasBunLockLegacy || hasBunLock) {\n return BunPackageManager;\n }\n\n if (hasNpmPackageLock) {\n throw new Error(\n \"NPM is not currently supported as a package manager. Please migrate to Yarn or Bun, or open an issue to request support.\",\n );\n }\n\n throw new Error(\n `No lock file detected in workspace at ${rootWorkspace.cwd}. Please ensure a supported lock file is present, or pass --package-manager option to bypass auto-detection.`,\n );\n};\n\nexport const getPackageManager = (\n rootWorkspace: Workspace,\n specifiedPackageManager?: \"bun\" | \"yarn\",\n): PackageManager => {\n if (specifiedPackageManager === \"bun\") {\n return BunPackageManager;\n }\n\n if (specifiedPackageManager === \"yarn\") {\n return YarnPackageManager;\n }\n throw new Error(\n \"Invalid package manager specified. Supported values are 'bun' and 'yarn'.\",\n );\n};\n","export class UsageError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"UsageError\";\n }\n}\n","export function getMapArrayItemForKey<K, V>(map: Map<K, V[]>, key: K): V[] {\n let value: V[] | undefined = map.get(key);\n if (value === undefined) {\n map.set(key, (value = [] as V[]));\n }\n return value;\n}\n","/**\n * Combination of an optional scope and name.\n *\n * eg `@npm/types`\n */\nexport interface PackageDescriptorName {\n scope?: string;\n name: string;\n}\n\ninterface DescriptorUtils<Descriptor> {\n parse: (value: string) => Descriptor;\n stringify: (descriptor: Descriptor) => string;\n}\n\nexport const PackageDescriptorNameUtils: DescriptorUtils<PackageDescriptorName> =\n {\n parse: (value) => {\n if (value.startsWith(\"@\")) {\n const [scope, name] = value.slice(1).split(\"/\", 2);\n if (!scope || !name) {\n throw new Error(`Invalid package descriptor name: ${value}`);\n }\n return { scope, name };\n }\n return { name: value };\n },\n stringify: (descriptor) => {\n return descriptor.scope === undefined\n ? descriptor.name\n : `@${descriptor.scope}/${descriptor.name}`;\n },\n };\n\nexport interface PackageDependencyDescriptor {\n key: string;\n name: PackageDescriptorName;\n selector: string; // can be npm tag or version or version range or git url or local folder path\n}\n\ninterface PackageDependencyDescriptorUtils<\n Descriptor = PackageDependencyDescriptor,\n> {\n make: (descriptor: Descriptor, selector: string) => Descriptor;\n parse: (dependencyKey: string, dependencyValue: string) => Descriptor;\n stringify: (descriptor: Descriptor) => [key: string, value: string];\n}\n\nexport const PackageDependencyDescriptorUtils: PackageDependencyDescriptorUtils =\n {\n make: (descriptor, selector) => {\n return { key: descriptor.key, name: descriptor.name, selector };\n },\n parse: (dependencyKey, dependencyValue) => {\n const [name, selector] = dependencyValue.startsWith(\"npm:\")\n ? (() => {\n const v = dependencyValue.slice(\"npm:\".length);\n if (!v.startsWith(\"@\")) return v.split(\"@\", 2) as [string, string];\n const [packageNameWithoutFirstChar, selector] = v\n .slice(1)\n .split(\"@\", 2);\n if (!packageNameWithoutFirstChar || !selector) {\n throw new Error(`Invalid package descriptor: ${dependencyValue}`);\n }\n return [`@${packageNameWithoutFirstChar}`, selector];\n })()\n : [dependencyKey, dependencyValue];\n\n return {\n key: dependencyKey,\n name: PackageDescriptorNameUtils.parse(name),\n selector,\n };\n },\n stringify: (descriptor) => {\n return [descriptor.key, descriptor.selector];\n },\n };\n\n// export const PackageDependencySelectorUtils;\n","/* eslint-disable complexity */\nimport path from \"node:path\";\nimport { getMapArrayItemForKey } from \"./mapUtils.ts\";\nimport type { PackageDependencyDescriptor } from \"./packageDependenciesUtils.ts\";\nimport {\n PackageDependencyDescriptorUtils,\n PackageDescriptorNameUtils,\n} from \"./packageDependenciesUtils.ts\";\nimport type { ProjectWorkspace, Workspace } from \"./packageUtils.ts\";\n\nconst allDependenciesTypes = [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n] as const;\nexport type DependencyType = (typeof allDependenciesTypes)[number];\n\nexport const getWorkspaceName = (workspace: Workspace): string => {\n return (\n workspace.pkg.name ?? (path.basename(workspace.cwd) || \"unnamed-workspace\")\n );\n};\n\ntype WorkspacesDependenciesMap = Map<\n Workspace,\n [Workspace, DependencyType, PackageDependencyDescriptor][]\n>;\n\nexport const buildDependentsMaps = (\n project: ProjectWorkspace,\n): WorkspacesDependenciesMap => {\n const dependentsMap: WorkspacesDependenciesMap = new Map<\n Workspace,\n [Workspace, DependencyType, PackageDependencyDescriptor][]\n >();\n\n // Note that we need to do this before applying the new versions,\n // otherwise the `findWorkspacesByDescriptor` calls won't be able to\n // resolve the workspaces anymore (because the workspace versions will\n // have changed and won't match the outdated dependencies).\n\n for (const [, dependent] of project.children) {\n for (const set of allDependenciesTypes) {\n for (const [dependencyKey, dependencyValue] of Object.entries(\n dependent.pkg[set] || {},\n )) {\n if (!dependencyValue) continue;\n const descriptor = PackageDependencyDescriptorUtils.parse(\n dependencyKey,\n dependencyValue,\n );\n const workspace = project.children.get(\n PackageDescriptorNameUtils.stringify(descriptor.name),\n );\n if (!workspace) continue;\n\n const dependents = getMapArrayItemForKey(dependentsMap, workspace);\n dependents.push([dependent, set, descriptor]);\n }\n }\n }\n\n return dependentsMap;\n};\n\nexport const buildDependenciesMaps = (\n project: ProjectWorkspace,\n): WorkspacesDependenciesMap => {\n const dependenciesMap: WorkspacesDependenciesMap = new Map<\n Workspace,\n [Workspace, DependencyType, PackageDependencyDescriptor][]\n >();\n\n // Note that we need to do this before applying the new versions,\n // otherwise the `findWorkspacesByDescriptor` calls won't be able to\n // resolve the workspaces anymore (because the workspace versions will\n // have changed and won't match the outdated dependencies).\n\n for (const dependent of project.children.values()) {\n for (const set of allDependenciesTypes) {\n for (const [dependencyKey, dependencyValue] of Object.entries(\n dependent.pkg[set] || {},\n )) {\n if (!dependencyValue) continue;\n const descriptor = PackageDependencyDescriptorUtils.parse(\n dependencyKey,\n dependencyValue,\n );\n\n const workspace = project.children.get(\n PackageDescriptorNameUtils.stringify(descriptor.name),\n );\n if (!workspace) continue;\n\n const dependencies = getMapArrayItemForKey(dependenciesMap, dependent);\n dependencies.push([workspace, set, descriptor]);\n }\n }\n }\n\n return dependenciesMap;\n};\n\nexport const buildTopologicalOrderBatches = (\n project: ProjectWorkspace,\n dependenciesMap: WorkspacesDependenciesMap,\n): Workspace[][] => {\n const batches: Workspace[][] = [];\n\n const added = new Set<Workspace>();\n const toAdd = new Set<Workspace>([\n project.root,\n ...project.children.values(),\n ]);\n\n while (toAdd.size > 0) {\n const batch = new Set<Workspace>();\n for (const workspace of toAdd) {\n // make sure top level workspace is always in the last batch\n if (workspace === project.root && toAdd.size > 1) {\n continue;\n }\n\n const dependencies = dependenciesMap.get(workspace);\n if (!dependencies || dependencies.every((w) => added.has(w[0]))) {\n batch.add(workspace);\n }\n }\n\n for (const workspace of batch) {\n added.add(workspace);\n toAdd.delete(workspace);\n }\n\n if (batch.size === 0) {\n throw new Error(\"Circular dependency detected\");\n }\n batches.push([...batch]);\n }\n\n return batches;\n};\n","import semver from \"semver\";\nimport { UsageError } from \"./UsageError.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\nimport { getWorkspaceName } from \"./workspaceUtils.ts\";\n\nexport type BumpType = \"major\" | \"minor\" | \"patch\";\n\n// https://github.com/yarnpkg/berry/blob/506ded5f5f5a89553435940c74f1d857fd685a42/packages/plugin-version/sources/versionUtils.ts#L10\n// Basically we only support auto-upgrading the ranges that are very simple (^x.y.z, ~x.y.z, >=x.y.z, and of course x.y.z)\nconst SUPPORTED_UPGRADE_REGEXP =\n // eslint-disable-next-line regexp/no-unused-capturing-group\n /^((?:>=|[~^])?)(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(-(0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*)(\\.(0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*))*)?(\\+[0-9a-z-]+(\\.[0-9a-z-]+)*)?$/i;\n\nconst yarnWorkspaceProtocol = \"workspace:\";\n\nexport const calcBumpRange = (\n workspace: Workspace,\n range: string,\n newVersion: string,\n): string => {\n if (range === \"*\") {\n return range;\n }\n\n let useWorkspaceProtocol = false;\n\n if (range.startsWith(yarnWorkspaceProtocol)) {\n const slicedRange = range.slice(yarnWorkspaceProtocol.length);\n\n // Workspaces referenced through their path never get upgraded (\"workspace:packages/yarnpkg-core\")\n if (slicedRange === workspace.relativeCwd) {\n return range;\n }\n\n if (slicedRange === \"*\") {\n return range;\n }\n\n range = slicedRange;\n useWorkspaceProtocol = true;\n }\n\n const parsed = SUPPORTED_UPGRADE_REGEXP.exec(range);\n if (!parsed) {\n const workspaceName = getWorkspaceName(workspace);\n throw new Error(`Couldn't bump range ${range} in ${workspaceName}`);\n }\n\n return `${useWorkspaceProtocol ? yarnWorkspaceProtocol : \"\"}${\n parsed[1] ?? \"\"\n }${newVersion}`;\n};\n\nexport const getHighestBumpType = (bumpTypes: BumpType[]): BumpType => {\n if (bumpTypes.includes(\"major\")) {\n return \"major\";\n }\n\n if (bumpTypes.includes(\"minor\")) {\n return \"minor\";\n }\n\n return \"patch\";\n};\n\nexport const calcBumpType = (\n bumpType: BumpType,\n maxBumpType: BumpType,\n): BumpType => {\n if (maxBumpType === \"major\") {\n return bumpType;\n }\n\n if (maxBumpType === \"minor\") {\n return bumpType === \"major\" || bumpType === \"minor\" ? \"minor\" : \"patch\";\n }\n\n return \"patch\";\n};\n\nconst incVersion = (version: string, bumpType: BumpType): string | null => {\n // handle breaking of 0.x\n if (bumpType === \"major\" && semver.major(version) === 0) {\n bumpType = \"minor\";\n }\n return semver.inc(version, bumpType);\n};\n\nexport const incrementVersion = (\n workspace: Workspace,\n currentVersion: string,\n bumpType: BumpType,\n): string => {\n const newVersion = incVersion(currentVersion, bumpType);\n\n if (!newVersion) {\n throw new UsageError(\n `Could not determine next version for \"${getWorkspaceName(\n workspace,\n )}\" (currentVersion: ${currentVersion}, bumpType: ${bumpType}})`,\n );\n }\n\n return newVersion;\n};\n\n// const createPrerelease = (\n// version: string,\n// prereleaseType: ReleaseType,\n// prereleaseId: string,\n// ) => {\n// return semver.inc(version, prereleaseType, prereleaseId);\n// };\n","import { writeChangelogString } from \"conventional-changelog-writer\";\nimport { parseCommits as createConventionalCommitsParser } from \"conventional-commits-parser\";\nimport type { Commit, ParserStreamOptions } from \"conventional-commits-parser\";\nimport type { PackageJson } from \"type-fest\";\nimport type { ConventionalChangelogConfig } from \"./conventionalCommitConfigUtils.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\n\nexport interface WhatBump {\n level: 0 | 1 | 2;\n reason: string;\n}\nexport type WhatBumpResult = WhatBump | null | undefined;\nexport interface BumperRecommendation extends WhatBump {\n releaseType: \"major\" | \"minor\" | \"patch\";\n commits: Commit[];\n}\nexport interface EmptyBumperRecommendation {\n commits: Commit[];\n}\nexport type BumperRecommendationResult =\n | BumperRecommendation\n | EmptyBumperRecommendation;\n\nexport interface Preset {\n whatBump: (commits: Commit[]) => Promise<WhatBumpResult> | WhatBumpResult;\n tags?: unknown;\n commits?: unknown;\n parser?: ParserStreamOptions;\n}\n\nconst versions: BumperRecommendation[\"releaseType\"][] = [\n \"major\",\n \"minor\",\n \"patch\",\n];\n\nexport const recommendBump = async (\n commits: Parameters<ConventionalChangelogConfig[\"whatBump\"]>[0],\n config: ConventionalChangelogConfig,\n): Promise<Partial<BumperRecommendation>> => {\n const whatBump = config.whatBump;\n if (!whatBump) {\n throw new Error(\"whatBump method is missing in config\");\n }\n const result = { ...(await whatBump(commits)) };\n\n return {\n ...result,\n releaseType: result.level != null ? versions[result.level] : undefined,\n };\n};\n\nexport type Commits = Parameters<ConventionalChangelogConfig[\"whatBump\"]>[0];\n\nexport const generateChangelog = (\n workspace: Workspace,\n pkg: PackageJson,\n config: ConventionalChangelogConfig,\n previousTag: string | null,\n newTag: string | null,\n commits: Commits | undefined,\n date: string,\n // eslint-disable-next-line @typescript-eslint/max-params\n): Promise<string> => {\n if (!newTag) {\n throw new Error(`Missing new tag for package \"${pkg.name ?? \"\"}\"`);\n }\n\n const originUrl =\n typeof pkg.repository === \"string\" ? pkg.repository : pkg.repository?.url;\n const match =\n originUrl &&\n typeof originUrl === \"string\" &&\n /^(?:git@|https?:\\/\\/)(?:([^./:]+(?:\\.com)?)[/:])?([^/:]+)\\/([^./:]+)(?:.git)?/.exec(\n originUrl,\n );\n const [, gitHost, gitAccount, repoName] = match || [\n undefined,\n undefined,\n undefined,\n undefined,\n ];\n\n return writeChangelogString(\n commits ?? [],\n {\n // @ts-expect-error - missing types\n previousTag,\n currentTag: newTag,\n linkCompare: previousTag != null,\n version: pkg.version,\n host: gitHost ? `https://${gitHost}` : undefined,\n owner: gitAccount,\n repository: repoName,\n date,\n },\n // @ts-expect-error - missing types\n config.writer,\n );\n};\n\nexport const createCommitsParser = (config: ConventionalChangelogConfig) => {\n return createConventionalCommitsParser(config.parser);\n};\n","import { loadPreset } from \"conventional-changelog-preset-loader\";\nimport { UsageError } from \"./UsageError.ts\";\nimport type { Preset } from \"./conventionalChangelogUtils.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\n\nexport type ConventionalChangelogConfig = Preset;\n\nexport const loadConventionalCommitConfig = async (\n rootWorkspace: Workspace,\n preset: string,\n): Promise<ConventionalChangelogConfig> => {\n try {\n return await loadPreset<ConventionalChangelogConfig>(preset);\n } catch (error: any) {\n throw new UsageError(\n `Failed to require preset \"${preset}\": ${error.message as string}`,\n );\n }\n};\n","export async function asyncIterableToArray<T>(\n asyncIterable: AsyncIterable<T>,\n): Promise<T[]> {\n const result: T[] = [];\n\n for await (const value of asyncIterable) {\n result.push(value);\n }\n\n return result;\n}\n","import semver from \"semver\";\nimport { UsageError } from \"./UsageError.ts\";\nimport { execCommand, execCommandStreamStdout } from \"./execCommand.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\n\nexport const getGitCurrentBranch = async (\n workspace: Workspace,\n): Promise<string> => {\n const { stdout } = await execCommand(workspace, [\n \"git\",\n \"rev-parse\",\n \"--abbrev-ref\",\n \"HEAD\",\n ]);\n const currentBranch = stdout.trim();\n\n if (currentBranch === \"HEAD\") {\n throw new UsageError(\"HEAD is detached. Please checkout a branch.\");\n }\n\n return currentBranch;\n};\n\nexport const createGitCommit = async (\n workspace: Workspace,\n commitMessage: string,\n): Promise<void> => {\n await execCommand(workspace, [\"git\", \"add\", \"-A\"]);\n\n await execCommand(workspace, [\n \"git\",\n \"commit\",\n \"--no-verify\",\n \"-m\",\n commitMessage,\n ]);\n};\n\nexport const createGitTag = async (\n workspace: Workspace,\n newTag: string,\n): Promise<void> => {\n await execCommand(workspace, [\"git\", \"tag\", newTag, \"-m\", newTag]);\n};\n\nexport const pushCommitsAndTags = async (\n workspace: Workspace,\n gitRemote: string,\n currentBranch: string,\n): Promise<void> => {\n await execCommand(workspace, [\n \"git\",\n \"push\",\n \"--follow-tags\",\n \"--no-verify\",\n \"--atomic\",\n gitRemote,\n currentBranch,\n ]);\n};\n\nexport const isBehindRemote = async (\n workspace: Workspace,\n gitRemote: string,\n currentBranch: string,\n): Promise<boolean> => {\n await execCommand(workspace, [\"git\", \"remote\", \"update\", gitRemote]);\n const { stdout } = await execCommand(workspace, [\n \"git\",\n \"rev-list\",\n \"--left-right\",\n \"--count\",\n `${gitRemote}/${currentBranch}..${currentBranch}`,\n ]);\n\n const [behind] = stdout.split(\"\\t\").map((val) => parseInt(val, 10));\n\n return behind ? behind > 0 : false;\n};\n\nexport const getDirtyFiles = async (workspace: Workspace): Promise<string> => {\n const { stdout: dirtyFiles } = await execCommand(workspace, [\n \"git\",\n \"status\",\n \"--porcelain\",\n ]);\n return dirtyFiles;\n};\n\nconst toArray = <T>(input: T | T[]): T[] =>\n Array.isArray(input) ? input : [input];\n\nexport interface GitTagVersion {\n tag: string;\n version: string;\n}\n\nexport const getGitLatestTagVersion = async (\n workspace: Workspace,\n {\n prefix,\n skipUnstable,\n since,\n from = \"\",\n to = \"HEAD\",\n path,\n }: {\n prefix?: string;\n skipUnstable?: boolean;\n since?: Date | string;\n from?: string;\n to?: string;\n path?: string[] | string;\n } = {},\n): Promise<GitTagVersion | null> => {\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n const tagRegex = /tag:\\s*(.+?)[,)]/gi;\n for await (const chunk of execCommandStreamStdout(workspace, [\n \"git\",\n \"log\",\n \"--no-color\",\n \"--date-order\",\n \"--format=%d\",\n ...(since\n ? [`--since=${since instanceof Date ? since.toISOString() : since}`]\n : []),\n [from, to].filter(Boolean).join(\"..\"),\n ...(path ? [\"--\", ...toArray(path)] : []),\n ])) {\n const trimmed = chunk.trim();\n if (!trimmed) continue;\n const matches = trimmed.matchAll(tagRegex);\n for (const match of matches) {\n const tag = match[1];\n if (!tag) continue;\n if (prefix && !tag.startsWith(prefix)) {\n continue;\n }\n const version = prefix ? tag.slice(prefix.length) : tag;\n if (!semver.valid(version)) {\n continue;\n }\n if (skipUnstable && semver.prerelease(version)) {\n continue;\n }\n return { tag, version };\n }\n }\n\n return null;\n};\n\nconst GIT_COMMIT_SEPARATOR =\n \"------------------------ >8 ------------------------\";\n\nexport const getGitCommits = (\n workspace: Workspace,\n {\n path,\n from = \"\",\n to = \"HEAD\",\n format = \"%B\",\n reverse,\n merges,\n since,\n }: {\n format?: string;\n path?: string[] | string;\n from?: string;\n to?: string;\n reverse?: boolean;\n merges?: boolean;\n since?: Date | string;\n } = {},\n) => {\n return execCommandStreamStdout(\n workspace,\n [\n \"git\",\n \"log\",\n `--format=${format}%n${GIT_COMMIT_SEPARATOR}`,\n ...(since\n ? [`--since=${since instanceof Date ? since.toISOString() : since}`]\n : []),\n ...(reverse ? [\"--reverse\"] : []),\n ...(merges ? [\"--merges\"] : []),\n ...(merges === false ? [\"--no-merges\"] : []),\n [from, to].filter(Boolean).join(\"..\"),\n ...(path ? [\"--\", ...toArray(path)] : []),\n ],\n GIT_COMMIT_SEPARATOR,\n );\n};\n","import { UsageError } from \"./UsageError.ts\";\nimport { execCommandWithInput } from \"./execCommand.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\n\nexport async function ensureGhCliAvailable(\n workspace: Workspace,\n): Promise<void> {\n const { GH_TOKEN } = process.env;\n\n if (!GH_TOKEN) {\n throw new UsageError('\"GH_TOKEN\" environment variable required');\n }\n\n try {\n // Use existing execCommand helper pattern by spawning gh --version\n // We import execCommand lazily to avoid cycles when utils are used elsewhere\n const { execCommand } = await import(\"./execCommand.ts\");\n await execCommand(workspace, [\"gh\", \"--version\"]);\n } catch {\n throw new UsageError(\n 'The \"gh\" CLI is required. Please install GitHub CLI: https://cli.github.com/',\n );\n }\n}\n\ninterface ParsedGithubUrl {\n username: string;\n reponame: string;\n}\n\nconst githubRegex = /^https?:\\/\\/github.com\\/([^#/]+)\\/([^#/]+?)(?:\\.git)?$/;\nexport const parseGithubRepoUrl = (workspace: Workspace): ParsedGithubUrl => {\n const repository = workspace.pkg.repository;\n\n const url: string | undefined =\n typeof repository === \"string\" ? repository : repository?.url;\n\n if (!url) {\n throw new Error(\n \"No repository URL found in manifest. Please add one and try again. https://docs.npmjs.com/cli/v9/configuring-npm/package-json#repository\",\n );\n }\n const match = githubRegex.exec(url);\n\n if (!match) {\n throw new Error(`Invalid GitHub repository URL: \"${url}\"`);\n }\n const [, username, reponame] = match;\n if (!username || !reponame) {\n throw new Error(`Invalid GitHub repository URL: \"${url}\"`);\n }\n return { username, reponame };\n};\n\nconst extractHostnameFromGheApiUrl = (gheApiUrl: string): string | null => {\n try {\n const url = new URL(gheApiUrl);\n return url.hostname || null;\n } catch {\n // fallback: try to strip protocol and path\n const m = /^https?:\\/\\/([^/]+)/.exec(gheApiUrl);\n return m?.[1] || null;\n }\n};\n\nexport const createGhRelease = async (\n workspace: Workspace,\n opts: {\n parsedRepoUrl: ParsedGithubUrl;\n tag: string;\n 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 { cause: error },\n );\n }\n};\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport fs, { glob } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type { PackageJson } from \"type-fest\";\n\nexport interface Workspace {\n readonly cwd: string;\n readonly relativeCwd?: string;\n readonly pkg: PackageJson;\n}\n\nexport interface ProjectWorkspace {\n readonly root: Workspace;\n readonly children: Map<string, Workspace>;\n}\n\nasync function mapWorkspacesFromPkg({\n cwd,\n pkg,\n}: {\n cwd: string;\n pkg: PackageJson;\n}): Promise<Map<string, Workspace>> {\n const workspacesPatterns: string[] = Array.isArray(pkg.workspaces)\n ? pkg.workspaces\n : pkg.workspaces?.packages || [];\n\n const map = new Map<string, Workspace>();\n\n for (const pattern of workspacesPatterns) {\n const normalized = pattern.endsWith(\"package.json\")\n ? pattern\n : `${pattern.replace(/\\/*$/, \"\")}/package.json`;\n\n const files = glob(normalized, { cwd });\n for await (const file of files) {\n const packageDir = path.join(cwd, path.dirname(file));\n const packageJson: PackageJson = await readPkg(packageDir);\n const workspaceName = packageJson.name || path.basename(packageDir);\n if (map.has(workspaceName)) {\n const existingWorkspace = map.get(workspaceName);\n if (existingWorkspace && existingWorkspace.cwd !== packageDir) {\n throw new Error(\n `must not have multiple workspaces with the same name\\npackage '${workspaceName}' has conflicts in the following paths:\\n ${existingWorkspace.cwd}\\n ${packageDir}`,\n );\n }\n // if it's the same package dir, ignore duplicate match\n if (existingWorkspace?.cwd === packageDir) continue;\n }\n map.set(workspaceName, { cwd: packageDir, pkg: packageJson });\n }\n }\n return map;\n}\n\nexport const createProjectWorkspace = async (\n root: Workspace,\n): Promise<ProjectWorkspace> => {\n const map: Map<string, Workspace> = root.pkg.workspaces\n ? await mapWorkspacesFromPkg({ cwd: root.cwd, pkg: root.pkg })\n : new Map();\n\n const children = new Map<string, Workspace>(\n [...map.entries()].map(([packageName, workspace]) => {\n const w: Workspace = {\n ...workspace,\n relativeCwd: path.relative(root.cwd, workspace.cwd),\n };\n return [packageName, w] as const;\n }),\n );\n return { root, children };\n};\n\nconst isAccessible = (path: string): Promise<boolean> =>\n fs.access(path).then(\n () => true,\n () => false,\n );\n\nexport const findRootWorkspace = async (\n cwd: string,\n): Promise<Workspace | null> => {\n let currentPath = cwd;\n do {\n const isRootIfOneOfThesePathsExists = await Promise.all([\n isAccessible(path.join(currentPath, \".yarnrc.yml\")),\n isAccessible(path.join(currentPath, \"yarn.lock\")),\n isAccessible(path.join(currentPath, \"bun.lock\")),\n ]);\n if (isRootIfOneOfThesePathsExists.some(Boolean)) {\n return createWorkspace(currentPath);\n }\n currentPath = path.dirname(currentPath);\n } while (currentPath && currentPath !== \"/\");\n return null;\n};\n\nconst getPackageJsonPath = (cwd: string): string =>\n path.join(cwd, \"package.json\");\n\nexport const createWorkspace = async (path: string): Promise<Workspace> => {\n const pkg = await readPkg(path);\n return { cwd: path, pkg };\n};\n\nexport async function writePkg(workspace: Workspace): Promise<void> {\n const string = `${JSON.stringify(workspace.pkg, null, 2)}\\n`;\n await fs.writeFile(getPackageJsonPath(workspace.cwd), string, \"utf8\");\n}\n\nexport async function readPkg(cwd: string): Promise<PackageJson> {\n const packagePath = getPackageJsonPath(cwd);\n // eslint-disable-next-line @typescript-eslint/use-unknown-in-catch-callback-variable\n const pkg = await fs.readFile(packagePath, \"utf8\").catch((error: Error) => {\n throw new Error(\n `Failed to read \"${packagePath}\": ${error instanceof Error ? error.message : String(error)}`,\n );\n });\n try {\n return JSON.parse(pkg);\n } catch (error: unknown) {\n throw new Error(\n `Failed to parse \"${packagePath}\": ${error instanceof Error ? error.message : String(error)}`,\n { cause: error },\n );\n }\n}\n","import fs from \"node:fs/promises\";\n\nconst COMMIT_GUIDELINE =\n \"See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.\";\n\nconst CHANGELOG_HEADER = [\n \"# Changelog\",\n \"\",\n \"All notable changes to this project will be documented in this file.\",\n COMMIT_GUIDELINE,\n \"\",\n].join(\"\\n\");\n\nexport const updateChangelogFile = async (\n versionChangelogContent: string,\n tagPrefix: string,\n file = \"CHANGELOG.md\",\n): Promise<void> => {\n const START_OF_LAST_RELEASE_PATTERN = new RegExp(\n `(^#+ \\\\[?(?:${tagPrefix})?\\\\d+\\\\.\\\\d+\\\\.\\\\d+|<a name=)`,\n \"m\",\n );\n\n let oldContent = \"\";\n\n try {\n oldContent = await fs.readFile(file, \"utf8\");\n const oldContentStart = oldContent.search(START_OF_LAST_RELEASE_PATTERN);\n // find the position of the last release and remove header:\n if (oldContentStart !== -1) {\n oldContent = oldContent.slice(Math.max(0, oldContentStart));\n }\n } catch {}\n\n await fs.writeFile(\n file,\n `${CHANGELOG_HEADER}\\n${versionChangelogContent}\\n${oldContent}`,\n );\n};\n","/* eslint-disable complexity */\n\nimport { Option, program } from \"commander\";\nimport { LoggerCLI } from \"nightingale\";\nimport { satisfies } from \"semver\";\nimport {\n autoDetectPackageManager,\n getPackageManager,\n} from \"../pm/PackageManager.ts\";\nimport { UsageError } from \"../utils/UsageError.ts\";\nimport type { BumpType } from \"../utils/bumpTypeUtils.ts\";\nimport {\n calcBumpRange,\n calcBumpType,\n getHighestBumpType,\n incrementVersion,\n} from \"../utils/bumpTypeUtils.ts\";\nimport {\n createCommitsParser,\n generateChangelog,\n recommendBump,\n} from \"../utils/conventionalChangelogUtils.ts\";\nimport { loadConventionalCommitConfig } from \"../utils/conventionalCommitConfigUtils.ts\";\nimport { asyncIterableToArray } from \"../utils/generatorUtils.ts\";\nimport type { GitTagVersion } from \"../utils/gitUtils.ts\";\nimport {\n createGitCommit,\n createGitTag,\n getDirtyFiles,\n getGitCommits,\n getGitCurrentBranch,\n getGitLatestTagVersion,\n isBehindRemote,\n pushCommitsAndTags,\n} from \"../utils/gitUtils.ts\";\nimport {\n createGhRelease,\n ensureGhCliAvailable,\n parseGithubRepoUrl,\n} from \"../utils/githubUtils.ts\";\nimport {\n PackageDependencyDescriptorUtils,\n PackageDescriptorNameUtils,\n} from \"../utils/packageDependenciesUtils.ts\";\nimport type { PackageDependencyDescriptor } from \"../utils/packageDependenciesUtils.ts\";\nimport type { Workspace } from \"../utils/packageUtils.ts\";\nimport {\n createProjectWorkspace,\n createWorkspace,\n findRootWorkspace,\n writePkg,\n} from \"../utils/packageUtils.ts\";\nimport { updateChangelogFile } from \"../utils/updateChangelog.ts\";\nimport type { DependencyType } from \"../utils/workspaceUtils.ts\";\nimport {\n buildDependenciesMaps,\n buildTopologicalOrderBatches,\n getWorkspaceName,\n} from \"../utils/workspaceUtils.ts\";\n\nexport interface VersionCommandOptions {\n cwd: string;\n includesRoot: boolean;\n dryRun: boolean;\n force?: \"major\" | \"minor\" | \"patch\";\n prerelease?: string;\n json: boolean;\n preset: string;\n tagVersionPrefix: string;\n changelog: string;\n commitMessage: string;\n createRelease: boolean;\n bumpDependentsHighestAs: \"major\" | \"minor\" | \"patch\";\n alwaysBumpPeerDependencies: boolean;\n gitRemote: string;\n ignoreChanges?: string;\n verbose?: boolean;\n cwdIsRoot?: boolean;\n packageManager?: \"bun\" | \"yarn\";\n publish?: boolean;\n publishProvenance?: boolean;\n}\n\ninterface BumpableWorkspace {\n workspace: Workspace;\n previousTag?: string;\n workspaceName: string;\n isRoot: boolean;\n version: string;\n}\n\ninterface ChangedWorkspace {\n bumpReason?: string;\n bumpType: BumpType;\n}\n\ninterface NoVersionToUpdateWorkspace {\n // for legacy configuration not using workspaces ranges https://yarnpkg.com/features/workspaces#workspace-ranges-workspace\n dependenciesToBump: [DependencyType, PackageDependencyDescriptor, string][];\n}\n\ninterface BumpedWorkspace extends ChangedWorkspace, NoVersionToUpdateWorkspace {\n bumpForDependenciesReasons?: string[];\n hasChanged: boolean;\n currentVersion: string;\n newVersion: string;\n newTag: string | null;\n}\n\nconst todayInYYYYMMDD = (): string => {\n // sv-SEis used for yyyy-mm-dd format\n const dateFormatter = Intl.DateTimeFormat(\"sv-SE\", {\n timeZone: \"UTC\",\n });\n return dateFormatter.format(new Date());\n};\n\nexport const versionCommandAction = async (\n options: VersionCommandOptions,\n { logger = new LoggerCLI(\"@pob/version\", { json: options.json }) } = {},\n): Promise<void> => {\n const rootWorkspace = await (options.cwdIsRoot\n ? createWorkspace(options.cwd)\n : findRootWorkspace(options.cwd));\n\n if (!rootWorkspace) {\n throw new UsageError(\"Could not find root workspace from this path.\");\n }\n\n const packageManager = options.packageManager\n ? getPackageManager(rootWorkspace, options.packageManager)\n : autoDetectPackageManager(rootWorkspace);\n\n const project = await createProjectWorkspace(rootWorkspace);\n\n if (!options.dryRun) {\n const dirtyFiles = await getDirtyFiles(project.root);\n if (dirtyFiles) {\n throw new Error(\n `Dirty Files:\\n${dirtyFiles}\\n\\nThere are uncommitted changes in the git repository. Please commit or stash them first.`,\n );\n }\n }\n\n const rootWorkspaceChildren = [...project.children.values()];\n let rootNewVersion = \"\";\n let rootNewTag = \"\";\n const isMonorepo = rootWorkspaceChildren.length > 0;\n const isMonorepoVersionIndependent = isMonorepo && !rootWorkspace.pkg.version;\n const workspaces =\n !(isMonorepo && !rootWorkspaceChildren) || options.includesRoot\n ? [rootWorkspace, ...rootWorkspaceChildren]\n : rootWorkspaceChildren;\n\n if (options.prerelease) {\n throw new UsageError(\"--prerelease is not supported yet.\");\n }\n if (options.ignoreChanges) {\n throw new UsageError(\"--ignore-changes is not supported yet.\");\n }\n\n const [conventionalCommitConfig, parsedRepoUrl, gitCurrentBranch] =\n await Promise.all([\n loadConventionalCommitConfig(rootWorkspace, options.preset),\n options.createRelease\n ? parseGithubRepoUrl(rootWorkspace)\n : Promise.resolve(null),\n getGitCurrentBranch(rootWorkspace),\n // ensure gh CLI is available early to fail fast if necessary\n options.createRelease\n ? ensureGhCliAvailable(rootWorkspace)\n : Promise.resolve(undefined),\n ]);\n\n const rootPreviousVersionTagPromise =\n options.force || isMonorepoVersionIndependent\n ? null\n : getGitLatestTagVersion(rootWorkspace, {\n prefix: options.tagVersionPrefix,\n skipUnstable: true,\n });\n\n const buildTagName = (workspace: Workspace, version: string): string =>\n `${\n isMonorepo && workspace !== rootWorkspace\n ? `${getWorkspaceName(workspace)}@`\n : options.tagVersionPrefix\n }${version}`;\n\n const changedWorkspaces = new Map<Workspace, ChangedWorkspace>();\n const dependenciesMap = isMonorepo ? buildDependenciesMaps(project) : null;\n\n const bumpableWorkspaces: BumpableWorkspace[] = [];\n\n logger.group(\n options.force\n ? \"Check all workspaces (force option)\"\n : \"Finding changed workspaces\",\n () => {\n // check workspaces and create bumpableWorkspaces\n\n for (const workspace of workspaces) {\n const workspaceName = getWorkspaceName(workspace);\n const isRoot = workspace === rootWorkspace;\n if (isRoot && isMonorepo && isMonorepoVersionIndependent) continue;\n\n const version = workspace.pkg.version;\n\n if (!version || version === \"0.0.0\") {\n if (\n (isRoot || isMonorepoVersionIndependent) &&\n (!isMonorepo || !isMonorepoVersionIndependent)\n ) {\n throw new UsageError(\n 'package.json has no version in its manifest. For the first release, set to \"1.0.0-pre\" or \"0.1.0-pre\".',\n );\n }\n\n logger.info(`${workspaceName}: skipped (no version)`);\n continue;\n }\n\n bumpableWorkspaces.push({\n workspace,\n workspaceName,\n isRoot,\n version,\n });\n }\n\n if (bumpableWorkspaces.length > 0) {\n logger.info(\"Found bumpable workspaces\", {\n count: bumpableWorkspaces.length,\n });\n }\n },\n );\n\n const previousTagVersionByWorkspace = new Map<\n Workspace,\n GitTagVersion | null\n >(\n await Promise.all(\n bumpableWorkspaces.map(async ({ workspace, workspaceName, isRoot }) => {\n const packageOption =\n isMonorepo && isMonorepoVersionIndependent\n ? workspaceName\n : undefined;\n\n const tagPrefix = packageOption\n ? `${packageOption}@`\n : options.tagVersionPrefix;\n\n const previousTagAndVersion = await (isRoot ||\n !isMonorepoVersionIndependent\n ? rootPreviousVersionTagPromise\n : getGitLatestTagVersion(rootWorkspace, {\n path: workspace.relativeCwd,\n prefix: tagPrefix,\n skipUnstable: true,\n }));\n\n return [workspace, previousTagAndVersion] as const;\n }),\n ),\n );\n\n if (options.dryRun) {\n logger.info(\"Previous tags\", {\n previousTagByWorkspace: Object.fromEntries(\n [...previousTagVersionByWorkspace.entries()].map(\n ([workspace, previousTagVersion]) => [\n getWorkspaceName(workspace),\n previousTagVersion?.tag,\n ],\n ),\n ),\n });\n }\n\n const parseCommits = createCommitsParser(conventionalCommitConfig);\n\n const commitsByWorkspace = options.force\n ? undefined\n : new Map(\n await Promise.all(\n bumpableWorkspaces.map(async ({ workspace }) => {\n const previousTagVersion =\n previousTagVersionByWorkspace.get(workspace);\n\n const commits = await asyncIterableToArray(\n parseCommits(\n getGitCommits(rootWorkspace, {\n path: workspace.relativeCwd,\n from: previousTagVersion?.tag || undefined,\n }),\n ),\n );\n\n return [workspace, commits] as const;\n }),\n ),\n );\n\n await logger.group(\"Finding changed workspaces\", async () => {\n for (const { workspace, workspaceName } of bumpableWorkspaces) {\n let bumpType: BumpType | null = null;\n let bumpReason: string | undefined;\n\n if (options.force) {\n bumpType = options.force;\n bumpReason = \"forced by --force flag\";\n } else {\n const commits = commitsByWorkspace?.get(workspace);\n\n // No changes found for this package\n if (!commits || commits.length === 0) {\n logger.info(`${workspaceName}: skipped (no changes)`);\n continue;\n }\n\n const { releaseType, reason } = await recommendBump(\n commits,\n conventionalCommitConfig,\n );\n bumpReason = reason;\n\n if (releaseType) {\n bumpType = releaseType 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 (\n dependencyDescriptor.selector === newRange &&\n newRange !== \"workspace:*\"\n ) {\n continue;\n }\n\n dependenciesToBump.push([\n dependencyType,\n dependencyDescriptor,\n newRange,\n ]);\n\n bumpType = getHighestBumpType([\n bumpType ?? \"patch\",\n calcBumpType(\n dependencyBumpedWorkspace.bumpType,\n options.bumpDependentsHighestAs,\n ),\n ]);\n\n bumpReasons.push(\n `Version bump for dependency: ${PackageDescriptorNameUtils.stringify(dependencyDescriptor.name)}`,\n );\n }\n }\n\n const workspaceName = getWorkspaceName(workspace);\n if (!currentVersion) {\n logger.info(`${workspaceName}: skipped (no version)`);\n if (workspace !== rootWorkspace) {\n noVersionToUpdateWorkspaces.set(workspace, {\n dependenciesToBump,\n });\n }\n } else if (!bumpType) {\n logger.info(\n `${workspaceName}: skipped (${\n changedWorkspace\n ? `no bump recommended by ${options.preset}`\n : \"no changes\"\n })`,\n );\n } else {\n const newVersion = incrementVersion(\n workspace,\n currentVersion,\n bumpType,\n );\n\n const tagName = buildTagName(workspace, newVersion);\n\n if (workspace === rootWorkspace) {\n rootNewVersion = newVersion;\n rootNewTag = tagName;\n }\n\n if (workspace !== rootWorkspace || !isMonorepo) {\n const bumpReason = bumpReasons.join(\"\\n\");\n bumpedWorkspaces.set(workspace, {\n currentVersion,\n bumpType,\n bumpReason,\n bumpForDependenciesReasons: changedWorkspace\n ? bumpReasons.slice(1)\n : bumpReasons,\n newVersion,\n newTag: tagName,\n hasChanged: changedWorkspace !== undefined,\n dependenciesToBump,\n });\n\n logger.info(\n `${workspaceName}: ${currentVersion} -> ${\n !isMonorepo || isMonorepoVersionIndependent\n ? newVersion\n : \"bump\"\n } (${bumpReason.replaceAll(\"\\n\", \" ; \")})`,\n );\n // TODO Json only:\n // logger.info({\n // cwd: npath.fromPortablePath(workspace.cwd),\n // ident: workspaceName,\n // oldVersion: currentVersion,\n // ...(isMonorepoVersionIndependent ? { newVersion } : {}),\n // bumpType,\n // bumpReasons,\n // });\n }\n }\n }\n }\n });\n\n // TODO ask for confirmation\n // if (!this.yes) {\n // }\n\n // TODO do this entire phase here, not override for not independent only\n if (isMonorepo && !isMonorepoVersionIndependent) {\n const currentVersion = rootWorkspace.pkg.version!;\n const highestBumpType = getHighestBumpType(\n [...bumpedWorkspaces.values()].map(({ bumpType }) => bumpType),\n );\n const newVersion = incrementVersion(\n rootWorkspace,\n currentVersion,\n highestBumpType,\n );\n rootNewVersion = newVersion;\n rootNewTag = buildTagName(rootWorkspace, newVersion);\n\n [...bumpedWorkspaces.entries()].forEach(([workspace, bumpedWorkspace]) => {\n const isRoot = workspace === rootWorkspace;\n if (isRoot) {\n throw new Error(\"Unexpected root found in bumped workspaces\");\n }\n bumpedWorkspace.bumpType = highestBumpType;\n bumpedWorkspace.newVersion = newVersion;\n bumpedWorkspace.newTag = null;\n });\n\n [\n ...bumpedWorkspaces.entries(),\n ...noVersionToUpdateWorkspaces.entries(),\n ].forEach(([workspace, { dependenciesToBump }]) => {\n dependenciesToBump.forEach((dependencyToBump) => {\n dependencyToBump[2] = calcBumpRange(\n workspace,\n dependencyToBump[1].selector,\n newVersion,\n );\n });\n });\n\n bumpedWorkspaces.set(rootWorkspace, {\n currentVersion,\n bumpType: highestBumpType,\n hasChanged: true,\n newVersion: rootNewVersion,\n newTag: rootNewTag,\n dependenciesToBump: [],\n });\n\n logger.info(\n `${currentVersion} -> ${newVersion}`,\n // TODO Json only:\n // {\n // oldVersion: currentVersion,\n // newVersion, },\n );\n }\n\n await logger.group(\"Applying changes\", async () => {\n // Update lockfile ; must be done to make sure preversion script can be ran\n\n if (!options.dryRun) {\n if (packageManager.installOnPackageContentChange) {\n logger.info(`${getWorkspaceName(rootWorkspace)}: Running install`);\n await packageManager.installOnPackageContentChange(rootWorkspace);\n }\n\n logger.info(\"Lifecycle script: preversion\");\n\n if (\n isMonorepoVersionIndependent &&\n rootWorkspace.pkg.scripts?.preversion\n ) {\n await packageManager.runScript(rootWorkspace, \"preversion\");\n }\n\n // lifecycle: preversion\n for (const workspace of bumpedWorkspaces.keys()) {\n if (workspace.pkg.scripts?.preversion) {\n await packageManager.runScript(workspace, \"preversion\");\n }\n }\n\n logger.info(\"Modifying versions in package.json\");\n // update versions\n\n await Promise.all(\n [...bumpedWorkspaces.entries()].map(\n ([workspace, { newVersion, dependenciesToBump }]) => {\n workspace.pkg.version = newVersion;\n\n for (const [\n dependencyType,\n dependencyDescriptor,\n dependencyNewRange,\n ] of dependenciesToBump) {\n const newDescriptor = PackageDependencyDescriptorUtils.make(\n dependencyDescriptor,\n dependencyNewRange,\n );\n const [key, newValue] =\n PackageDependencyDescriptorUtils.stringify(newDescriptor);\n workspace.pkg[dependencyType]![key] = newValue;\n }\n\n return writePkg(workspace);\n },\n ),\n );\n\n if (packageManager.installOnPackageContentChange) {\n // Update lockfile ; must be done before running again lifecycle scripts\n logger.info(`${getWorkspaceName(rootWorkspace)}: Running install`);\n await packageManager.installOnPackageContentChange(rootWorkspace);\n }\n\n // lifecycle: version\n logger.info(\"Lifecycle script: version\");\n for (const workspace of bumpedWorkspaces.keys()) {\n if (workspace.pkg.scripts?.version) {\n await packageManager.runScript(workspace, \"version\");\n }\n }\n }\n\n if (isMonorepoVersionIndependent && rootWorkspace.pkg.scripts?.version) {\n await packageManager.runScript(rootWorkspace, \"version\");\n }\n });\n\n const changelogs = new Map<Workspace, string>();\n\n await Promise.all(\n [...bumpedWorkspaces.entries()].map(\n async ([\n workspace,\n { newTag, hasChanged, bumpReason, bumpForDependenciesReasons },\n ]) => {\n // const workspaceRelativePath =\n // rootWorkspace === workspace\n // ? undefined\n // : path.relative(rootWorkspace.cwd, workspace.cwd);\n\n const commits = commitsByWorkspace?.get(workspace);\n\n let changelog = await generateChangelog(\n rootWorkspace,\n workspace.pkg,\n conventionalCommitConfig,\n previousTagVersionByWorkspace.get(workspace)?.tag || null,\n isMonorepoVersionIndependent ? newTag : rootNewTag,\n commits,\n todayInYYYYMMDD(),\n // {\n // path: workspaceRelativePath,\n // previousTag: previousTagByWorkspace.get(workspace) || undefined,\n // verbose: options.verbose,\n // tagPrefix: options.tagVersionPrefix,\n // lernaPackage:\n // rootWorkspace === workspace\n // ? undefined\n // : getWorkspaceName(workspace),\n // },\n );\n\n if (bumpForDependenciesReasons && workspace !== rootWorkspace) {\n if (bumpForDependenciesReasons.length > 0) {\n changelog += `${!changelog.endsWith(\"\\n\\n\") ? \"\\n\" : \"\"}${bumpForDependenciesReasons.join(\"\\n\")}\\n\\n`;\n }\n }\n\n if (changelog.slice(changelog.indexOf(\"\\n\")).trim().length === 0) {\n changelog += `${!changelog.endsWith(\"\\n\\n\") ? \"\\n\" : \"\"}Note: no notable changes\\n\\n`;\n }\n\n if (!changelog && rootWorkspace === workspace) {\n throw new Error(\"No changelog found for root workspace\");\n }\n\n changelogs.set(workspace, changelog);\n\n if (options.changelog) {\n if (options.dryRun) {\n logger.info(\n `${getWorkspaceName(workspace)}: ${\n options.changelog\n }\\n${changelog}`,\n );\n } else {\n await updateChangelogFile(\n changelog,\n options.tagVersionPrefix,\n `${workspace.cwd}/${options.changelog}`,\n );\n }\n }\n },\n ),\n );\n\n if (!options.dryRun) {\n logger.separator();\n\n if (packageManager.installOnPackageContentChange) {\n // install to update versions in lock file\n logger.info(`${getWorkspaceName(rootWorkspace)}: Running install`);\n await packageManager.installOnPackageContentChange(rootWorkspace);\n }\n\n logger.separator();\n\n const changedFiles = await getDirtyFiles(project.root);\n\n if (changedFiles) {\n logger.info(\"Commit, tag and push\", {\n changedFiles,\n });\n\n const tagsSet = new Set<string>(\n [...bumpedWorkspaces.values()]\n .map(({ newTag }) => newTag)\n .filter((newTag) => newTag !== null),\n );\n\n const tagsInCommitMessage = [...tagsSet]\n .map((tag) => `- ${tag}`)\n .join(\"\\n\");\n const message = options.commitMessage\n .replace(/\\\\n/g, \"\\n\")\n .replace(\n /%a/g,\n isMonorepoVersionIndependent\n ? `\\n\\n${tagsInCommitMessage}`\n : rootNewVersion,\n )\n .replace(/%s/g, rootNewTag)\n .replace(/%v/g, rootNewVersion)\n .replace(/%t/g, tagsInCommitMessage);\n\n await createGitCommit(rootWorkspace, message);\n\n for (const [workspace, { newTag }] of bumpedWorkspaces.entries()) {\n if (newTag === null) continue;\n await createGitTag(workspace, newTag);\n }\n\n if (\n await isBehindRemote(rootWorkspace, options.gitRemote, gitCurrentBranch)\n ) {\n logger.error(\"Remote is ahead, aborting\");\n // eslint-disable-next-line unicorn/no-process-exit\n process.exit(1);\n }\n\n await pushCommitsAndTags(\n rootWorkspace,\n options.gitRemote,\n gitCurrentBranch,\n );\n\n // run postversion\n if (rootWorkspace.pkg.scripts?.postversion) {\n logger.info(\"Lifecycle script: postversion\");\n await packageManager.runScript(rootWorkspace, \"postversion\");\n }\n\n // TODO open github PR\n\n if (options.createRelease && parsedRepoUrl) {\n logger.info(\"Create git release\");\n\n await Promise.all(\n [...bumpedWorkspaces.entries()].map(([workspace, { newTag }]) => {\n if (newTag === null) return Promise.resolve(undefined);\n const changelog = changelogs.get(workspace);\n if (!changelog) {\n logger.warn(\n `No changelog found for workspace: ${getWorkspaceName(\n workspace,\n )}`,\n );\n return Promise.resolve(undefined);\n }\n return createGhRelease(workspace, {\n parsedRepoUrl,\n tag: newTag,\n body: changelog,\n prerelease: !!options.prerelease,\n });\n }),\n );\n }\n\n if (!options.publish) {\n return;\n }\n await logger.group(\"Publishing packages\", async () => {\n if (packageManager.publishWorkspaces) {\n await packageManager.publishWorkspaces(rootWorkspace, {\n provenance: options.publishProvenance,\n });\n } else {\n for (const [workspace] of bumpedWorkspaces.entries()) {\n if (workspace.pkg.private) {\n logger.info(\n `Skipping private workspace ${getWorkspaceName(workspace)}`,\n );\n continue;\n }\n\n logger.info(`Publishing ${getWorkspaceName(workspace)}`);\n await packageManager.publish(workspace, {\n provenance: options.publishProvenance,\n });\n }\n }\n });\n } else {\n logger.warn(\"No changes made. Nothing to commit.\");\n }\n }\n};\n\nexport const Defaults: VersionCommandOptions = {\n cwd: process.cwd(),\n includesRoot: false,\n dryRun: false,\n json: false,\n preset: \"conventional-changelog-conventionalcommits\",\n tagVersionPrefix: \"v\",\n changelog: \"CHANGELOG.md\",\n commitMessage: \"chore: release %a\",\n createRelease: false,\n bumpDependentsHighestAs: \"major\",\n alwaysBumpPeerDependencies: false,\n gitRemote: \"origin\",\n verbose: false,\n publish: false,\n publishProvenance: false,\n};\n\nexport default program\n .command(\"version\", { isDefault: true })\n .usage(\"Bump package version using conventional commit\")\n .addOption(\n new Option(\"--includes-root\", \"Release root workspace [untested]\").default(\n Defaults.includesRoot,\n ),\n )\n .addOption(new Option(\"--cwd\", \"working directory\").default(process.cwd()))\n .addOption(\n new Option(\n \"--dry-run\",\n \"Print the versions without actually generating the package archive\",\n ).default(Defaults.dryRun),\n )\n .addOption(new Option(\"-v,--verbose\").default(Defaults.verbose))\n .addOption(\n new Option(\"--force <type>\", \"Specify the release type\").choices([\n \"major\",\n \"minor\",\n \"patch\",\n ]),\n )\n .addOption(\n new Option(\n \"--prerelease [releaseType]\",\n \"Add a prerelease identifier to new versions\",\n ),\n )\n .addOption(\n new Option(\n \"--preset <presetName>\",\n \"Conventional Changelog preset to require. Defaults to conventional-changelog-conventionalcommits.\",\n ).default(\"conventional-changelog-conventionalcommits\"),\n )\n .addOption(\n new Option(\"--tag-version-prefix <prefix>\", \"Tag version prefix\").default(\n Defaults.tagVersionPrefix,\n ),\n )\n .addOption(\n new Option(\n \"--changelog <path>\",\n \"Changelog path. Default to CHANGELOG.md.\",\n ).default(Defaults.changelog),\n )\n .addOption(\n new Option(\n \"-m,--commit-message <message>\",\n 'Commit message. Default to \"chore: release %a\". You can use %v for the version, %s for the version with prefix, %t to list tags, %a for auto best display.',\n ).default(Defaults.commitMessage),\n )\n .addOption(\n new Option(\"--create-release <type>\", \"Create a release\").choices([\n \"github\",\n ]),\n )\n .addOption(\n new Option(\n \"--bump-dependents-highest-as <type>\",\n \"Bump dependents highest version as major, minor or patch\",\n )\n .choices([\"major\", \"minor\", \"patch\"])\n .default(Defaults.bumpDependentsHighestAs),\n )\n .addOption(\n new Option(\n \"--always-bump-peer-dependencies\",\n \"Always bump peer dependencies. Default to bumping only if the version doesn't satisfies the peer dependency range.\",\n ).default(Defaults.alwaysBumpPeerDependencies),\n )\n .addOption(\n new Option(\n \"--git-remote <remote-name>\",\n \"Git remote to push commits and tags to\",\n ).default(Defaults.gitRemote),\n )\n .addOption(\n new Option(\n \"--ignore-changes <glob>\",\n 'Ignore changes in files matching the glob. Example: \"**/*.test.js\"',\n ),\n )\n .addOption(new Option(\"--json\", \"Logger json\"))\n .addOption(\n new Option(\n \"--package-manager <manager>\",\n \"Specify the package manager to use (bun or yarn). Autodetected if not specified.\",\n ).choices([\"bun\", \"yarn\"]),\n )\n .addOption(new Option(\"--publish\", \"Publish after versioning\").default(false))\n .addOption(\n new Option(\n \"--publish-provenance\",\n \"Generate provenance attestation when publishing (if supported by package manager)\",\n ).default(false),\n )\n .action((options) => versionCommandAction(options));\n","import fs from \"node:fs\";\nimport { program } from \"commander\";\n\nimport \"./commands/version.ts\";\n\n// relative to dist directory\nconst pkg = JSON.parse(\n // eslint-disable-next-line unicorn/prefer-json-parse-buffer\n fs.readFileSync(new URL(\"../package.json\", import.meta.url), \"utf8\"),\n);\n\nprogram.name(pkg.name).description(pkg.description).version(pkg.version);\nprogram.parse();\n"],"names":["chunk","selector","createConventionalCommitsParser","path","fs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-node.mjs","sources":["../src/utils/execCommand.ts","../src/pm/BunPackageManager.ts","../src/pm/YarnPackageManager.ts","../src/pm/PackageManager.ts","../src/utils/UsageError.ts","../src/utils/mapUtils.ts","../src/utils/packageDependenciesUtils.ts","../src/utils/workspaceUtils.ts","../src/utils/bumpTypeUtils.ts","../src/utils/conventionalChangelogUtils.ts","../src/utils/conventionalCommitConfigUtils.ts","../src/utils/generatorUtils.ts","../src/utils/gitUtils.ts","../src/utils/githubUtils.ts","../src/utils/packageUtils.ts","../src/utils/updateChangelog.ts","../src/commands/version.ts","../src/index.ts"],"sourcesContent":["import childProcess from \"node:child_process\";\nimport type { Workspace } from \"./packageUtils.ts\";\n\ninterface ExecResultIfFailed {\n code: number | null;\n signal: string | null;\n stdout: string;\n stderr: string;\n}\n\ninterface ExecResultIfSuccess {\n code: null;\n signal: null;\n stdout: string;\n stderr: string;\n}\n\ntype ExecResult<Strict extends boolean> = Strict extends true\n ? ExecResultIfSuccess\n : ExecResultIfFailed;\n\nasync function execvp<const Strict extends boolean>(\n command: string,\n args: string[],\n {\n cwd = process.cwd(),\n env = process.env,\n encoding,\n strict,\n stdo = \"pipe\",\n input,\n }: {\n cwd?: string;\n env?: typeof process.env;\n encoding?: BufferEncoding;\n strict?: Strict;\n stdo?: \"inherit\" | \"pipe\";\n input?: string;\n },\n): Promise<ExecResult<Strict>> {\n const stdoutChunks: Uint8Array[] = [];\n const stderrChunks: Uint8Array[] = [];\n if (env.PWD !== undefined) {\n env = { ...env, PWD: cwd };\n }\n const subprocess = childProcess.spawn(command, args, {\n cwd,\n env,\n stdio: [input ? \"pipe\" : \"ignore\", stdo, stdo],\n });\n if (input && subprocess.stdin) {\n // write input to stdin and close it\n subprocess.stdin.write(input);\n subprocess.stdin.end();\n }\n subprocess.stdout?.on(\"data\", (chunk) => {\n stdoutChunks.push(chunk);\n });\n subprocess.stderr?.on(\"data\", (chunk) => {\n stderrChunks.push(chunk);\n });\n return new Promise((resolve, reject) => {\n subprocess.on(\"error\", (err) => {\n reject(new Error(`Process ${command} failed to spawn`));\n });\n subprocess.on(\"close\", (code, signal) => {\n const chunksToString = (chunks: Uint8Array[]): string =>\n stdo === \"inherit\"\n ? \"\"\n : Buffer.concat(chunks).toString(encoding ?? \"utf8\");\n const stdout = chunksToString(stdoutChunks);\n const stderr = chunksToString(stderrChunks);\n if (code === 0 || !strict) {\n resolve({\n code,\n signal,\n stdout,\n stderr,\n } as ExecResult<Strict>);\n } else {\n reject(\n new Error(\n `Process ${[command, ...args].join(\" \")} exited ${code !== null ? `with code ${code}` : `with signal ${signal || \"\"}`}:\\nstdout: ${stdout}\\nstderr: ${stderr}`,\n ),\n );\n }\n });\n });\n}\n\nasync function* spawnStreamStdout<const Strict extends boolean>(\n command: string,\n args: string[],\n {\n cwd = process.cwd(),\n env = process.env,\n encoding,\n strict,\n separator,\n }: {\n cwd?: string;\n env?: typeof process.env;\n encoding?: BufferEncoding;\n strict?: Strict;\n separator: string;\n },\n): AsyncGenerator<string, ExecResult<Strict>, unknown> {\n const stderrChunks: Uint8Array[] = [];\n if (env.PWD !== undefined) {\n env = { ...env, PWD: cwd };\n }\n const subprocess = childProcess.spawn(command, args, {\n cwd,\n env,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n\n subprocess.stderr.on(\"data\", (chunk) => {\n stderrChunks.push(chunk);\n });\n\n let chunk: Buffer;\n let payload: string[];\n let buffer = \"\";\n\n for await (chunk of subprocess.stdout) {\n buffer += chunk.toString();\n\n if (buffer.includes(separator)) {\n payload = buffer.split(separator);\n buffer = payload.pop() || \"\";\n\n yield* payload;\n }\n }\n\n if (buffer) {\n yield buffer;\n }\n\n return new Promise((resolve, reject) => {\n subprocess.on(\"error\", (err) => {\n reject(new Error(`Process ${command} failed to spawn`));\n });\n subprocess.on(\"close\", (code, signal) => {\n const chunksToString = (chunks: Uint8Array[]): string =>\n Buffer.concat(chunks).toString(encoding ?? \"utf8\");\n const stderr = chunksToString(stderrChunks);\n if (code === 0 || !strict) {\n resolve({\n code,\n signal,\n stderr,\n } as ExecResult<Strict>);\n } else {\n reject(\n new Error(\n `Process ${[command, ...args].join(\" \")} exited ${code !== null ? `with code ${code}` : `with signal ${signal || \"\"}`}:\\nstderr: ${stderr}`,\n ),\n );\n }\n });\n });\n}\n\nexport const execCommand = (\n workspace: Workspace,\n commandAndArgs: string[],\n stdo: \"inherit\" | \"pipe\" = \"pipe\",\n): ReturnType<typeof execvp> => {\n const [command, ...args] = commandAndArgs;\n if (command === undefined) {\n throw new Error(\"Command is required\");\n }\n return execvp(command, args, {\n cwd: workspace.cwd,\n strict: true,\n stdo,\n });\n};\n\nexport const execCommandWithInput = (\n workspace: Workspace,\n commandAndArgs: string[],\n input: string,\n stdo: \"inherit\" | \"pipe\" = \"pipe\",\n): ReturnType<typeof execvp> => {\n const [command, ...args] = commandAndArgs;\n if (command === undefined) {\n throw new Error(\"Command is required\");\n }\n return execvp(command, args, {\n cwd: workspace.cwd,\n strict: true,\n stdo,\n input,\n });\n};\n\nexport const execCommandStreamStdout = (\n workspace: Workspace,\n commandAndArgs: string[],\n separator = \"\\n\",\n): AsyncGenerator<string, ExecResult<true>, unknown> => {\n const [command, ...args] = commandAndArgs;\n if (command === undefined) {\n throw new Error(\"Command is required\");\n }\n return spawnStreamStdout(command, args, {\n cwd: workspace.cwd,\n strict: true,\n separator,\n });\n};\n","import { execCommand } from \"../utils/execCommand.ts\";\nimport type {\n PackageManager,\n PackageManagerPublishOptions,\n} from \"./PackageManager.ts\";\n\nexport const BunPackageManager: PackageManager = {\n async runScript(workspace, scriptName) {\n await execCommand(workspace, [\"bun\", \"run\", scriptName], \"inherit\");\n },\n\n async publish(workspace, options?: PackageManagerPublishOptions) {\n if (options?.provenance) {\n // Use bun pack for provenance support\n // See: https://github.com/oven-sh/bun/issues/15601\n const packResult = await execCommand(workspace, [\"bun\", \"pm\", \"pack\"]);\n // Extract .tgz filename from output (find line ending with .tgz)\n const lines = packResult.stdout.trim().split(\"\\n\");\n const tgzPath =\n lines.find((line) => line.endsWith(\".tgz\")) ?? lines.at(-1);\n if (!tgzPath) {\n throw new Error(\"Failed to extract .tgz path from bun pack output\");\n }\n await execCommand(workspace, [\"npm\", \"publish\", \"--provenance\", tgzPath]);\n } else {\n await execCommand(workspace, [\"bun\", \"publish\"], \"inherit\");\n }\n },\n};\n","import { execCommand } from \"../utils/execCommand.ts\";\nimport type { Workspace } from \"../utils/packageUtils.ts\";\nimport type {\n PackageManager,\n PackageManagerPublishOptions,\n} from \"./PackageManager.ts\";\n\nexport const YarnPackageManager: PackageManager = {\n async installOnPackageContentChange(rootWorkspace: Workspace) {\n await execCommand(rootWorkspace, [\"yarn\", \"install\"], \"inherit\");\n },\n\n async runScript(workspace: Workspace, scriptName: string) {\n await execCommand(workspace, [\"yarn\", \"run\", scriptName], \"inherit\");\n },\n\n async publish(workspace: Workspace, options?: PackageManagerPublishOptions) {\n const publishArgs = [\"yarn\", \"npm\", \"publish\"];\n if (options?.provenance) {\n publishArgs.push(\"--provenance\");\n }\n await execCommand(workspace, publishArgs, \"inherit\");\n },\n\n async publishWorkspaces(\n rootWorkspace: Workspace,\n options?: PackageManagerPublishOptions,\n ) {\n const publishArgs = [\n \"yarn\",\n \"workspaces\",\n \"foreach\",\n \"--all\",\n \"--parallel\",\n \"--no-private\",\n \"npm\",\n \"publish\",\n ];\n if (options?.provenance) {\n publishArgs.push(\"--provenance\");\n }\n await execCommand(rootWorkspace, publishArgs, \"inherit\");\n },\n};\n","import { existsSync } from \"node:fs\";\nimport type { Workspace } from \"../utils/packageUtils.ts\";\nimport { BunPackageManager } from \"./BunPackageManager.ts\";\nimport { YarnPackageManager } from \"./YarnPackageManager.ts\";\n\nexport interface PackageManagerPublishOptions {\n provenance?: boolean;\n}\n\nexport interface PackageManager {\n installOnPackageContentChange?: (rootWorkspace: Workspace) => Promise<void>;\n runScript: (workspace: Workspace, scriptName: string) => Promise<void>;\n publish: (\n workspace: Workspace,\n options?: PackageManagerPublishOptions,\n ) => Promise<void>;\n publishWorkspaces?: (\n rootWorkspace: Workspace,\n options?: PackageManagerPublishOptions,\n ) => Promise<void>;\n}\n\nexport const autoDetectPackageManager = (\n rootWorkspace: Workspace,\n): PackageManager => {\n const hasYarnLock = existsSync(`${rootWorkspace.cwd}/yarn.lock`);\n const hasBunLockLegacy = existsSync(`${rootWorkspace.cwd}/bun.lockb`);\n const hasBunLock = existsSync(`${rootWorkspace.cwd}/bun.lock`);\n const hasNpmPackageLock = existsSync(\n `${rootWorkspace.cwd}/package-lock.json`,\n );\n\n if (\n [hasYarnLock, hasBunLockLegacy, hasBunLock, hasNpmPackageLock].filter(\n Boolean,\n ).length > 1\n ) {\n throw new Error(\n `Multiple lock files detected in workspace at ${rootWorkspace.cwd}. Please ensure only one lock file is present, or pass --package-manager option to bypass auto-detection.`,\n );\n }\n\n if (hasYarnLock) {\n return YarnPackageManager;\n }\n\n if (hasBunLockLegacy || hasBunLock) {\n return BunPackageManager;\n }\n\n if (hasNpmPackageLock) {\n throw new Error(\n \"NPM is not currently supported as a package manager. Please migrate to Yarn or Bun, or open an issue to request support.\",\n );\n }\n\n throw new Error(\n `No lock file detected in workspace at ${rootWorkspace.cwd}. Please ensure a supported lock file is present, or pass --package-manager option to bypass auto-detection.`,\n );\n};\n\nexport const getPackageManager = (\n rootWorkspace: Workspace,\n specifiedPackageManager?: \"bun\" | \"yarn\",\n): PackageManager => {\n if (specifiedPackageManager === \"bun\") {\n return BunPackageManager;\n }\n\n if (specifiedPackageManager === \"yarn\") {\n return YarnPackageManager;\n }\n throw new Error(\n \"Invalid package manager specified. Supported values are 'bun' and 'yarn'.\",\n );\n};\n","export class UsageError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"UsageError\";\n }\n}\n","export function getMapArrayItemForKey<K, V>(map: Map<K, V[]>, key: K): V[] {\n let value: V[] | undefined = map.get(key);\n if (value === undefined) {\n map.set(key, (value = [] as V[]));\n }\n return value;\n}\n","/**\n * Combination of an optional scope and name.\n *\n * eg `@npm/types`\n */\nexport interface PackageDescriptorName {\n scope?: string;\n name: string;\n}\n\ninterface DescriptorUtils<Descriptor> {\n parse: (value: string) => Descriptor;\n stringify: (descriptor: Descriptor) => string;\n}\n\nexport const PackageDescriptorNameUtils: DescriptorUtils<PackageDescriptorName> =\n {\n parse: (value) => {\n if (value.startsWith(\"@\")) {\n const [scope, name] = value.slice(1).split(\"/\", 2);\n if (!scope || !name) {\n throw new Error(`Invalid package descriptor name: ${value}`);\n }\n return { scope, name };\n }\n return { name: value };\n },\n stringify: (descriptor) => {\n return descriptor.scope === undefined\n ? descriptor.name\n : `@${descriptor.scope}/${descriptor.name}`;\n },\n };\n\nexport interface PackageDependencyDescriptor {\n key: string;\n name: PackageDescriptorName;\n selector: string; // can be npm tag or version or version range or git url or local folder path\n}\n\ninterface PackageDependencyDescriptorUtils<\n Descriptor = PackageDependencyDescriptor,\n> {\n make: (descriptor: Descriptor, selector: string) => Descriptor;\n parse: (dependencyKey: string, dependencyValue: string) => Descriptor;\n stringify: (descriptor: Descriptor) => [key: string, value: string];\n}\n\nexport const PackageDependencyDescriptorUtils: PackageDependencyDescriptorUtils =\n {\n make: (descriptor, selector) => {\n return { key: descriptor.key, name: descriptor.name, selector };\n },\n parse: (dependencyKey, dependencyValue) => {\n const [name, selector] = dependencyValue.startsWith(\"npm:\")\n ? (() => {\n const v = dependencyValue.slice(\"npm:\".length);\n if (!v.startsWith(\"@\")) return v.split(\"@\", 2) as [string, string];\n const [packageNameWithoutFirstChar, selector] = v\n .slice(1)\n .split(\"@\", 2);\n if (!packageNameWithoutFirstChar || !selector) {\n throw new Error(`Invalid package descriptor: ${dependencyValue}`);\n }\n return [`@${packageNameWithoutFirstChar}`, selector];\n })()\n : [dependencyKey, dependencyValue];\n\n return {\n key: dependencyKey,\n name: PackageDescriptorNameUtils.parse(name),\n selector,\n };\n },\n stringify: (descriptor) => {\n return [descriptor.key, descriptor.selector];\n },\n };\n\n// export const PackageDependencySelectorUtils;\n","/* eslint-disable complexity */\nimport path from \"node:path\";\nimport { getMapArrayItemForKey } from \"./mapUtils.ts\";\nimport type { PackageDependencyDescriptor } from \"./packageDependenciesUtils.ts\";\nimport {\n PackageDependencyDescriptorUtils,\n PackageDescriptorNameUtils,\n} from \"./packageDependenciesUtils.ts\";\nimport type { ProjectWorkspace, Workspace } from \"./packageUtils.ts\";\n\nconst allDependenciesTypes = [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n] as const;\nexport type DependencyType = (typeof allDependenciesTypes)[number];\n\nexport const getWorkspaceName = (workspace: Workspace): string => {\n return (\n workspace.pkg.name ?? (path.basename(workspace.cwd) || \"unnamed-workspace\")\n );\n};\n\ntype WorkspacesDependenciesMap = Map<\n Workspace,\n [Workspace, DependencyType, PackageDependencyDescriptor][]\n>;\n\nexport const buildDependentsMaps = (\n project: ProjectWorkspace,\n): WorkspacesDependenciesMap => {\n const dependentsMap: WorkspacesDependenciesMap = new Map<\n Workspace,\n [Workspace, DependencyType, PackageDependencyDescriptor][]\n >();\n\n // Note that we need to do this before applying the new versions,\n // otherwise the `findWorkspacesByDescriptor` calls won't be able to\n // resolve the workspaces anymore (because the workspace versions will\n // have changed and won't match the outdated dependencies).\n\n for (const [, dependent] of project.children) {\n for (const set of allDependenciesTypes) {\n for (const [dependencyKey, dependencyValue] of Object.entries(\n dependent.pkg[set] || {},\n )) {\n if (!dependencyValue) continue;\n const descriptor = PackageDependencyDescriptorUtils.parse(\n dependencyKey,\n dependencyValue,\n );\n const workspace = project.children.get(\n PackageDescriptorNameUtils.stringify(descriptor.name),\n );\n if (!workspace) continue;\n\n const dependents = getMapArrayItemForKey(dependentsMap, workspace);\n dependents.push([dependent, set, descriptor]);\n }\n }\n }\n\n return dependentsMap;\n};\n\nexport const buildDependenciesMaps = (\n project: ProjectWorkspace,\n): WorkspacesDependenciesMap => {\n const dependenciesMap: WorkspacesDependenciesMap = new Map<\n Workspace,\n [Workspace, DependencyType, PackageDependencyDescriptor][]\n >();\n\n // Note that we need to do this before applying the new versions,\n // otherwise the `findWorkspacesByDescriptor` calls won't be able to\n // resolve the workspaces anymore (because the workspace versions will\n // have changed and won't match the outdated dependencies).\n\n for (const dependent of project.children.values()) {\n for (const set of allDependenciesTypes) {\n for (const [dependencyKey, dependencyValue] of Object.entries(\n dependent.pkg[set] || {},\n )) {\n if (!dependencyValue) continue;\n const descriptor = PackageDependencyDescriptorUtils.parse(\n dependencyKey,\n dependencyValue,\n );\n\n const workspace = project.children.get(\n PackageDescriptorNameUtils.stringify(descriptor.name),\n );\n if (!workspace) continue;\n\n const dependencies = getMapArrayItemForKey(dependenciesMap, dependent);\n dependencies.push([workspace, set, descriptor]);\n }\n }\n }\n\n return dependenciesMap;\n};\n\nexport const buildTopologicalOrderBatches = (\n project: ProjectWorkspace,\n dependenciesMap: WorkspacesDependenciesMap,\n): Workspace[][] => {\n const batches: Workspace[][] = [];\n\n const added = new Set<Workspace>();\n const toAdd = new Set<Workspace>([\n project.root,\n ...project.children.values(),\n ]);\n\n while (toAdd.size > 0) {\n const batch = new Set<Workspace>();\n for (const workspace of toAdd) {\n // make sure top level workspace is always in the last batch\n if (workspace === project.root && toAdd.size > 1) {\n continue;\n }\n\n const dependencies = dependenciesMap.get(workspace);\n if (!dependencies || dependencies.every((w) => added.has(w[0]))) {\n batch.add(workspace);\n }\n }\n\n for (const workspace of batch) {\n added.add(workspace);\n toAdd.delete(workspace);\n }\n\n if (batch.size === 0) {\n throw new Error(\"Circular dependency detected\");\n }\n batches.push([...batch]);\n }\n\n return batches;\n};\n","import semver from \"semver\";\nimport { UsageError } from \"./UsageError.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\nimport { getWorkspaceName } from \"./workspaceUtils.ts\";\n\nexport type BumpType = \"major\" | \"minor\" | \"patch\";\n\n// https://github.com/yarnpkg/berry/blob/506ded5f5f5a89553435940c74f1d857fd685a42/packages/plugin-version/sources/versionUtils.ts#L10\n// Basically we only support auto-upgrading the ranges that are very simple (^x.y.z, ~x.y.z, >=x.y.z, and of course x.y.z)\nconst SUPPORTED_UPGRADE_REGEXP =\n // eslint-disable-next-line regexp/no-unused-capturing-group\n /^((?:>=|[~^])?)(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(-(0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*)(\\.(0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*))*)?(\\+[0-9a-z-]+(\\.[0-9a-z-]+)*)?$/i;\n\nconst yarnWorkspaceProtocol = \"workspace:\";\n\nexport const calcBumpRange = (\n workspace: Workspace,\n range: string,\n newVersion: string,\n): string => {\n if (range === \"*\") {\n return range;\n }\n\n let useWorkspaceProtocol = false;\n\n if (range.startsWith(yarnWorkspaceProtocol)) {\n const slicedRange = range.slice(yarnWorkspaceProtocol.length);\n\n // Workspaces referenced through their path never get upgraded (\"workspace:packages/yarnpkg-core\")\n if (slicedRange === workspace.relativeCwd) {\n return range;\n }\n\n if (slicedRange === \"*\") {\n return range;\n }\n\n range = slicedRange;\n useWorkspaceProtocol = true;\n }\n\n const parsed = SUPPORTED_UPGRADE_REGEXP.exec(range);\n if (!parsed) {\n const workspaceName = getWorkspaceName(workspace);\n throw new Error(`Couldn't bump range ${range} in ${workspaceName}`);\n }\n\n return `${useWorkspaceProtocol ? yarnWorkspaceProtocol : \"\"}${\n parsed[1] ?? \"\"\n }${newVersion}`;\n};\n\nexport const getHighestBumpType = (bumpTypes: BumpType[]): BumpType => {\n if (bumpTypes.includes(\"major\")) {\n return \"major\";\n }\n\n if (bumpTypes.includes(\"minor\")) {\n return \"minor\";\n }\n\n return \"patch\";\n};\n\nexport const calcBumpType = (\n bumpType: BumpType,\n maxBumpType: BumpType,\n): BumpType => {\n if (maxBumpType === \"major\") {\n return bumpType;\n }\n\n if (maxBumpType === \"minor\") {\n return bumpType === \"major\" || bumpType === \"minor\" ? \"minor\" : \"patch\";\n }\n\n return \"patch\";\n};\n\nconst incVersion = (version: string, bumpType: BumpType): string | null => {\n // handle breaking of 0.x\n if (bumpType === \"major\" && semver.major(version) === 0) {\n bumpType = \"minor\";\n }\n return semver.inc(version, bumpType);\n};\n\nexport const incrementVersion = (\n workspace: Workspace,\n currentVersion: string,\n bumpType: BumpType,\n): string => {\n const newVersion = incVersion(currentVersion, bumpType);\n\n if (!newVersion) {\n throw new UsageError(\n `Could not determine next version for \"${getWorkspaceName(\n workspace,\n )}\" (currentVersion: ${currentVersion}, bumpType: ${bumpType}})`,\n );\n }\n\n return newVersion;\n};\n\n// const createPrerelease = (\n// version: string,\n// prereleaseType: ReleaseType,\n// prereleaseId: string,\n// ) => {\n// return semver.inc(version, prereleaseType, prereleaseId);\n// };\n","import { writeChangelogString } from \"conventional-changelog-writer\";\nimport { parseCommits as createConventionalCommitsParser } from \"conventional-commits-parser\";\nimport type { Commit, ParserStreamOptions } from \"conventional-commits-parser\";\nimport type { PackageJson } from \"type-fest\";\nimport type { ConventionalChangelogConfig } from \"./conventionalCommitConfigUtils.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\n\nexport interface WhatBump {\n level: 0 | 1 | 2;\n reason: string;\n}\nexport type WhatBumpResult = WhatBump | null | undefined;\nexport interface BumperRecommendation extends WhatBump {\n releaseType: \"major\" | \"minor\" | \"patch\";\n commits: Commit[];\n}\nexport interface EmptyBumperRecommendation {\n commits: Commit[];\n}\nexport type BumperRecommendationResult =\n | BumperRecommendation\n | EmptyBumperRecommendation;\n\nexport interface Preset {\n whatBump: (commits: Commit[]) => Promise<WhatBumpResult> | WhatBumpResult;\n tags?: unknown;\n commits?: unknown;\n parser?: ParserStreamOptions;\n}\n\nconst versions: BumperRecommendation[\"releaseType\"][] = [\n \"major\",\n \"minor\",\n \"patch\",\n];\n\nexport const recommendBump = async (\n commits: Parameters<ConventionalChangelogConfig[\"whatBump\"]>[0],\n config: ConventionalChangelogConfig,\n): Promise<Partial<BumperRecommendation>> => {\n const whatBump = config.whatBump;\n if (!whatBump) {\n throw new Error(\"whatBump method is missing in config\");\n }\n const result = { ...(await whatBump(commits)) };\n\n return {\n ...result,\n releaseType: result.level != null ? versions[result.level] : undefined,\n };\n};\n\nexport type Commits = Parameters<ConventionalChangelogConfig[\"whatBump\"]>[0];\n\nexport const generateChangelog = (\n workspace: Workspace,\n pkg: PackageJson,\n config: ConventionalChangelogConfig,\n previousTag: string | null,\n newTag: string | null,\n commits: Commits | undefined,\n date: string,\n // eslint-disable-next-line @typescript-eslint/max-params\n): Promise<string> => {\n if (!newTag) {\n throw new Error(`Missing new tag for package \"${pkg.name ?? \"\"}\"`);\n }\n\n const originUrl =\n typeof pkg.repository === \"string\" ? pkg.repository : pkg.repository?.url;\n const match =\n originUrl &&\n typeof originUrl === \"string\" &&\n /^(?:git@|https?:\\/\\/)(?:([^./:]+(?:\\.com)?)[/:])?([^/:]+)\\/([^./:]+)(?:.git)?/.exec(\n originUrl,\n );\n const [, gitHost, gitAccount, repoName] = match || [\n undefined,\n undefined,\n undefined,\n undefined,\n ];\n\n return writeChangelogString(\n commits ?? [],\n {\n // @ts-expect-error - missing types\n previousTag,\n currentTag: newTag,\n linkCompare: previousTag != null,\n version: pkg.version,\n host: gitHost ? `https://${gitHost}` : undefined,\n owner: gitAccount,\n repository: repoName,\n date,\n },\n // @ts-expect-error - missing types\n config.writer,\n );\n};\n\nexport const createCommitsParser = (config: ConventionalChangelogConfig) => {\n return createConventionalCommitsParser(config.parser);\n};\n","import { loadPreset } from \"conventional-changelog-preset-loader\";\nimport { UsageError } from \"./UsageError.ts\";\nimport type { Preset } from \"./conventionalChangelogUtils.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\n\nexport type ConventionalChangelogConfig = Preset;\n\nexport const loadConventionalCommitConfig = async (\n rootWorkspace: Workspace,\n preset: string,\n): Promise<ConventionalChangelogConfig> => {\n try {\n return await loadPreset<ConventionalChangelogConfig>(preset);\n } catch (error: any) {\n throw new UsageError(\n `Failed to require preset \"${preset}\": ${error.message as string}`,\n );\n }\n};\n","export async function asyncIterableToArray<T>(\n asyncIterable: AsyncIterable<T>,\n): Promise<T[]> {\n const result: T[] = [];\n\n for await (const value of asyncIterable) {\n result.push(value);\n }\n\n return result;\n}\n","import semver from \"semver\";\nimport { UsageError } from \"./UsageError.ts\";\nimport { execCommand, execCommandStreamStdout } from \"./execCommand.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\n\nexport const getGitCurrentBranch = async (\n workspace: Workspace,\n): Promise<string> => {\n const { stdout } = await execCommand(workspace, [\n \"git\",\n \"rev-parse\",\n \"--abbrev-ref\",\n \"HEAD\",\n ]);\n const currentBranch = stdout.trim();\n\n if (currentBranch === \"HEAD\") {\n throw new UsageError(\"HEAD is detached. Please checkout a branch.\");\n }\n\n return currentBranch;\n};\n\nexport const createGitCommit = async (\n workspace: Workspace,\n commitMessage: string,\n): Promise<void> => {\n await execCommand(workspace, [\"git\", \"add\", \"-A\"]);\n\n await execCommand(workspace, [\n \"git\",\n \"commit\",\n \"--no-verify\",\n \"-m\",\n commitMessage,\n ]);\n};\n\nexport const createGitTag = async (\n workspace: Workspace,\n newTag: string,\n): Promise<void> => {\n await execCommand(workspace, [\"git\", \"tag\", newTag, \"-m\", newTag]);\n};\n\nexport const pushCommitsAndTags = async (\n workspace: Workspace,\n gitRemote: string,\n currentBranch: string,\n): Promise<void> => {\n await execCommand(workspace, [\n \"git\",\n \"push\",\n \"--follow-tags\",\n \"--no-verify\",\n \"--atomic\",\n gitRemote,\n currentBranch,\n ]);\n};\n\nexport const isBehindRemote = async (\n workspace: Workspace,\n gitRemote: string,\n currentBranch: string,\n): Promise<boolean> => {\n await execCommand(workspace, [\"git\", \"remote\", \"update\", gitRemote]);\n const { stdout } = await execCommand(workspace, [\n \"git\",\n \"rev-list\",\n \"--left-right\",\n \"--count\",\n `${gitRemote}/${currentBranch}..${currentBranch}`,\n ]);\n\n const [behind] = stdout.split(\"\\t\").map((val) => parseInt(val, 10));\n\n return behind ? behind > 0 : false;\n};\n\nexport const getDirtyFiles = async (workspace: Workspace): Promise<string> => {\n const { stdout: dirtyFiles } = await execCommand(workspace, [\n \"git\",\n \"status\",\n \"--porcelain\",\n ]);\n return dirtyFiles;\n};\n\nconst toArray = <T>(input: T | T[]): T[] =>\n Array.isArray(input) ? input : [input];\n\nexport interface GitTagVersion {\n tag: string;\n version: string;\n}\n\nexport const getGitLatestTagVersion = async (\n workspace: Workspace,\n {\n prefix,\n skipUnstable,\n since,\n from = \"\",\n to = \"HEAD\",\n path,\n }: {\n prefix?: string;\n skipUnstable?: boolean;\n since?: Date | string;\n from?: string;\n to?: string;\n path?: string[] | string;\n } = {},\n): Promise<GitTagVersion | null> => {\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n const tagRegex = /tag:\\s*(.+?)[,)]/gi;\n for await (const chunk of execCommandStreamStdout(workspace, [\n \"git\",\n \"log\",\n \"--no-color\",\n \"--date-order\",\n \"--format=%d\",\n ...(since\n ? [`--since=${since instanceof Date ? since.toISOString() : since}`]\n : []),\n [from, to].filter(Boolean).join(\"..\"),\n ...(path ? [\"--\", ...toArray(path)] : []),\n ])) {\n const trimmed = chunk.trim();\n if (!trimmed) continue;\n const matches = trimmed.matchAll(tagRegex);\n for (const match of matches) {\n const tag = match[1];\n if (!tag) continue;\n if (prefix && !tag.startsWith(prefix)) {\n continue;\n }\n const version = prefix ? tag.slice(prefix.length) : tag;\n if (!semver.valid(version)) {\n continue;\n }\n if (skipUnstable && semver.prerelease(version)) {\n continue;\n }\n return { tag, version };\n }\n }\n\n return null;\n};\n\nconst GIT_COMMIT_SEPARATOR =\n \"------------------------ >8 ------------------------\";\n\nexport const getGitCommits = (\n workspace: Workspace,\n {\n path,\n from = \"\",\n to = \"HEAD\",\n format = \"%B\",\n reverse,\n merges,\n since,\n }: {\n format?: string;\n path?: string[] | string;\n from?: string;\n to?: string;\n reverse?: boolean;\n merges?: boolean;\n since?: Date | string;\n } = {},\n) => {\n return execCommandStreamStdout(\n workspace,\n [\n \"git\",\n \"log\",\n `--format=${format}%n${GIT_COMMIT_SEPARATOR}`,\n ...(since\n ? [`--since=${since instanceof Date ? since.toISOString() : since}`]\n : []),\n ...(reverse ? [\"--reverse\"] : []),\n ...(merges ? [\"--merges\"] : []),\n ...(merges === false ? [\"--no-merges\"] : []),\n [from, to].filter(Boolean).join(\"..\"),\n ...(path ? [\"--\", ...toArray(path)] : []),\n ],\n GIT_COMMIT_SEPARATOR,\n );\n};\n","import { UsageError } from \"./UsageError.ts\";\nimport { execCommandWithInput } from \"./execCommand.ts\";\nimport type { Workspace } from \"./packageUtils.ts\";\n\nexport async function ensureGhCliAvailable(\n workspace: Workspace,\n): Promise<void> {\n const { GH_TOKEN } = process.env;\n\n if (!GH_TOKEN) {\n throw new UsageError('\"GH_TOKEN\" environment variable required');\n }\n\n try {\n // Use existing execCommand helper pattern by spawning gh --version\n // We import execCommand lazily to avoid cycles when utils are used elsewhere\n const { execCommand } = await import(\"./execCommand.ts\");\n await execCommand(workspace, [\"gh\", \"--version\"]);\n } catch {\n throw new UsageError(\n 'The \"gh\" CLI is required. Please install GitHub CLI: https://cli.github.com/',\n );\n }\n}\n\ninterface ParsedGithubUrl {\n username: string;\n reponame: string;\n}\n\nconst githubRegex = /^https?:\\/\\/github.com\\/([^#/]+)\\/([^#/]+?)(?:\\.git)?$/;\nexport const parseGithubRepoUrl = (workspace: Workspace): ParsedGithubUrl => {\n const repository = workspace.pkg.repository;\n\n const url: string | undefined =\n typeof repository === \"string\" ? repository : repository?.url;\n\n if (!url) {\n throw new Error(\n \"No repository URL found in manifest. Please add one and try again. https://docs.npmjs.com/cli/v9/configuring-npm/package-json#repository\",\n );\n }\n const match = githubRegex.exec(url);\n\n if (!match) {\n throw new Error(`Invalid GitHub repository URL: \"${url}\"`);\n }\n const [, username, reponame] = match;\n if (!username || !reponame) {\n throw new Error(`Invalid GitHub repository URL: \"${url}\"`);\n }\n return { username, reponame };\n};\n\nconst extractHostnameFromGheApiUrl = (gheApiUrl: string): string | null => {\n try {\n const url = new URL(gheApiUrl);\n return url.hostname || null;\n } catch {\n // fallback: try to strip protocol and path\n const m = /^https?:\\/\\/([^/]+)/.exec(gheApiUrl);\n return m?.[1] || null;\n }\n};\n\nexport const createGhRelease = async (\n workspace: Workspace,\n opts: {\n parsedRepoUrl: ParsedGithubUrl;\n tag: string;\n title: string; // title is not necessary but slack release bot shows \"undefined\" if not provided\n body: string;\n prerelease: boolean;\n },\n): Promise<void> => {\n const { parsedRepoUrl, tag, title, body, prerelease } = opts;\n\n const { GH_TOKEN, GHE_API_URL } = process.env;\n\n if (!GH_TOKEN) {\n await ensureGhCliAvailable(workspace);\n return;\n }\n\n // Determine hostname for GHE if provided\n const args: string[] = [\n \"release\",\n \"create\",\n tag,\n \"--title\",\n title,\n \"--repo\",\n `${parsedRepoUrl.username}/${parsedRepoUrl.reponame}`,\n ];\n\n if (prerelease) {\n args.push(\"--prerelease\");\n }\n\n if (GHE_API_URL) {\n const hostname = extractHostnameFromGheApiUrl(GHE_API_URL);\n if (hostname) {\n args.push(\"--hostname\", hostname);\n }\n }\n\n try {\n await execCommandWithInput(\n workspace,\n [\"gh\", ...args, \"--notes-file\", \"-\"],\n body,\n );\n } catch (error) {\n // execCommandWithInput will include stdout/stderr in its error message when strict\n throw new Error(\n `gh release create failed: ${String(error instanceof Error ? error.message : error)}`,\n { cause: error },\n );\n }\n};\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport fs, { glob } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type { PackageJson } from \"type-fest\";\n\nexport interface Workspace {\n readonly cwd: string;\n readonly relativeCwd?: string;\n readonly pkg: PackageJson;\n}\n\nexport interface ProjectWorkspace {\n readonly root: Workspace;\n readonly children: Map<string, Workspace>;\n}\n\nasync function mapWorkspacesFromPkg({\n cwd,\n pkg,\n}: {\n cwd: string;\n pkg: PackageJson;\n}): Promise<Map<string, Workspace>> {\n const workspacesPatterns: string[] = Array.isArray(pkg.workspaces)\n ? pkg.workspaces\n : pkg.workspaces?.packages || [];\n\n const map = new Map<string, Workspace>();\n\n for (const pattern of workspacesPatterns) {\n const normalized = pattern.endsWith(\"package.json\")\n ? pattern\n : `${pattern.replace(/\\/*$/, \"\")}/package.json`;\n\n const files = glob(normalized, { cwd });\n for await (const file of files) {\n const packageDir = path.join(cwd, path.dirname(file));\n const packageJson: PackageJson = await readPkg(packageDir);\n const workspaceName = packageJson.name || path.basename(packageDir);\n if (map.has(workspaceName)) {\n const existingWorkspace = map.get(workspaceName);\n if (existingWorkspace && existingWorkspace.cwd !== packageDir) {\n throw new Error(\n `must not have multiple workspaces with the same name\\npackage '${workspaceName}' has conflicts in the following paths:\\n ${existingWorkspace.cwd}\\n ${packageDir}`,\n );\n }\n // if it's the same package dir, ignore duplicate match\n if (existingWorkspace?.cwd === packageDir) continue;\n }\n map.set(workspaceName, { cwd: packageDir, pkg: packageJson });\n }\n }\n return map;\n}\n\nexport const createProjectWorkspace = async (\n root: Workspace,\n): Promise<ProjectWorkspace> => {\n const map: Map<string, Workspace> = root.pkg.workspaces\n ? await mapWorkspacesFromPkg({ cwd: root.cwd, pkg: root.pkg })\n : new Map();\n\n const children = new Map<string, Workspace>(\n [...map.entries()].map(([packageName, workspace]) => {\n const w: Workspace = {\n ...workspace,\n relativeCwd: path.relative(root.cwd, workspace.cwd),\n };\n return [packageName, w] as const;\n }),\n );\n return { root, children };\n};\n\nconst isAccessible = (path: string): Promise<boolean> =>\n fs.access(path).then(\n () => true,\n () => false,\n );\n\nexport const findRootWorkspace = async (\n cwd: string,\n): Promise<Workspace | null> => {\n let currentPath = cwd;\n do {\n const isRootIfOneOfThesePathsExists = await Promise.all([\n isAccessible(path.join(currentPath, \".yarnrc.yml\")),\n isAccessible(path.join(currentPath, \"yarn.lock\")),\n isAccessible(path.join(currentPath, \"bun.lock\")),\n ]);\n if (isRootIfOneOfThesePathsExists.some(Boolean)) {\n return createWorkspace(currentPath);\n }\n currentPath = path.dirname(currentPath);\n } while (currentPath && currentPath !== \"/\");\n return null;\n};\n\nconst getPackageJsonPath = (cwd: string): string =>\n path.join(cwd, \"package.json\");\n\nexport const createWorkspace = async (path: string): Promise<Workspace> => {\n const pkg = await readPkg(path);\n return { cwd: path, pkg };\n};\n\nexport async function writePkg(workspace: Workspace): Promise<void> {\n const string = `${JSON.stringify(workspace.pkg, null, 2)}\\n`;\n await fs.writeFile(getPackageJsonPath(workspace.cwd), string, \"utf8\");\n}\n\nexport async function readPkg(cwd: string): Promise<PackageJson> {\n const packagePath = getPackageJsonPath(cwd);\n // eslint-disable-next-line @typescript-eslint/use-unknown-in-catch-callback-variable\n const pkg = await fs.readFile(packagePath, \"utf8\").catch((error: Error) => {\n throw new Error(\n `Failed to read \"${packagePath}\": ${error instanceof Error ? error.message : String(error)}`,\n );\n });\n try {\n return JSON.parse(pkg);\n } catch (error: unknown) {\n throw new Error(\n `Failed to parse \"${packagePath}\": ${error instanceof Error ? error.message : String(error)}`,\n { cause: error },\n );\n }\n}\n","import fs from \"node:fs/promises\";\n\nconst COMMIT_GUIDELINE =\n \"See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.\";\n\nconst CHANGELOG_HEADER = [\n \"# Changelog\",\n \"\",\n \"All notable changes to this project will be documented in this file.\",\n COMMIT_GUIDELINE,\n \"\",\n].join(\"\\n\");\n\nexport const updateChangelogFile = async (\n versionChangelogContent: string,\n tagPrefix: string,\n file = \"CHANGELOG.md\",\n): Promise<void> => {\n const START_OF_LAST_RELEASE_PATTERN = new RegExp(\n `(^#+ \\\\[?(?:${tagPrefix})?\\\\d+\\\\.\\\\d+\\\\.\\\\d+|<a name=)`,\n \"m\",\n );\n\n let oldContent = \"\";\n\n try {\n oldContent = await fs.readFile(file, \"utf8\");\n const oldContentStart = oldContent.search(START_OF_LAST_RELEASE_PATTERN);\n // find the position of the last release and remove header:\n if (oldContentStart !== -1) {\n oldContent = oldContent.slice(Math.max(0, oldContentStart));\n }\n } catch {}\n\n await fs.writeFile(\n file,\n `${CHANGELOG_HEADER}\\n${versionChangelogContent}\\n${oldContent}`,\n );\n};\n","/* eslint-disable complexity */\n\nimport { Option, program } from \"commander\";\nimport { LoggerCLI } from \"nightingale\";\nimport { satisfies } from \"semver\";\nimport {\n autoDetectPackageManager,\n getPackageManager,\n} from \"../pm/PackageManager.ts\";\nimport { UsageError } from \"../utils/UsageError.ts\";\nimport type { BumpType } from \"../utils/bumpTypeUtils.ts\";\nimport {\n calcBumpRange,\n calcBumpType,\n getHighestBumpType,\n incrementVersion,\n} from \"../utils/bumpTypeUtils.ts\";\nimport {\n createCommitsParser,\n generateChangelog,\n recommendBump,\n} from \"../utils/conventionalChangelogUtils.ts\";\nimport { loadConventionalCommitConfig } from \"../utils/conventionalCommitConfigUtils.ts\";\nimport { asyncIterableToArray } from \"../utils/generatorUtils.ts\";\nimport type { GitTagVersion } from \"../utils/gitUtils.ts\";\nimport {\n createGitCommit,\n createGitTag,\n getDirtyFiles,\n getGitCommits,\n getGitCurrentBranch,\n getGitLatestTagVersion,\n isBehindRemote,\n pushCommitsAndTags,\n} from \"../utils/gitUtils.ts\";\nimport {\n createGhRelease,\n ensureGhCliAvailable,\n parseGithubRepoUrl,\n} from \"../utils/githubUtils.ts\";\nimport {\n PackageDependencyDescriptorUtils,\n PackageDescriptorNameUtils,\n} from \"../utils/packageDependenciesUtils.ts\";\nimport type { PackageDependencyDescriptor } from \"../utils/packageDependenciesUtils.ts\";\nimport type { Workspace } from \"../utils/packageUtils.ts\";\nimport {\n createProjectWorkspace,\n createWorkspace,\n findRootWorkspace,\n writePkg,\n} from \"../utils/packageUtils.ts\";\nimport { updateChangelogFile } from \"../utils/updateChangelog.ts\";\nimport type { DependencyType } from \"../utils/workspaceUtils.ts\";\nimport {\n buildDependenciesMaps,\n buildTopologicalOrderBatches,\n getWorkspaceName,\n} from \"../utils/workspaceUtils.ts\";\n\nexport interface VersionCommandOptions {\n cwd: string;\n includesRoot: boolean;\n dryRun: boolean;\n force?: \"major\" | \"minor\" | \"patch\";\n prerelease?: string;\n json: boolean;\n preset: string;\n tagVersionPrefix: string;\n changelog: string;\n commitMessage: string;\n createRelease: boolean;\n bumpDependentsHighestAs: \"major\" | \"minor\" | \"patch\";\n alwaysBumpPeerDependencies: boolean;\n gitRemote: string;\n ignoreChanges?: string;\n verbose?: boolean;\n cwdIsRoot?: boolean;\n packageManager?: \"bun\" | \"yarn\";\n publish?: boolean;\n publishProvenance?: boolean;\n}\n\ninterface BumpableWorkspace {\n workspace: Workspace;\n previousTag?: string;\n workspaceName: string;\n isRoot: boolean;\n version: string;\n}\n\ninterface ChangedWorkspace {\n bumpReason?: string;\n bumpType: BumpType;\n}\n\ninterface NoVersionToUpdateWorkspace {\n // for legacy configuration not using workspaces ranges https://yarnpkg.com/features/workspaces#workspace-ranges-workspace\n dependenciesToBump: [DependencyType, PackageDependencyDescriptor, string][];\n}\n\ninterface BumpedWorkspace extends ChangedWorkspace, NoVersionToUpdateWorkspace {\n bumpForDependenciesReasons?: string[];\n hasChanged: boolean;\n currentVersion: string;\n newVersion: string;\n newTag: string | null;\n}\n\nconst todayInYYYYMMDD = (): string => {\n // sv-SEis used for yyyy-mm-dd format\n const dateFormatter = Intl.DateTimeFormat(\"sv-SE\", {\n timeZone: \"UTC\",\n });\n return dateFormatter.format(new Date());\n};\n\nexport const versionCommandAction = async (\n options: VersionCommandOptions,\n { logger = new LoggerCLI(\"@pob/version\", { json: options.json }) } = {},\n): Promise<void> => {\n const rootWorkspace = await (options.cwdIsRoot\n ? createWorkspace(options.cwd)\n : findRootWorkspace(options.cwd));\n\n if (!rootWorkspace) {\n throw new UsageError(\"Could not find root workspace from this path.\");\n }\n\n const packageManager = options.packageManager\n ? getPackageManager(rootWorkspace, options.packageManager)\n : autoDetectPackageManager(rootWorkspace);\n\n const project = await createProjectWorkspace(rootWorkspace);\n\n if (!options.dryRun) {\n const dirtyFiles = await getDirtyFiles(project.root);\n if (dirtyFiles) {\n throw new Error(\n `Dirty Files:\\n${dirtyFiles}\\n\\nThere are uncommitted changes in the git repository. Please commit or stash them first.`,\n );\n }\n }\n\n const rootWorkspaceChildren = [...project.children.values()];\n let rootNewVersion = \"\";\n let rootNewTag = \"\";\n const isMonorepo = rootWorkspaceChildren.length > 0;\n const isMonorepoVersionIndependent = isMonorepo && !rootWorkspace.pkg.version;\n const workspaces =\n !(isMonorepo && !rootWorkspaceChildren) || options.includesRoot\n ? [rootWorkspace, ...rootWorkspaceChildren]\n : rootWorkspaceChildren;\n\n if (options.prerelease) {\n throw new UsageError(\"--prerelease is not supported yet.\");\n }\n if (options.ignoreChanges) {\n throw new UsageError(\"--ignore-changes is not supported yet.\");\n }\n\n const [conventionalCommitConfig, parsedRepoUrl, gitCurrentBranch] =\n await Promise.all([\n loadConventionalCommitConfig(rootWorkspace, options.preset),\n options.createRelease\n ? parseGithubRepoUrl(rootWorkspace)\n : Promise.resolve(null),\n getGitCurrentBranch(rootWorkspace),\n // ensure gh CLI is available early to fail fast if necessary\n options.createRelease\n ? ensureGhCliAvailable(rootWorkspace)\n : Promise.resolve(undefined),\n ]);\n\n const rootPreviousVersionTagPromise =\n options.force || isMonorepoVersionIndependent\n ? null\n : getGitLatestTagVersion(rootWorkspace, {\n prefix: options.tagVersionPrefix,\n skipUnstable: true,\n });\n\n const buildTagName = (workspace: Workspace, version: string): string =>\n `${\n isMonorepo && workspace !== rootWorkspace\n ? `${getWorkspaceName(workspace)}@`\n : options.tagVersionPrefix\n }${version}`;\n\n const changedWorkspaces = new Map<Workspace, ChangedWorkspace>();\n const dependenciesMap = isMonorepo ? buildDependenciesMaps(project) : null;\n\n const bumpableWorkspaces: BumpableWorkspace[] = [];\n\n logger.group(\n options.force\n ? \"Check all workspaces (force option)\"\n : \"Finding changed workspaces\",\n () => {\n // check workspaces and create bumpableWorkspaces\n\n for (const workspace of workspaces) {\n const workspaceName = getWorkspaceName(workspace);\n const isRoot = workspace === rootWorkspace;\n if (isRoot && isMonorepo && isMonorepoVersionIndependent) continue;\n\n const version = workspace.pkg.version;\n\n if (!version || version === \"0.0.0\") {\n if (\n (isRoot || isMonorepoVersionIndependent) &&\n (!isMonorepo || !isMonorepoVersionIndependent)\n ) {\n throw new UsageError(\n 'package.json has no version in its manifest. For the first release, set to \"1.0.0-pre\" or \"0.1.0-pre\".',\n );\n }\n\n logger.info(`${workspaceName}: skipped (no version)`);\n continue;\n }\n\n bumpableWorkspaces.push({\n workspace,\n workspaceName,\n isRoot,\n version,\n });\n }\n\n if (bumpableWorkspaces.length > 0) {\n logger.info(\"Found bumpable workspaces\", {\n count: bumpableWorkspaces.length,\n });\n }\n },\n );\n\n const previousTagVersionByWorkspace = new Map<\n Workspace,\n GitTagVersion | null\n >(\n await Promise.all(\n bumpableWorkspaces.map(async ({ workspace, workspaceName, isRoot }) => {\n const packageOption =\n isMonorepo && isMonorepoVersionIndependent\n ? workspaceName\n : undefined;\n\n const tagPrefix = packageOption\n ? `${packageOption}@`\n : options.tagVersionPrefix;\n\n const previousTagAndVersion = await (isRoot ||\n !isMonorepoVersionIndependent\n ? rootPreviousVersionTagPromise\n : getGitLatestTagVersion(rootWorkspace, {\n path: workspace.relativeCwd,\n prefix: tagPrefix,\n skipUnstable: true,\n }));\n\n return [workspace, previousTagAndVersion] as const;\n }),\n ),\n );\n\n if (options.dryRun) {\n logger.info(\"Previous tags\", {\n previousTagByWorkspace: Object.fromEntries(\n [...previousTagVersionByWorkspace.entries()].map(\n ([workspace, previousTagVersion]) => [\n getWorkspaceName(workspace),\n previousTagVersion?.tag,\n ],\n ),\n ),\n });\n }\n\n const parseCommits = createCommitsParser(conventionalCommitConfig);\n\n const commitsByWorkspace = options.force\n ? undefined\n : new Map(\n await Promise.all(\n bumpableWorkspaces.map(async ({ workspace }) => {\n const previousTagVersion =\n previousTagVersionByWorkspace.get(workspace);\n\n const commits = await asyncIterableToArray(\n parseCommits(\n getGitCommits(rootWorkspace, {\n path: workspace.relativeCwd,\n from: previousTagVersion?.tag || undefined,\n }),\n ),\n );\n\n return [workspace, commits] as const;\n }),\n ),\n );\n\n await logger.group(\"Finding changed workspaces\", async () => {\n for (const { workspace, workspaceName } of bumpableWorkspaces) {\n let bumpType: BumpType | null = null;\n let bumpReason: string | undefined;\n\n if (options.force) {\n bumpType = options.force;\n bumpReason = \"forced by --force flag\";\n } else {\n const commits = commitsByWorkspace?.get(workspace);\n\n // No changes found for this package\n if (!commits || commits.length === 0) {\n logger.info(`${workspaceName}: skipped (no changes)`);\n continue;\n }\n\n const { releaseType, reason } = await recommendBump(\n commits,\n conventionalCommitConfig,\n );\n bumpReason = reason;\n\n if (releaseType) {\n bumpType = releaseType 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 (\n dependencyDescriptor.selector === newRange &&\n newRange !== \"workspace:*\"\n ) {\n continue;\n }\n\n dependenciesToBump.push([\n dependencyType,\n dependencyDescriptor,\n newRange,\n ]);\n\n bumpType = getHighestBumpType([\n bumpType ?? \"patch\",\n calcBumpType(\n dependencyBumpedWorkspace.bumpType,\n options.bumpDependentsHighestAs,\n ),\n ]);\n\n bumpReasons.push(\n `Version bump for dependency: ${PackageDescriptorNameUtils.stringify(dependencyDescriptor.name)}`,\n );\n }\n }\n\n const workspaceName = getWorkspaceName(workspace);\n if (!currentVersion) {\n logger.info(`${workspaceName}: skipped (no version)`);\n if (workspace !== rootWorkspace) {\n noVersionToUpdateWorkspaces.set(workspace, {\n dependenciesToBump,\n });\n }\n } else if (!bumpType) {\n logger.info(\n `${workspaceName}: skipped (${\n changedWorkspace\n ? `no bump recommended by ${options.preset}`\n : \"no changes\"\n })`,\n );\n } else {\n const newVersion = incrementVersion(\n workspace,\n currentVersion,\n bumpType,\n );\n\n const tagName = buildTagName(workspace, newVersion);\n\n if (workspace === rootWorkspace) {\n rootNewVersion = newVersion;\n rootNewTag = tagName;\n }\n\n if (workspace !== rootWorkspace || !isMonorepo) {\n const bumpReason = bumpReasons.join(\"\\n\");\n bumpedWorkspaces.set(workspace, {\n currentVersion,\n bumpType,\n bumpReason,\n bumpForDependenciesReasons: changedWorkspace\n ? bumpReasons.slice(1)\n : bumpReasons,\n newVersion,\n newTag: tagName,\n hasChanged: changedWorkspace !== undefined,\n dependenciesToBump,\n });\n\n logger.info(\n `${workspaceName}: ${currentVersion} -> ${\n !isMonorepo || isMonorepoVersionIndependent\n ? newVersion\n : \"bump\"\n } (${bumpReason.replaceAll(\"\\n\", \" ; \")})`,\n );\n // TODO Json only:\n // logger.info({\n // cwd: npath.fromPortablePath(workspace.cwd),\n // ident: workspaceName,\n // oldVersion: currentVersion,\n // ...(isMonorepoVersionIndependent ? { newVersion } : {}),\n // bumpType,\n // bumpReasons,\n // });\n }\n }\n }\n }\n });\n\n // TODO ask for confirmation\n // if (!this.yes) {\n // }\n\n // TODO do this entire phase here, not override for not independent only\n if (isMonorepo && !isMonorepoVersionIndependent) {\n const currentVersion = rootWorkspace.pkg.version!;\n const highestBumpType = getHighestBumpType(\n [...bumpedWorkspaces.values()].map(({ bumpType }) => bumpType),\n );\n const newVersion = incrementVersion(\n rootWorkspace,\n currentVersion,\n highestBumpType,\n );\n rootNewVersion = newVersion;\n rootNewTag = buildTagName(rootWorkspace, newVersion);\n\n [...bumpedWorkspaces.entries()].forEach(([workspace, bumpedWorkspace]) => {\n const isRoot = workspace === rootWorkspace;\n if (isRoot) {\n throw new Error(\"Unexpected root found in bumped workspaces\");\n }\n bumpedWorkspace.bumpType = highestBumpType;\n bumpedWorkspace.newVersion = newVersion;\n bumpedWorkspace.newTag = null;\n });\n\n [\n ...bumpedWorkspaces.entries(),\n ...noVersionToUpdateWorkspaces.entries(),\n ].forEach(([workspace, { dependenciesToBump }]) => {\n dependenciesToBump.forEach((dependencyToBump) => {\n dependencyToBump[2] = calcBumpRange(\n workspace,\n dependencyToBump[1].selector,\n newVersion,\n );\n });\n });\n\n bumpedWorkspaces.set(rootWorkspace, {\n currentVersion,\n bumpType: highestBumpType,\n hasChanged: true,\n newVersion: rootNewVersion,\n newTag: rootNewTag,\n dependenciesToBump: [],\n });\n\n logger.info(\n `${currentVersion} -> ${newVersion}`,\n // TODO Json only:\n // {\n // oldVersion: currentVersion,\n // newVersion, },\n );\n }\n\n await logger.group(\"Applying changes\", async () => {\n // Update lockfile ; must be done to make sure preversion script can be ran\n\n if (!options.dryRun) {\n if (packageManager.installOnPackageContentChange) {\n logger.info(`${getWorkspaceName(rootWorkspace)}: Running install`);\n await packageManager.installOnPackageContentChange(rootWorkspace);\n }\n\n logger.info(\"Lifecycle script: preversion\");\n\n if (\n isMonorepoVersionIndependent &&\n rootWorkspace.pkg.scripts?.preversion\n ) {\n await packageManager.runScript(rootWorkspace, \"preversion\");\n }\n\n // lifecycle: preversion\n for (const workspace of bumpedWorkspaces.keys()) {\n if (workspace.pkg.scripts?.preversion) {\n await packageManager.runScript(workspace, \"preversion\");\n }\n }\n\n logger.info(\"Modifying versions in package.json\");\n // update versions\n\n await Promise.all(\n [...bumpedWorkspaces.entries()].map(\n ([workspace, { newVersion, dependenciesToBump }]) => {\n workspace.pkg.version = newVersion;\n\n for (const [\n dependencyType,\n dependencyDescriptor,\n dependencyNewRange,\n ] of dependenciesToBump) {\n const newDescriptor = PackageDependencyDescriptorUtils.make(\n dependencyDescriptor,\n dependencyNewRange,\n );\n const [key, newValue] =\n PackageDependencyDescriptorUtils.stringify(newDescriptor);\n workspace.pkg[dependencyType]![key] = newValue;\n }\n\n return writePkg(workspace);\n },\n ),\n );\n\n if (packageManager.installOnPackageContentChange) {\n // Update lockfile ; must be done before running again lifecycle scripts\n logger.info(`${getWorkspaceName(rootWorkspace)}: Running install`);\n await packageManager.installOnPackageContentChange(rootWorkspace);\n }\n\n // lifecycle: version\n logger.info(\"Lifecycle script: version\");\n for (const workspace of bumpedWorkspaces.keys()) {\n if (workspace.pkg.scripts?.version) {\n await packageManager.runScript(workspace, \"version\");\n }\n }\n }\n\n if (isMonorepoVersionIndependent && rootWorkspace.pkg.scripts?.version) {\n await packageManager.runScript(rootWorkspace, \"version\");\n }\n });\n\n const changelogs = new Map<Workspace, string>();\n\n await Promise.all(\n [...bumpedWorkspaces.entries()].map(\n async ([\n workspace,\n { newTag, hasChanged, bumpReason, bumpForDependenciesReasons },\n ]) => {\n // const workspaceRelativePath =\n // rootWorkspace === workspace\n // ? undefined\n // : path.relative(rootWorkspace.cwd, workspace.cwd);\n\n const commits = commitsByWorkspace?.get(workspace);\n\n let changelog = await generateChangelog(\n rootWorkspace,\n workspace.pkg,\n conventionalCommitConfig,\n previousTagVersionByWorkspace.get(workspace)?.tag || null,\n isMonorepoVersionIndependent ? newTag : rootNewTag,\n commits,\n todayInYYYYMMDD(),\n // {\n // path: workspaceRelativePath,\n // previousTag: previousTagByWorkspace.get(workspace) || undefined,\n // verbose: options.verbose,\n // tagPrefix: options.tagVersionPrefix,\n // lernaPackage:\n // rootWorkspace === workspace\n // ? undefined\n // : getWorkspaceName(workspace),\n // },\n );\n\n if (bumpForDependenciesReasons && workspace !== rootWorkspace) {\n if (bumpForDependenciesReasons.length > 0) {\n changelog += `${!changelog.endsWith(\"\\n\\n\") ? \"\\n\" : \"\"}${bumpForDependenciesReasons.join(\"\\n\")}\\n\\n`;\n }\n }\n\n if (changelog.slice(changelog.indexOf(\"\\n\")).trim().length === 0) {\n changelog += `${!changelog.endsWith(\"\\n\\n\") ? \"\\n\" : \"\"}Note: no notable changes\\n\\n`;\n }\n\n if (!changelog && rootWorkspace === workspace) {\n throw new Error(\"No changelog found for root workspace\");\n }\n\n changelogs.set(workspace, changelog);\n\n if (options.changelog) {\n if (options.dryRun) {\n logger.info(\n `${getWorkspaceName(workspace)}: ${\n options.changelog\n }\\n${changelog}`,\n );\n } else {\n await updateChangelogFile(\n changelog,\n options.tagVersionPrefix,\n `${workspace.cwd}/${options.changelog}`,\n );\n }\n }\n },\n ),\n );\n\n if (!options.dryRun) {\n logger.separator();\n\n if (packageManager.installOnPackageContentChange) {\n // install to update versions in lock file\n logger.info(`${getWorkspaceName(rootWorkspace)}: Running install`);\n await packageManager.installOnPackageContentChange(rootWorkspace);\n }\n\n logger.separator();\n\n const changedFiles = await getDirtyFiles(project.root);\n\n if (changedFiles) {\n logger.info(\"Commit, tag and push\", {\n changedFiles,\n });\n\n const tagsSet = new Set<string>(\n [...bumpedWorkspaces.values()]\n .map(({ newTag }) => newTag)\n .filter((newTag) => newTag !== null),\n );\n\n const tagsInCommitMessage = [...tagsSet]\n .map((tag) => `- ${tag}`)\n .join(\"\\n\");\n const message = options.commitMessage\n .replace(/\\\\n/g, \"\\n\")\n .replace(\n /%a/g,\n isMonorepoVersionIndependent\n ? `\\n\\n${tagsInCommitMessage}`\n : rootNewVersion,\n )\n .replace(/%s/g, rootNewTag)\n .replace(/%v/g, rootNewVersion)\n .replace(/%t/g, tagsInCommitMessage);\n\n await createGitCommit(rootWorkspace, message);\n\n for (const [workspace, { newTag }] of bumpedWorkspaces.entries()) {\n if (newTag === null) continue;\n await createGitTag(workspace, newTag);\n }\n\n if (\n await isBehindRemote(rootWorkspace, options.gitRemote, gitCurrentBranch)\n ) {\n logger.error(\"Remote is ahead, aborting\");\n // eslint-disable-next-line unicorn/no-process-exit\n process.exit(1);\n }\n\n await pushCommitsAndTags(\n rootWorkspace,\n options.gitRemote,\n gitCurrentBranch,\n );\n\n // run postversion\n if (rootWorkspace.pkg.scripts?.postversion) {\n logger.info(\"Lifecycle script: postversion\");\n await packageManager.runScript(rootWorkspace, \"postversion\");\n }\n\n // TODO open github PR\n\n if (options.createRelease && parsedRepoUrl) {\n logger.info(\"Create git release\");\n\n await Promise.all(\n [...bumpedWorkspaces.entries()].map(([workspace, { newTag }]) => {\n if (newTag === null) return Promise.resolve(undefined);\n const changelog = changelogs.get(workspace);\n if (!changelog) {\n logger.warn(\n `No changelog found for workspace: ${getWorkspaceName(\n workspace,\n )}`,\n );\n return Promise.resolve(undefined);\n }\n return createGhRelease(workspace, {\n parsedRepoUrl,\n title: newTag,\n tag: newTag,\n body: changelog,\n prerelease: !!options.prerelease,\n });\n }),\n );\n }\n\n if (!options.publish) {\n return;\n }\n await logger.group(\"Publishing packages\", async () => {\n if (packageManager.publishWorkspaces) {\n await packageManager.publishWorkspaces(rootWorkspace, {\n provenance: options.publishProvenance,\n });\n } else {\n for (const [workspace] of bumpedWorkspaces.entries()) {\n if (workspace.pkg.private) {\n logger.info(\n `Skipping private workspace ${getWorkspaceName(workspace)}`,\n );\n continue;\n }\n\n logger.info(`Publishing ${getWorkspaceName(workspace)}`);\n await packageManager.publish(workspace, {\n provenance: options.publishProvenance,\n });\n }\n }\n });\n } else {\n logger.warn(\"No changes made. Nothing to commit.\");\n }\n }\n};\n\nexport const Defaults: VersionCommandOptions = {\n cwd: process.cwd(),\n includesRoot: false,\n dryRun: false,\n json: false,\n preset: \"conventional-changelog-conventionalcommits\",\n tagVersionPrefix: \"v\",\n changelog: \"CHANGELOG.md\",\n commitMessage: \"chore: release %a\",\n createRelease: false,\n bumpDependentsHighestAs: \"major\",\n alwaysBumpPeerDependencies: false,\n gitRemote: \"origin\",\n verbose: false,\n publish: false,\n publishProvenance: false,\n};\n\nexport default program\n .command(\"version\", { isDefault: true })\n .usage(\"Bump package version using conventional commit\")\n .addOption(\n new Option(\"--includes-root\", \"Release root workspace [untested]\").default(\n Defaults.includesRoot,\n ),\n )\n .addOption(new Option(\"--cwd\", \"working directory\").default(process.cwd()))\n .addOption(\n new Option(\n \"--dry-run\",\n \"Print the versions without actually generating the package archive\",\n ).default(Defaults.dryRun),\n )\n .addOption(new Option(\"-v,--verbose\").default(Defaults.verbose))\n .addOption(\n new Option(\"--force <type>\", \"Specify the release type\").choices([\n \"major\",\n \"minor\",\n \"patch\",\n ]),\n )\n .addOption(\n new Option(\n \"--prerelease [releaseType]\",\n \"Add a prerelease identifier to new versions\",\n ),\n )\n .addOption(\n new Option(\n \"--preset <presetName>\",\n \"Conventional Changelog preset to require. Defaults to conventional-changelog-conventionalcommits.\",\n ).default(\"conventional-changelog-conventionalcommits\"),\n )\n .addOption(\n new Option(\"--tag-version-prefix <prefix>\", \"Tag version prefix\").default(\n Defaults.tagVersionPrefix,\n ),\n )\n .addOption(\n new Option(\n \"--changelog <path>\",\n \"Changelog path. Default to CHANGELOG.md.\",\n ).default(Defaults.changelog),\n )\n .addOption(\n new Option(\n \"-m,--commit-message <message>\",\n 'Commit message. Default to \"chore: release %a\". You can use %v for the version, %s for the version with prefix, %t to list tags, %a for auto best display.',\n ).default(Defaults.commitMessage),\n )\n .addOption(\n new Option(\"--create-release <type>\", \"Create a release\").choices([\n \"github\",\n ]),\n )\n .addOption(\n new Option(\n \"--bump-dependents-highest-as <type>\",\n \"Bump dependents highest version as major, minor or patch\",\n )\n .choices([\"major\", \"minor\", \"patch\"])\n .default(Defaults.bumpDependentsHighestAs),\n )\n .addOption(\n new Option(\n \"--always-bump-peer-dependencies\",\n \"Always bump peer dependencies. Default to bumping only if the version doesn't satisfies the peer dependency range.\",\n ).default(Defaults.alwaysBumpPeerDependencies),\n )\n .addOption(\n new Option(\n \"--git-remote <remote-name>\",\n \"Git remote to push commits and tags to\",\n ).default(Defaults.gitRemote),\n )\n .addOption(\n new Option(\n \"--ignore-changes <glob>\",\n 'Ignore changes in files matching the glob. Example: \"**/*.test.js\"',\n ),\n )\n .addOption(new Option(\"--json\", \"Logger json\"))\n .addOption(\n new Option(\n \"--package-manager <manager>\",\n \"Specify the package manager to use (bun or yarn). Autodetected if not specified.\",\n ).choices([\"bun\", \"yarn\"]),\n )\n .addOption(new Option(\"--publish\", \"Publish after versioning\").default(false))\n .addOption(\n new Option(\n \"--publish-provenance\",\n \"Generate provenance attestation when publishing (if supported by package manager)\",\n ).default(false),\n )\n .action((options) => versionCommandAction(options));\n","import fs from \"node:fs\";\nimport { program } from \"commander\";\n\nimport \"./commands/version.ts\";\n\n// relative to dist directory\nconst pkg = JSON.parse(\n // eslint-disable-next-line unicorn/prefer-json-parse-buffer\n fs.readFileSync(new URL(\"../package.json\", import.meta.url), \"utf8\"),\n);\n\nprogram.name(pkg.name).description(pkg.description).version(pkg.version);\nprogram.parse();\n"],"names":["chunk","selector","createConventionalCommitsParser","path","fs"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pob/version",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "simple versioning using conventional commits",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"semantic-release",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"homepage": "https://github.com/christophehurpeau/pob",
|
|
21
21
|
"type": "module",
|
|
22
22
|
"engines": {
|
|
23
|
-
"node": ">=
|
|
23
|
+
"node": ">=24.0.0"
|
|
24
24
|
},
|
|
25
25
|
"bin": {
|
|
26
26
|
"pob-version": "./dist/index-node.mjs"
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"clean": "yarn clean:build",
|
|
49
49
|
"clean:build": "pob-esbuild-clean-out dist",
|
|
50
50
|
"lint": "yarn run lint:eslint",
|
|
51
|
-
"lint:eslint": "yarn '../..' run eslint --quiet '@pob/version'",
|
|
51
|
+
"lint:eslint": "yarn ''../..'' run eslint --quiet '@pob/version'",
|
|
52
52
|
"start": "yarn clean:build && rollup --config rollup.config.mjs --watch",
|
|
53
53
|
"test": "yarn '../..' run test -- '@pob/version'"
|
|
54
54
|
},
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"envs": [
|
|
61
61
|
{
|
|
62
62
|
"target": "node",
|
|
63
|
-
"version": "
|
|
63
|
+
"version": "24",
|
|
64
64
|
"omitVersionInFileName": true,
|
|
65
65
|
"executable": true
|
|
66
66
|
}
|
|
@@ -78,8 +78,8 @@
|
|
|
78
78
|
"semver": "7.7.4"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
|
-
"@pob/rollup-esbuild": "8.
|
|
82
|
-
"@types/node": "
|
|
81
|
+
"@pob/rollup-esbuild": "8.2.0",
|
|
82
|
+
"@types/node": "24.12.2",
|
|
83
83
|
"@types/semver": "7.7.1",
|
|
84
84
|
"type-fest": "5.5.0",
|
|
85
85
|
"typescript": "5.9.3"
|
package/src/commands/version.ts
CHANGED
package/src/utils/githubUtils.ts
CHANGED
|
@@ -68,11 +68,12 @@ export const createGhRelease = async (
|
|
|
68
68
|
opts: {
|
|
69
69
|
parsedRepoUrl: ParsedGithubUrl;
|
|
70
70
|
tag: string;
|
|
71
|
+
title: string; // title is not necessary but slack release bot shows "undefined" if not provided
|
|
71
72
|
body: string;
|
|
72
73
|
prerelease: boolean;
|
|
73
74
|
},
|
|
74
75
|
): Promise<void> => {
|
|
75
|
-
const { parsedRepoUrl, tag, body, prerelease } = opts;
|
|
76
|
+
const { parsedRepoUrl, tag, title, body, prerelease } = opts;
|
|
76
77
|
|
|
77
78
|
const { GH_TOKEN, GHE_API_URL } = process.env;
|
|
78
79
|
|
|
@@ -86,6 +87,8 @@ export const createGhRelease = async (
|
|
|
86
87
|
"release",
|
|
87
88
|
"create",
|
|
88
89
|
tag,
|
|
90
|
+
"--title",
|
|
91
|
+
title,
|
|
89
92
|
"--repo",
|
|
90
93
|
`${parsedRepoUrl.username}/${parsedRepoUrl.reponame}`,
|
|
91
94
|
];
|