SYMBOL INDEX (53 symbols across 12 files) FILE: src/config.ts type AppConfig (line 1) | interface AppConfig { function loadConfig (line 11) | function loadConfig(): AppConfig { FILE: src/helpers/base32.ts constant ALPHABET (line 1) | const ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"; function encode (line 3) | function encode(data: Uint8Array): string { function decode (line 25) | function decode(encoded: string): Uint8Array { FILE: src/helpers/dns-doh-resolver.ts constant DOH_SERVERS (line 12) | const DOH_SERVERS = (Deno.env.get("DOH_SERVERS") || type DoHAnswer (line 18) | interface DoHAnswer { type DoHResponse (line 23) | interface DoHResponse { function resolveCnameDoH (line 32) | async function resolveCnameDoH(host: string): Promise { FILE: src/helpers/dns.ts constant CACHE_TTL_MS (line 11) | const CACHE_TTL_MS = 15_000; constant CACHE_MAX_SIZE (line 12) | const CACHE_MAX_SIZE = 2_000; type CacheEntry (line 14) | interface CacheEntry { function dnsResolveCname (line 23) | async function dnsResolveCname(host: string): Promise { function doResolve (line 46) | async function doResolve(host: string): Promise { function dnsCacheSize (line 70) | function dnsCacheSize(): number { function dnsInflightSize (line 74) | function dnsInflightSize(): number { function cacheResult (line 78) | function cacheResult(host: string, records: string[]): string[] { function cacheError (line 84) | function cacheError(host: string, error: Error): void { function evictIfNeeded (line 89) | function evictIfNeeded(): void { FILE: src/helpers/dns_bench_test.ts constant TEST_DOMAINS (line 8) | const TEST_DOMAINS = [ constant DOH_SERVERS (line 14) | const DOH_SERVERS = [ type DoHAnswer (line 21) | interface DoHAnswer { type DoHResponse (line 26) | interface DoHResponse { function resolveCnameDoH (line 31) | async function resolveCnameDoH( FILE: src/helpers/logger.ts constant LEVELS (line 3) | const LEVELS: Record = { FILE: src/main.ts function handleRedirect (line 129) | async function handleRedirect(c: import("hono").Context): Promise { function parseDestination (line 82) | function parseDestination(raw: string, reqUrl: string): Destination { FILE: src/services/statistic.ts type Statistic (line 4) | interface Statistic { type StatisticOverview (line 10) | interface StatisticOverview { class StatisticService (line 15) | class StatisticService { method constructor (line 19) | constructor() { method init (line 23) | private async init(): Promise { method ensureReady (line 28) | async ensureReady(): Promise { method write (line 32) | async write(host: string): Promise { method entryDomain (line 46) | private async entryDomain(domain: string): Promise { method overview (line 64) | async overview(): Promise { FILE: src/types/destination.ts type Destination (line 1) | interface Destination { function createDestination (line 10) | function createDestination(): Destination { FILE: src/types/redirect-response.ts class RedirectResponse (line 3) | class RedirectResponse { method constructor (line 8) | constructor(destination: Destination) {