ekyc

Electronic KYC process with uploading ID document using OAuth 2.1 (experimental)
Log | Files | Refs | README | LICENSE

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 }