From 9d70ac80646d6be863bcc4f1461ee50b7d6daed4 Mon Sep 17 00:00:00 2001 From: vorotamoroz Date: Wed, 15 Jul 2026 14:13:43 +0000 Subject: [PATCH] Synchronise workspace lock dependencies --- package-lock.json | 6 ++--- update-workspaces.mjs | 14 +++++++++++ utils/release-process.unit.spec.ts | 37 ++++++++++++++++++++++++++---- 3 files changed, 49 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 80bf7295..890b6c01 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16230,7 +16230,7 @@ "dependencies": { "chokidar": "^4.0.0", "minimatch": "^10.2.5", - "octagonal-wheels": "^0.1.50", + "octagonal-wheels": "^0.1.51", "pouchdb-adapter-http": "^9.0.0", "pouchdb-adapter-leveldb": "^9.0.0", "pouchdb-core": "^9.0.0", @@ -16254,7 +16254,7 @@ "name": "livesync-webapp", "version": "0.25.82-webapp", "dependencies": { - "octagonal-wheels": "^0.1.50" + "octagonal-wheels": "^0.1.51" }, "devDependencies": { "@playwright/test": "^1.58.2", @@ -16269,7 +16269,7 @@ "src/apps/webpeer": { "version": "0.25.82-webpeer", "dependencies": { - "octagonal-wheels": "^0.1.50" + "octagonal-wheels": "^0.1.51" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^7.1.2", diff --git a/update-workspaces.mjs b/update-workspaces.mjs index dfb3bd6b..a8a0f159 100644 --- a/update-workspaces.mjs +++ b/update-workspaces.mjs @@ -105,6 +105,13 @@ for (const dir of workspaceDirs) { console.log(` Dependency '${dep}': ${oldVer} -> ${newVer}`); pkg.dependencies[dep] = newVer; } + if (lockWorkspace) { + lockWorkspace.dependencies ??= {}; + if (lockWorkspace.dependencies[dep] !== newVer) { + lockWorkspace.dependencies[dep] = newVer; + packageLockChanged = true; + } + } } } } @@ -119,6 +126,13 @@ for (const dir of workspaceDirs) { console.log(` DevDependency '${dep}': ${oldVer} -> ${newVer}`); pkg.devDependencies[dep] = newVer; } + if (lockWorkspace) { + lockWorkspace.devDependencies ??= {}; + if (lockWorkspace.devDependencies[dep] !== newVer) { + lockWorkspace.devDependencies[dep] = newVer; + packageLockChanged = true; + } + } } } } diff --git a/utils/release-process.unit.spec.ts b/utils/release-process.unit.spec.ts index d934398a..859abd01 100644 --- a/utils/release-process.unit.spec.ts +++ b/utils/release-process.unit.spec.ts @@ -167,9 +167,18 @@ describe("workspace version update", () => { it("keeps workspace package and lockfile versions together", () => { const directory = makeTemporaryDirectory(); const workspaces = ["src/apps/cli", "src/apps/webpeer", "src/apps/webapp"]; - writeJson(directory, "package.json", { version: "0.25.81", workspaces }); + writeJson(directory, "package.json", { + version: "0.25.81", + workspaces, + dependencies: { "octagonal-wheels": "^0.1.51" }, + devDependencies: { typescript: "^5.9.3" }, + }); for (const workspace of ["cli", "webpeer", "webapp"]) { - writeJson(directory, `src/apps/${workspace}/package.json`, { version: `0.25.80-${workspace}` }); + writeJson(directory, `src/apps/${workspace}/package.json`, { + version: `0.25.80-${workspace}`, + dependencies: { "octagonal-wheels": "^0.1.50" }, + devDependencies: { typescript: "^5.8.0" }, + }); } writeJson(directory, "package-lock.json", { name: "obsidian-livesync", @@ -177,9 +186,21 @@ describe("workspace version update", () => { lockfileVersion: 3, packages: { "": { version: "0.25.80", workspaces }, - "src/apps/cli": { version: "0.25.80-cli" }, - "src/apps/webpeer": { version: "0.25.80-webpeer" }, - "src/apps/webapp": { version: "0.25.80-webapp" }, + "src/apps/cli": { + version: "0.25.80-cli", + dependencies: { "octagonal-wheels": "^0.1.50" }, + devDependencies: { typescript: "^5.8.0" }, + }, + "src/apps/webpeer": { + version: "0.25.80-webpeer", + dependencies: { "octagonal-wheels": "^0.1.50" }, + devDependencies: { typescript: "^5.8.0" }, + }, + "src/apps/webapp": { + version: "0.25.80-webapp", + dependencies: { "octagonal-wheels": "^0.1.50" }, + devDependencies: { typescript: "^5.8.0" }, + }, }, }); @@ -189,6 +210,8 @@ describe("workspace version update", () => { for (const workspace of ["cli", "webpeer", "webapp"]) { const packageJson = JSON.parse(readFileSync(join(directory, `src/apps/${workspace}/package.json`), "utf8")); expect(packageJson.version).toBe(`0.25.81-${workspace}`); + expect(packageJson.dependencies["octagonal-wheels"]).toBe("^0.1.51"); + expect(packageJson.devDependencies.typescript).toBe("^5.9.3"); } const packageLock = JSON.parse(readFileSync(join(directory, "package-lock.json"), "utf8")); expect(packageLock.version).toBe("0.25.81"); @@ -196,5 +219,9 @@ describe("workspace version update", () => { expect(packageLock.packages["src/apps/cli"].version).toBe("0.25.81-cli"); expect(packageLock.packages["src/apps/webpeer"].version).toBe("0.25.81-webpeer"); expect(packageLock.packages["src/apps/webapp"].version).toBe("0.25.81-webapp"); + for (const workspace of workspaces) { + expect(packageLock.packages[workspace].dependencies["octagonal-wheels"]).toBe("^0.1.51"); + expect(packageLock.packages[workspace].devDependencies.typescript).toBe("^5.9.3"); + } }); });