Skip to content

Commit

Permalink
fix(migrate): do not downgrade versions (#10352)
Browse files Browse the repository at this point in the history
* fix(migrate): do not downgrade versions

* changeset
  • Loading branch information
gtm-nayan authored Jul 9, 2023
1 parent 6cb283e commit 9d49886
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 4 deletions.
5 changes: 5 additions & 0 deletions .changeset/cold-boxes-build.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'svelte-migrate': patch
---

fix: do not downgrade versions
18 changes: 14 additions & 4 deletions packages/migrate/migrations/svelte-4/migrate.js
Original file line number Diff line number Diff line change
@@ -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(
Expand All @@ -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;
}
}
}

Expand Down
19 changes: 19 additions & 0 deletions packages/migrate/migrations/svelte-4/migrate.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
}`
);
});
2 changes: 2 additions & 0 deletions packages/migrate/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,15 @@
"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"
},
"devDependencies": {
"@types/node": "^16.18.6",
"@types/prompts": "^2.4.1",
"@types/semver": "^7.5.0",
"prettier": "^2.8.0",
"vitest": "^0.32.2"
},
Expand Down
6 changes: 6 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 9d49886

Please sign in to comment.