From bd6e81f30baf428d91db86bf31a9fa6e64fd6e70 Mon Sep 17 00:00:00 2001 From: Ryan Vogel Date: Sat, 28 Mar 2026 14:11:02 -0400 Subject: [PATCH] update for env checks --- packages/apn-relay/src/env.ts | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/packages/apn-relay/src/env.ts b/packages/apn-relay/src/env.ts index 2825bc6ae1..c6f48e1783 100644 --- a/packages/apn-relay/src/env.ts +++ b/packages/apn-relay/src/env.ts @@ -11,4 +11,31 @@ const schema = z.object({ APNS_DEFAULT_BUNDLE_ID: z.string().min(1), }) -export const env = schema.parse(process.env) +const req = [ + "DATABASE_HOST", + "DATABASE_USERNAME", + "DATABASE_PASSWORD", + "APNS_TEAM_ID", + "APNS_KEY_ID", + "APNS_PRIVATE_KEY", + "APNS_DEFAULT_BUNDLE_ID", +] as const + +const out = schema.safeParse(process.env) + +if (!out.success) { + const miss = req.filter((key) => !process.env[key]?.trim()) + const bad = out.error.issues + .map((item) => item.path[0]) + .filter((key): key is string => typeof key === "string") + .filter((key) => !miss.includes(key as (typeof req)[number])) + + console.error("[apn-relay] Invalid startup configuration") + if (miss.length) console.error(`[apn-relay] Missing required env vars: ${miss.join(", ")}`) + if (bad.length) console.error(`[apn-relay] Invalid env vars: ${Array.from(new Set(bad)).join(", ")}`) + console.error("[apn-relay] Check .env.example and restart") + + throw new Error("Startup configuration invalid") +} + +export const env = out.data