From 411a8a2a2e0dc485bf011368eab21c9ab18eda5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20J=C3=A4derberg?= Date: Fri, 9 Jan 2026 07:48:47 +0000 Subject: [PATCH] Merged in chore/add-package-to-semver (pull request #3408) add package-name to semver * add package-name to semver Approved-by: Linus Flood --- apps/partner-sas/env/client.ts | 4 ++- apps/partner-sas/env/server.ts | 4 ++- apps/scandic-web/env/client.ts | 4 ++- apps/scandic-web/env/server.ts | 4 ++- packages/common/utils/getSemver.test.ts | 38 +++++++++++++++---------- packages/common/utils/getSemver.ts | 5 ++-- 6 files changed, 38 insertions(+), 21 deletions(-) diff --git a/apps/partner-sas/env/client.ts b/apps/partner-sas/env/client.ts index 836832584..1e1a19fbd 100644 --- a/apps/partner-sas/env/client.ts +++ b/apps/partner-sas/env/client.ts @@ -10,7 +10,9 @@ export const env = createEnv({ NEXT_PUBLIC_RELEASE_TAG: z .string() .optional() - .transform((s) => getSemver(s, process.env.BRANCH || "development")), + .transform((s) => + getSemver("partner-sas", s, process.env.BRANCH || "development") + ), }, emptyStringAsUndefined: true, runtimeEnv: { diff --git a/apps/partner-sas/env/server.ts b/apps/partner-sas/env/server.ts index 4949ead5a..672a9a091 100644 --- a/apps/partner-sas/env/server.ts +++ b/apps/partner-sas/env/server.ts @@ -41,7 +41,9 @@ export const env = createEnv({ RELEASE_TAG: z .string() .optional() - .transform((s) => getSemver(s, process.env.BRANCH || "development")), + .transform((s) => + getSemver("partner-sas", s, process.env.BRANCH || "development") + ), }, emptyStringAsUndefined: true, runtimeEnv: { diff --git a/apps/scandic-web/env/client.ts b/apps/scandic-web/env/client.ts index 174492700..e195ce7fe 100644 --- a/apps/scandic-web/env/client.ts +++ b/apps/scandic-web/env/client.ts @@ -13,7 +13,9 @@ export const env = createEnv({ NEXT_PUBLIC_RELEASE_TAG: z .string() .optional() - .transform((s) => getSemver(s, process.env.BRANCH || "development")), + .transform((s) => + getSemver("scandic-web", s, process.env.BRANCH || "development") + ), }, emptyStringAsUndefined: true, runtimeEnv: { diff --git a/apps/scandic-web/env/server.ts b/apps/scandic-web/env/server.ts index 1cdf24594..94576babd 100644 --- a/apps/scandic-web/env/server.ts +++ b/apps/scandic-web/env/server.ts @@ -110,7 +110,9 @@ export const env = createEnv({ RELEASE_TAG: z .string() .optional() - .transform((s) => getSemver(s, process.env.BRANCH || "development")), + .transform((s) => + getSemver("scandic-web", s, process.env.BRANCH || "development") + ), }, emptyStringAsUndefined: true, runtimeEnv: { diff --git a/packages/common/utils/getSemver.test.ts b/packages/common/utils/getSemver.test.ts index bcd40a5a5..336bb19fe 100644 --- a/packages/common/utils/getSemver.test.ts +++ b/packages/common/utils/getSemver.test.ts @@ -4,47 +4,55 @@ import { getSemver } from "./getSemver" describe("getSemver", () => { it("should return undefined if version is undefined", () => { - expect(getSemver(undefined, "master")).toBeUndefined() + expect(getSemver("package", undefined, "master")).toBeUndefined() }) it("should return undefined if version is not a string", () => { // @ts-expect-error Testing invalid input - expect(getSemver(123, "master")).toBeUndefined() + expect(getSemver("package", 123, "master")).toBeUndefined() }) it("should strip 'v' prefix from version", () => { - expect(getSemver("v1.0.0", "master")).toBe("1.0.0") + expect(getSemver("package", "v1.0.0", "master")).toBe("package@1.0.0") }) it("should return undefined if version format is invalid", () => { - expect(getSemver("invalid-version", "master")).toBeUndefined() + expect(getSemver("package", "invalid-version", "master")).toBeUndefined() }) it("should return the version as-is for named branches", () => { - expect(getSemver("1.0.0", "release")).toBe("1.0.0") - expect(getSemver("1.0.0", "master")).toBe("1.0.0") - expect(getSemver("1.0.0", "test")).toBe("1.0.0") - expect(getSemver("1.0.0", "stage")).toBe("1.0.0") - expect(getSemver("1.0.0", "prod")).toBe("1.0.0") + expect(getSemver("package", "1.0.0", "release")).toBe("package@1.0.0") + expect(getSemver("package", "1.0.0", "master")).toBe("package@1.0.0") + expect(getSemver("package", "1.0.0", "test")).toBe("package@1.0.0") + expect(getSemver("package", "1.0.0", "stage")).toBe("package@1.0.0") + expect(getSemver("package", "1.0.0", "prod")).toBe("package@1.0.0") }) it("should append cleaned branch name for non-named branches", () => { - expect(getSemver("1.0.0", "feature/my-feature")).toBe( - "1.0.0-feature-my-feature" + expect(getSemver("package", "1.0.0", "feature/my-feature")).toBe( + "package@1.0.0-feature-my-feature" ) }) it("should handle special characters in non-named branches", () => { - expect(getSemver("1.0.0", "fix/bug#123")).toBe("1.0.0-fix-bug-123") + expect(getSemver("package", "1.0.0", "fix/bug#123")).toBe( + "package@1.0.0-fix-bug-123" + ) }) it("should lowercase and trim non-named branches", () => { - expect(getSemver("1.0.0", " MY-BRANCH ")).toBe("1.0.0-my-branch") + expect(getSemver("package", "1.0.0", " MY-BRANCH ")).toBe( + "package@1.0.0-my-branch" + ) }) it("should truncate long branch names", () => { expect( - getSemver("1.0.0", "feature/very-long-branch-name-that-exceeds-limit") - ).toBe("1.0.0-feature-very-long-br") + getSemver( + "package", + "1.0.0", + "feature/very-long-branch-name-that-exceeds-limit" + ) + ).toBe("package@1.0.0-feature-very-long-br") }) }) diff --git a/packages/common/utils/getSemver.ts b/packages/common/utils/getSemver.ts index bc2af0c7d..f36f81c4b 100644 --- a/packages/common/utils/getSemver.ts +++ b/packages/common/utils/getSemver.ts @@ -3,6 +3,7 @@ const namedBranches = ["release", "master", "test", "stage", "prod"] as const type NamedBranch = (typeof namedBranches)[number] | (string & {}) export function getSemver( + packageName: string, version: string | undefined, branch: NamedBranch ): string | undefined { @@ -25,8 +26,8 @@ export function getSemver( .replace(/[^a-zA-Z0-9]/g, "-") .toLowerCase() - return `${version}-${cleanedBranch}` + return `${packageName}@${version}-${cleanedBranch}` } - return version + return `${packageName}@${version}` }