[READ ONLY MIRROR] Spark Social AppView Server github.com/sprksocial/server
atproto deno hono lexicon
5
fork

Configure Feed

Select the types of activity you want to include in your feed.

at eb947da8a3a8a7d485ff132b3ff0db4a8baaac19 174 lines 4.3 kB view raw
1import * as dotenv from "dotenv"; 2import { envInt, envList, envStr } from "@atp/common"; 3 4dotenv.config({ quiet: true }); 5 6export interface ServerConfigValues { 7 version?: string; 8 debugMode?: boolean; 9 port?: number; 10 publicUrl?: string; 11 serverDid: string; 12 privateKey: string; 13 alternateAudienceDids: string[]; 14 modServiceDid: string; 15 adminPasswords: string[]; 16 indexedAtEpoch?: Date; 17 18 bigThreadUris: Set<string>; 19 bigThreadDepth?: number; 20 maxThreadDepth?: number; 21 maxThreadParents: number; 22 23 videoCdn?: string; 24 mediaCdn?: string; 25 thumbCdn?: string; 26 27 dbUri?: string; 28 dbName?: string; 29 dbUser?: string; 30 dbPass?: string; 31 relayUrl?: string; 32 plcUrl?: string; 33} 34 35export class ServerConfig { 36 constructor(private cfg: ServerConfigValues) {} 37 38 static readEnv() { 39 const version = envStr("SPRK_VERSION"); 40 const debugMode = Deno.env.get("NODE_ENV") === "development" || 41 Deno.env.get("NODE_ENV") === "test"; 42 const port = envInt("SPRK_PORT") ?? 3000; 43 const publicUrl = envStr("SPRK_PUBLIC_URL") ?? undefined; 44 const serverDid = envStr("SPRK_SERVER_DID") ?? "did:example:test"; 45 const privateKey = envStr("SPRK_PRIVATE_KEY") ?? ""; 46 const alternateAudienceDids = envList("SPRK_ALTERNATE_AUDIENCE_DIDS") ?? []; 47 const modServiceDid = envStr("SPRK_MOD_SERVICE_DID") ?? "did:web:localhost"; 48 const adminPasswords = envList("SPRK_ADMIN_PASSWORDS") ?? ["admin-token"]; 49 50 const indexedAtEpochEnv = Deno.env.get("SPRK_INDEXED_AT_EPOCH"); 51 const indexedAtEpoch = indexedAtEpochEnv !== undefined 52 ? new Date(indexedAtEpochEnv) 53 : undefined; 54 55 const bigThreadUris = new Set(envList("SPRK_BIG_THREAD_URIS")); 56 const bigThreadDepth = envInt("SPRK_BIG_THREAD_DEPTH") ?? 10; 57 const maxThreadDepth = envInt("SPRK_MAX_THREAD_DEPTH") ?? 10; 58 const maxThreadParents = envInt("SPRK_MAX_THREAD_PARENTS") ?? 10; 59 60 const videoCdn = envStr("SPRK_VIDEO_CDN") ?? "https://video.sprk.so"; 61 const mediaCdn = envStr("SPRK_MEDIA_CDN") ?? "https://media.sprk.so"; 62 const thumbCdn = envStr("SPRK_THUMB_CDN") ?? "https://thumb.sprk.so"; 63 64 const dbUri = envStr("SPRK_DB_URI") ?? 65 "mongodb://mongo:mongo@localhost:27017/dev"; 66 const dbName = envStr("SPRK_DB_NAME") ?? "dev"; 67 const dbUser = envStr("SPRK_DB_USER") ?? "mongo"; 68 const dbPass = envStr("SPRK_DB_PASS") ?? "mongo"; 69 const relayUrl = envStr("SPRK_RELAY") ?? 70 "wss://relay1.us-east.bsky.network"; 71 const plcUrl = envStr("SPRK_PLC") ?? "https://plc.directory"; 72 73 return new ServerConfig({ 74 version, 75 debugMode, 76 port, 77 publicUrl, 78 serverDid, 79 privateKey, 80 alternateAudienceDids, 81 modServiceDid, 82 adminPasswords, 83 indexedAtEpoch, 84 bigThreadUris, 85 bigThreadDepth, 86 maxThreadDepth, 87 maxThreadParents, 88 videoCdn, 89 mediaCdn, 90 thumbCdn, 91 dbUri, 92 dbName, 93 dbUser, 94 dbPass, 95 relayUrl, 96 plcUrl, 97 }); 98 } 99 100 get version() { 101 return this.cfg.version; 102 } 103 get debugMode() { 104 return this.cfg.debugMode; 105 } 106 get port() { 107 return this.cfg.port; 108 } 109 get publicUrl() { 110 return this.cfg.publicUrl; 111 } 112 get serverDid() { 113 return this.cfg.serverDid; 114 } 115 get privateKey() { 116 return this.cfg.privateKey; 117 } 118 get alternateAudienceDids() { 119 return this.cfg.alternateAudienceDids; 120 } 121 get modServiceDid() { 122 return this.cfg.modServiceDid; 123 } 124 get adminPasswords() { 125 return this.cfg.adminPasswords; 126 } 127 get indexedAtEpoch() { 128 return this.cfg.indexedAtEpoch; 129 } 130 131 // Threads 132 get bigThreadDepth() { 133 return this.cfg.bigThreadDepth; 134 } 135 get bigThreadUris() { 136 return this.cfg.bigThreadUris; 137 } 138 get maxThreadParents() { 139 return this.cfg.maxThreadParents; 140 } 141 get maxThreadDepth() { 142 return this.cfg.maxThreadDepth; 143 } 144 145 // CDNs 146 get videoCdn() { 147 return this.cfg.videoCdn; 148 } 149 get mediaCdn() { 150 return this.cfg.mediaCdn; 151 } 152 get thumbCdn() { 153 return this.cfg.thumbCdn; 154 } 155 156 get dbUri() { 157 return this.cfg.dbUri; 158 } 159 get dbName() { 160 return this.cfg.dbName; 161 } 162 get dbUser() { 163 return this.cfg.dbUser; 164 } 165 get dbPass() { 166 return this.cfg.dbPass; 167 } 168 get relayUrl() { 169 return this.cfg.relayUrl; 170 } 171 get plcUrl() { 172 return this.cfg.plcUrl; 173 } 174}