From b3ca658e77dfce2a4e82c3a2fc6c37847cd547fb Mon Sep 17 00:00:00 2001 From: Deepanshu Pal <40927968+DeepanshuPal@users.noreply.github.com> Date: Thu, 8 Oct 2026 06:59:30 +0530 Subject: [PATCH 1/6] fix(shared): compare peer dependency versions numerically --- packages/shared/src/utils.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/shared/src/utils.ts b/packages/shared/src/utils.ts index 85cd5e5a84..0d78cd29ba 100644 --- a/packages/shared/src/utils.ts +++ b/packages/shared/src/utils.ts @@ -208,19 +208,22 @@ export function semverLite(required: string, toCheck: string) { const [_1, rMajor, rMinor, rPatch] = requiredMatch; const [_2, cMajor, cMinor, cPatch] = toCheckMatch; + const meetsMinimum = + Number(cMinor ?? 0) > Number(rMinor ?? 0) || + (Number(cMinor ?? 0) === Number(rMinor ?? 0) && + Number(cPatch ?? 0) >= Number(rPatch ?? 0)); if (required.startsWith("^")) { // Major must be equal, minor must be greater or equal if (rMajor !== cMajor) return false; - if (rMinor && cMinor && rMinor > cMinor) return false; - return true; + return meetsMinimum; } if (required.startsWith("~")) { // Major must be equal, minor must be equal if (rMajor !== cMajor) return false; if (rMinor !== cMinor) return false; - return true; + return Number(cPatch ?? 0) >= Number(rPatch ?? 0); } // Exact match From 6ea396b6c8d87bb2cf74bd54e0b2e55b3ce3461a Mon Sep 17 00:00:00 2001 From: Deepanshu Pal <40927968+DeepanshuPal@users.noreply.github.com> Date: Thu, 8 Oct 2026 07:00:24 +0530 Subject: [PATCH 2/6] test(shared): cover peer version range floors --- .../test/packages/shared/test/semver.test.ts | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 packages/shared/test/packages/shared/test/semver.test.ts diff --git a/packages/shared/test/packages/shared/test/semver.test.ts b/packages/shared/test/packages/shared/test/semver.test.ts new file mode 100644 index 0000000000..e895c4f04d --- /dev/null +++ b/packages/shared/test/packages/shared/test/semver.test.ts @@ -0,0 +1,21 @@ +import { describe, expect, it } from "vitest"; + +import { semverLite } from "../src/utils"; + +describe("semverLite", () => { + it.each([ + ["^7.2.0", "7.10.0", true], + ["^7.10.0", "7.2.0", false], + ["^7.2.5", "7.2.4", false], + ["^7.2.5", "7.2.5", true], + ["^7.2.5", "7.3.0", true], + ["^7.2.5", "8.0.0", false], + ["~7.2.5", "7.2.4", false], + ["~7.2.5", "7.2.10", true], + ["~7.2.5", "7.3.0", false], + ["7.2.5", "7.2.5", true], + ["7.2.5", "7.2.6", false], + ])("matches %s against %s as %s", (required, installed, matches) => { + expect(semverLite(required, installed)).toBe(matches); + }); +}); From 1660e0d9a4085768af2a849b8b2ea5953cf2052c Mon Sep 17 00:00:00 2001 From: Deepanshu Pal <40927968+DeepanshuPal@users.noreply.github.com> Date: Thu, 8 Oct 2026 07:01:45 +0530 Subject: [PATCH 3/6] test(shared): place peer version regressions beside shared tests --- packages/shared/test/{packages/shared => }/test/semver.test.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/shared/test/{packages/shared => }/test/semver.test.ts (100%) diff --git a/packages/shared/test/packages/shared/test/semver.test.ts b/packages/shared/test/test/semver.test.ts similarity index 100% rename from packages/shared/test/packages/shared/test/semver.test.ts rename to packages/shared/test/test/semver.test.ts From d0140059688e8da5aedc33a9c7f70a19bbe01042 Mon Sep 17 00:00:00 2001 From: Deepanshu Pal <40927968+DeepanshuPal@users.noreply.github.com> Date: Thu, 8 Oct 2026 07:02:35 +0530 Subject: [PATCH 4/6] test(shared): correct regression test path --- packages/shared/test/{test => }/semver.test.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/shared/test/{test => }/semver.test.ts (100%) diff --git a/packages/shared/test/test/semver.test.ts b/packages/shared/test/semver.test.ts similarity index 100% rename from packages/shared/test/test/semver.test.ts rename to packages/shared/test/semver.test.ts From 6f8112b408c357fbb55cda400cfc605d658470a3 Mon Sep 17 00:00:00 2001 From: Deepanshu Pal <40927968+DeepanshuPal@users.noreply.github.com> Date: Thu, 8 Oct 2026 07:03:05 +0530 Subject: [PATCH 5/6] chore: add shared peer version fix changeset --- .changeset/.changeset/quiet-versions-compare.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/.changeset/quiet-versions-compare.md diff --git a/.changeset/.changeset/quiet-versions-compare.md b/.changeset/.changeset/quiet-versions-compare.md new file mode 100644 index 0000000000..6712b7c578 --- /dev/null +++ b/.changeset/.changeset/quiet-versions-compare.md @@ -0,0 +1,5 @@ +--- +"@uploadthing/shared": patch +--- + +Compare numeric minor and patch versions in peer dependency checks. Valid double-digit minor versions no longer trigger a warning, and installed versions below the required patch version are rejected. From c781f1d0ec46bdb7fd0875493efcdc9224db2d62 Mon Sep 17 00:00:00 2001 From: Deepanshu Pal <40927968+DeepanshuPal@users.noreply.github.com> Date: Thu, 8 Oct 2026 07:03:42 +0530 Subject: [PATCH 6/6] chore: correct changeset path --- .changeset/{.changeset => }/quiet-versions-compare.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .changeset/{.changeset => }/quiet-versions-compare.md (100%) diff --git a/.changeset/.changeset/quiet-versions-compare.md b/.changeset/quiet-versions-compare.md similarity index 100% rename from .changeset/.changeset/quiet-versions-compare.md rename to .changeset/quiet-versions-compare.md