@qualcomm-ui/changesets-cli 1.2.0 → 2.0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","names":[],"sources":["../src/publishable-packages.ts","../src/check-versions.ts","../src/consolidate-changelogs.ts","../src/create-github-releases.ts","../src/generate-release-notes.ts","../src/utils.ts","../src/main.ts","../src/update-jsdoc-since-tags.ts","../src/version-bump.ts","../src/cli.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {getPackages} from \"@manypkg/get-packages\"\nimport {readFile} from \"node:fs/promises\"\nimport {join, resolve} from \"node:path\"\n\nconst DEFAULT_CONFIG_LOCATION = join(\".changeset\", \"config.json\")\n\n/**\n * Retrieves all packages in the monorepo that should be published.\n * Filters out packages marked as private and ignored packages.\n *\n * @param configPath - Path to the changesets config file, relative to cwd\n * @param cwd - Working directory (defaults to process.cwd())\n * @returns Array of package objects that are eligible for publishing\n */\nexport async function getPublishablePackages(\n configPath?: string,\n cwd: string = process.cwd(),\n) {\n const {packages} = await getPackages(cwd)\n const changesetConfig = JSON.parse(\n await readFile(\n resolve(cwd, configPath ?? DEFAULT_CONFIG_LOCATION),\n \"utf-8\",\n ),\n )\n const ignoredPackages = new Set<string>(changesetConfig.ignored ?? [])\n return packages.filter((pkg) => {\n if (ignoredPackages.has(pkg.packageJson.name)) {\n return false\n }\n if (!pkg.packageJson.version) {\n return false\n }\n return !pkg.packageJson.private\n })\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport * as core from \"@actions/core\"\n\nimport {getPublishablePackages} from \"./publishable-packages\"\n\nasync function getPublishedVersion(\n packageName: string,\n): Promise<string | null> {\n const response = await fetch(`https://registry.npmjs.org/${packageName}`)\n\n if (response.status === 404) {\n return null\n }\n\n if (!response.ok) {\n throw new Error(`Failed to fetch ${packageName}: ${response.status}`)\n }\n\n const data = await response.json()\n return data[\"dist-tags\"]?.latest || null\n}\n\nfunction compareVersions(current: string, published: string) {\n const [cMajor, cMinor, cPatch] = current.split(\".\").map(Number)\n const [pMajor, pMinor, pPatch] = published.split(\".\").map(Number)\n\n if (cMajor !== pMajor) {\n return cMajor - pMajor\n }\n if (cMinor !== pMinor) {\n return cMinor - pMinor\n }\n return cPatch - pPatch\n}\n\nexport async function checkVersions(options?: {configPath?: string}) {\n const packages = await getPublishablePackages(options?.configPath)\n\n const results = await Promise.all(\n packages.map(async (pkg) => {\n const {packageJson} = pkg\n const {name, version} = packageJson\n\n const published = await getPublishedVersion(name)\n\n if (!published) {\n return {name, unpublished: true, version}\n }\n\n const comparison = compareVersions(version, published)\n\n return {\n current: version,\n isNewer: comparison > 0,\n isOlder: comparison < 0,\n isSame: comparison === 0,\n name,\n published,\n }\n }),\n )\n\n const newer = results.filter(\n (r): r is Extract<(typeof results)[number], {isNewer: boolean}> =>\n \"isNewer\" in r && r.isNewer === true,\n )\n\n if (newer.length > 0) {\n console.log(\"The following packages will be published:\")\n newer.forEach((r) =>\n console.log(` ${r.name}: ${r.published} -> ${r.current}`),\n )\n\n core.setOutput(\"should-publish\", true)\n } else {\n console.log(\"No packages need publishing.\")\n core.setOutput(\"should-publish\", false)\n }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport dayjs from \"dayjs\"\nimport advancedFormat from \"dayjs/plugin/advancedFormat\"\nimport {execSync} from \"node:child_process\"\nimport {readFile, writeFile} from \"node:fs/promises\"\n\ndayjs.extend(advancedFormat)\n\nconst DATE_FORMAT = \"MMM Do, YYYY\"\n\nexport function getChangedChangelogs(): string[] {\n try {\n const output = execSync(\"git diff --name-only HEAD\", {\n encoding: \"utf-8\",\n }).trim()\n\n const changedFiles = output.split(\"\\n\").filter(Boolean)\n return changedFiles.filter((file) => file.endsWith(\"CHANGELOG.md\"))\n } catch {\n console.error(\"Failed to get changed files from git diff\")\n process.exit(1)\n }\n}\n\nexport async function consolidateChangelog(\n changelogPath: string,\n): Promise<void> {\n const changelog = await readFile(changelogPath, \"utf-8\")\n const lines = changelog.split(\"\\n\")\n\n const firstReleaseIndex = lines.findIndex((line) => line.startsWith(\"## \"))\n if (firstReleaseIndex === -1) {\n return\n }\n\n const secondReleaseIndex = lines.findIndex(\n (line, i) => i > firstReleaseIndex && line.startsWith(\"## \"),\n )\n\n const endIndex = secondReleaseIndex === -1 ? lines.length : secondReleaseIndex\n\n const before = lines.slice(0, firstReleaseIndex)\n const releaseLines = lines.slice(firstReleaseIndex, endIndex)\n const after = lines.slice(endIndex)\n\n const sections = new Map<string, string[]>()\n let versionLine = \"\"\n let dateLine = \"\"\n let currentSection = \"\"\n\n for (const line of releaseLines) {\n if (line.startsWith(\"## \")) {\n const dateMatch = line.match(/\\((\\d{4}\\/\\d{2}\\/\\d{2})\\)/)\n if (dateMatch) {\n versionLine = line.replace(` (${dateMatch[1]})`, \"\")\n dateLine = dayjs(dateMatch[1]).format(DATE_FORMAT)\n } else {\n versionLine = line\n dateLine = dayjs().format(DATE_FORMAT)\n }\n continue\n }\n\n if (\n line.startsWith(\"### Patch Changes\") ||\n line.startsWith(\"### Minor Changes\") ||\n line.startsWith(\"### Major Changes\")\n ) {\n continue\n }\n\n if (line.startsWith(\"### \")) {\n currentSection = line\n if (!sections.has(currentSection)) {\n sections.set(currentSection, [])\n }\n continue\n }\n\n if (currentSection && line.trim()) {\n sections.get(currentSection)?.push(line.trim())\n }\n }\n\n const output: string[] = []\n output.push(versionLine)\n output.push(\"\")\n output.push(dateLine)\n output.push(\"\")\n\n for (const [section, items] of sections) {\n if (items.length === 0) {\n continue\n }\n output.push(section)\n output.push(\"\")\n output.push(...items)\n output.push(\"\")\n }\n\n const result = [...before, ...output, ...after].join(\"\\n\")\n await writeFile(changelogPath, result)\n}\n\nexport async function consolidateChangelogs(): Promise<void> {\n const changedChangelogs = getChangedChangelogs()\n\n if (changedChangelogs.length === 0) {\n console.log(\"No changelogs changed\")\n return\n }\n\n console.log(`Consolidating ${changedChangelogs.length} changelog(s)...`)\n\n for (const changelogPath of changedChangelogs) {\n console.log(` - ${changelogPath}`)\n await consolidateChangelog(changelogPath)\n }\n\n console.log(\"Done\")\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {Octokit} from \"@octokit/rest\"\nimport {execSync} from \"node:child_process\"\nimport {readFile} from \"node:fs/promises\"\nimport {join} from \"node:path\"\n\nimport {getPublishablePackages} from \"./publishable-packages\"\n\ninterface GitHubReleaseOptions {\n configPath?: string\n repo?: string\n token: string\n}\n\n/**\n * Parses a changelog file to extract the latest version entry.\n *\n * @param path - Path to the CHANGELOG.md file\n * @returns Object containing version, date, and body of the latest entry, or null if parsing fails\n */\nasync function parseChangelog(path: string) {\n const content = await readFile(path, \"utf-8\")\n const lines = content.split(\"\\n\")\n const firstVersionIndex = lines.findIndex((l) => l.startsWith(\"## \"))\n if (firstVersionIndex === -1) {\n console.log(` No version header found`)\n return null\n }\n const headerLine = lines[firstVersionIndex]\n const match = headerLine.match(/^## ([\\d.]+)/)\n if (!match) {\n console.log(` Invalid version format: ${headerLine}`)\n return null\n }\n const [, version, date] = match\n const endIndex = lines.findIndex(\n (l, i) => i > firstVersionIndex && l.startsWith(\"## \"),\n )\n const body = lines\n .slice(firstVersionIndex + 1, endIndex === -1 ? undefined : endIndex)\n .join(\"\\n\")\n .trim()\n return {body, date, version}\n}\n\nfunction getRepoFromGitRemote(): {owner: string; repo: string} {\n const remoteUrl = execSync(\"git remote get-url origin\").toString().trim()\n // Handles both HTTPS (https://github.com/owner/repo.git) and SSH (git@github.com:owner/repo.git)\n const match = remoteUrl.match(\n /github\\.com[/:]([\\w.-]+)\\/([\\w.-]+?)(?:\\.git)?$/,\n )\n if (!match) {\n throw new Error(\n `Could not parse GitHub owner/repo from remote URL: ${remoteUrl}, use --repo to specify explicitly.`,\n )\n }\n return {owner: match[1], repo: match[2]}\n}\n\nexport async function createGitHubReleases(options: GitHubReleaseOptions) {\n const octokit = new Octokit({auth: options.token})\n const repoOpts = options.repo\n ? {owner: options.repo.split(\"/\")[0], repo: options.repo.split(\"/\")[1]}\n : getRepoFromGitRemote()\n\n const packages = await getPublishablePackages(options.configPath)\n\n for (const pkg of packages) {\n const changelogPath = join(pkg.dir, \"CHANGELOG.md\")\n const changelog = await parseChangelog(changelogPath).catch(() => null)\n if (!changelog) {\n console.warn(\n \"no changelog found, skipping package:\",\n pkg.packageJson.name,\n )\n continue\n }\n if (changelog.version !== pkg.packageJson.version) {\n console.log(\n `Skipping ${pkg.packageJson.name}: changelog ${changelog.version} !== package.json ${pkg.packageJson.version}`,\n )\n continue\n }\n const tag = `${pkg.packageJson.name}@${changelog.version}`\n const release = await octokit.repos\n .getReleaseByTag({\n ...repoOpts,\n tag,\n })\n .catch(() => null)\n if (release) {\n console.log(\n `Release \\x1b[93m${release.data.name}\\x1b[0m already exists, skipping`,\n )\n continue\n }\n console.log(`Creating release: \\x1b[96m${tag}\\x1b[0m`)\n await octokit.repos.createRelease({\n ...repoOpts,\n body: changelog.body,\n name: tag,\n tag_name: tag,\n })\n }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {readFile, writeFile} from \"node:fs/promises\"\nimport {tmpdir} from \"node:os\"\nimport {join} from \"node:path\"\n\nimport {getChangedChangelogs} from \"./consolidate-changelogs\"\n\nconst RELEASE_NOTES_FILENAME = \"release-notes.md\"\n\ninterface ChangelogEntry {\n date: string\n packageName: string\n sections: string\n version: string\n}\n\nfunction extractLatestEntry(\n content: string,\n fallbackName: string,\n): ChangelogEntry | null {\n const lines = content.split(\"\\n\")\n\n const titleMatch = lines[0]?.match(/^# (.+) Changelog$/)\n const packageName = titleMatch?.[1] ?? fallbackName\n\n const firstVersionIndex = lines.findIndex((l) => l.startsWith(\"## \"))\n if (firstVersionIndex === -1) {\n return null\n }\n\n const versionMatch = lines[firstVersionIndex].match(/^## ([\\d.]+)/)\n if (!versionMatch) {\n return null\n }\n\n const version = versionMatch[1]\n\n const endIndex = lines.findIndex(\n (l, i) => i > firstVersionIndex && l.startsWith(\"## \"),\n )\n\n const bodyLines = lines.slice(\n firstVersionIndex + 1,\n endIndex === -1 ? undefined : endIndex,\n )\n\n const dateLine = bodyLines.find((l) => /^[A-Z][a-z]{2} \\d/.test(l.trim()))\n const date = dateLine?.trim() ?? \"\"\n\n const sections = bodyLines\n .filter((l) => l.trim() !== date)\n .join(\"\\n\")\n .trim()\n\n return {date, packageName, sections, version}\n}\n\nfunction isDepsOnlyEntry(sections: string): boolean {\n const lines = sections.split(\"\\n\").filter((l) => l.trim())\n\n const hasOnlyChoresHeader = lines\n .filter((l) => l.startsWith(\"### \"))\n .every((l) => l === \"### Miscellaneous Chores\")\n\n const bulletLines = lines.filter((l) => l.startsWith(\"- \"))\n const allDepsBullets = bulletLines.every((l) =>\n l.includes(\"**deps:** update dependencies\"),\n )\n\n return hasOnlyChoresHeader && allDepsBullets && bulletLines.length > 0\n}\n\nfunction getReleaseNotesPath(): string {\n return join(tmpdir(), RELEASE_NOTES_FILENAME)\n}\n\nexport async function generateReleaseNotes(): Promise<string> {\n const changedChangelogs = getChangedChangelogs()\n\n if (changedChangelogs.length === 0) {\n console.log(\"No changed changelogs, skipping release notes generation\")\n return \"\"\n }\n\n const entries: ChangelogEntry[] = []\n\n for (const changelogPath of changedChangelogs) {\n const content = await readFile(changelogPath, \"utf-8\")\n const entry = extractLatestEntry(content, changelogPath)\n if (entry) {\n entries.push(entry)\n }\n }\n\n if (entries.length === 0) {\n console.log(\"No parseable changelog entries found\")\n return \"\"\n }\n\n const substantive = entries.filter((e) => !isDepsOnlyEntry(e.sections))\n const depsOnly = entries.filter((e) => isDepsOnlyEntry(e.sections))\n\n const lines: string[] = [\"# Release Notes\", \"\"]\n\n for (const entry of substantive) {\n lines.push(\n `## ${entry.packageName} — ${entry.version} (${entry.date})`,\n \"\",\n entry.sections,\n \"\",\n )\n }\n\n if (depsOnly.length > 0) {\n lines.push(\n \"---\",\n \"\",\n \"<details>\",\n \"<summary>Dependency-only updates</summary>\",\n \"\",\n )\n for (const entry of depsOnly) {\n lines.push(`- ${entry.packageName} — ${entry.version}`)\n }\n lines.push(\"\", \"</details>\", \"\")\n }\n\n const markdown = lines.join(\"\\n\")\n const outPath = getReleaseNotesPath()\n await writeFile(outPath, markdown)\n\n console.log(`Release notes written to ${outPath}`)\n console.log(\n ` ${substantive.length} package(s) with changes, ${depsOnly.length} dependency-only update(s)`,\n )\n\n return outPath\n}\n","// Modified from https://github.com/iamchathu/changeset-conventional-commits\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\nimport type {Changeset, PackageJSON} from \"@changesets/types\"\nimport {execSync} from \"node:child_process\"\n\ninterface ManyPkgPackage {\n dir: string\n packageJson: PackageJSON\n}\n\ninterface Commit {\n commitHash: string\n commitMessage: string\n}\n\ninterface ConventionalMessagesToCommits {\n changelogMessage: string\n commitHashes: string[]\n}\n\nconst defaultCommitTypes = [\n {section: \"Features\", type: \"feat\"},\n {section: \"Features\", type: \"feature\"},\n {section: \"Bug Fixes\", type: \"fix\"},\n {section: \"Performance Improvements\", type: \"perf\"},\n {section: \"Reverts\", type: \"revert\"},\n {section: \"Documentation\", type: \"docs\"},\n {section: \"Styles\", type: \"style\"},\n {section: \"Styles\", type: \"styles\"},\n {section: \"Miscellaneous Chores\", type: \"chore\"},\n {section: \"Code Refactoring\", type: \"refactor\"},\n {section: \"Tests\", type: \"test\"},\n {section: \"Build System\", type: \"build\"},\n {section: \"Continuous Integration\", type: \"ci\"},\n]\n\n/**\n * Normalizes conventional commit format by removing whitespace between type and\n * scope. Transforms \"fix (scope): message\" to \"fix(scope): message\"\n * @param commit - The commit message to normalize\n * @returns Normalized commit message\n */\nfunction normalizeConventionalCommit(commit: string): string {\n const normalized = commit.replace(/^(\\w+)\\s+(\\(.*?\\))/, \"$1$2\")\n if (normalized.startsWith(\"- \")) {\n return normalized.substring(2)\n }\n return normalized\n}\n\n/**\n * Checks if a commit message follows conventional commit format\n * @param commit - The commit message to check\n * @returns True if the commit follows conventional commit format\n */\nexport function isConventionalCommit(commit: string) {\n const normalized = normalizeConventionalCommit(commit)\n return defaultCommitTypes.some((commitType) =>\n normalized.match(\n new RegExp(`^(?:-\\\\s)?${commitType.type}\\\\s*(?:\\(.*\\))?!?:`),\n ),\n )\n}\n\n/**\n * Checks if a commit message indicates a breaking change\n * @param commit - The commit message to check\n * @returns True if the commit contains a breaking change indicator\n */\nexport function isBreakingChange(commit: string) {\n const normalized = normalizeConventionalCommit(commit)\n return (\n normalized.includes(\"BREAKING CHANGE:\") ||\n defaultCommitTypes.some((commitType) =>\n normalized.match(new RegExp(`^${commitType.type}\\\\s*(?:\\(.*\\))?!:`)),\n )\n )\n}\n\n/**\n * Filters commits to only conventional commits and maps them to changelog format\n * @param commits - Array of commits to translate\n * @returns Array of conventional commit messages with their associated commit hashes\n */\nexport function translateCommitsToConventionalCommitMessages(\n commits: Commit[],\n): ConventionalMessagesToCommits[] {\n return commits\n .filter((commit) => isConventionalCommit(commit.commitMessage))\n .map((commit) => ({\n changelogMessage: normalizeConventionalCommit(commit.commitMessage),\n commitHashes: [commit.commitHash],\n }))\n}\n\n/**\n * Gets the list of files changed between two git refs\n * @param opts - Object containing from and to git refs\n * @returns Array of file paths that changed\n */\nexport function getFilesChangedSince(opts: {from: string; to: string}) {\n return execSync(`git diff --name-only ${opts.from}~1...${opts.to}`)\n .toString()\n .trim()\n .split(\"\\n\")\n}\n\n/**\n * Gets the absolute path to the git repository root\n * @returns Absolute path to repository root\n */\nexport function getRepoRoot() {\n return execSync(\"git rev-parse --show-toplevel\")\n .toString()\n .trim()\n .replace(/\\n|\\r/g, \"\")\n}\n\n/**\n * Gets the full commit message for a given commit hash\n * @param commitHash - The git commit hash\n * @returns The full commit message\n */\nfunction getCommitMessage(commitHash: string): string {\n return execSync(`git log -1 --pretty=%B ${commitHash}`).toString().trim()\n}\n\n/**\n * Extracts all conventional commit messages from a multi-line commit message\n * @param commitMessage - The commit message to parse\n * @returns Array of conventional commit messages found\n */\nfunction extractConventionalCommits(commitMessage: string): string[] {\n const lines = commitMessage.split(\"\\n\")\n const conventionalCommits: string[] = []\n for (const line of lines) {\n const trimmed = line.trim()\n if (trimmed && isConventionalCommit(trimmed)) {\n conventionalCommits.push(normalizeConventionalCommit(trimmed))\n }\n }\n return conventionalCommits\n}\n\n/**\n * Converts conventional commit messages to changesets based on affected packages\n * @param conventionalMessagesToCommits - Array of conventional messages with their commit hashes\n * @param options - Configuration options including ignored files and packages\n * @returns Array of changesets for affected packages\n */\nexport function conventionalMessagesWithCommitsToChangesets(\n conventionalMessagesToCommits: ConventionalMessagesToCommits[],\n options: {\n ignoredFiles?: (string | RegExp)[]\n includeCommitLinks?: boolean\n packages: ManyPkgPackage[]\n },\n) {\n const {ignoredFiles = [], includeCommitLinks, packages} = options\n const repoRoot = getRepoRoot()\n return conventionalMessagesToCommits\n .flatMap((entry) => {\n const filesChanged = getFilesChangedSince({\n from: entry.commitHashes[0],\n to: entry.commitHashes[entry.commitHashes.length - 1],\n }).filter((file) => {\n return ignoredFiles.every(\n (ignoredPattern) => !file.match(ignoredPattern),\n )\n })\n const packagesChanged = packages.filter((pkg) => {\n const pkgPath = pkg.dir.replace(/\\\\/g, \"/\").replace(`${repoRoot}/`, \"\")\n return filesChanged.some((file) => file.startsWith(`${pkgPath}/`))\n })\n if (packagesChanged.length === 0) {\n return []\n }\n const allConventionalCommits = entry.commitHashes\n .flatMap((hash) => {\n const fullMessage = getCommitMessage(hash)\n return extractConventionalCommits(fullMessage).map((msg) => ({\n hash,\n message: msg,\n }))\n })\n .filter(\n (item, index, self) =>\n index === self.findIndex((other) => other.message === item.message),\n )\n return allConventionalCommits.flatMap(\n ({hash, message: conventionalCommit}) => {\n const changeType = isBreakingChange(conventionalCommit)\n ? \"major\"\n : conventionalCommit.startsWith(\"feat\")\n ? \"minor\"\n : \"patch\"\n return {\n packagesChanged,\n releases: packagesChanged.map((pkg) => ({\n name: pkg.packageJson.name,\n type: changeType,\n })),\n summary: includeCommitLinks\n ? `${conventionalCommit}\\n\\ncommit: ${hash.slice(0, 7)}`\n : conventionalCommit,\n } as Changeset\n },\n )\n })\n .filter(Boolean)\n}\n\n/**\n * Fetches the latest changes from a remote branch\n * @param branch - The branch name to fetch\n */\nexport function gitFetch(branch: string) {\n execSync(`git fetch origin ${branch}`)\n}\n\n/**\n * Gets all commit hashes since a specific commit\n * @param sha - The commit SHA to compare against\n * @returns Array of commit hashes since the given commit\n */\nexport function getCommitsSinceCommit(sha: string) {\n return execSync(`git rev-list ${sha}..HEAD`)\n .toString()\n .split(\"\\n\")\n .filter(Boolean)\n .reverse()\n}\n\n/**\n * Gets all commit hashes since a reference branch or tag\n * @param branch - The branch to compare against\n * @returns Array of commit hashes since the reference point\n */\nexport function getCommitsSinceBranch(branch: string) {\n gitFetch(branch)\n const sinceRef = `origin/${branch}`\n return execSync(`git rev-list ${sinceRef}..HEAD`)\n .toString()\n .split(\"\\n\")\n .filter(Boolean)\n .reverse()\n}\n\n/**\n * Compares two changesets for equality\n * @param a - First changeset\n * @param b - Second changeset\n * @returns True if changesets are equal\n */\nfunction compareChangeSet(a: Changeset, b: Changeset): boolean {\n return (\n a.summary.replace(/\\n$/, \"\") === b.summary &&\n JSON.stringify(a.releases) === JSON.stringify(b.releases)\n )\n}\n\n/**\n * Returns changesets in array a that are not in array b\n * @param a - Array of changesets to filter\n * @param b - Array of changesets to compare against\n * @returns Changesets that exist in a but not in b\n */\nexport function difference(a: Changeset[], b: Changeset[]): Changeset[] {\n return a.filter(\n (changeA) => !b.some((changeB) => compareChangeSet(changeA, changeB)),\n )\n}\n","// Modified from https://github.com/iamchathu/changeset-conventional-commits\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport readChangeset from \"@changesets/read\"\nimport writeChangeset from \"@changesets/write\"\nimport {getPackagesSync} from \"@manypkg/get-packages\"\nimport {execSync} from \"node:child_process\"\nimport {readFileSync} from \"node:fs\"\nimport {join} from \"node:path\"\n\nimport {\n conventionalMessagesWithCommitsToChangesets,\n difference,\n getCommitsSinceBranch,\n getCommitsSinceCommit,\n translateCommitsToConventionalCommitMessages,\n} from \"./utils\"\n\nconst CHANGESET_CONFIG_LOCATION = join(\".changeset\", \"config.json\")\n\nfunction getCommitsWithMessages(commitHashes: string[]) {\n return commitHashes.map((commitHash) => {\n const commitMessage = execSync(\n `git log -n 1 --pretty=format:%B ${commitHash}`,\n ).toString()\n return {\n commitHash,\n commitMessage,\n }\n })\n}\n\nexport interface ChangesetGenerateOptions {\n commitSha?: string | undefined\n configPath?: string | undefined\n includeCommitLinks?: boolean | undefined\n}\n\nexport async function conventionalCommitChangeset(\n options: ChangesetGenerateOptions,\n cwd: string = process.cwd(),\n) {\n const configLocation = options.configPath ?? CHANGESET_CONFIG_LOCATION\n const changesetConfig = JSON.parse(\n readFileSync(join(cwd, configLocation)).toString(),\n )\n const ignored = changesetConfig.ignore ?? []\n const packages = getPackagesSync(cwd).packages.filter(\n (pkg) =>\n Boolean(pkg.packageJson.version) &&\n !ignored.includes(pkg.packageJson.name),\n )\n\n const {baseBranch = \"main\"} = changesetConfig\n const {commitSha, includeCommitLinks} = options\n\n const commitsSinceRef = commitSha\n ? getCommitsSinceCommit(commitSha)\n : getCommitsSinceBranch(baseBranch)\n const commitsWithMessages = getCommitsWithMessages(commitsSinceRef)\n const changelogMessages =\n translateCommitsToConventionalCommitMessages(commitsWithMessages)\n\n const changesets = conventionalMessagesWithCommitsToChangesets(\n changelogMessages,\n {\n ignoredFiles: ignored,\n includeCommitLinks,\n packages,\n },\n )\n\n const currentChangesets = await readChangeset(cwd)\n\n const newChangesets =\n currentChangesets.length === 0\n ? changesets\n : difference(changesets, currentChangesets)\n\n await Promise.all(\n newChangesets.map((changeset) => writeChangeset(changeset, cwd)),\n )\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {readdir, readFile} from \"node:fs/promises\"\nimport {extname, join, relative, sep} from \"node:path\"\nimport {\n type Node as MorphNode,\n Node,\n Project,\n type SourceFile,\n ts,\n} from \"ts-morph\"\n\nexport interface PackageSnapshot {\n name: string\n root: string\n version?: string\n}\n\nexport interface UpdateJsDocSinceTagsOptions {\n afterPackages: PackageSnapshot[]\n beforePackages: PackageSnapshot[]\n cwd?: string\n onProgress?: (line: string) => void\n}\n\nexport interface UpdatedPackageSummary {\n fileCount: number\n name: string\n tagCount: number\n version: string\n}\n\nexport interface UpdateJsDocSinceTagsResult {\n unresolvedFiles: string[]\n updatedPackages: UpdatedPackageSummary[]\n}\n\nexport interface CheckJsDocSinceTagsOptions {\n cwd?: string\n packages: PackageSnapshot[]\n}\n\nexport interface JsDocSinceTagLocation {\n entityName: string\n filePath: string\n}\n\nexport interface CheckJsDocSinceTagsResult {\n unresolvedTags: JsDocSinceTagLocation[]\n}\n\nexport interface UpdateJsDocSinceTagsForPackagesOptions {\n cwd?: string\n onProgress?: (line: string) => void\n packages: PackageSnapshot[]\n}\n\ninterface BumpedPackage {\n name: string\n root: string\n version: string\n}\n\nconst NEXT_RELEASE = \"next-release\"\nconst NEXT_RELEASE_TAG_PATTERN = /@since\\s+next-release\\b/\n\nconst SOURCE_EXTENSIONS = new Set([\n \".cjs\",\n \".cts\",\n \".js\",\n \".jsx\",\n \".mjs\",\n \".mts\",\n \".ts\",\n \".tsx\",\n])\n\nconst EXCLUDED_DIRECTORIES = new Set([\n \".turbo\",\n \"__tests__\",\n \"build\",\n \"coverage\",\n \"dist\",\n \"lib\",\n \"node_modules\",\n])\n\nconst TEST_FILE_PATTERN = /\\.(spec|test)\\.[cm]?[jt]sx?$/\n\nfunction pluralize(count: number, singular: string, plural: string) {\n return count === 1 ? singular : plural\n}\n\nexport function formatJsDocSinceUpdateStartMessage() {\n return \"Updating JSDoc @since tags...\"\n}\n\nexport function formatJsDocSincePackageUpdateProgress({\n name,\n version,\n}: Pick<BumpedPackage, \"name\" | \"version\">) {\n return `Processing package ${name} ${version}...`\n}\n\nfunction normalizeRelativePath(cwd: string, filePath: string) {\n return relative(cwd, filePath).split(sep).join(\"/\")\n}\n\nfunction hasNextReleaseSinceTag(content: string) {\n const scanner = ts.createScanner(\n ts.ScriptTarget.Latest,\n false,\n ts.LanguageVariant.Standard,\n content,\n )\n\n let token = scanner.scan()\n while (token !== ts.SyntaxKind.EndOfFileToken) {\n if (token === ts.SyntaxKind.MultiLineCommentTrivia) {\n const text = scanner.getTokenText()\n if (text.startsWith(\"/**\") && NEXT_RELEASE_TAG_PATTERN.test(text)) {\n return true\n }\n }\n token = scanner.scan()\n }\n\n return false\n}\n\nfunction getNodeName(node: MorphNode) {\n if (\n Node.isClassDeclaration(node) ||\n Node.isEnumDeclaration(node) ||\n Node.isFunctionDeclaration(node) ||\n Node.isInterfaceDeclaration(node) ||\n Node.isMethodDeclaration(node) ||\n Node.isMethodSignature(node) ||\n Node.isPropertyDeclaration(node) ||\n Node.isPropertySignature(node) ||\n Node.isTypeAliasDeclaration(node)\n ) {\n return node.getName()\n }\n\n if (Node.isVariableStatement(node)) {\n return node\n .getDeclarationList()\n .getDeclarations()\n .map((declaration) => declaration.getName())\n .join(\", \")\n }\n\n return undefined\n}\n\nfunction getQualifiedEntityName(node: MorphNode) {\n const name = getNodeName(node)\n if (!name) {\n return \"unknown\"\n }\n\n const parent = node.getParent()\n const parentName = parent ? getNodeName(parent) : undefined\n if (parentName) {\n return `${parentName}.${name}`\n }\n\n return name\n}\n\nfunction getBumpedPackages({\n afterPackages,\n beforePackages,\n}: UpdateJsDocSinceTagsOptions): BumpedPackage[] {\n const beforeByName = new Map(\n beforePackages.map((pkg) => [pkg.name, pkg.version]),\n )\n\n return afterPackages.flatMap((pkg) => {\n const beforeVersion = beforeByName.get(pkg.name)\n if (!beforeVersion || !pkg.version || beforeVersion === pkg.version) {\n return []\n }\n\n return [{name: pkg.name, root: pkg.root, version: pkg.version}]\n })\n}\n\nfunction getVersionedPackages(packages: PackageSnapshot[]): BumpedPackage[] {\n return packages.flatMap((pkg) => {\n if (!pkg.version) {\n return []\n }\n\n return [{name: pkg.name, root: pkg.root, version: pkg.version}]\n })\n}\n\nfunction isSourceFile(filePath: string) {\n return (\n SOURCE_EXTENSIONS.has(extname(filePath)) &&\n !TEST_FILE_PATTERN.test(filePath)\n )\n}\n\nasync function getSourceFiles(dir: string): Promise<string[]> {\n const entries = (await readdir(dir, {withFileTypes: true})).sort((a, b) =>\n a.name.localeCompare(b.name),\n )\n const files: string[] = []\n\n for (const entry of entries) {\n const entryPath = join(dir, entry.name)\n\n if (entry.isDirectory()) {\n if (!EXCLUDED_DIRECTORIES.has(entry.name)) {\n files.push(...(await getSourceFiles(entryPath)))\n }\n continue\n }\n\n if (entry.isFile() && isSourceFile(entry.name)) {\n files.push(entryPath)\n }\n }\n\n return files\n}\n\nasync function updateSourceFile(filePath: string, version: string) {\n const project = new Project({\n compilerOptions: {\n allowJs: true,\n checkJs: false,\n },\n manipulationSettings: {\n insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces: false,\n useTrailingCommas: true,\n },\n skipAddingFilesFromTsConfig: true,\n })\n const sourceFile = project.addSourceFileAtPath(filePath)\n let tagCount = 0\n\n sourceFile.forEachDescendant((node) => {\n if (!Node.isJSDocable(node)) {\n return\n }\n\n for (const jsDoc of node.getJsDocs()) {\n for (const tag of jsDoc.getTags()) {\n if (\n tag.getTagName() === \"since\" &&\n tag.getCommentText()?.trim() === NEXT_RELEASE\n ) {\n tag.set({tagName: \"since\", text: version})\n tagCount += 1\n }\n }\n }\n })\n\n if (tagCount > 0) {\n await sourceFile.save()\n }\n\n return tagCount\n}\n\nasync function findUnresolvedFiles(cwd: string, sourceFiles: string[]) {\n const unresolvedFiles: string[] = []\n\n for (const filePath of sourceFiles) {\n const content = await readFile(filePath, \"utf-8\")\n if (hasNextReleaseSinceTag(content)) {\n unresolvedFiles.push(normalizeRelativePath(cwd, filePath))\n }\n }\n\n return unresolvedFiles\n}\n\nfunction collectSourceFileSinceTagLocations(\n cwd: string,\n sourceFile: SourceFile,\n): JsDocSinceTagLocation[] {\n const filePath = normalizeRelativePath(cwd, sourceFile.getFilePath())\n const locations: JsDocSinceTagLocation[] = []\n\n sourceFile.forEachDescendant((node) => {\n if (!Node.isJSDocable(node)) {\n return\n }\n\n for (const jsDoc of node.getJsDocs()) {\n for (const tag of jsDoc.getTags()) {\n if (\n tag.getTagName() === \"since\" &&\n tag.getCommentText()?.trim() === NEXT_RELEASE\n ) {\n locations.push({\n entityName: getQualifiedEntityName(node),\n filePath,\n })\n }\n }\n }\n })\n\n return locations\n}\n\nfunction createProject() {\n return new Project({\n compilerOptions: {\n allowJs: true,\n checkJs: false,\n },\n manipulationSettings: {\n insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces: false,\n useTrailingCommas: true,\n },\n skipAddingFilesFromTsConfig: true,\n })\n}\n\nfunction getFileSinceTagLocations(cwd: string, filePath: string) {\n const project = createProject()\n return collectSourceFileSinceTagLocations(\n cwd,\n project.addSourceFileAtPath(filePath),\n )\n}\n\nexport async function checkJsDocSinceTags({\n cwd = process.cwd(),\n packages,\n}: CheckJsDocSinceTagsOptions): Promise<CheckJsDocSinceTagsResult> {\n const unresolvedTags: JsDocSinceTagLocation[] = []\n\n for (const pkg of packages) {\n const sourceFiles = await getSourceFiles(pkg.root)\n for (const filePath of sourceFiles) {\n unresolvedTags.push(...getFileSinceTagLocations(cwd, filePath))\n }\n }\n\n return {unresolvedTags}\n}\n\nasync function updatePackages(\n cwd: string,\n packages: BumpedPackage[],\n onProgress?: (line: string) => void,\n): Promise<UpdateJsDocSinceTagsResult> {\n const updatedPackages: UpdatedPackageSummary[] = []\n const unresolvedFiles: string[] = []\n\n for (const pkg of packages) {\n onProgress?.(formatJsDocSincePackageUpdateProgress(pkg))\n\n const sourceFiles = await getSourceFiles(pkg.root)\n let fileCount = 0\n let tagCount = 0\n\n for (const filePath of sourceFiles) {\n const updatedTags = await updateSourceFile(filePath, pkg.version)\n if (updatedTags > 0) {\n fileCount += 1\n tagCount += updatedTags\n }\n }\n\n if (tagCount > 0) {\n updatedPackages.push({\n fileCount,\n name: pkg.name,\n tagCount,\n version: pkg.version,\n })\n }\n\n unresolvedFiles.push(...(await findUnresolvedFiles(cwd, sourceFiles)))\n }\n\n return {unresolvedFiles, updatedPackages}\n}\n\nexport async function updateJsDocSinceTagsForPackages({\n cwd = process.cwd(),\n onProgress,\n packages,\n}: UpdateJsDocSinceTagsForPackagesOptions): Promise<UpdateJsDocSinceTagsResult> {\n return updatePackages(cwd, getVersionedPackages(packages), onProgress)\n}\n\nexport async function updateJsDocSinceTagsForBumpedPackages(\n options: UpdateJsDocSinceTagsOptions,\n): Promise<UpdateJsDocSinceTagsResult> {\n return updatePackages(\n options.cwd ?? process.cwd(),\n getBumpedPackages(options),\n options.onProgress,\n )\n}\n\nexport function formatJsDocSinceUpdateResult(\n result: UpdateJsDocSinceTagsResult,\n): string[] {\n const lines: string[] = []\n\n if (result.updatedPackages.length > 0) {\n lines.push(\"Updated JSDoc @since tags:\")\n for (const pkg of result.updatedPackages) {\n lines.push(\n ` ${pkg.name} ${pkg.version}: ${pkg.tagCount} ${pluralize(\n pkg.tagCount,\n \"tag\",\n \"tags\",\n )} in ${pkg.fileCount} ${pluralize(pkg.fileCount, \"file\", \"files\")}`,\n )\n }\n }\n\n if (result.unresolvedFiles.length > 0) {\n if (lines.length > 0) {\n lines.push(\"\")\n }\n\n lines.push(\n \"Warning: unresolved @since next-release tags remain after JSDoc version update:\",\n )\n lines.push(...result.unresolvedFiles.map((filePath) => ` ${filePath}`))\n lines.push(\"\")\n lines.push(\n \"These tags were not rewritten automatically. This is non-blocking, but the updater may need to support another JSDoc shape.\",\n )\n }\n\n return lines\n}\n\nexport function formatJsDocSinceCheckResult(\n result: CheckJsDocSinceTagsResult,\n): string[] {\n if (result.unresolvedTags.length === 0) {\n return [\"No @since next-release tags found.\"]\n }\n\n return [\n \"Found @since next-release tags:\",\n ...result.unresolvedTags.map(\n ({entityName, filePath}) => ` ${filePath}: ${entityName}`,\n ),\n ]\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {getPackagesSync} from \"@manypkg/get-packages\"\nimport {execFileSync, execSync} from \"node:child_process\"\nimport {existsSync, readFileSync} from \"node:fs\"\nimport {isAbsolute, join, relative, resolve, sep} from \"node:path\"\n\nimport type {PackageSnapshot} from \"./update-jsdoc-since-tags\"\n\nconst CHANGESET_CONFIG_LOCATION = join(\".changeset\", \"config.json\")\n\ninterface BumpVersionsOptions {\n exec?: (command: string) => void\n packageManager?: string\n}\n\ninterface PackageSelectionOptions {\n cwd?: string\n directories?: string[]\n directory?: string\n packages?: PackageSnapshot[]\n}\n\ninterface UpdatePackageSelectionOptions extends PackageSelectionOptions {\n configPath?: string\n diffRef?: string\n version?: string\n}\n\nfunction normalizePath(path: string) {\n return resolve(path)\n}\n\nfunction isWithinDirectory(parent: string, child: string) {\n const relativePath = relative(parent, child)\n return (\n relativePath === \"\" ||\n (!relativePath.startsWith(\"..\") && !isAbsolute(relativePath))\n )\n}\n\nfunction getPackageLabel(directory: string) {\n return directory.replaceAll(\"\\\\\", \"/\")\n}\n\nfunction getSelectedDirectory(cwd: string, directory: string) {\n return resolve(cwd, directory)\n}\n\nfunction getSelectedDirectories({\n cwd,\n directories,\n directory,\n}: {\n cwd: string\n directories?: string[]\n directory?: string\n}) {\n const selectedDirectories =\n directories && directories.length > 0\n ? directories\n : directory\n ? [directory]\n : []\n\n return selectedDirectories.map((selectedDirectory) => ({\n input: selectedDirectory,\n root: getSelectedDirectory(cwd, selectedDirectory),\n }))\n}\n\nfunction getPackageSourceSnapshot(\n pkg: PackageSnapshot,\n versionOverride?: string,\n): PackageSnapshot {\n return {\n ...pkg,\n root: resolve(pkg.root, \"src\"),\n version: versionOverride ?? pkg.version,\n }\n}\n\nfunction getPackageSourceSnapshots(\n packages: PackageSnapshot[],\n versionOverride?: string,\n) {\n return packages.map((pkg) => getPackageSourceSnapshot(pkg, versionOverride))\n}\n\nfunction normalizeGitPath(path: string) {\n return path.split(sep).join(\"/\")\n}\n\nfunction getBaseBranch({\n configPath = CHANGESET_CONFIG_LOCATION,\n cwd,\n}: {\n configPath?: string\n cwd: string\n}) {\n const changesetConfig = JSON.parse(\n readFileSync(join(cwd, configPath), \"utf-8\"),\n )\n return changesetConfig.baseBranch ?? \"main\"\n}\n\nfunction getPackageVersionAtRef(\n pkg: PackageSnapshot,\n diffRef: string,\n cwd: string,\n) {\n const packageJsonPath = normalizeGitPath(\n relative(cwd, join(pkg.root, \"package.json\")),\n )\n\n try {\n const packageJson = execFileSync(\n \"git\",\n [\"show\", `${diffRef}:${packageJsonPath}`],\n {\n cwd,\n encoding: \"utf-8\",\n },\n )\n return JSON.parse(packageJson).version as string | undefined\n } catch {\n return undefined\n }\n}\n\nfunction isGitRefResolvable(diffRef: string, cwd: string) {\n try {\n execFileSync(\"git\", [\"rev-parse\", \"--verify\", `${diffRef}^{commit}`], {\n cwd,\n stdio: \"ignore\",\n })\n return true\n } catch {\n return false\n }\n}\n\nfunction getPackagesChangedSinceRef({\n cwd,\n diffRef,\n packages,\n}: {\n cwd: string\n diffRef: string\n packages: PackageSnapshot[]\n}) {\n if (!isGitRefResolvable(diffRef, cwd)) {\n throw new Error(`Git ref \"${diffRef}\" could not be resolved.`)\n }\n\n return packages.filter(\n (pkg) => getPackageVersionAtRef(pkg, diffRef, cwd) !== pkg.version,\n )\n}\n\nfunction findContainingPackage(directory: string, packages: PackageSnapshot[]) {\n return packages\n .filter((pkg) => isWithinDirectory(normalizePath(pkg.root), directory))\n .sort((a, b) => normalizePath(b.root).length - normalizePath(a.root).length)\n .at(0)\n}\n\nfunction selectCustomCheckSnapshots(\n directories: ReturnType<typeof getSelectedDirectories>,\n packages: PackageSnapshot[],\n) {\n return directories.map(({input, root}) => {\n const containingPackage = findContainingPackage(root, packages)\n\n return {\n name: containingPackage?.name ?? getPackageLabel(input),\n root,\n version: containingPackage?.version,\n }\n })\n}\n\nfunction selectCustomUpdateSnapshots(\n directories: ReturnType<typeof getSelectedDirectories>,\n packages: PackageSnapshot[],\n versionOverride?: string,\n) {\n return directories.map(({input, root}) => {\n const containingPackage = findContainingPackage(root, packages)\n const version = versionOverride ?? containingPackage?.version\n\n if (!version) {\n throw new Error(\n `Directory \"${input}\" is not within a package with a version. Pass --version to update arbitrary directories.`,\n )\n }\n\n return {\n name: containingPackage?.name ?? getPackageLabel(input),\n root,\n version,\n }\n })\n}\n\nfunction selectDefaultPackageSourceSnapshots({\n configPath,\n cwd = process.cwd(),\n diffRef,\n directories,\n directory,\n packages,\n version,\n}: UpdatePackageSelectionOptions & {\n packages: PackageSnapshot[]\n}): PackageSnapshot[] {\n const selectedDirectories = getSelectedDirectories({\n cwd,\n directories,\n directory,\n })\n if (selectedDirectories.length === 0) {\n const selectedDiffRef = diffRef ?? getBaseBranch({configPath, cwd})\n return getPackageSourceSnapshots(\n getPackagesChangedSinceRef({\n cwd,\n diffRef: selectedDiffRef,\n packages,\n }),\n version,\n )\n }\n\n return selectCustomUpdateSnapshots(selectedDirectories, packages, version)\n}\n\nfunction selectCheckPackageSnapshots({\n cwd = process.cwd(),\n directories,\n directory,\n packages,\n}: PackageSelectionOptions & {packages: PackageSnapshot[]}): PackageSnapshot[] {\n const selectedDirectories = getSelectedDirectories({\n cwd,\n directories,\n directory,\n })\n if (selectedDirectories.length === 0) {\n return getPackageSourceSnapshots(packages)\n }\n\n return selectCustomCheckSnapshots(selectedDirectories, packages)\n}\n\nexport function getPackageSnapshots(\n cwd: string = process.cwd(),\n): PackageSnapshot[] {\n return getPackagesSync(cwd).packages.flatMap((pkg) => {\n const {name, version} = pkg.packageJson\n if (!name) {\n return []\n }\n const sourceRoot = join(pkg.dir, \"src\")\n if (!existsSync(sourceRoot)) {\n return []\n }\n\n return [{name, root: pkg.dir, version}]\n })\n}\n\nexport function getCheckPackageSnapshots({\n cwd = process.cwd(),\n directories,\n directory,\n packages = getPackageSnapshots(cwd),\n}: PackageSelectionOptions = {}): PackageSnapshot[] {\n return selectCheckPackageSnapshots({cwd, directories, directory, packages})\n}\n\nexport function getUpdatePackageSnapshots({\n configPath,\n cwd = process.cwd(),\n diffRef,\n directories,\n directory,\n packages = getPackageSnapshots(cwd),\n version,\n}: UpdatePackageSelectionOptions = {}): PackageSnapshot[] {\n return selectDefaultPackageSourceSnapshots({\n configPath,\n cwd,\n diffRef,\n directories,\n directory,\n packages,\n version,\n })\n}\n\nexport function bumpVersionsAndMaybeUpdateJsDocSinceTags({\n exec = (command) => execSync(command, {stdio: \"inherit\"}),\n packageManager = \"pnpm\",\n}: BumpVersionsOptions = {}) {\n const command = `${packageManager} changeset version`\n exec(command)\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {program} from \"@commander-js/extra-typings\"\nimport {stdin, stdout} from \"node:process\"\nimport {createInterface} from \"node:readline/promises\"\n\nimport {checkVersions} from \"./check-versions\"\nimport {consolidateChangelogs} from \"./consolidate-changelogs\"\nimport {createGitHubReleases} from \"./create-github-releases\"\nimport {generateReleaseNotes} from \"./generate-release-notes\"\nimport {conventionalCommitChangeset} from \"./main\"\nimport {\n checkJsDocSinceTags,\n formatJsDocSinceCheckResult,\n formatJsDocSinceUpdateResult,\n formatJsDocSinceUpdateStartMessage,\n updateJsDocSinceTagsForPackages,\n} from \"./update-jsdoc-since-tags\"\nimport {\n bumpVersionsAndMaybeUpdateJsDocSinceTags,\n getCheckPackageSnapshots,\n getUpdatePackageSnapshots,\n} from \"./version-bump\"\n\ninterface Step {\n description: string\n name: string\n run: () => void | Promise<void>\n}\n\nfunction buildSteps(options: {\n commitSha?: string\n config?: string\n includeCommitLinks?: boolean\n packageManager?: string\n}): Step[] {\n const pm = options.packageManager ?? \"pnpm\"\n\n return [\n {\n description: \"Generate changesets from conventional commits\",\n name: \"changeset-generate\",\n run: () =>\n conventionalCommitChangeset({\n commitSha: options.commitSha,\n configPath: options.config,\n includeCommitLinks: options.includeCommitLinks,\n }),\n },\n {\n description: \"Bump versions and generate changelogs\",\n name: \"bump\",\n run: () =>\n bumpVersionsAndMaybeUpdateJsDocSinceTags({\n packageManager: pm,\n }),\n },\n {\n description: \"Consolidate changelog formatting\",\n name: \"consolidate-changelogs\",\n run: () => consolidateChangelogs(),\n },\n {\n description: \"Generate combined release notes\",\n name: \"generate-release-notes\",\n run: async () => {\n await generateReleaseNotes()\n },\n },\n ]\n}\n\nasync function waitForConfirmation(stepName: string): Promise<boolean> {\n const rl = createInterface({input: stdin, output: stdout})\n try {\n const answer = await rl.question(\n `\\nStep \"${stepName}\" completed. Continue to next step? [Y/n] `,\n )\n return answer.trim().toLowerCase() !== \"n\"\n } finally {\n rl.close()\n }\n}\n\nasync function run(options: {\n commitSha?: string\n config?: string\n includeCommitLinks?: boolean\n inSteps?: boolean\n packageManager?: string\n}) {\n const steps = buildSteps(options)\n\n for (let i = 0; i < steps.length; i++) {\n const step = steps[i]\n const stepLabel = `[${i + 1}/${steps.length}]`\n console.log(`\\n${stepLabel} ${step.description}...`)\n\n try {\n await step.run()\n } catch (e) {\n console.error(`\\nStep \"${step.name}\" failed. Aborting prep-release.`)\n console.error(e)\n process.exit(1)\n }\n\n if (options.inSteps && i < steps.length - 1) {\n const shouldContinue = await waitForConfirmation(step.name)\n if (!shouldContinue) {\n console.log(\"Aborted by user.\")\n process.exit(0)\n }\n }\n }\n\n console.log(\"\\nAll prep-release steps completed.\")\n}\n\nprogram.allowUnknownOption(false)\n\nprogram\n .command(\"prep-release\")\n .description(\"Run all prep-release steps sequentially\")\n .option(\n \"--in-steps\",\n \"Pause after each step and wait for confirmation before continuing\",\n false,\n )\n .option(\n \"--commit-sha <sha>\",\n \"Diff each package against the target commit instead of the repository's base branch\",\n )\n .option(\n \"--include-commit-links\",\n \"Embed commit hashes in changeset summaries for changelog links\",\n false,\n )\n .option(\n \"--package-manager <command>\",\n \"Package manager command to use for changeset version\",\n \"pnpm\",\n )\n .option(\n \"--config <path>\",\n \"Path to the changesets config file, relative to the project root\",\n )\n .action((options) => run(options))\n\nprogram\n .command(\"changeset-generate\")\n .description(\"Generate changesets from conventional commits\")\n .option(\n \"--commit-sha <sha>\",\n \"Diff each package against the target commit instead of the repository's base branch\",\n )\n .option(\n \"--include-commit-links\",\n \"Embed commit hashes in changeset summaries for changelog links\",\n false,\n )\n .option(\n \"--config <path>\",\n \"Path to the changesets config file, relative to the project root\",\n )\n .action(({config, ...options}) =>\n conventionalCommitChangeset({...options, configPath: config}),\n )\n\nprogram\n .command(\"consolidate-changelogs\")\n .description(\"Consolidate changelog formatting\")\n .action(() => consolidateChangelogs())\n\nprogram\n .command(\"generate-release-notes\")\n .description(\"Generate combined release notes\")\n .action(async () => {\n await generateReleaseNotes()\n })\n\nprogram\n .command(\"check-versions\")\n .description(\n \"Check which packages have newer versions than what is published on npm\",\n )\n .option(\n \"--config <path>\",\n \"Path to the changesets config file, relative to the project root\",\n )\n .action((options) => checkVersions({configPath: options.config}))\n\nprogram\n .command(\"check-jsdoc-since-tags\")\n .argument(\n \"[directories...]\",\n \"Directories to scan instead of package sources. If this is omitted, the `src` folder will be used by default\",\n )\n .description(\n \"Check for JSDoc @since next-release tags without modifying files\",\n )\n .action(async (directories) => {\n const result = await checkJsDocSinceTags({\n packages: getCheckPackageSnapshots({directories}),\n })\n for (const line of formatJsDocSinceCheckResult(result)) {\n console.log(line)\n }\n })\n\nprogram\n .command(\"update-jsdoc-since-tags\")\n .argument(\n \"[directories...]\",\n \"Directories to update instead of package sources\",\n )\n .option(\n \"--version <version>\",\n \"Version to use instead of each containing package's current version\",\n )\n .option(\n \"--diff-ref <git-ref>\",\n \"Git ref to compare package versions against (defaults to the changesets base branch)\",\n )\n .description(\n \"Replace JSDoc @since next-release tags with package or explicit versions\",\n )\n .action(async (directories, options) => {\n console.log(formatJsDocSinceUpdateStartMessage())\n const result = await updateJsDocSinceTagsForPackages({\n onProgress: console.log,\n packages: getUpdatePackageSnapshots({\n diffRef: options.diffRef,\n directories,\n version: options.version,\n }),\n })\n const lines = formatJsDocSinceUpdateResult(result)\n if (lines.length === 0) {\n console.log(\"No JSDoc @since next-release tags updated.\")\n return\n }\n\n for (const line of lines) {\n console.log(line)\n }\n })\n\nprogram\n .command(\"create-github-releases\")\n .description(\"Create GitHub releases for published packages from changelogs\")\n .option(\n \"--token <token>\",\n \"GitHub token for authentication (falls back to TOKEN or GITHUB_TOKEN env vars)\",\n )\n .option(\n \"--repo <owner/repo>\",\n \"GitHub repository in owner/repo format (defaults to git remote origin)\",\n )\n .option(\n \"--config <path>\",\n \"Path to the changesets config file, relative to the project root\",\n )\n .action((options) => {\n const token = options.token ?? process.env.TOKEN ?? process.env.GITHUB_TOKEN\n if (!token) {\n console.error(\n \"GitHub token is required. Use --token, or set TOKEN or GITHUB_TOKEN env var.\",\n )\n process.exit(1)\n }\n return createGitHubReleases({\n configPath: options.config,\n repo: options.repo,\n token,\n })\n })\n\nprogram.parse(process.argv)\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-github-releases.d.ts","sourceRoot":"","sources":["../src/create-github-releases.ts"],"names":[],"mappings":"AAWA,UAAU,oBAAoB;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AA+CD,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,iBA6CvE"}
1
+ {"version":3,"file":"create-github-releases.d.ts","sourceRoot":"","sources":["../src/create-github-releases.ts"],"names":[],"mappings":"AAUA,UAAU,oBAAoB;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AA+CD,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,iBA6CvE"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- export { default as changelogFormatter } from "./changelog-formatter";
2
1
  export { checkVersions } from "./check-versions";
3
2
  export { consolidateChangelog, consolidateChangelogs, getChangedChangelogs, } from "./consolidate-changelogs";
4
3
  export { createGitHubReleases } from "./create-github-releases";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AACnE,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAA;AAC7D,YAAY,EAAC,wBAAwB,EAAC,MAAM,QAAQ,CAAA;AACpD,OAAO,EAAC,2BAA2B,EAAC,MAAM,QAAQ,CAAA;AAClD,OAAO,EAAC,sBAAsB,EAAC,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,qCAAqC,EACrC,kCAAkC,EAClC,4BAA4B,EAC5B,qCAAqC,EACrC,+BAA+B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EACpB,KAAK,0BAA0B,GAChC,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,wCAAwC,EACxC,wBAAwB,EACxB,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAA;AAC7D,YAAY,EAAC,wBAAwB,EAAC,MAAM,QAAQ,CAAA;AACpD,OAAO,EAAC,2BAA2B,EAAC,MAAM,QAAQ,CAAA;AAClD,OAAO,EAAC,sBAAsB,EAAC,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,qCAAqC,EACrC,kCAAkC,EAClC,4BAA4B,EAC5B,qCAAqC,EACrC,+BAA+B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EACpB,KAAK,0BAA0B,GAChC,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,wCAAwC,EACxC,wBAAwB,EACxB,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAA"}