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; +}