From 063d6276263e58e2ea8892cc58e6f30c24fa8ee5 Mon Sep 17 00:00:00 2001 From: gtmnayan Date: Sat, 8 Jul 2023 20:54:20 +0545 Subject: [PATCH 1/2] fix(migrate): do not downgrade versions --- .../migrate/migrations/svelte-4/migrate.js | 18 ++++++++++++++---- .../migrations/svelte-4/migrate.spec.js | 19 +++++++++++++++++++ packages/migrate/package.json | 2 ++ pnpm-lock.yaml | 6 ++++++ 4 files changed, 41 insertions(+), 4 deletions(-) diff --git a/packages/migrate/migrations/svelte-4/migrate.js b/packages/migrate/migrations/svelte-4/migrate.js index 620273450e20..e30660918ee7 100644 --- a/packages/migrate/migrations/svelte-4/migrate.js +++ b/packages/migrate/migrations/svelte-4/migrate.js @@ -1,5 +1,6 @@ import fs from 'node:fs'; import { Project, ts, Node } from 'ts-morph'; +import semver from 'semver'; export function update_pkg_json() { fs.writeFileSync( @@ -22,12 +23,21 @@ export function update_pkg_json_content(content) { */ function update_pkg(name, version, additional = '') { if (pkg.dependencies?.[name]) { - log_migration(`Updated ${name} to ${version} ${additional}`); - pkg.dependencies[name] = version; + const existing_range = pkg.dependencies[name]; + + if (semver.validRange(existing_range) && !semver.subset(existing_range, version)) { + log_migration(`Updated ${name} to ${version} ${additional}`); + pkg.dependencies[name] = version; + } } + if (pkg.devDependencies?.[name]) { - log_migration(`Updated ${name} to ${version} ${additional}`); - pkg.devDependencies[name] = version; + const existing_range = pkg.devDependencies[name]; + + if (semver.validRange(existing_range) && !semver.subset(existing_range, version)) { + log_migration(`Updated ${name} to ${version} ${additional}`); + pkg.devDependencies[name] = version; + } } } diff --git a/packages/migrate/migrations/svelte-4/migrate.spec.js b/packages/migrate/migrations/svelte-4/migrate.spec.js index f183087f5b69..d3c66b5dc46b 100644 --- a/packages/migrate/migrations/svelte-4/migrate.spec.js +++ b/packages/migrate/migrations/svelte-4/migrate.spec.js @@ -362,3 +362,22 @@ test('Update package.json', () => { }` ); }); + + +test('Does not downgrade versions', () => { + const result = update_pkg_json_content(`{ + "devDependencies": { + "svelte": "^4.0.5", + "typescript": "github:idk" + } +}`); + assert.equal( + result, + `{ + "devDependencies": { + "svelte": "^4.0.5", + "typescript": "github:idk" + } +}` + ); +}); diff --git a/packages/migrate/package.json b/packages/migrate/package.json index 1a5218e0cd31..2d2d1cac9b43 100644 --- a/packages/migrate/package.json +++ b/packages/migrate/package.json @@ -27,6 +27,7 @@ "kleur": "^4.1.5", "magic-string": "^0.30.0", "prompts": "^2.4.2", + "semver": "^7.5.3", "tiny-glob": "^0.2.9", "ts-morph": "^19.0.0", "typescript": "^5.0.4" @@ -34,6 +35,7 @@ "devDependencies": { "@types/node": "^16.18.6", "@types/prompts": "^2.4.1", + "@types/semver": "^7.5.0", "prettier": "^2.8.0", "vitest": "^0.32.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 557475a26ed0..6a8e63b42831 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -923,6 +923,9 @@ importers: prompts: specifier: ^2.4.2 version: 2.4.2 + semver: + specifier: ^7.5.3 + version: 7.5.3 tiny-glob: specifier: ^0.2.9 version: 0.2.9 @@ -939,6 +942,9 @@ importers: '@types/prompts': specifier: ^2.4.1 version: 2.4.1 + '@types/semver': + specifier: ^7.5.0 + version: 7.5.0 prettier: specifier: ^2.8.0 version: 2.8.0 From 375e87475ba6a7659fb3fd795d361d28751d0fe2 Mon Sep 17 00:00:00 2001 From: gtmnayan Date: Sat, 8 Jul 2023 20:54:58 +0545 Subject: [PATCH 2/2] changeset --- .changeset/cold-boxes-build.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/cold-boxes-build.md diff --git a/.changeset/cold-boxes-build.md b/.changeset/cold-boxes-build.md new file mode 100644 index 000000000000..74ca2963b725 --- /dev/null +++ b/.changeset/cold-boxes-build.md @@ -0,0 +1,5 @@ +--- +'svelte-migrate': patch +--- + +fix: do not downgrade versions