@changesets/apply-release-plan
Advanced tools
+21
| MIT License | ||
| Copyright (c) 2019 Ben Conolly | ||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| of this software and associated documentation files (the "Software"), to deal | ||
| in the Software without restriction, including without limitation the rights | ||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
| copies of the Software, and to permit persons to whom the Software is | ||
| furnished to do so, subject to the following conditions: | ||
| The above copyright notice and this permission notice shall be included in all | ||
| copies or substantial portions of the Software. | ||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
| SOFTWARE. |
+25
-0
| # @changesets/apply-release-plan | ||
| ## 8.0.0-next.3 | ||
| ### Major Changes | ||
| - [#1954](https://github.com/changesets/changesets/pull/1954) [`ed6728c`](https://github.com/changesets/changesets/commit/ed6728ce3c089caaee19f71194a0cd7029480069) Thanks [@beeequeue](https://github.com/beeequeue)! - Bumped supported Node versions to `^22.11 || ^24 || >=26` | ||
| ### Minor Changes | ||
| - [#1969](https://github.com/changesets/changesets/pull/1969) [`2c7c043`](https://github.com/changesets/changesets/commit/2c7c043d7071440009f8a69eff0b0c6746ac7625) Thanks [@marcalexiei](https://github.com/marcalexiei)! - Add a named export that mirrors the current `default` export | ||
| The `default` export is slated for removal in the next major release, so this ensures a smoother transition path. | ||
| ### Patch Changes | ||
| - [#1667](https://github.com/changesets/changesets/pull/1667) [`81832f8`](https://github.com/changesets/changesets/commit/81832f855029f4093b2142ba22b747ba0de92425) Thanks [@Andarist](https://github.com/Andarist)! - Fixed resolution of changelog and commit generator modules so built-in modules can still be loaded when they are not installed in the target project. | ||
| - [#1985](https://github.com/changesets/changesets/pull/1985) [`ad3edbd`](https://github.com/changesets/changesets/commit/ad3edbdc78c7b2ba451577969b6137df275ec430) Thanks [@bluwy](https://github.com/bluwy)! - Update `detect-indent` package to v7 | ||
| - Updated dependencies [[`ed6728c`](https://github.com/changesets/changesets/commit/ed6728ce3c089caaee19f71194a0cd7029480069), [`b9407b3`](https://github.com/changesets/changesets/commit/b9407b39a458bab106d0e23a3afab01d07d8482f), [`2c7c043`](https://github.com/changesets/changesets/commit/2c7c043d7071440009f8a69eff0b0c6746ac7625), [`a0b5326`](https://github.com/changesets/changesets/commit/a0b5326570e8e7bf5e35c1cefe8f70d9a51a5cd7)]: | ||
| - @changesets/get-version-range-type@1.0.0-next.2 | ||
| - @changesets/should-skip-package@1.0.0-next.3 | ||
| - @changesets/config@4.0.0-next.3 | ||
| - @changesets/types@7.0.0-next.3 | ||
| - @changesets/git@4.0.0-next.3 | ||
| ## 8.0.0-next.2 | ||
@@ -4,0 +29,0 @@ |
@@ -0,1 +1,5 @@ | ||
| import fs from 'node:fs/promises'; | ||
| import { createRequire } from 'node:module'; | ||
| import path from 'node:path'; | ||
| import { pathToFileURL } from 'node:url'; | ||
| import { defaultConfig } from '@changesets/config'; | ||
@@ -5,18 +9,10 @@ import * as git from '@changesets/git'; | ||
| import detectIndent from 'detect-indent'; | ||
| import fs from 'node:fs/promises'; | ||
| import path$1 from 'path'; | ||
| import { resolve } from 'import-meta-resolve'; | ||
| import prettier from 'prettier'; | ||
| import { resolve } from 'import-meta-resolve'; | ||
| import validRange from 'semver/ranges/valid.js'; | ||
| import semverSatisfies from 'semver/functions/satisfies.js'; | ||
| import path from 'node:path'; | ||
| import getVersionRangeType from '@changesets/get-version-range-type'; | ||
| import { getVersionRangeType } from '@changesets/get-version-range-type'; | ||
| import Range from 'semver/classes/range.js'; | ||
| import semverPrerelease from 'semver/functions/prerelease.js'; | ||
| import { createRequire } from 'node:module'; | ||
| import { pathToFileURL } from 'node:url'; | ||
| /** | ||
| * Shared utility functions and business logic | ||
| */ | ||
| const bumpTypes = ["none", "patch", "minor", "major"]; | ||
@@ -101,6 +97,6 @@ | ||
| if (rls && rls.type !== "none") { | ||
| changelogLines[rls.type].push(changelogFuncs.getReleaseLine(cs, rls.type, changelogOpts)); | ||
| changelogLines[rls.type].push(Promise.resolve(changelogFuncs.getReleaseLine(cs, rls.type, changelogOpts))); | ||
| } | ||
| }); | ||
| let dependentReleases = releases.filter(rel => { | ||
| const dependentReleases = releases.filter(rel => { | ||
| const dependencyVersionRange = release.packageJson.dependencies?.[rel.name]; | ||
@@ -110,3 +106,3 @@ const peerDependencyVersionRange = release.packageJson.peerDependencies?.[rel.name]; | ||
| const usesWorkspaceRange = versionRange?.startsWith("workspace:"); | ||
| return versionRange && (usesWorkspaceRange || validRange(versionRange) !== null) && shouldUpdateDependencyBasedOnConfig(cwd, { | ||
| return versionRange && (usesWorkspaceRange || validRange(versionRange) != null) && shouldUpdateDependencyBasedOnConfig(cwd, { | ||
| type: rel.type, | ||
@@ -124,3 +120,3 @@ version: rel.newVersion, | ||
| }); | ||
| let relevantChangesetIds = new Set(); | ||
| const relevantChangesetIds = new Set(); | ||
| dependentReleases.forEach(rel => { | ||
@@ -131,4 +127,4 @@ rel.changesets.forEach(cs => { | ||
| }); | ||
| let relevantChangesets = changesets.filter(cs => relevantChangesetIds.has(cs.id)); | ||
| changelogLines.patch.push(changelogFuncs.getDependencyReleaseLine(relevantChangesets, dependentReleases, changelogOpts)); | ||
| const relevantChangesets = changesets.filter(cs => relevantChangesetIds.has(cs.id)); | ||
| changelogLines.patch.push(Promise.resolve(changelogFuncs.getDependencyReleaseLine(relevantChangesets, dependentReleases, changelogOpts))); | ||
| return [`## ${release.newVersion}`, await generateChangesForVersionTypeMarkdown(changelogLines, "major"), await generateChangesForVersionTypeMarkdown(changelogLines, "minor"), await generateChangesForVersionTypeMarkdown(changelogLines, "patch")].filter(line => line).join("\n"); | ||
@@ -145,3 +141,3 @@ } | ||
| }) { | ||
| let { | ||
| const { | ||
| newVersion, | ||
@@ -151,6 +147,6 @@ packageJson | ||
| packageJson.version = newVersion; | ||
| for (let depType of DEPENDENCY_TYPES) { | ||
| let deps = packageJson[depType]; | ||
| for (const depType of DEPENDENCY_TYPES) { | ||
| const deps = packageJson[depType]; | ||
| if (deps) { | ||
| for (let { | ||
| for (const { | ||
| name, | ||
@@ -178,3 +174,3 @@ version, | ||
| const usesWorkspaceRange = depCurrentVersion.startsWith("workspace:"); | ||
| if (!usesWorkspaceRange && (bumpVersionsWithWorkspaceProtocolOnly || validRange(depCurrentVersion) === null)) { | ||
| if (!usesWorkspaceRange && (bumpVersionsWithWorkspaceProtocolOnly || validRange(depCurrentVersion) == null)) { | ||
| continue; | ||
@@ -184,3 +180,3 @@ } | ||
| const workspaceDepVersion = depCurrentVersion.replace(/^workspace:/, ""); | ||
| if (workspaceDepVersion === "*" || workspaceDepVersion === "^" || workspaceDepVersion === "~" || validRange(workspaceDepVersion) === null) { | ||
| if (workspaceDepVersion === "*" || workspaceDepVersion === "^" || workspaceDepVersion === "~" || validRange(workspaceDepVersion) == null) { | ||
| continue; | ||
@@ -198,3 +194,3 @@ } | ||
| // leaving those as is would leave the package in a non-installable state (wrong dep versions would get installed) | ||
| semverPrerelease(version) !== null) { | ||
| semverPrerelease(version) != null) { | ||
| let newNewRange = snapshot ? version : `${getVersionRangeType(depCurrentVersion)}${version}`; | ||
@@ -214,2 +210,5 @@ if (usesWorkspaceRange) newNewRange = `workspace:${newNewRange}`; | ||
| const require = createRequire(import.meta.url); | ||
| function importResolveFromDir(specifier, dir) { | ||
| return resolve(specifier, pathToFileURL(path.join(dir, "x.mjs")).toString()); | ||
| } | ||
| function getPrettierInstance(cwd) { | ||
@@ -257,11 +256,11 @@ try { | ||
| async function applyReleasePlan(releasePlan, packages, config = defaultConfig, snapshot, contextDir = import.meta.dirname) { | ||
| let cwd = packages.rootDir; | ||
| let touchedFiles = []; | ||
| const cwd = packages.rootDir; | ||
| const touchedFiles = []; | ||
| const packagesByName = new Map(packages.packages.map(x => [x.packageJson.name, x])); | ||
| let { | ||
| const { | ||
| releases, | ||
| changesets | ||
| } = releasePlan; | ||
| let releasesWithPackage = releases.map(release => { | ||
| let pkg = packagesByName.get(release.name); | ||
| const releasesWithPackage = releases.map(release => { | ||
| const pkg = packagesByName.get(release.name); | ||
| if (!pkg) throw new Error(`Could not find matching package for release of: ${release.name}`); | ||
@@ -275,6 +274,6 @@ return { | ||
| // I think this might be the wrong place to do this, but gotta do it somewhere - add changelog entries to releases | ||
| let releaseWithChangelogs = await getNewChangelogEntry(releasesWithPackage, changesets, config, cwd, contextDir); | ||
| if (releasePlan.preState !== undefined && snapshot === undefined) { | ||
| const releaseWithChangelogs = await getNewChangelogEntry(releasesWithPackage, changesets, config, cwd, contextDir); | ||
| if (releasePlan.preState != null && snapshot == null) { | ||
| if (releasePlan.preState.mode === "exit") { | ||
| await fs.rm(path$1.join(cwd, ".changeset", "pre.json"), { | ||
| await fs.rm(path.join(cwd, ".changeset", "pre.json"), { | ||
| recursive: true, | ||
@@ -284,7 +283,7 @@ force: true | ||
| } else { | ||
| await fs.writeFile(path$1.join(cwd, ".changeset", "pre.json"), JSON.stringify(releasePlan.preState, null, 2) + "\n"); | ||
| await fs.writeFile(path.join(cwd, ".changeset", "pre.json"), JSON.stringify(releasePlan.preState, null, 2) + "\n"); | ||
| } | ||
| touchedFiles.push(path$1.join(cwd, ".changeset", "pre.json")); | ||
| touchedFiles.push(path.join(cwd, ".changeset", "pre.json")); | ||
| } | ||
| let versionsToUpdate = releases.map(({ | ||
| const versionsToUpdate = releases.map(({ | ||
| name, | ||
@@ -303,3 +302,3 @@ newVersion, | ||
| // iterate over releases updating packages | ||
| let finalisedRelease = releaseWithChangelogs.map(release => { | ||
| const finalisedRelease = releaseWithChangelogs.map(release => { | ||
| return versionPackage(release, versionsToUpdate, { | ||
@@ -313,5 +312,5 @@ cwd, | ||
| }); | ||
| let prettierInstance = config.prettier !== false ? getPrettierInstance(cwd) : undefined; | ||
| for (let release of finalisedRelease) { | ||
| let { | ||
| const prettierInstance = config.prettier !== false ? getPrettierInstance(cwd) : undefined; | ||
| for (const release of finalisedRelease) { | ||
| const { | ||
| changelog, | ||
@@ -322,7 +321,7 @@ packageJson, | ||
| } = release; | ||
| const pkgJSONPath = path$1.resolve(dir, "package.json"); | ||
| const pkgJSONPath = path.resolve(dir, "package.json"); | ||
| await updatePackageJson(pkgJSONPath, packageJson); | ||
| touchedFiles.push(pkgJSONPath); | ||
| if (changelog && changelog.length > 0) { | ||
| const changelogPath = path$1.resolve(dir, "CHANGELOG.md"); | ||
| const changelogPath = path.resolve(dir, "CHANGELOG.md"); | ||
| await updateChangelog(changelogPath, changelog, name, prettierInstance); | ||
@@ -332,7 +331,7 @@ touchedFiles.push(changelogPath); | ||
| } | ||
| if (releasePlan.preState === undefined || releasePlan.preState.mode === "exit") { | ||
| let changesetFolder = path$1.resolve(cwd, ".changeset"); | ||
| if (releasePlan.preState == null || releasePlan.preState.mode === "exit") { | ||
| const changesetFolder = path.resolve(cwd, ".changeset"); | ||
| await Promise.all(changesets.map(async changeset => { | ||
| let changesetPath = path$1.resolve(changesetFolder, `${changeset.id}.md`); | ||
| let changesetFolderPath = path$1.resolve(changesetFolder, changeset.id); | ||
| const changesetPath = path.resolve(changesetFolder, `${changeset.id}.md`); | ||
| const changesetFolderPath = path.resolve(changesetFolder, changeset.id); | ||
| if (await fs.access(changesetPath).then(() => true, () => false)) { | ||
@@ -380,8 +379,8 @@ // DO NOT remove changeset for skipped packages | ||
| const changelogOpts = config.changelog[1]; | ||
| let changesetPath = path$1.join(cwd, ".changeset"); | ||
| const changesetPath = path.join(cwd, ".changeset"); | ||
| let changelogPath; | ||
| try { | ||
| changelogPath = resolve(config.changelog[0], pathToFileURL(changesetPath).toString()); | ||
| changelogPath = importResolveFromDir(config.changelog[0], changesetPath); | ||
| } catch { | ||
| changelogPath = resolve(config.changelog[0], pathToFileURL(contextDir).toString()); | ||
| changelogPath = importResolveFromDir(config.changelog[0], contextDir); | ||
| } | ||
@@ -402,4 +401,4 @@ let possibleChangelogFunc = await import(changelogPath); | ||
| } | ||
| let commits = await getCommitsThatAddChangesets(changesets.map(cs => cs.id), cwd); | ||
| let moddedChangesets = changesets.map((cs, i) => ({ | ||
| const commits = await getCommitsThatAddChangesets(changesets.map(cs => cs.id), cwd); | ||
| const moddedChangesets = changesets.map((cs, i) => ({ | ||
| ...cs, | ||
@@ -409,3 +408,3 @@ commit: commits[i] | ||
| return Promise.all(releasesWithPackage.map(async release => { | ||
| let changelog = await getChangelogEntry(cwd, release, releasesWithPackage, moddedChangesets, getChangelogFuncs, changelogOpts, { | ||
| const changelog = await getChangelogEntry(cwd, release, releasesWithPackage, moddedChangesets, getChangelogFuncs, changelogOpts, { | ||
| updateInternalDependencies: config.updateInternalDependencies, | ||
@@ -425,3 +424,3 @@ onlyUpdatePeerDependentsWhenOutOfRange: config.___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH.onlyUpdatePeerDependentsWhenOutOfRange | ||
| async function updateChangelog(changelogPath, changelog, name, prettierInstance) { | ||
| let templateString = `\n\n${changelog.trim()}\n`; | ||
| const templateString = `\n\n${changelog.trim()}\n`; | ||
| let fileData; | ||
@@ -465,2 +464,5 @@ try { | ||
| } | ||
| /** @deprecated Use named export `applyReleasePlan` instead */ | ||
| const applyReleasePlanDefault = applyReleasePlan; | ||
| async function writeFormattedMarkdownFile(filePath, content, prettierInstance) { | ||
@@ -476,2 +478,2 @@ await fs.writeFile(filePath, prettierInstance ? | ||
| export { applyReleasePlan as default }; | ||
| export { applyReleasePlan, applyReleasePlanDefault as default }; |
| import type { Packages, Config, ReleasePlan } from "@changesets/types"; | ||
| export default function applyReleasePlan(releasePlan: ReleasePlan, packages: Packages, config?: Config, snapshot?: string | boolean, contextDir?: string): Promise<string[]>; | ||
| export declare function applyReleasePlan(releasePlan: ReleasePlan, packages: Packages, config?: Config, snapshot?: string | boolean, contextDir?: string): Promise<string[]>; | ||
| /** @deprecated Use named export `applyReleasePlan` instead */ | ||
| declare const applyReleasePlanDefault: typeof applyReleasePlan; | ||
| export default applyReleasePlanDefault; |
+12
-12
| { | ||
| "name": "@changesets/apply-release-plan", | ||
| "version": "8.0.0-next.2", | ||
| "version": "8.0.0-next.3", | ||
| "description": "Takes a release plan and applies it to packages", | ||
@@ -13,21 +13,21 @@ "type": "module", | ||
| "dependencies": { | ||
| "@changesets/config": "^4.0.0-next.2", | ||
| "@changesets/get-version-range-type": "^1.0.0-next.1", | ||
| "@changesets/git": "^4.0.0-next.2", | ||
| "@changesets/should-skip-package": "^1.0.0-next.2", | ||
| "@changesets/types": "^7.0.0-next.2", | ||
| "detect-indent": "^6.0.0", | ||
| "detect-indent": "^7.0.2", | ||
| "import-meta-resolve": "^4.2.0", | ||
| "prettier": "^3.7.4", | ||
| "semver": "^7.5.3" | ||
| "semver": "^7.5.3", | ||
| "@changesets/config": "^4.0.0-next.3", | ||
| "@changesets/get-version-range-type": "^1.0.0-next.2", | ||
| "@changesets/should-skip-package": "^1.0.0-next.3", | ||
| "@changesets/git": "^4.0.0-next.3", | ||
| "@changesets/types": "^7.0.0-next.3" | ||
| }, | ||
| "devDependencies": { | ||
| "@changesets/test-utils": "0.0.9-next.2", | ||
| "@manypkg/get-packages": "^3.0.0", | ||
| "outdent": "^0.8.0", | ||
| "tinyexec": "^1.0.2" | ||
| "tinyexec": "^1.0.2", | ||
| "@changesets/test-utils": "0.0.9-next.3" | ||
| }, | ||
| "engines": { | ||
| "node": ">=20.19.0" | ||
| "node": "^22.11 || ^24 || >=26" | ||
| } | ||
| } | ||
| } |
+2
-2
| # Apply Release Plan | ||
| [](https://npmjs.com/package/@changesets/apply-release-plan) | ||
| [](./CHANGELOG.md) | ||
| [](https://npmx.dev/package/@changesets/apply-release-plan) | ||
| [](./CHANGELOG.md) | ||
@@ -6,0 +6,0 @@ This takes a `releasePlan` object for changesets and applies the expected changes from that |
@@ -27,3 +27,3 @@ import type { | ||
| // release is the package and version we are releasing | ||
| export default async function getChangelogEntry( | ||
| export async function getChangelogEntry( | ||
| cwd: string, | ||
@@ -59,7 +59,9 @@ release: ModCompWithPackage, | ||
| changelogLines[rls.type].push( | ||
| changelogFuncs.getReleaseLine(cs, rls.type, changelogOpts), | ||
| Promise.resolve( | ||
| changelogFuncs.getReleaseLine(cs, rls.type, changelogOpts), | ||
| ), | ||
| ); | ||
| } | ||
| }); | ||
| let dependentReleases = releases.filter((rel) => { | ||
| const dependentReleases = releases.filter((rel) => { | ||
| const dependencyVersionRange = release.packageJson.dependencies?.[rel.name]; | ||
@@ -73,3 +75,3 @@ const peerDependencyVersionRange = | ||
| versionRange && | ||
| (usesWorkspaceRange || validRange(versionRange) !== null) && | ||
| (usesWorkspaceRange || validRange(versionRange) != null) && | ||
| shouldUpdateDependencyBasedOnConfig( | ||
@@ -95,3 +97,3 @@ cwd, | ||
| let relevantChangesetIds: Set<string> = new Set(); | ||
| const relevantChangesetIds: Set<string> = new Set(); | ||
@@ -104,3 +106,3 @@ dependentReleases.forEach((rel) => { | ||
| let relevantChangesets = changesets.filter((cs) => | ||
| const relevantChangesets = changesets.filter((cs) => | ||
| relevantChangesetIds.has(cs.id), | ||
@@ -110,6 +112,8 @@ ); | ||
| changelogLines.patch.push( | ||
| changelogFuncs.getDependencyReleaseLine( | ||
| relevantChangesets, | ||
| dependentReleases, | ||
| changelogOpts, | ||
| Promise.resolve( | ||
| changelogFuncs.getDependencyReleaseLine( | ||
| relevantChangesets, | ||
| dependentReleases, | ||
| changelogOpts, | ||
| ), | ||
| ), | ||
@@ -116,0 +120,0 @@ ); |
+42
-40
@@ -0,1 +1,5 @@ | ||
| import fs from "node:fs/promises"; | ||
| import { createRequire } from "node:module"; | ||
| import path from "node:path"; | ||
| import { pathToFileURL } from "node:url"; | ||
| import { defaultConfig } from "@changesets/config"; | ||
@@ -13,13 +17,13 @@ import * as git from "@changesets/git"; | ||
| import detectIndent from "detect-indent"; | ||
| import fs from "node:fs/promises"; | ||
| import path from "path"; | ||
| import { resolve } from "import-meta-resolve"; | ||
| import prettier from "prettier"; | ||
| import { resolve } from "import-meta-resolve"; | ||
| import getChangelogEntry from "./get-changelog-entry.ts"; | ||
| import versionPackage from "./version-package.ts"; | ||
| import { createRequire } from "node:module"; | ||
| import { pathToFileURL } from "node:url"; | ||
| import { getChangelogEntry } from "./get-changelog-entry.ts"; | ||
| import { versionPackage } from "./version-package.ts"; | ||
| const require = createRequire(import.meta.url); | ||
| function importResolveFromDir(specifier: string, dir: string) { | ||
| return resolve(specifier, pathToFileURL(path.join(dir, "x.mjs")).toString()); | ||
| } | ||
| function getPrettierInstance(cwd: string): typeof prettier { | ||
@@ -72,3 +76,3 @@ try { | ||
| export default async function applyReleasePlan( | ||
| export async function applyReleasePlan( | ||
| releasePlan: ReleasePlan, | ||
@@ -80,5 +84,5 @@ packages: Packages, | ||
| ) { | ||
| let cwd = packages.rootDir; | ||
| const cwd = packages.rootDir; | ||
| let touchedFiles = []; | ||
| const touchedFiles = []; | ||
@@ -89,6 +93,6 @@ const packagesByName = new Map( | ||
| let { releases, changesets } = releasePlan; | ||
| const { releases, changesets } = releasePlan; | ||
| let releasesWithPackage = releases.map((release) => { | ||
| let pkg = packagesByName.get(release.name); | ||
| const releasesWithPackage = releases.map((release) => { | ||
| const pkg = packagesByName.get(release.name); | ||
| if (!pkg) | ||
@@ -105,3 +109,3 @@ throw new Error( | ||
| // I think this might be the wrong place to do this, but gotta do it somewhere - add changelog entries to releases | ||
| let releaseWithChangelogs = await getNewChangelogEntry( | ||
| const releaseWithChangelogs = await getNewChangelogEntry( | ||
| releasesWithPackage, | ||
@@ -114,3 +118,3 @@ changesets, | ||
| if (releasePlan.preState !== undefined && snapshot === undefined) { | ||
| if (releasePlan.preState != null && snapshot == null) { | ||
| if (releasePlan.preState.mode === "exit") { | ||
@@ -130,3 +134,3 @@ await fs.rm(path.join(cwd, ".changeset", "pre.json"), { | ||
| let versionsToUpdate = releases.map( | ||
| const versionsToUpdate = releases.map( | ||
| ({ name, newVersion, oldVersion, type }) => ({ | ||
@@ -142,3 +146,3 @@ name, | ||
| // iterate over releases updating packages | ||
| let finalisedRelease = releaseWithChangelogs.map((release) => { | ||
| const finalisedRelease = releaseWithChangelogs.map((release) => { | ||
| return versionPackage(release, versionsToUpdate, { | ||
@@ -156,7 +160,7 @@ cwd, | ||
| let prettierInstance = | ||
| const prettierInstance = | ||
| config.prettier !== false ? getPrettierInstance(cwd) : undefined; | ||
| for (let release of finalisedRelease) { | ||
| let { changelog, packageJson, dir, name } = release; | ||
| for (const release of finalisedRelease) { | ||
| const { changelog, packageJson, dir, name } = release; | ||
@@ -174,11 +178,11 @@ const pkgJSONPath = path.resolve(dir, "package.json"); | ||
| if ( | ||
| releasePlan.preState === undefined || | ||
| releasePlan.preState.mode === "exit" | ||
| ) { | ||
| let changesetFolder = path.resolve(cwd, ".changeset"); | ||
| if (releasePlan.preState == null || releasePlan.preState.mode === "exit") { | ||
| const changesetFolder = path.resolve(cwd, ".changeset"); | ||
| await Promise.all( | ||
| changesets.map(async (changeset) => { | ||
| let changesetPath = path.resolve(changesetFolder, `${changeset.id}.md`); | ||
| let changesetFolderPath = path.resolve(changesetFolder, changeset.id); | ||
| const changesetPath = path.resolve( | ||
| changesetFolder, | ||
| `${changeset.id}.md`, | ||
| ); | ||
| const changesetFolderPath = path.resolve(changesetFolder, changeset.id); | ||
| if ( | ||
@@ -246,15 +250,9 @@ await fs.access(changesetPath).then( | ||
| const changelogOpts = config.changelog[1]; | ||
| let changesetPath = path.join(cwd, ".changeset"); | ||
| const changesetPath = path.join(cwd, ".changeset"); | ||
| let changelogPath; | ||
| try { | ||
| changelogPath = resolve( | ||
| config.changelog[0], | ||
| pathToFileURL(changesetPath).toString(), | ||
| ); | ||
| changelogPath = importResolveFromDir(config.changelog[0], changesetPath); | ||
| } catch { | ||
| changelogPath = resolve( | ||
| config.changelog[0], | ||
| pathToFileURL(contextDir).toString(), | ||
| ); | ||
| changelogPath = importResolveFromDir(config.changelog[0], contextDir); | ||
| } | ||
@@ -280,7 +278,7 @@ | ||
| let commits = await getCommitsThatAddChangesets( | ||
| const commits = await getCommitsThatAddChangesets( | ||
| changesets.map((cs) => cs.id), | ||
| cwd, | ||
| ); | ||
| let moddedChangesets = changesets.map((cs, i) => ({ | ||
| const moddedChangesets = changesets.map((cs, i) => ({ | ||
| ...cs, | ||
@@ -292,3 +290,3 @@ commit: commits[i], | ||
| releasesWithPackage.map(async (release) => { | ||
| let changelog = await getChangelogEntry( | ||
| const changelog = await getChangelogEntry( | ||
| cwd, | ||
@@ -330,3 +328,3 @@ release, | ||
| ) { | ||
| let templateString = `\n\n${changelog.trim()}\n`; | ||
| const templateString = `\n\n${changelog.trim()}\n`; | ||
| let fileData; | ||
@@ -394,2 +392,6 @@ | ||
| /** @deprecated Use named export `applyReleasePlan` instead */ | ||
| const applyReleasePlanDefault = applyReleasePlan; | ||
| export default applyReleasePlanDefault; | ||
| async function writeFormattedMarkdownFile( | ||
@@ -396,0 +398,0 @@ filePath: string, |
@@ -0,1 +1,6 @@ | ||
| // plugin, must have a default export | ||
| /* eslint-disable import-lite/no-default-export */ | ||
| import type { ChangelogFunctions } from "@changesets/types"; | ||
| export default { | ||
@@ -8,2 +13,2 @@ getReleaseLine: () => { | ||
| }, | ||
| }; | ||
| } satisfies ChangelogFunctions; |
| import { getCommitsThatAddFiles } from "@changesets/git"; | ||
| import type { ComprehensiveRelease, NewChangeset } from "@changesets/types"; | ||
| import type { RelevantChangesets } from "../types.ts"; | ||
@@ -36,2 +35,4 @@ import { capitalize } from "../utils.ts"; | ||
| // plugin, needs default export | ||
| // eslint-disable-next-line import-lite/no-default-export | ||
| export default async function defaultChangelogGetter( | ||
@@ -42,6 +43,6 @@ release: ComprehensiveRelease, | ||
| ) { | ||
| let { cwd } = options; | ||
| const { cwd } = options; | ||
| // First, we construct the release lines, summaries of changesets that caused us to be released | ||
| let majorReleaseLines = await getReleaseLines( | ||
| const majorReleaseLines = await getReleaseLines( | ||
| relevantChangesets, | ||
@@ -51,3 +52,3 @@ "major", | ||
| ); | ||
| let minorReleaseLines = await getReleaseLines( | ||
| const minorReleaseLines = await getReleaseLines( | ||
| relevantChangesets, | ||
@@ -57,3 +58,3 @@ "minor", | ||
| ); | ||
| let patchReleaseLines = await getReleaseLines( | ||
| const patchReleaseLines = await getReleaseLines( | ||
| relevantChangesets, | ||
@@ -60,0 +61,0 @@ "patch", |
+2
-2
@@ -0,1 +1,3 @@ | ||
| import path from "node:path"; | ||
| import type { VersionType } from "@changesets/types"; | ||
| /** | ||
@@ -6,4 +8,2 @@ * Shared utility functions and business logic | ||
| import validRange from "semver/ranges/valid.js"; | ||
| import type { VersionType } from "@changesets/types"; | ||
| import path from "node:path"; | ||
@@ -10,0 +10,0 @@ const bumpTypes = ["none", "patch", "minor", "major"]; |
@@ -0,1 +1,2 @@ | ||
| import { getVersionRangeType } from "@changesets/get-version-range-type"; | ||
| import type { | ||
@@ -6,3 +7,2 @@ ComprehensiveRelease, | ||
| } from "@changesets/types"; | ||
| import getVersionRangeType from "@changesets/get-version-range-type"; | ||
| import Range from "semver/classes/range.js"; | ||
@@ -20,3 +20,3 @@ import semverPrerelease from "semver/functions/prerelease.js"; | ||
| export default function versionPackage( | ||
| export function versionPackage( | ||
| release: ComprehensiveRelease & { | ||
@@ -48,10 +48,10 @@ changelog: string | null; | ||
| ) { | ||
| let { newVersion, packageJson } = release; | ||
| const { newVersion, packageJson } = release; | ||
| packageJson.version = newVersion; | ||
| for (let depType of DEPENDENCY_TYPES) { | ||
| let deps = packageJson[depType]; | ||
| for (const depType of DEPENDENCY_TYPES) { | ||
| const deps = packageJson[depType]; | ||
| if (deps) { | ||
| for (let { name, version, oldVersion, type, dir } of versionsToUpdate) { | ||
| for (const { name, version, oldVersion, type, dir } of versionsToUpdate) { | ||
| let depCurrentVersion = deps[name]; | ||
@@ -82,3 +82,3 @@ if ( | ||
| (bumpVersionsWithWorkspaceProtocolOnly || | ||
| validRange(depCurrentVersion) === null) | ||
| validRange(depCurrentVersion) == null) | ||
| ) { | ||
@@ -97,3 +97,3 @@ continue; | ||
| workspaceDepVersion === "~" || | ||
| validRange(workspaceDepVersion) === null | ||
| validRange(workspaceDepVersion) == null | ||
| ) { | ||
@@ -112,3 +112,3 @@ continue; | ||
| // leaving those as is would leave the package in a non-installable state (wrong dep versions would get installed) | ||
| semverPrerelease(version) !== null | ||
| semverPrerelease(version) != null | ||
| ) { | ||
@@ -115,0 +115,0 @@ let newNewRange = snapshot |
| // We are doing it here to avoide adding a circular dependency and as this is only used in testing. | ||
| // This is wicked, and please don't copy us. | ||
| // eslint-disable-next-line import/no-extraneous-dependencies | ||
| export { default } from "@changesets/cli/changelog"; |
| // We are doing it here to avoide adding a circular dependency and as this is only used in testing. | ||
| // This is wicked, and please don't copy us. | ||
| // eslint-disable-next-line import/no-extraneous-dependencies | ||
| export { default } from "@changesets/cli/commit"; |
Sorry, the diff of this file is too big to display
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
188084
1.49%16
-5.88%4396
-1.48%+ Added
- Removed
Updated