From 3ffe752c7ad9c6b0258ef4b9d74236c0ffb40d23 Mon Sep 17 00:00:00 2001 From: Danijel Martinek Date: Mon, 4 May 2026 20:37:12 +0200 Subject: [PATCH] feat(core-shared): add requireEnv helper --- packages/core-shared/src/lib/env.test.ts | 28 ++++++++++++++++++++++++ packages/core-shared/src/lib/env.ts | 7 ++++++ 2 files changed, 35 insertions(+) create mode 100644 packages/core-shared/src/lib/env.test.ts create mode 100644 packages/core-shared/src/lib/env.ts diff --git a/packages/core-shared/src/lib/env.test.ts b/packages/core-shared/src/lib/env.test.ts new file mode 100644 index 0000000..a586a55 --- /dev/null +++ b/packages/core-shared/src/lib/env.test.ts @@ -0,0 +1,28 @@ +import { describe, expect, it, afterEach } from "vitest"; +import { requireEnv } from "./env"; + +describe("requireEnv", () => { + const originalEnv = process.env.SOME_KEY; + + afterEach(() => { + if (originalEnv === undefined) delete process.env.SOME_KEY; + else process.env.SOME_KEY = originalEnv; + }); + + it("returns the value when set", () => { + process.env.SOME_KEY = "value"; + expect(requireEnv("SOME_KEY")).toBe("value"); + }); + + it("throws when missing", () => { + delete process.env.SOME_KEY; + expect(() => requireEnv("SOME_KEY")).toThrow( + /Missing required env var: SOME_KEY/, + ); + }); + + it("throws when empty string", () => { + process.env.SOME_KEY = ""; + expect(() => requireEnv("SOME_KEY")).toThrow(); + }); +}); diff --git a/packages/core-shared/src/lib/env.ts b/packages/core-shared/src/lib/env.ts new file mode 100644 index 0000000..8721f93 --- /dev/null +++ b/packages/core-shared/src/lib/env.ts @@ -0,0 +1,7 @@ +export function requireEnv(name: string): string { + const value = process.env[name]; + if (!value) { + throw new Error(`Missing required env var: ${name}`); + } + return value; +}