feat(deploy): notify clients of new releases
CI / Verify (push) Successful in 1m8s
CI / Build immutable images and deploy (push) Has been skipped

This commit is contained in:
2026-08-29 07:13:04 +00:00 Unverified
parent 6fe6d8fd95
commit be095ab236
10 changed files with 162 additions and 1 deletions
+20
View File
@@ -0,0 +1,20 @@
import { describe, expect, it } from "vitest";
import {
hasDeploymentChanged,
normalizeDeploymentId,
} from "./version";
describe("deployment version comparison", () => {
it("normalizes identifiers before comparing them", () => {
expect(normalizeDeploymentId(" release-2 ")).toBe("release-2");
expect(normalizeDeploymentId(" ")).toBeNull();
expect(hasDeploymentChanged("release-1", " release-2 ")).toBe(true);
});
it("does not announce the initial or unchanged deployment", () => {
expect(hasDeploymentChanged(null, "release-2")).toBe(false);
expect(hasDeploymentChanged("release-2", "release-2")).toBe(false);
expect(hasDeploymentChanged("release-2", "")).toBe(false);
});
});
+15
View File
@@ -0,0 +1,15 @@
export function normalizeDeploymentId(
value: string | null | undefined,
): string | null {
const normalized = value?.trim();
return normalized ? normalized : null;
}
export function hasDeploymentChanged(
current: string | null | undefined,
next: string | null | undefined,
): boolean {
const currentId = normalizeDeploymentId(current);
const nextId = normalizeDeploymentId(next);
return currentId !== null && nextId !== null && currentId !== nextId;
}