environment.ts (1484B)
1 import * as V from "$valita"; 2 3 export const environement = V.object({ 4 /** 5 * HTTP 6 */ 7 HTTPS_HOST: V.string(), 8 HTTPS_PORT: V.unknown().map(Number), 9 HTTPS_KEY: V.string().map(Deno.readTextFileSync).optional(), 10 HTTPS_CERT: V.string().map(Deno.readTextFileSync).optional(), 11 12 /** 13 * PERSISTANCE 14 */ 15 PERSISTANCE: V.union(V.literal("memory"), V.literal("postgres")), 16 17 /** 18 * MAILER 19 */ 20 MAILER: V.union(V.literal("fake"), V.literal("smtp")), 21 SMTP_HOST: V.string().default(""), 22 SMTP_PORT: V.unknown().map(Number).default(25), 23 SMTP_FROM: V.string().default("kycid@smtp.local"), 24 SMTP_USER: V.string().optional(), 25 SMTP_PASS: V.string().optional(), 26 SMTP_TLS: V.unknown().optional().map(Boolean), 27 28 /** 29 * SMS SENDER 30 */ 31 SMS_PROVIDER: V.union(V.literal("fake"), V.literal("swisscom")), 32 SWISSCOM_SMS_TOKEN_ENDPOINT: V.string().default( 33 "https://api.swisscom.com/oauth2/token", 34 ), 35 SWISSCOM_SMS_MESSAGE_ENDPOINT: V.string().default( 36 "https://api.swisscom.com/messaging/sms", 37 ), 38 SWISSCOM_SMS_CLIENT_ID: V.string().default(""), 39 SWISSCOM_SMS_CLIENT_SECRET: V.string().default(""), 40 41 /** 42 * CONFIG 43 */ 44 OAUTH2_CLIENTS: V.string().default("./clients.json"), 45 IDDOCUMENT_ADMINS: V.string().default("./admins.json"), 46 47 /** 48 * TESSERACT 49 */ 50 TESSERACT_PATH: V.string(), 51 }); 52 53 export function createEnvironment() { 54 return { 55 environment: environement.parse( 56 Deno.env.toObject(), 57 { mode: "strip" }, 58 ), 59 }; 60 }