From 5ca3d26c6c33ac55afa07bdf89808205b856e7be Mon Sep 17 00:00:00 2001 From: dangreen Date: Sat, 27 Jun 2026 17:17:56 +0400 Subject: [PATCH] fix(core): generate release notes for new fixed monorepo packages --- packages/core/package.json | 2 +- packages/core/src/project/monorepo.ts | 13 +- packages/core/src/project/packageJson.spec.ts | 58 ++-- .../src/project/packageJsonMonorepo.spec.ts | 115 ++++++-- packages/core/src/project/project.ts | 5 +- packages/core/src/releaser.spec.ts | 6 +- packages/github/src/index.spec.ts | 4 +- packages/npm/src/workspacesProject.spec.ts | 8 +- packages/pnpm/src/workspacesProject.spec.ts | 6 +- packages/test/package.json | 2 +- packages/test/src/git.mock.ts | 4 +- packages/test/src/project.mock.ts | 106 ++++--- pnpm-lock.yaml | 279 ++---------------- pnpm-workspace.yaml | 2 +- 14 files changed, 239 insertions(+), 371 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 70c94a9..32d6f11 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -59,7 +59,7 @@ "test": "run -p lint test:unit test:types" }, "dependencies": { - "@conventional-changelog/git-client": "^3.0.0", + "@conventional-changelog/git-client": "^3.0.1", "@simple-libs/child-process-utils": "^2.0.0", "@simple-libs/hosted-git-info": "^2.0.0", "@simple-libs/stream-utils": "^2.0.0", diff --git a/packages/core/src/project/monorepo.ts b/packages/core/src/project/monorepo.ts index 382e9c6..40f2b26 100644 --- a/packages/core/src/project/monorepo.ts +++ b/packages/core/src/project/monorepo.ts @@ -198,7 +198,8 @@ export abstract class MonorepoProject extends Project { private async getBumpOptions( project: Project, options: MonorepoProjectBumpOptions, - baseVersion?: string + baseVersion?: string, + firstRelease?: boolean ) { const { preset = bumpDefaultOptions.preset, @@ -219,6 +220,7 @@ export abstract class MonorepoProject extends Project { scope: [scope, ...extraScopes] } const projectBumpOptions = { + firstRelease, ...bumpOptions, ...byProject?.[name], preset: projectPreset, @@ -274,6 +276,10 @@ export abstract class MonorepoProject extends Project { options: MonorepoProjectBumpOptions }[] = [] const baseVersion = await this.manifest.getVersion() + const tagPrefix = await this.getTagPrefix('') + const firstRelease = !await this.gitClient.getLastSemverTag({ + prefix: tagPrefix + }) let hasBump = false let fixedVersion: string | undefined @@ -281,7 +287,8 @@ export abstract class MonorepoProject extends Project { const projectBumpOptions = await this.getBumpOptions( project, options, - baseVersion + baseVersion, + firstRelease ) const version = await project.getNextVersion(projectBumpOptions) @@ -302,7 +309,7 @@ export abstract class MonorepoProject extends Project { ...options, forcePrivate: true, version: fixedVersion, - tagPrefix: await this.getTagPrefix('') + tagPrefix }) for (const { project, options } of updatedProjects) { diff --git a/packages/core/src/project/packageJson.spec.ts b/packages/core/src/project/packageJson.spec.ts index 03f7759..fc885b9 100644 --- a/packages/core/src/project/packageJson.spec.ts +++ b/packages/core/src/project/packageJson.spec.ts @@ -15,29 +15,29 @@ describe('core', () => { describe('manifest', () => { describe('PackageJsonProject', () => { it('should get no tags', async () => { - const path = await packageJsonProject() + const { cwd } = await packageJsonProject() const project = new PackageJsonProject({ - path: join(path, 'package.json') + path: join(cwd, 'package.json') }) expect(await project.getTags()).toEqual([]) }) it('should get tags', async () => { - const path = await packageJsonProject({ + const { cwd } = await packageJsonProject({ version: '3.0.0' }) const project = new PackageJsonProject({ - path: join(path, 'package.json') + path: join(cwd, 'package.json') }) expect(await project.getTags()).toEqual(['v3.0.0']) }) it('should get release data', async () => { - const path = await packageJsonProject() + const { cwd } = await packageJsonProject() const project = new PackageJsonProject({ - path: join(path, 'package.json') + path: join(cwd, 'package.json') }) const release = await project.getReleaseData() @@ -54,11 +54,11 @@ describe('core', () => { }) it('should not get release data', async () => { - const path = await packageJsonProject({ + const { cwd } = await packageJsonProject({ version: '3.0.0' }) const project = new PackageJsonProject({ - path: join(path, 'package.json') + path: join(cwd, 'package.json') }) const release = await project.getReleaseData() @@ -66,9 +66,9 @@ describe('core', () => { }) it('should get next version', async () => { - const path = await packageJsonProject() + const { cwd } = await packageJsonProject() const project = new PackageJsonProject({ - path: join(path, 'package.json') + path: join(cwd, 'package.json') }) const version = await project.getNextVersion() @@ -76,11 +76,11 @@ describe('core', () => { }) it('should not get next version for private package', async () => { - const path = await packageJsonProject({ + const { cwd } = await packageJsonProject({ private: true }) const project = new PackageJsonProject({ - path: join(path, 'package.json') + path: join(cwd, 'package.json') }) const version = await project.getNextVersion() @@ -88,9 +88,9 @@ describe('core', () => { }) it('should get next version from options', async () => { - const path = await packageJsonProject() + const { cwd } = await packageJsonProject() const project = new PackageJsonProject({ - path: join(path, 'package.json') + path: join(cwd, 'package.json') }) const version = await project.getNextVersion({ version: '3.0.0' @@ -100,9 +100,9 @@ describe('core', () => { }) it('should get next version from manifest because of first release', async () => { - const path = await packageJsonProject() + const { cwd } = await packageJsonProject() const project = new PackageJsonProject({ - path: join(path, 'package.json') + path: join(cwd, 'package.json') }) const version = await project.getNextVersion({ firstRelease: true @@ -112,9 +112,9 @@ describe('core', () => { }) it('should get next version with given release type', async () => { - const path = await packageJsonProject() + const { cwd } = await packageJsonProject() const project = new PackageJsonProject({ - path: join(path, 'package.json') + path: join(cwd, 'package.json') }) const version = await project.getNextVersion({ as: 'major' @@ -124,9 +124,9 @@ describe('core', () => { }) it('should get next prerelease version', async () => { - const path = await packageJsonProject() + const { cwd } = await packageJsonProject() const project = new PackageJsonProject({ - path: join(path, 'package.json') + path: join(cwd, 'package.json') }) const version = await project.getNextVersion({ prerelease: 'alpha' @@ -136,9 +136,9 @@ describe('core', () => { }) it('should dry bump version', async () => { - const path = await packageJsonProject() + const { cwd } = await packageJsonProject() const project = new PackageJsonProject({ - path: join(path, 'package.json') + path: join(cwd, 'package.json') }) const result = await project.bump({ dryRun: true @@ -155,13 +155,13 @@ describe('core', () => { } ]) - expect(await fs.readFile(join(path, 'package.json'), 'utf8')).toContain('"version":"2.0.0"') + expect(await fs.readFile(join(cwd, 'package.json'), 'utf8')).toContain('"version":"2.0.0"') }) it('should bump version', async () => { - const path = await forkProject('bump', packageJsonProject()) + const { cwd } = await forkProject('bump', packageJsonProject()) const project = new PackageJsonProject({ - path: join(path, 'package.json') + path: join(cwd, 'package.json') }) const result = await project.bump() @@ -176,14 +176,14 @@ describe('core', () => { } ]) - expect(await fs.readFile(join(path, 'package.json'), 'utf8')).toMatch(/"version":"2\.(0\.1|1\.0)"/) - expect(await fs.readFile(join(path, 'CHANGELOG.md'), 'utf8')).toMatch(/## \[2\.(0\.1|1\.0)\]/) + expect(await fs.readFile(join(cwd, 'package.json'), 'utf8')).toMatch(/"version":"2\.(0\.1|1\.0)"/) + expect(await fs.readFile(join(cwd, 'CHANGELOG.md'), 'utf8')).toMatch(/## \[2\.(0\.1|1\.0)\]/) }) it('should get commit message after bump', async () => { - const path = await packageJsonProject() + const { cwd } = await packageJsonProject() const project = new PackageJsonProject({ - path: join(path, 'package.json') + path: join(cwd, 'package.json') }) await project.bump({ diff --git a/packages/core/src/project/packageJsonMonorepo.spec.ts b/packages/core/src/project/packageJsonMonorepo.spec.ts index 6ff565a..c1f9e2f 100644 --- a/packages/core/src/project/packageJsonMonorepo.spec.ts +++ b/packages/core/src/project/packageJsonMonorepo.spec.ts @@ -1,3 +1,4 @@ +import fs from 'fs/promises' import { join } from 'path' import { describe, @@ -23,10 +24,10 @@ describe('core', () => { describe('PackageJsonMonorepoProject', () => { describe('independent mode', () => { it('should get no tags', async () => { - const path = await packageJsonIndependentMonorepoProject() + const { cwd } = await packageJsonIndependentMonorepoProject() const project = new PackageJsonMonorepoProject({ mode: 'independent', - root: path, + root: cwd, getProjects }) @@ -34,14 +35,14 @@ describe('core', () => { }) it('should get one tag', async () => { - const path = await packageJsonIndependentMonorepoProject({ + const { cwd } = await packageJsonIndependentMonorepoProject({ 2: { version: '3.0.0' } }) const project = new PackageJsonMonorepoProject({ mode: 'independent', - root: path, + root: cwd, getProjects }) @@ -49,7 +50,7 @@ describe('core', () => { }) it('should get few tags', async () => { - const path = await packageJsonIndependentMonorepoProject({ + const { cwd } = await packageJsonIndependentMonorepoProject({ 2: { version: '3.0.0' }, @@ -59,7 +60,7 @@ describe('core', () => { }) const project = new PackageJsonMonorepoProject({ mode: 'independent', - root: path, + root: cwd, getProjects }) @@ -67,10 +68,10 @@ describe('core', () => { }) it('should get release data', async () => { - const path = await packageJsonIndependentMonorepoProject() + const { cwd } = await packageJsonIndependentMonorepoProject() const project = new PackageJsonMonorepoProject({ mode: 'independent', - root: path, + root: cwd, getProjects }) const release = await project.getReleaseData() @@ -104,14 +105,14 @@ describe('core', () => { }) it('should not get some release data', async () => { - const path = await packageJsonIndependentMonorepoProject({ + const { cwd } = await packageJsonIndependentMonorepoProject({ 2: { version: '3.0.0' } }) const project = new PackageJsonMonorepoProject({ mode: 'independent', - root: path, + root: cwd, getProjects }) const release = await project.getReleaseData() @@ -137,10 +138,10 @@ describe('core', () => { }) it('should bump version', async () => { - const path = await forkProject('bump', packageJsonIndependentMonorepoProject()) + const { cwd } = await forkProject('bump', packageJsonIndependentMonorepoProject()) const project = new PackageJsonMonorepoProject({ mode: 'independent', - root: path, + root: cwd, getProjects }) const projects: Project[] = [] @@ -186,10 +187,10 @@ describe('core', () => { }) it('should get commit message after bump', async () => { - const path = await packageJsonIndependentMonorepoProject() + const { cwd } = await packageJsonIndependentMonorepoProject() const project = new PackageJsonMonorepoProject({ mode: 'independent', - root: path, + root: cwd, getProjects }) @@ -209,10 +210,10 @@ describe('core', () => { describe('fixed mode', () => { it('should get no tags', async () => { - const path = await packageJsonFixedMonorepoProject() + const { cwd } = await packageJsonFixedMonorepoProject() const project = new PackageJsonMonorepoProject({ mode: 'fixed', - root: path, + root: cwd, getProjects }) @@ -220,14 +221,14 @@ describe('core', () => { }) it('should get one tag', async () => { - const path = await packageJsonFixedMonorepoProject({ + const { cwd } = await packageJsonFixedMonorepoProject({ 0: { version: '3.0.0' } }) const project = new PackageJsonMonorepoProject({ mode: 'fixed', - root: path, + root: cwd, getProjects }) @@ -235,10 +236,10 @@ describe('core', () => { }) it('should get release data', async () => { - const path = await packageJsonFixedMonorepoProject() + const { cwd } = await packageJsonFixedMonorepoProject() const project = new PackageJsonMonorepoProject({ mode: 'fixed', - root: path, + root: cwd, getProjects }) const release = await project.getReleaseData() @@ -256,14 +257,14 @@ describe('core', () => { }) it('should not get release data', async () => { - const path = await packageJsonFixedMonorepoProject({ + const { cwd } = await packageJsonFixedMonorepoProject({ 0: { version: '3.0.0' } }) const project = new PackageJsonMonorepoProject({ mode: 'fixed', - root: path, + root: cwd, getProjects }) const release = await project.getReleaseData() @@ -272,10 +273,10 @@ describe('core', () => { }) it('should bump version', async () => { - const path = await forkProject('bump', packageJsonFixedMonorepoProject()) + const { cwd } = await forkProject('bump', packageJsonFixedMonorepoProject()) const project = new PackageJsonMonorepoProject({ mode: 'fixed', - root: path, + root: cwd, getProjects }) const result = await project.bump() @@ -315,10 +316,10 @@ describe('core', () => { }) it('should get commit message after bump', async () => { - const path = await packageJsonFixedMonorepoProject() + const { cwd } = await packageJsonFixedMonorepoProject() const project = new PackageJsonMonorepoProject({ mode: 'fixed', - root: path, + root: cwd, getProjects }) @@ -332,14 +333,14 @@ describe('core', () => { }) it('should bump using base version', async () => { - const path = await forkProject('bump', packageJsonFixedMonorepoProject({ + const { cwd } = await forkProject('bump', packageJsonFixedMonorepoProject({ 0: { version: '4.0.0' } })) const project = new PackageJsonMonorepoProject({ mode: 'fixed', - root: path, + root: cwd, getProjects }) const result = await project.bump() @@ -360,6 +361,64 @@ describe('core', () => { } ]) }) + + it('should generate release notes for a new project after a fixed release tag', async () => { + const { + cwd, + run + } = await forkProject( + 'fixed-monorepo-new-project', + packageJsonFixedMonorepoProject({}, { + postReleaseCommits: false + }) + ) + const projectPath = join(cwd, 'packages', 'subproject-4') + + await run([ + () => fs.mkdir(projectPath, { + recursive: true + }), + () => fs.writeFile( + join(projectPath, 'package.json'), + JSON.stringify({ + name: 'subproject-4', + version: '2.0.0', + description: 'A new subproject of package json monorepo project' + }) + ), + ({ git }) => git.add('package.json'), + ({ git }) => git.commit({ + message: 'feat(subproject-4): add subproject 4' + }) + ], projectPath) + + const project = new PackageJsonMonorepoProject({ + mode: 'fixed', + root: cwd, + getProjects + }) + const result = await project.bump({ + dryRun: true + }) + + expect(result).toBe(true) + expect(project.versionUpdates).toEqual(expect.arrayContaining([ + { + name: 'package-json-monorepo-project', + from: '2.0.0', + to: '2.1.0', + files: [expect.stringMatching(/package\.json$/)], + notes: expect.stringContaining('**subproject-4:** add subproject 4') + }, + { + name: 'subproject-4', + from: '2.0.0', + to: '2.1.0', + files: [expect.stringMatching(/package\.json$/)], + notes: expect.stringContaining('add subproject 4') + } + ])) + }) }) }) }) diff --git a/packages/core/src/project/project.ts b/packages/core/src/project/project.ts index 48e8b34..7c1464e 100644 --- a/packages/core/src/project/project.ts +++ b/packages/core/src/project/project.ts @@ -200,8 +200,9 @@ export abstract class Project { } if (typeof firstRelease === 'undefined') { - firstRelease = !await gitClient.getLastTag({ - path: projectPath + firstRelease = !await gitClient.getLastSemverTag({ + path: projectPath, + prefix: tagPrefix }) } diff --git a/packages/core/src/releaser.spec.ts b/packages/core/src/releaser.spec.ts index 13d04d3..0a38645 100644 --- a/packages/core/src/releaser.spec.ts +++ b/packages/core/src/releaser.spec.ts @@ -13,9 +13,9 @@ import { Releaser } from './releaser.js' describe('core', () => { describe('releaser', () => { it('should run smoke test', async () => { - const path = await packageJsonProject() + const { cwd } = await packageJsonProject() const project = new PackageJsonProject({ - path: join(path, 'package.json') + path: join(cwd, 'package.json') }) const releaser = new Releaser({ project, @@ -32,7 +32,7 @@ describe('core', () => { ) const tag = await project.gitClient.getLastTag() const packageJson = JSON.parse( - await fs.readFile(join(path, 'package.json'), 'utf-8') + await fs.readFile(join(cwd, 'package.json'), 'utf-8') ) expect(commit).toMatchObject({ diff --git a/packages/github/src/index.spec.ts b/packages/github/src/index.spec.ts index 5673114..36f38cc 100644 --- a/packages/github/src/index.spec.ts +++ b/packages/github/src/index.spec.ts @@ -15,9 +15,9 @@ import { GithubHosting } from './index.js' describe('github', () => { describe('GithubHosting', () => { it('should run smoke test', async () => { - const path = await packageJsonProject() + const { cwd } = await packageJsonProject() const project = new PackageJsonProject({ - path: join(path, 'package.json') + path: join(cwd, 'package.json') }) const log: LoggerMessage[] = [] const logger = new Logger({ diff --git a/packages/npm/src/workspacesProject.spec.ts b/packages/npm/src/workspacesProject.spec.ts index d7bf724..c972d0d 100644 --- a/packages/npm/src/workspacesProject.spec.ts +++ b/packages/npm/src/workspacesProject.spec.ts @@ -15,8 +15,8 @@ import { NpmWorkspacesProject } from './workspacesProject.js' describe('npm', () => { describe('NpmWorkspacesProject', () => { it('should parse workspaces from package.json', async () => { - const path = await forkProject('npm-workspaces', packageJsonIndependentMonorepoProject()) - const pkgJsonContent = await fs.readFile(join(path, 'package.json'), 'utf-8') + const { cwd } = await forkProject('npm-workspaces', packageJsonIndependentMonorepoProject()) + const pkgJsonContent = await fs.readFile(join(cwd, 'package.json'), 'utf-8') const pkgJson = JSON.parse(pkgJsonContent) pkgJson.workspaces = [ @@ -25,11 +25,11 @@ describe('npm', () => { 'packages/subproject-3' ] - await fs.writeFile(join(path, 'package.json'), JSON.stringify(pkgJson)) + await fs.writeFile(join(cwd, 'package.json'), JSON.stringify(pkgJson)) const project = new NpmWorkspacesProject({ mode: 'independent', - root: path + root: cwd }) const workspaces = await toArray(project.getProjects()) diff --git a/packages/pnpm/src/workspacesProject.spec.ts b/packages/pnpm/src/workspacesProject.spec.ts index 5e57a69..1b3f9ac 100644 --- a/packages/pnpm/src/workspacesProject.spec.ts +++ b/packages/pnpm/src/workspacesProject.spec.ts @@ -15,9 +15,9 @@ import { PnpmWorkspacesProject } from './workspacesProject.js' describe('pnpm', () => { describe('PnpmWorkspacesProject', () => { it('should parse workspaces from pnpm-workspace.yaml', async () => { - const path = await forkProject('pnpm-workspaces', packageJsonIndependentMonorepoProject()) + const { cwd } = await forkProject('pnpm-workspaces', packageJsonIndependentMonorepoProject()) - await fs.writeFile(join(path, 'pnpm-workspace.yaml'), `packages: + await fs.writeFile(join(cwd, 'pnpm-workspace.yaml'), `packages: - packages/subproject-1 - packages/subproject-2 - packages/subproject-3 @@ -25,7 +25,7 @@ describe('pnpm', () => { const project = new PnpmWorkspacesProject({ mode: 'independent', - root: path + root: cwd }) const workspaces = await toArray(project.getProjects()) diff --git a/packages/test/package.json b/packages/test/package.json index f12f96e..030fcf4 100644 --- a/packages/test/package.json +++ b/packages/test/package.json @@ -31,7 +31,7 @@ "test": "run -p lint test:types" }, "dependencies": { - "@conventional-changelog/git-client": "^3.0.0", + "@conventional-changelog/git-client": "^3.0.1", "@simple-libs/stream-utils": "^2.0.0", "@types/node": "^22.0.0" } diff --git a/packages/test/src/git.mock.ts b/packages/test/src/git.mock.ts index 5bdc786..1a1c44d 100644 --- a/packages/test/src/git.mock.ts +++ b/packages/test/src/git.mock.ts @@ -14,7 +14,9 @@ export interface ActionContext { git: GitClient } -export type Action = (ctx: ActionContext) => Promise +export type Action = (ctx: ActionContext) => Promise + +export type RepositoryRunner = (actions: Action[], dir?: string) => Promise export async function updateDummyFile(dir: string) { await fs.rm(join(dir, 'dummy'), { diff --git a/packages/test/src/project.mock.ts b/packages/test/src/project.mock.ts index 3145181..a39dc28 100644 --- a/packages/test/src/project.mock.ts +++ b/packages/test/src/project.mock.ts @@ -9,20 +9,26 @@ import { getMockFilePath } from './files.mock.js' import { + type RepositoryRunner, dummyCommit, createRepository } from './git.mock.js' +export interface ProjectContext { + cwd: string + run: RepositoryRunner +} + function base64(text: string) { return Buffer.from(text).toString('base64') } -const cache = new Map() +const cache = new Map() async function createCachedProject( type: string, manifest: string, - run: (path: string) => Promise + runner: (ctx: ProjectContext) => Promise ) { const snapshot = base64(manifest) @@ -30,37 +36,47 @@ async function createCachedProject( return cache.get(snapshot)! } - const path = await createDirectory(type) + const cwd = await createDirectory(type) + const run = await createRepository(cwd) + const ctx = { + cwd, + run + } - cache.set(snapshot, path) + cache.set(snapshot, ctx) - await run(path) + await runner(ctx) - return path + return ctx } -export async function forkProject(id: string, srcPathPromise: string | Promise) { +export async function forkProject(id: string, srcCtxPromise: ProjectContext | Promise) { const type = `fork-${id}` - const srcPath = await srcPathPromise + const { cwd: srcPath } = await srcCtxPromise const snapshot = `${type}-${basename(srcPath)}` if (cache.has(snapshot)) { return cache.get(snapshot)! } - const path = await createDirectory(type) + const cwd = await createDirectory(type) + const run = await createRepository(cwd) + const ctx = { + cwd, + run + } - cache.set(snapshot, path) + cache.set(snapshot, ctx) await fs.cp( srcPath, - path, + cwd, { recursive: true } ) - return path + return ctx } export async function packageJsonProject(pkg: Record = {}) { @@ -74,19 +90,20 @@ export async function packageJsonProject(pkg: Record = {}) { return createCachedProject( 'package-json-project', json, - async (path) => { + async ({ + cwd, + run + }) => { await fs.writeFile( - join(path, 'package.json'), + join(cwd, 'package.json'), json ) await fs.cp( getMockFilePath('CHANGELOG_3.md'), - join(path, 'CHANGELOG.md') + join(cwd, 'CHANGELOG.md') ) - const run = await createRepository(path) - await run([ ({ git }) => git.add(['package.json', 'CHANGELOG.md']), ctx => dummyCommit(ctx, 'feat'), @@ -134,24 +151,25 @@ export async function packageJsonIndependentMonorepoProject(pkgs: Record { + async ({ + cwd, + run + }) => { await fs.writeFile( - join(path, 'package.json'), + join(cwd, 'package.json'), JSON.stringify(pkgJsons[0]) ) - await fs.mkdir(join(path, 'packages'), { + await fs.mkdir(join(cwd, 'packages'), { recursive: true }) - const run = await createRepository(path) - await run([({ git }) => git.add('package.json'), ctx => dummyCommit(ctx, 'chore')]) const projects = Object.values(pkgJsons).slice(1) for (const pkg of projects) { - const projectDir = join(path, 'packages', pkg.name) + const projectDir = join(cwd, 'packages', pkg.name) await fs.mkdir(projectDir, { recursive: true @@ -181,7 +199,15 @@ export async function packageJsonIndependentMonorepoProject(pkgs: Record> = {}) { +export interface PackageJsonFixedMonorepoProjectOptions { + postReleaseCommits?: boolean +} + +export async function packageJsonFixedMonorepoProject( + pkgs: Record> = {}, + options: PackageJsonFixedMonorepoProjectOptions = {} +) { + const { postReleaseCommits = true } = options const pkgJsons = { ...pkgs, 0: { @@ -210,34 +236,38 @@ export async function packageJsonFixedMonorepoProject(pkgs: Record { + async ({ + cwd, + run + }) => { await fs.writeFile( - join(path, 'package.json'), + join(cwd, 'package.json'), JSON.stringify(pkgJsons[0]) ) await fs.cp( getMockFilePath('CHANGELOG_3.md'), - join(path, 'CHANGELOG.md') + join(cwd, 'CHANGELOG.md') ) - await fs.mkdir(join(path, 'packages'), { + await fs.mkdir(join(cwd, 'packages'), { recursive: true }) - const run = await createRepository(path) - await run([({ git }) => git.add(['package.json', 'CHANGELOG.md']), ctx => dummyCommit(ctx, 'chore')]) const projects = Object.values(pkgJsons).slice(1) for (const pkg of projects) { - const projectDir = join(path, 'packages', pkg.name) + const projectDir = join(cwd, 'packages', pkg.name) await fs.mkdir(projectDir, { recursive: true @@ -245,7 +275,7 @@ export async function packageJsonFixedMonorepoProject(pkgs: Record dummyCommit(ctx, 'fix', 'subproject-2')], prj2Dir) - await run([ctx => dummyCommit(ctx, 'feat', 'subproject-3')], prj3Dir) + if (postReleaseCommits) { + await run([ctx => dummyCommit(ctx, 'fix', 'subproject-2')], prj2Dir) + await run([ctx => dummyCommit(ctx, 'feat', 'subproject-3')], prj3Dir) + } } ) } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7a521bb..1cf4eff 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -97,8 +97,8 @@ importers: packages/core: dependencies: '@conventional-changelog/git-client': - specifier: ^3.0.0 - version: 3.0.0(conventional-commits-filter@6.0.0)(conventional-commits-parser@7.0.0) + specifier: ^3.0.1 + version: 3.0.1(conventional-commits-filter@6.0.0)(conventional-commits-parser@7.0.0) '@simple-libs/child-process-utils': specifier: ^2.0.0 version: 2.0.0 @@ -122,7 +122,7 @@ importers: version: 12.0.0 semver: specifier: ^7.5.2 - version: 7.7.2 + version: 7.8.5 devDependencies: '@types/semver': specifier: ^7.5.8 @@ -234,8 +234,8 @@ importers: packages/test: dependencies: '@conventional-changelog/git-client': - specifier: ^3.0.0 - version: 3.0.0(conventional-commits-filter@6.0.0)(conventional-commits-parser@7.0.0) + specifier: ^3.0.1 + version: 3.0.1(conventional-commits-filter@6.0.0)(conventional-commits-parser@7.0.0) '@simple-libs/stream-utils': specifier: ^2.0.0 version: 2.0.0 @@ -289,10 +289,6 @@ packages: resolution: {integrity: sha512-2D+VJ5NfS3xdmS8hn0kYiGXSBOHnJqAc+6GG5VCq8/1oveyqY+Hf9vf0r939EapBrfZv6RDR5Ueo0Z2U+PnA0w==} engines: {node: '>=22.12.0'} - '@commitlint/config-validator@19.8.1': - resolution: {integrity: sha512-0jvJ4u+eqGPBIzzSdqKNX1rvdbSU1lPNYlfQQRIFnBgLy26BtC0cFnr7c/AyuzExMxWsMOte6MkTi9I3SQ3iGQ==} - engines: {node: '>=v18'} - '@commitlint/config-validator@21.1.0': resolution: {integrity: sha512-gHczt1xqQSwfNqBmOI3HjejtTljkiBEUneExMmTBLD0WwTC78lAqDvNMyydbySt3DhpH0F9oX7Vvuks6s5XPFw==} engines: {node: '>=22.12.0'} @@ -308,10 +304,6 @@ packages: resolution: {integrity: sha512-/S8Mo3Q1NtQUYDQjDmyQVPxfIwtnxq+guzMOkuGk8OSdwlzanm1WB9wDPIuuzlbMDDnBNbiAuBEUCcCNlfjrTQ==} engines: {node: '>=22.12.0'} - '@commitlint/execute-rule@19.8.1': - resolution: {integrity: sha512-YfJyIqIKWI64Mgvn/sE7FXvVMQER/Cd+s3hZke6cI1xgNT/f6ZAz5heND0QtffH+KbcqAwXDEE1/5niYayYaQA==} - engines: {node: '>=v18'} - '@commitlint/execute-rule@21.0.1': resolution: {integrity: sha512-RifH+FmImozKBE6mozhF4K3r2RRKP7SMi/Q/zLCmExtp5e05lhHOUYqGBlFBAGNHaZxU/WYw1XuugYK9jQzqnA==} engines: {node: '>=22.12.0'} @@ -328,10 +320,6 @@ packages: resolution: {integrity: sha512-0DbfVVUjAWBfixW6v7CXXWVxMcj6Ukf/oB7O8NAbouP3jxmqUaC4eVQphxl3B3M0ii3cCQiR3sRAYxICwU2gAA==} engines: {node: '>=22.12.0'} - '@commitlint/load@19.8.1': - resolution: {integrity: sha512-9V99EKG3u7z+FEoe4ikgq7YGRCSukAcvmKQuTtUyiYPnOd9a2/H9Ak1J9nJA1HChRQp9OA/sIKPugGS+FK/k1A==} - engines: {node: '>=v18'} - '@commitlint/load@21.1.0': resolution: {integrity: sha512-juiClVEcoreNB0TNVkseO2EmNcpEs/Yhnmgbnm/hQAKBFRynKwIaoNIljXkx/3yvZcMO0EE8I2XOEI7d5KZG8Q==} engines: {node: '>=22.12.0'} @@ -348,10 +336,6 @@ packages: resolution: {integrity: sha512-ID7m79aw8d0dMlxuXHD2QGxEX3Fhl/mUPA80WwEW5VgeOpUHNahhwWJefDdoBDVZcDfbHuf429NrcK0gxQsQjA==} engines: {node: '>=22.12.0'} - '@commitlint/resolve-extends@19.8.1': - resolution: {integrity: sha512-GM0mAhFk49I+T/5UCYns5ayGStkTt4XFFrjjf0L4S26xoMTSkdCf9ZRO8en1kuopC4isDFuEm7ZOm/WRVeElVg==} - engines: {node: '>=v18'} - '@commitlint/resolve-extends@21.1.0': resolution: {integrity: sha512-SANYkxJDfMl3TvnyALWHEaiF5nc6FFaOnh7VvfxjT4X2vD4i2gVHhmfMm1fsrBwDRX98/XyM1XDo5sAd/KXcyQ==} engines: {node: '>=22.12.0'} @@ -368,10 +352,6 @@ packages: resolution: {integrity: sha512-s9KKM+e+mXgFeIh4n7KmOGAVT3mkJ3Fp1bBYHIK5pjeUwlEMzp/tZfb5u0Poa680AsQTXMEMRxZi1vQ9m2X5ug==} engines: {node: '>=22.12.0'} - '@commitlint/types@19.8.1': - resolution: {integrity: sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==} - engines: {node: '>=v18'} - '@commitlint/types@21.1.0': resolution: {integrity: sha512-YodnnnH1Cp+08nP8HGNJAIuB6L3/vdCTHVRTfF8Ik/wRCLOTsU9zwv3yO1cSPQRDa9CLYtE+UJ2K67r7CwMSFw==} engines: {node: '>=22.12.0'} @@ -388,8 +368,8 @@ packages: conventional-commits-parser: optional: true - '@conventional-changelog/git-client@3.0.0': - resolution: {integrity: sha512-6msxd8IS2IVos9nBYZ5ZuCtRBtX6SnAU+BBiwGKHPGLari5Tv1j+SL4Uy7MiIjr7EQX8W8lWwpLD38I0NtTqYw==} + '@conventional-changelog/git-client@3.0.1': + resolution: {integrity: sha512-5gW6MaxbrErdhK2YopOY6EXU7iyuE0132wK4h/6a6n1iqML9G063hU3ixOAMb7CEGDkcqVrgrRRbK16QtMpdEg==} engines: {node: '>=22'} peerDependencies: conventional-commits-filter: ^6.0.0 @@ -467,26 +447,14 @@ packages: resolution: {integrity: sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==} engines: {node: '>= 20'} - '@octokit/core@7.0.2': - resolution: {integrity: sha512-ODsoD39Lq6vR6aBgvjTnA3nZGliknKboc9Gtxr7E4WDNqY24MxANKcuDQSF0jzapvGb3KWOEDrKfve4HoWGK+g==} - engines: {node: '>= 20'} - '@octokit/core@7.0.6': resolution: {integrity: sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==} engines: {node: '>= 20'} - '@octokit/endpoint@11.0.0': - resolution: {integrity: sha512-hoYicJZaqISMAI3JfaDr1qMNi48OctWuOih1m80bkYow/ayPw6Jj52tqWJ6GEoFTk1gBqfanSoI1iY99Z5+ekQ==} - engines: {node: '>= 20'} - '@octokit/endpoint@11.0.3': resolution: {integrity: sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag==} engines: {node: '>= 20'} - '@octokit/graphql@9.0.1': - resolution: {integrity: sha512-j1nQNU1ZxNFx2ZtKmL4sMrs4egy5h65OMDmSbVyuCzjOcwsHq6EaYjOTGXPQxgfiN8dJ4CriYHk6zF050WEULg==} - engines: {node: '>= 20'} - '@octokit/graphql@9.0.3': resolution: {integrity: sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==} engines: {node: '>= 20'} @@ -527,10 +495,6 @@ packages: peerDependencies: '@octokit/core': '>=6' - '@octokit/request-error@7.0.0': - resolution: {integrity: sha512-KRA7VTGdVyJlh0cP5Tf94hTiYVVqmt2f3I6mnimmaVz4UG3gQV/k4mDJlJv3X67iX6rmN7gSHCF8ssqeMnmhZg==} - engines: {node: '>= 20'} - '@octokit/request-error@7.1.0': resolution: {integrity: sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==} engines: {node: '>= 20'} @@ -539,10 +503,6 @@ packages: resolution: {integrity: sha512-KxNC2pTqqhszMNrf12ZRd4PonRgyJdsM4F/jySiddQK+DsRcfBtUvqn8t7UsyZhnRJHvX46OohDt5N3VqIWC2w==} engines: {node: '>= 20'} - '@octokit/request@10.0.2': - resolution: {integrity: sha512-iYj4SJG/2bbhh+iIpFmG5u49DtJ4lipQ+aPakjL9OKpsGY93wM8w06gvFbEQxcMsZcCvk5th5KkIm2m8o14aWA==} - engines: {node: '>= 20'} - '@octokit/rest@22.0.0': resolution: {integrity: sha512-z6tmTu9BTnw51jYGulxrlernpsQYXpui1RK21vmXn8yF5bp6iX16yfTtJYGK5Mh1qDkvDOmp2n8sRMcQmR8jiA==} engines: {node: '>= 20'} @@ -834,10 +794,6 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@simple-libs/child-process-utils@1.0.1': - resolution: {integrity: sha512-3nWd8irxvDI6v856wpPCHZ+08iQR0oHTZfzAZmnbsLzf+Sf1odraP6uKOHDZToXq3RPRV/LbqGVlSCogm9cJjg==} - engines: {node: '>=18'} - '@simple-libs/child-process-utils@1.0.2': resolution: {integrity: sha512-/4R8QKnd/8agJynkNdJmNw2MBxuFTRcNFnE5Sg/G+jkSsV8/UBgULMzhizWWW42p8L5H7flImV2ATi79Ove2Tw==} engines: {node: '>=18'} @@ -900,9 +856,6 @@ packages: '@types/chai@5.2.2': resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} - '@types/conventional-commits-parser@5.0.1': - resolution: {integrity: sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==} - '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} @@ -1104,10 +1057,6 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chalk@5.4.1: - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} @@ -1223,15 +1172,6 @@ packages: cosmiconfig: '>=9' typescript: '>=5' - cosmiconfig@9.0.0: - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - cosmiconfig@9.0.2: resolution: {integrity: sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg==} engines: {node: '>=14'} @@ -1475,9 +1415,6 @@ packages: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} - fast-content-type-parse@3.0.0: - resolution: {integrity: sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==} - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -1559,10 +1496,6 @@ packages: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - global-directory@4.0.1: - resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} - engines: {node: '>=18'} - global-directory@5.0.0: resolution: {integrity: sha512-1pgFdhK3J2LeM+dVf2Pd424yHx2ou338lC0ErNP2hPx4j8eW1Sp0XqSjNxtk6Tc4Kr5wlWtSvz8cn2yb7/SG/w==} engines: {node: '>=20'} @@ -1612,9 +1545,6 @@ packages: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} - import-meta-resolve@4.1.0: - resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} - imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -1629,10 +1559,6 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - ini@4.1.1: - resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - ini@6.0.0: resolution: {integrity: sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==} engines: {node: ^20.17.0 || >=22.9.0} @@ -1839,21 +1765,9 @@ packages: lodash.clonedeep@4.5.0: resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} - lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - lodash.map@4.6.0: resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==} - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash.mergewith@4.6.2: - resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} - - lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -2081,11 +1995,6 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - semver@7.7.2: - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} - engines: {node: '>=10'} - hasBin: true - semver@7.8.5: resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} engines: {node: '>=10'} @@ -2183,10 +2092,6 @@ packages: resolution: {integrity: sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==} engines: {node: '>=18'} - tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} - engines: {node: '>=12.0.0'} - tinyglobby@0.2.17: resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} @@ -2457,12 +2362,6 @@ snapshots: '@pnpm/read-project-manifest': 6.0.10 read-yaml-file: 3.0.0 - '@commitlint/config-validator@19.8.1': - dependencies: - '@commitlint/types': 19.8.1 - ajv: 8.17.1 - optional: true - '@commitlint/config-validator@21.1.0': dependencies: '@commitlint/types': 21.1.0 @@ -2487,9 +2386,6 @@ snapshots: '@commitlint/types': 21.1.0 es-toolkit: 1.48.1 - '@commitlint/execute-rule@19.8.1': - optional: true - '@commitlint/execute-rule@21.0.1': {} '@commitlint/format@21.1.0': @@ -2509,23 +2405,6 @@ snapshots: '@commitlint/rules': 21.1.0 '@commitlint/types': 21.1.0 - '@commitlint/load@19.8.1(@types/node@22.16.2)(typescript@6.0.3)': - dependencies: - '@commitlint/config-validator': 19.8.1 - '@commitlint/execute-rule': 19.8.1 - '@commitlint/resolve-extends': 19.8.1 - '@commitlint/types': 19.8.1 - chalk: 5.4.1 - cosmiconfig: 9.0.0(typescript@6.0.3) - cosmiconfig-typescript-loader: 6.1.0(@types/node@22.16.2)(cosmiconfig@9.0.0(typescript@6.0.3))(typescript@6.0.3) - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - lodash.uniq: 4.5.0 - transitivePeerDependencies: - - '@types/node' - - typescript - optional: true - '@commitlint/load@21.1.0(@types/node@22.16.2)(typescript@6.0.3)': dependencies: '@commitlint/config-validator': 21.1.0 @@ -2559,16 +2438,6 @@ snapshots: - conventional-commits-filter - conventional-commits-parser - '@commitlint/resolve-extends@19.8.1': - dependencies: - '@commitlint/config-validator': 19.8.1 - '@commitlint/types': 19.8.1 - global-directory: 4.0.1 - import-meta-resolve: 4.1.0 - lodash.mergewith: 4.6.2 - resolve-from: 5.0.0 - optional: true - '@commitlint/resolve-extends@21.1.0': dependencies: '@commitlint/config-validator': 21.1.0 @@ -2590,12 +2459,6 @@ snapshots: dependencies: escalade: 3.2.0 - '@commitlint/types@19.8.1': - dependencies: - '@types/conventional-commits-parser': 5.0.1 - chalk: 5.4.1 - optional: true - '@commitlint/types@21.1.0': dependencies: conventional-commits-parser: 6.4.0 @@ -2609,7 +2472,7 @@ snapshots: optionalDependencies: conventional-commits-parser: 6.4.0 - '@conventional-changelog/git-client@3.0.0(conventional-commits-filter@6.0.0)(conventional-commits-parser@7.0.0)': + '@conventional-changelog/git-client@3.0.1(conventional-commits-filter@6.0.0)(conventional-commits-parser@7.0.0)': dependencies: '@simple-libs/child-process-utils': 2.0.0 '@simple-libs/stream-utils': 2.0.0 @@ -2678,16 +2541,6 @@ snapshots: '@octokit/auth-token@6.0.0': {} - '@octokit/core@7.0.2': - dependencies: - '@octokit/auth-token': 6.0.0 - '@octokit/graphql': 9.0.1 - '@octokit/request': 10.0.2 - '@octokit/request-error': 7.0.0 - '@octokit/types': 14.1.0 - before-after-hook: 4.0.0 - universal-user-agent: 7.0.3 - '@octokit/core@7.0.6': dependencies: '@octokit/auth-token': 6.0.0 @@ -2698,22 +2551,11 @@ snapshots: before-after-hook: 4.0.0 universal-user-agent: 7.0.3 - '@octokit/endpoint@11.0.0': - dependencies: - '@octokit/types': 14.1.0 - universal-user-agent: 7.0.3 - '@octokit/endpoint@11.0.3': dependencies: '@octokit/types': 16.0.0 universal-user-agent: 7.0.3 - '@octokit/graphql@9.0.1': - dependencies: - '@octokit/request': 10.0.2 - '@octokit/types': 14.1.0 - universal-user-agent: 7.0.3 - '@octokit/graphql@9.0.3': dependencies: '@octokit/request': 10.0.10 @@ -2724,9 +2566,9 @@ snapshots: '@octokit/openapi-types@27.0.0': {} - '@octokit/plugin-paginate-rest@13.0.1(@octokit/core@7.0.2)': + '@octokit/plugin-paginate-rest@13.0.1(@octokit/core@7.0.6)': dependencies: - '@octokit/core': 7.0.2 + '@octokit/core': 7.0.6 '@octokit/types': 14.1.0 '@octokit/plugin-paginate-rest@14.0.0(@octokit/core@7.0.6)': @@ -2734,13 +2576,13 @@ snapshots: '@octokit/core': 7.0.6 '@octokit/types': 16.0.0 - '@octokit/plugin-request-log@6.0.0(@octokit/core@7.0.2)': + '@octokit/plugin-request-log@6.0.0(@octokit/core@7.0.6)': dependencies: - '@octokit/core': 7.0.2 + '@octokit/core': 7.0.6 - '@octokit/plugin-rest-endpoint-methods@16.0.0(@octokit/core@7.0.2)': + '@octokit/plugin-rest-endpoint-methods@16.0.0(@octokit/core@7.0.6)': dependencies: - '@octokit/core': 7.0.2 + '@octokit/core': 7.0.6 '@octokit/types': 14.1.0 '@octokit/plugin-rest-endpoint-methods@17.0.0(@octokit/core@7.0.6)': @@ -2748,10 +2590,6 @@ snapshots: '@octokit/core': 7.0.6 '@octokit/types': 16.0.0 - '@octokit/request-error@7.0.0': - dependencies: - '@octokit/types': 14.1.0 - '@octokit/request-error@7.1.0': dependencies: '@octokit/types': 16.0.0 @@ -2765,20 +2603,12 @@ snapshots: json-with-bigint: 3.5.8 universal-user-agent: 7.0.3 - '@octokit/request@10.0.2': - dependencies: - '@octokit/endpoint': 11.0.0 - '@octokit/request-error': 7.0.0 - '@octokit/types': 14.1.0 - fast-content-type-parse: 3.0.0 - universal-user-agent: 7.0.3 - '@octokit/rest@22.0.0': dependencies: - '@octokit/core': 7.0.2 - '@octokit/plugin-paginate-rest': 13.0.1(@octokit/core@7.0.2) - '@octokit/plugin-request-log': 6.0.0(@octokit/core@7.0.2) - '@octokit/plugin-rest-endpoint-methods': 16.0.0(@octokit/core@7.0.2) + '@octokit/core': 7.0.6 + '@octokit/plugin-paginate-rest': 13.0.1(@octokit/core@7.0.6) + '@octokit/plugin-request-log': 6.0.0(@octokit/core@7.0.6) + '@octokit/plugin-rest-endpoint-methods': 16.0.0(@octokit/core@7.0.6) '@octokit/types@14.1.0': dependencies: @@ -2957,11 +2787,6 @@ snapshots: '@rolldown/pluginutils@1.0.1': {} - '@simple-libs/child-process-utils@1.0.1': - dependencies: - '@simple-libs/stream-utils': 1.2.0 - '@types/node': 22.16.2 - '@simple-libs/child-process-utils@1.0.2': dependencies: '@simple-libs/stream-utils': 1.2.0 @@ -3007,7 +2832,7 @@ snapshots: '@trigen/scripts@9.0.0': dependencies: - '@simple-libs/child-process-utils': 1.0.1 + '@simple-libs/child-process-utils': 1.0.2 '@simple-libs/stream-utils': 1.2.0 argue-cli: 2.1.0 p-limit: 7.3.0 @@ -3021,11 +2846,6 @@ snapshots: dependencies: '@types/deep-eql': 4.0.2 - '@types/conventional-commits-parser@5.0.1': - dependencies: - '@types/node': 22.16.2 - optional: true - '@types/deep-eql@4.0.2': {} '@types/estree@1.0.8': {} @@ -3216,9 +3036,6 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.4.1: - optional: true - chardet@0.7.0: {} clean-publish@5.2.2: @@ -3309,7 +3126,7 @@ snapshots: conventional-changelog@8.0.0(conventional-commits-filter@6.0.0): dependencies: - '@conventional-changelog/git-client': 3.0.0(conventional-commits-filter@6.0.0)(conventional-commits-parser@7.0.0) + '@conventional-changelog/git-client': 3.0.1(conventional-commits-filter@6.0.0)(conventional-commits-parser@7.0.0) '@simple-libs/hosted-git-info': 2.0.0 '@simple-libs/normalize-package-data': 1.0.0 conventional-changelog-preset-loader: 6.0.0 @@ -3336,7 +3153,7 @@ snapshots: conventional-recommended-bump@12.0.0: dependencies: - '@conventional-changelog/git-client': 3.0.0(conventional-commits-filter@6.0.0)(conventional-commits-parser@7.0.0) + '@conventional-changelog/git-client': 3.0.1(conventional-commits-filter@6.0.0)(conventional-commits-parser@7.0.0) conventional-changelog-preset-loader: 6.0.0 conventional-commits-filter: 6.0.0 conventional-commits-parser: 7.0.0 @@ -3344,14 +3161,6 @@ snapshots: convert-source-map@2.0.0: {} - cosmiconfig-typescript-loader@6.1.0(@types/node@22.16.2)(cosmiconfig@9.0.0(typescript@6.0.3))(typescript@6.0.3): - dependencies: - '@types/node': 22.16.2 - cosmiconfig: 9.0.0(typescript@6.0.3) - jiti: 2.4.2 - typescript: 6.0.3 - optional: true - cosmiconfig-typescript-loader@6.1.0(@types/node@22.16.2)(cosmiconfig@9.0.2(typescript@6.0.3))(typescript@6.0.3): dependencies: '@types/node': 22.16.2 @@ -3359,16 +3168,6 @@ snapshots: jiti: 2.4.2 typescript: 6.0.3 - cosmiconfig@9.0.0(typescript@6.0.3): - dependencies: - env-paths: 2.2.1 - import-fresh: 3.3.1 - js-yaml: 4.2.0 - parse-json: 5.2.0 - optionalDependencies: - typescript: 6.0.3 - optional: true - cosmiconfig@9.0.2(typescript@6.0.3): dependencies: env-paths: 2.2.1 @@ -3393,7 +3192,7 @@ snapshots: longest: 2.0.1 word-wrap: 1.2.5 optionalDependencies: - '@commitlint/load': 19.8.1(@types/node@22.16.2)(typescript@6.0.3) + '@commitlint/load': 21.1.0(@types/node@22.16.2)(typescript@6.0.3) transitivePeerDependencies: - '@types/node' - typescript @@ -3570,8 +3369,6 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 - fast-content-type-parse@3.0.0: {} - fast-deep-equal@3.1.3: {} fast-glob@3.3.3: @@ -3657,11 +3454,6 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - global-directory@4.0.1: - dependencies: - ini: 4.1.1 - optional: true - global-directory@5.0.0: dependencies: ini: 6.0.0 @@ -3714,9 +3506,6 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 - import-meta-resolve@4.1.0: - optional: true - imurmurhash@0.1.4: {} inflight@1.0.6: @@ -3728,9 +3517,6 @@ snapshots: ini@1.3.8: {} - ini@4.1.1: - optional: true - ini@6.0.0: {} inquirer@8.2.5: @@ -3885,20 +3671,8 @@ snapshots: lodash.clonedeep@4.5.0: {} - lodash.isplainobject@4.0.6: - optional: true - lodash.map@4.6.0: {} - lodash.merge@4.6.2: - optional: true - - lodash.mergewith@4.6.2: - optional: true - - lodash.uniq@4.5.0: - optional: true - lodash@4.17.21: {} lodash@4.18.1: {} @@ -4132,8 +3906,6 @@ snapshots: safer-buffer@2.1.2: {} - semver@7.7.2: {} - semver@7.8.5: {} shebang-command@2.0.0: @@ -4208,11 +3980,6 @@ snapshots: tinyexec@1.0.4: {} - tinyglobby@0.2.15: - dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 - tinyglobby@0.2.17: dependencies: fdir: 6.5.0(picomatch@4.0.4) @@ -4284,7 +4051,7 @@ snapshots: std-env: 4.0.0 tinybench: 2.9.0 tinyexec: 1.0.4 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 tinyrainbow: 3.1.0 vite: 8.1.0(@types/node@22.16.2)(jiti@2.4.2) why-is-node-running: 2.3.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index fb29eca..81d47bd 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -5,7 +5,7 @@ allowBuilds: esbuild: true simple-git-hooks: true minimumReleaseAgeExclude: - - '@conventional-changelog/git-client@3.0.0' + - '@conventional-changelog/git-client@3.0.0 || 3.0.1' - '@conventional-changelog/template@1.0.0' - conventional-changelog-conventionalcommits@10.0.0 - conventional-changelog-preset-loader@6.0.0