@changesets/cli
Advanced tools
@@ -1,2 +0,2 @@ | ||
| const getAddMessage = async (changeset, options) => { | ||
| const getAddMessage = (changeset, options) => { | ||
| const skipCI = options?.skipCI === "add" || options?.skipCI === true; | ||
@@ -6,3 +6,3 @@ const skipMsg = skipCI ? `\n\n[skip ci]\n` : ""; | ||
| }; | ||
| const getVersionMessage = async (releasePlan, options) => { | ||
| const getVersionMessage = (releasePlan, options) => { | ||
| const skipCI = options?.skipCI === "version" || options?.skipCI === true; | ||
@@ -9,0 +9,0 @@ const publishableReleases = releasePlan.releases.filter(release => release.type !== "none"); |
+105
-107
@@ -1,6 +0,9 @@ | ||
| import mri from 'mri'; | ||
| import { createRequire } from 'node:module'; | ||
| import { format } from 'node:util'; | ||
| import { ExitError, PreEnterButInPreModeError, PreExitButNotInPreModeError, InternalError } from '@changesets/errors'; | ||
| import * as logger from '@changesets/logger'; | ||
| import { prefix, error, success, log, warn, info } from '@changesets/logger'; | ||
| import { format } from 'util'; | ||
| import mri from 'mri'; | ||
| import fs from 'node:fs/promises'; | ||
| import path, { resolve as resolve$1 } from 'node:path'; | ||
| import { defaultWrittenConfig, read } from '@changesets/config'; | ||
@@ -10,18 +13,14 @@ import { getDependentsGraph } from '@changesets/get-dependents-graph'; | ||
| import { getPackages } from '@manypkg/get-packages'; | ||
| import fs from 'node:fs/promises'; | ||
| import path, { resolve as resolve$1 } from 'path'; | ||
| import pc from 'picocolors'; | ||
| import { spawn } from 'child_process'; | ||
| import { spawn } from 'node:child_process'; | ||
| import { pathToFileURL, fileURLToPath } from 'node:url'; | ||
| import * as git from '@changesets/git'; | ||
| import { getChangedPackagesSinceRef, getCurrentCommitId } from '@changesets/git'; | ||
| import writeChangeset from '@changesets/write'; | ||
| import { writeChangeset } from '@changesets/write'; | ||
| import { edit, ExternalEditor } from '@inquirer/external-editor'; | ||
| import pc from 'picocolors'; | ||
| import { resolve } from 'import-meta-resolve'; | ||
| import { pathToFileURL } from 'node:url'; | ||
| import ansiColors from 'ansi-colors'; | ||
| import enuirer from 'enquirer'; | ||
| import ansiColors from 'ansi-colors'; | ||
| import semverLt from 'semver/functions/lt.js'; | ||
| import { existsSync } from 'node:fs'; | ||
| import path$1 from 'node:path'; | ||
| import { createRequire } from 'node:module'; | ||
| import { enterPre, exitPre, readPreState } from '@changesets/pre'; | ||
@@ -31,6 +30,6 @@ import semverParse from 'semver/functions/parse.js'; | ||
| import { exec } from 'tinyexec'; | ||
| import getReleasePlan from '@changesets/get-release-plan'; | ||
| import { getReleasePlan } from '@changesets/get-release-plan'; | ||
| import applyReleasePlan from '@changesets/apply-release-plan'; | ||
| import readChangesets from '@changesets/read'; | ||
| import assembleReleasePlan from '@changesets/assemble-release-plan'; | ||
| import { assembleReleasePlan } from '@changesets/assemble-release-plan'; | ||
| import { readChangesets } from '@changesets/read'; | ||
@@ -47,3 +46,6 @@ const COMMAND_HELP = { | ||
| async function getCommitFunctions(commit, cwd) { | ||
| function importResolveFromDir(specifier, dir) { | ||
| return resolve(specifier, pathToFileURL(path.join(dir, "x.mjs")).toString()); | ||
| } | ||
| async function getCommitFunctions(commit, cwd, contextDir) { | ||
| let commitFunctions = {}; | ||
@@ -53,5 +55,10 @@ if (!commit) { | ||
| } | ||
| let commitOpts = commit[1]; | ||
| let changesetPath = path.join(cwd, ".changeset"); | ||
| let commitPath = resolve(commit[0], pathToFileURL(changesetPath).toString()); | ||
| const commitOpts = commit[1]; | ||
| const changesetPath = path.join(cwd, ".changeset"); | ||
| let commitPath; | ||
| try { | ||
| commitPath = importResolveFromDir(commit[0], changesetPath); | ||
| } catch { | ||
| commitPath = importResolveFromDir(commit[0], contextDir); | ||
| } | ||
| let possibleCommitFunc = await import(commitPath); | ||
@@ -94,3 +101,3 @@ if (possibleCommitFunc.default) { | ||
| const limit = Math.max(process.stdout.rows - 5, 10); | ||
| let cancelFlow = () => { | ||
| const cancelFlow = () => { | ||
| success("Cancelled... 👋 "); | ||
@@ -196,3 +203,3 @@ process.exit(); | ||
| log(yellow(`If you are unsure if this is correct, contact the package's maintainers ${red("before committing this changeset")}.`)); | ||
| let shouldReleaseFirstMajor = await askConfirm(bold(`Are you sure you want to release the ${red("first major version")} of ${pkgJSON.name}?`)); | ||
| const shouldReleaseFirstMajor = await askConfirm(bold(`Are you sure you want to release the ${red("first major version")} of ${pkgJSON.name}?`)); | ||
| return shouldReleaseFirstMajor; | ||
@@ -253,5 +260,5 @@ } | ||
| const packagesToRelease = await getPackagesToRelease(changedPackages, allPackages); | ||
| let pkgJsonsByName = getPkgJsonsByName(allPackages); | ||
| let pkgsLeftToGetBumpTypeFor = new Set(packagesToRelease); | ||
| let pkgsThatShouldBeMajorBumped = (await askCheckboxPlus(bold(`Which packages should have a ${red("major")} bump?`), [{ | ||
| const pkgJsonsByName = getPkgJsonsByName(allPackages); | ||
| const pkgsLeftToGetBumpTypeFor = new Set(packagesToRelease); | ||
| const pkgsThatShouldBeMajorBumped = (await askCheckboxPlus(bold(`Which packages should have a ${red("major")} bump?`), [{ | ||
| name: "all packages", | ||
@@ -276,4 +283,4 @@ choices: packagesToRelease.map(pkgName => { | ||
| // of packages. | ||
| let pkgJson = pkgJsonsByName.get(pkgName); | ||
| let shouldReleaseFirstMajor = await confirmMajorRelease(pkgJson); | ||
| const pkgJson = pkgJsonsByName.get(pkgName); | ||
| const shouldReleaseFirstMajor = await confirmMajorRelease(pkgJson); | ||
| if (shouldReleaseFirstMajor) { | ||
@@ -288,3 +295,3 @@ pkgsLeftToGetBumpTypeFor.delete(pkgName); | ||
| if (pkgsLeftToGetBumpTypeFor.size !== 0) { | ||
| let pkgsThatShouldBeMinorBumped = (await askCheckboxPlus(bold(`Which packages should have a ${green("minor")} bump?`), [{ | ||
| const pkgsThatShouldBeMinorBumped = (await askCheckboxPlus(bold(`Which packages should have a ${green("minor")} bump?`), [{ | ||
| name: "all packages", | ||
@@ -326,6 +333,6 @@ choices: [...pkgsLeftToGetBumpTypeFor].map(pkgName => { | ||
| } else { | ||
| let pkg = allPackages[0]; | ||
| let type = await askList(`What kind of change is this for ${green(pkg.packageJson.name)}? (current version is ${pkg.packageJson.version})`, ["patch", "minor", "major"]); | ||
| const pkg = allPackages[0]; | ||
| const type = await askList(`What kind of change is this for ${green(pkg.packageJson.name)}? (current version is ${pkg.packageJson.version})`, ["patch", "minor", "major"]); | ||
| if (type === "major") { | ||
| let shouldReleaseAsMajor = await confirmMajorRelease(pkg.packageJson); | ||
| const shouldReleaseAsMajor = await confirmMajorRelease(pkg.packageJson); | ||
| if (!shouldReleaseAsMajor) { | ||
@@ -340,3 +347,3 @@ throw new ExitError(1); | ||
| } | ||
| if (messageFromCli !== undefined) { | ||
| if (messageFromCli != null) { | ||
| return { | ||
@@ -361,3 +368,3 @@ confirmed: false, | ||
| } | ||
| } catch (err) { | ||
| } catch { | ||
| log("An error happened using external editor. Please type your summary here:"); | ||
@@ -403,3 +410,3 @@ } | ||
| if (packages.packages.length === 0) { | ||
| error(`No packages found. You might have ${packages.tool} workspaces configured but no packages yet?`); | ||
| error(`No packages found. You might have ${packages.tool.type} workspaces configured but no packages yet?`); | ||
| throw new ExitError(1); | ||
@@ -452,3 +459,3 @@ } | ||
| getAddMessage | ||
| }, commitOpts] = await getCommitFunctions(config.commit, cwd); | ||
| }, commitOpts] = await getCommitFunctions(config.commit, cwd, path.dirname(fileURLToPath(import.meta.url))); | ||
| if (getAddMessage) { | ||
@@ -461,3 +468,3 @@ await git.add(path.resolve(changesetBase, `${changesetID}.md`), cwd); | ||
| } | ||
| let hasMajorChange = [...newChangeset.releases].find(c => c.type === "major"); | ||
| const hasMajorChange = [...newChangeset.releases].find(c => c.type === "major"); | ||
| if (hasMajorChange) { | ||
@@ -486,9 +493,9 @@ warn("This Changeset includes a major change and we STRONGLY recommend adding more information to the changeset:"); | ||
| const require$1 = createRequire(import.meta.url); | ||
| const pkgPath = path$1.dirname(require$1.resolve("@changesets/cli/package.json")); | ||
| const pkgPath = path.dirname(require$1.resolve("@changesets/cli/package.json")); | ||
| const defaultConfig = `${JSON.stringify(defaultWrittenConfig, null, 2)}\n`; | ||
| async function init(cwd) { | ||
| const changesetBase = path$1.resolve(cwd, ".changeset"); | ||
| const changesetBase = path.resolve(cwd, ".changeset"); | ||
| if (existsSync(changesetBase)) { | ||
| if (!existsSync(path$1.join(changesetBase, "config.json"))) { | ||
| if (existsSync(path$1.join(changesetBase, "config.js"))) { | ||
| if (!existsSync(path.join(changesetBase, "config.json"))) { | ||
| if (existsSync(path.join(changesetBase, "config.js"))) { | ||
| error("It looks like you're using the version 1 `.changeset/config.js` file"); | ||
@@ -502,3 +509,3 @@ error("The format of the config object has significantly changed in v2 as well"); | ||
| } | ||
| await fs.writeFile(path$1.resolve(changesetBase, "config.json"), defaultConfig); | ||
| await fs.writeFile(path.resolve(changesetBase, "config.json"), defaultConfig); | ||
| } else { | ||
@@ -508,6 +515,6 @@ warn("It looks like you already have changesets initialized. You should be able to run changeset commands no problems."); | ||
| } else { | ||
| await fs.cp(path$1.resolve(pkgPath, "./default-files"), changesetBase, { | ||
| await fs.cp(path.resolve(pkgPath, "./default-files"), changesetBase, { | ||
| recursive: true | ||
| }); | ||
| await fs.writeFile(path$1.resolve(changesetBase, "config.json"), defaultConfig); | ||
| await fs.writeFile(path.resolve(changesetBase, "config.json"), defaultConfig); | ||
| log(`Thanks for choosing ${pc.green("changesets")} to help manage your versioning and publishing.\n`); | ||
@@ -551,13 +558,27 @@ log("You should be set up to start using changesets now!\n"); | ||
| function withResolvers() { | ||
| const rv = {}; | ||
| rv.promise = new Promise((resolve, reject) => { | ||
| rv.resolve = resolve; | ||
| rv.reject = reject; | ||
| }); | ||
| return rv; | ||
| async function getUntaggedPackages(packages, cwd, tool) { | ||
| const packageWithTags = await Promise.all(packages.map(async pkg => { | ||
| const tagName = tool.type === "root" ? `v${pkg.packageJson.version}` : `${pkg.packageJson.name}@${pkg.packageJson.version}`; | ||
| const isMissingTag = !((await git.tagExists(tagName, cwd)) || (await git.remoteTagExists(tagName))); | ||
| return { | ||
| pkg, | ||
| isMissingTag | ||
| }; | ||
| })); | ||
| const untagged = []; | ||
| for (const packageWithTag of packageWithTags) { | ||
| if (packageWithTag.isMissingTag) { | ||
| untagged.push({ | ||
| name: packageWithTag.pkg.packageJson.name, | ||
| newVersion: packageWithTag.pkg.packageJson.version | ||
| }); | ||
| } | ||
| } | ||
| return untagged; | ||
| } | ||
| function promiseTry(fn) { | ||
| return new Promise(resolve => resolve(fn())); | ||
| } | ||
| // TODO [engine:node@>=23]: remove when supported by minimum node version | ||
| const promiseTryPolyfill = (fn, ...args) => new Promise(resolve => resolve(fn(...args))); | ||
| const promiseTry = "try" in Promise ? Promise.try.bind(Promise) : promiseTryPolyfill; | ||
| function createPromiseQueue(concurrency) { | ||
@@ -591,3 +612,3 @@ const jobs = []; | ||
| reject | ||
| } = withResolvers(); | ||
| } = Promise.withResolvers(); | ||
| jobs.push({ | ||
@@ -614,3 +635,3 @@ fn, | ||
| return JSON.parse(str); | ||
| } catch (err) { | ||
| } catch { | ||
| // move past the potentially leading `{` so the regexp in the loop can try to match for the next `{` | ||
@@ -668,3 +689,3 @@ str = str.slice(1); | ||
| try { | ||
| let result = await exec("pnpm", ["--version"], { | ||
| const result = await exec("pnpm", ["--version"], { | ||
| nodeOptions: { | ||
@@ -674,9 +695,9 @@ cwd | ||
| }); | ||
| let version = result.stdout.toString().trim(); | ||
| let parsed = semverParse(version); | ||
| const version = result.stdout.toString().trim(); | ||
| const parsed = semverParse(version); | ||
| return { | ||
| name: "pnpm", | ||
| shouldAddNoGitChecks: parsed?.major === undefined ? false : parsed.major >= 5 | ||
| shouldAddNoGitChecks: parsed?.major == null ? false : parsed.major >= 5 | ||
| }; | ||
| } catch (e) { | ||
| } catch { | ||
| return { | ||
@@ -698,3 +719,3 @@ name: "pnpm", | ||
| }; | ||
| let result = await exec("npm", ["profile", "get", "--json"], { | ||
| const result = await exec("npm", ["profile", "get", "--json"], { | ||
| nodeOptions: { | ||
@@ -708,3 +729,3 @@ env: Object.assign({}, process.env, envOverride) | ||
| } | ||
| let json = jsonParse(result.stdout.toString()); | ||
| const json = jsonParse(result.stdout.toString()); | ||
| if (json.error || !json.tfa || !json.tfa.mode) { | ||
@@ -774,3 +795,3 @@ return false; | ||
| async function infoAllow404(packageJson) { | ||
| let pkgInfo = await getPackageInfo(packageJson); | ||
| const pkgInfo = await getPackageInfo(packageJson); | ||
| if (pkgInfo.error?.code === "E404") { | ||
@@ -866,3 +887,3 @@ warn(`Received 404 for npm info ${pc.cyan(`"${packageJson.name}"`)}`); | ||
| } | ||
| let { | ||
| const { | ||
| exitCode, | ||
@@ -887,3 +908,3 @@ stdout, | ||
| // Note that the `--json` output is always printed at the end so this should work | ||
| let json = getLastJsonObjectFromString(stderr.toString()) || getLastJsonObjectFromString(stdout.toString()); | ||
| const json = getLastJsonObjectFromString(stderr.toString()) || getLastJsonObjectFromString(stdout.toString()); | ||
| if (json?.error) { | ||
@@ -937,3 +958,3 @@ if (json.error.code === "E403" && isAlreadyPublishedError(json.error.summary)) { | ||
| if (tag) return tag; | ||
| if (preState !== undefined && pkgInfo.publishedState !== "only-pre") { | ||
| if (preState != null && pkgInfo.publishedState !== "only-pre") { | ||
| return preState.tag; | ||
@@ -988,3 +1009,3 @@ } | ||
| return Promise.all(unpublishedPackagesInfo.map(pkgInfo => { | ||
| let pkg = packagesByName.get(pkgInfo.name); | ||
| const pkg = packagesByName.get(pkgInfo.name); | ||
| return publishAPackage(pkg, access, twoFactorState, getReleaseTag(pkgInfo, preState, tag)); | ||
@@ -1020,3 +1041,3 @@ })); | ||
| publishedState = "published"; | ||
| if (preState !== undefined) { | ||
| if (preState != null) { | ||
| if (response.pkgInfo.versions && response.pkgInfo.versions.every(version => semverParse(version).prerelease[0] === preState.tag)) { | ||
@@ -1045,3 +1066,3 @@ publishedState = "only-pre"; | ||
| info(`${name} is being published because our local version (${localVersion}) has not been published on npm`); | ||
| if (preState !== undefined && publishedState === "only-pre") { | ||
| if (preState != null && publishedState === "only-pre") { | ||
| info(`${name} is being published to ${pc.cyan("latest")} rather than ${pc.cyan(preState.tag)} because there has not been a regular release of it yet`); | ||
@@ -1057,23 +1078,2 @@ } | ||
| async function getUntaggedPackages(packages, cwd, tool) { | ||
| const packageWithTags = await Promise.all(packages.map(async pkg => { | ||
| const tagName = tool.type === "root" ? `v${pkg.packageJson.version}` : `${pkg.packageJson.name}@${pkg.packageJson.version}`; | ||
| const isMissingTag = !((await git.tagExists(tagName, cwd)) || (await git.remoteTagExists(tagName))); | ||
| return { | ||
| pkg, | ||
| isMissingTag | ||
| }; | ||
| })); | ||
| const untagged = []; | ||
| for (const packageWithTag of packageWithTags) { | ||
| if (packageWithTag.isMissingTag) { | ||
| untagged.push({ | ||
| name: packageWithTag.pkg.packageJson.name, | ||
| newVersion: packageWithTag.pkg.packageJson.version | ||
| }); | ||
| } | ||
| } | ||
| return untagged; | ||
| } | ||
| function logReleases(pkgs) { | ||
@@ -1083,4 +1083,4 @@ const mappedPkgs = pkgs.map(p => `${p.name}@${p.newVersion}`).join("\n"); | ||
| } | ||
| let importantSeparator$1 = pc.red("===============================IMPORTANT!==============================="); | ||
| let importantEnd$1 = pc.red("----------------------------------------------------------------------"); | ||
| const importantSeparator$1 = pc.red("===============================IMPORTANT!==============================="); | ||
| const importantEnd$1 = pc.red("----------------------------------------------------------------------"); | ||
| function showNonLatestTagWarning(tag, preState) { | ||
@@ -1102,3 +1102,3 @@ warn(importantSeparator$1); | ||
| const releaseTag = tag && tag.length > 0 ? tag : undefined; | ||
| let preState = await readPreState(cwd); | ||
| const preState = await readPreState(cwd); | ||
| if (releaseTag && preState && preState.mode === "pre") { | ||
@@ -1254,4 +1254,4 @@ error("Releasing under custom tag is not allowed in pre mode"); | ||
| let importantSeparator = pc.red("===============================IMPORTANT!==============================="); | ||
| let importantEnd = pc.red("----------------------------------------------------------------------"); | ||
| const importantSeparator = pc.red("===============================IMPORTANT!==============================="); | ||
| const importantEnd = pc.red("----------------------------------------------------------------------"); | ||
| async function version(cwd, options, config) { | ||
@@ -1266,3 +1266,3 @@ const releaseConfig = { | ||
| warn(importantSeparator); | ||
| if (options.snapshot !== undefined) { | ||
| if (options.snapshot != null) { | ||
| error("Snapshot release is not allowed in pre mode"); | ||
@@ -1278,5 +1278,5 @@ log("To resolve this exit the pre mode by running `changeset pre exit`"); | ||
| } | ||
| if (changesets.length === 0 && (preState === undefined || preState.mode !== "exit")) { | ||
| if (changesets.length === 0 && (preState == null || preState.mode !== "exit")) { | ||
| warn("No unreleased changesets found, exiting."); | ||
| return; | ||
| throw new ExitError(1); | ||
| } | ||
@@ -1290,6 +1290,7 @@ const packages = await getPackages(cwd); | ||
| } : undefined); | ||
| const [...touchedFiles] = await applyReleasePlan(releasePlan, packages, releaseConfig, options.snapshot, import.meta.dirname); | ||
| const contextDir = path.dirname(fileURLToPath(import.meta.url)); | ||
| const [...touchedFiles] = await applyReleasePlan(releasePlan, packages, releaseConfig, options.snapshot, contextDir); | ||
| const [{ | ||
| getVersionMessage | ||
| }, commitOpts] = await getCommitFunctions(releaseConfig.commit, cwd); | ||
| }, commitOpts] = await getCommitFunctions(releaseConfig.commit, cwd, contextDir); | ||
| if (getVersionMessage) { | ||
@@ -1330,3 +1331,3 @@ let touchedFile; | ||
| await fs.access(path.resolve(packages.rootDir, ".changeset")); | ||
| } catch (err) { | ||
| } catch { | ||
| error("There is no .changeset folder. "); | ||
@@ -1341,3 +1342,3 @@ error("If this is the first time `changesets` have been used in this project, run `yarn changeset init` to get set up."); | ||
| } catch (e) { | ||
| let oldConfigExists = await fs.access(path.resolve(packages.rootDir, ".changeset/config.js")).then(() => true, () => false); | ||
| const oldConfigExists = await fs.access(path.resolve(packages.rootDir, ".changeset/config.js")).then(() => true, () => false); | ||
| if (oldConfigExists) { | ||
@@ -1413,3 +1414,3 @@ error("It looks like you're using the version 1 `.changeset/config.js` file"); | ||
| // Validate that items in ignoreArrayFromCmd are valid project names | ||
| let pkgNames = new Set(packages.packages.map(({ | ||
| const pkgNames = new Set(packages.packages.map(({ | ||
| packageJson | ||
@@ -1519,3 +1520,3 @@ }) => packageJson.name)); | ||
| validateCommandFlags("pre", flags); | ||
| let command = input[1]; | ||
| const command = input[1]; | ||
| if (command !== "enter" && command !== "exit") { | ||
@@ -1525,3 +1526,3 @@ error("`enter`, `exit` or `snapshot` must be passed after prerelease"); | ||
| } | ||
| let tag = input[2]; | ||
| const tag = input[2]; | ||
| if (command === "enter" && typeof tag !== "string") { | ||
@@ -1608,3 +1609,2 @@ error(`A tag must be passed when using prerelease enter`); | ||
| if (parsed.version && args.length === 1) { | ||
| // eslint-disable-next-line import/no-extraneous-dependencies | ||
| console.log(require("@changesets/cli/package.json").version); | ||
@@ -1632,5 +1632,3 @@ process.exit(0); | ||
| - @changesets/cli@${ | ||
| // eslint-disable-next-line import/no-extraneous-dependencies | ||
| require("@changesets/cli/package.json").version} | ||
| - @changesets/cli@${require("@changesets/cli/package.json").version} | ||
| - node@${process.version} | ||
@@ -1637,0 +1635,0 @@ |
@@ -1,3 +0,5 @@ | ||
| import type { CommitFunctions } from "@changesets/types"; | ||
| declare const defaultCommitFunctions: Required<CommitFunctions>; | ||
| declare const defaultCommitFunctions: { | ||
| getAddMessage: import("@changesets/types").GetAddMessage; | ||
| getVersionMessage: import("@changesets/types").GetVersionMessage; | ||
| }; | ||
| export default defaultCommitFunctions; |
+22
-21
| { | ||
| "name": "@changesets/cli", | ||
| "version": "3.0.0-next.2", | ||
| "version": "3.0.0-next.3", | ||
| "description": "Organise your package versioning and publishing to make both contributors and maintainers happy", | ||
@@ -45,16 +45,2 @@ "bin": { | ||
| "dependencies": { | ||
| "@changesets/apply-release-plan": "^8.0.0-next.2", | ||
| "@changesets/assemble-release-plan": "^7.0.0-next.2", | ||
| "@changesets/changelog-git": "^1.0.0-next.2", | ||
| "@changesets/config": "^4.0.0-next.2", | ||
| "@changesets/errors": "^1.0.0-next.1", | ||
| "@changesets/get-dependents-graph": "^3.0.0-next.2", | ||
| "@changesets/get-release-plan": "^5.0.0-next.2", | ||
| "@changesets/git": "^4.0.0-next.2", | ||
| "@changesets/logger": "^1.0.0-next.1", | ||
| "@changesets/pre": "^3.0.0-next.2", | ||
| "@changesets/read": "^1.0.0-next.2", | ||
| "@changesets/should-skip-package": "^1.0.0-next.2", | ||
| "@changesets/types": "^7.0.0-next.2", | ||
| "@changesets/write": "^1.0.0-next.2", | ||
| "@inquirer/external-editor": "^1.0.2", | ||
@@ -69,15 +55,30 @@ "@manypkg/get-packages": "^3.0.0", | ||
| "semver": "^7.5.3", | ||
| "tinyexec": "^1.0.2" | ||
| "tinyexec": "^1.0.2", | ||
| "@changesets/apply-release-plan": "^8.0.0-next.3", | ||
| "@changesets/assemble-release-plan": "^7.0.0-next.3", | ||
| "@changesets/changelog-git": "^1.0.0-next.3", | ||
| "@changesets/config": "^4.0.0-next.3", | ||
| "@changesets/errors": "^1.0.0-next.2", | ||
| "@changesets/get-dependents-graph": "^3.0.0-next.3", | ||
| "@changesets/get-release-plan": "^5.0.0-next.3", | ||
| "@changesets/git": "^4.0.0-next.3", | ||
| "@changesets/logger": "^1.0.0-next.2", | ||
| "@changesets/pre": "^3.0.0-next.3", | ||
| "@changesets/read": "^1.0.0-next.3", | ||
| "@changesets/should-skip-package": "^1.0.0-next.3", | ||
| "@changesets/types": "^7.0.0-next.3", | ||
| "@changesets/write": "^1.0.0-next.3" | ||
| }, | ||
| "devDependencies": { | ||
| "@changesets/parse": "1.0.0-next.2", | ||
| "@changesets/test-utils": "0.0.9-next.2", | ||
| "@types/semver": "^7.7.1", | ||
| "human-id": "^4.1.1", | ||
| "outdent": "^0.8.0", | ||
| "vitest": "^4.1.2" | ||
| "vitest": "^4.1.5", | ||
| "@changesets/changelog-github": "1.0.0-next.3", | ||
| "@changesets/parse": "1.0.0-next.3", | ||
| "@changesets/test-utils": "0.0.9-next.3" | ||
| }, | ||
| "engines": { | ||
| "node": ">=20.19.0" | ||
| "node": "^22.11 || ^24 || >=26" | ||
| } | ||
| } | ||
| } |
+4
-5
| ## @changesets/cli 🦋 | ||
| [](https://npmjs.com/package/@changesets/cli) | ||
| [](./CHANGELOG.md) | ||
| [](https://npmx.dev/package/@changesets/cli) | ||
| [](./CHANGELOG.md) | ||
@@ -10,5 +10,4 @@ The primary implementation of [changesets](https://github.com/changesets/changesets). Helps you manage the versioning | ||
| This package is intended as a successor to `@atlaskit/build-releases` with a more general focus. It works in | ||
| [bolt](https://www.npmjs.com/package/bolt) multi-package repositories, [yarn workspaces](https://classic.yarnpkg.com/en/docs/workspaces/) multi-package repositories, and | ||
| in single-package repositories. | ||
| This package is intended as a successor to `@atlaskit/build-releases` with a more general focus. | ||
| It supports single-package repositories as well as [pnpm](https://pnpm.io/workspaces), [yarn](https://yarnpkg.com/features/workspaces), and [npm](https://docs.npmjs.com/cli/v11/using-npm/workspaces) workspaces. | ||
@@ -15,0 +14,0 @@ ## Getting Started |
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Debug access
Supply chain riskUses debug, reflection and dynamic code execution features.
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
72410
0.58%7
16.67%1595
-0.06%198
-0.5%