From 12503ed39ba725ef1acf11defa71ad78b943c611 Mon Sep 17 00:00:00 2001 From: Malte Finsterwalder <malte@holi.team> Date: Thu, 14 Sep 2023 10:12:48 +0200 Subject: [PATCH] HOLI-3881 simplify required env parsing --- app/main.ts | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/app/main.ts b/app/main.ts index 3eba0c1..e4440c3 100644 --- a/app/main.ts +++ b/app/main.ts @@ -13,30 +13,30 @@ logger.setUpLogger( environment === "development" ? LogSeverity.DEFAULT : LogSeverity.INFO, ); -const required = <T>(name: string, t?: T, fallback?: T): T => { - if (t === undefined && fallback === undefined) { +const requiredEnv = <T>( + name: string, + typeFn: (s: string) => T, + fallback?: T, +): T => { + const env = Deno.env.get(name); + if (env === undefined && fallback === undefined) { throw Error(`Environment variable "${name}" is required`); } else { - return t !== undefined ? t : fallback!; + return env !== undefined ? typeFn(env) : fallback!; } }; const serverConfigFromEnv = () => { - const asNumber = (str?: string) => (str ? Number(str) : undefined); - const asBoolean = (str?: string) => (str ? /^true$/i.test(str) : undefined); + const asBoolean = (str: string) => /^true$/i.test(str); return { - port: required("PORT", asNumber(Deno.env.get("PORT")), DEFAULT_PORT), - cacheEnabled: required( - "CACHE_ENABLED", - asBoolean(Deno.env.get("CACHE_ENABLED")), - DEFAULT_CACHE_ENABLED, - ), - cacheTtlMsBetterplace: required( + port: requiredEnv("PORT", Number, DEFAULT_PORT), + cacheEnabled: requiredEnv("CACHE_ENABLED", asBoolean, DEFAULT_CACHE_ENABLED), + cacheTtlMsBetterplace: requiredEnv( "CACHE_TTL_MS_BETTERPLACE", - asNumber(Deno.env.get("CACHE_TTL_MS_BETTERPLACE")), + Number, DEFAULT_CACHE_TTL_MS_BETTERPLACE, ), - fake: asBoolean(Deno.env.get("FAKE")) || false, // For local development. If set, the API returns dummy data + fake: requiredEnv("FAKE", asBoolean, false), // For local development. If set, the API returns dummy data }; }; -- GitLab