{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CAClB;AAyBD,wBAAgB,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAsB1E","sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { join, resolve } from \"node:path\";\n\nexport interface ServerConfig {\n\thost: string;\n\tport: number;\n\tauthToken: string | undefined;\n\tsessionStoreDir: string;\n\tuploadDir: string;\n}\n\nconst DEFAULT_CONFIG: ServerConfig = {\n\thost: \"127.0.0.1\",\n\tport: 4217,\n\tauthToken: undefined,\n\tsessionStoreDir: resolve(\".pi\", \"pi-server\", \"sessions\"),\n\tuploadDir: join(homedir(), \".pi\", \"upload_files\"),\n};\n\nfunction loadConfigFile(): Partial<ServerConfig> {\n\tconst configPath = process.env.PI_SERVER_CONFIG;\n\tif (!configPath) return {};\n\tconst resolved = resolve(configPath);\n\tif (!existsSync(resolved)) {\n\t\tthrow new Error(`PI_SERVER_CONFIG file not found: ${resolved}`);\n\t}\n\ttry {\n\t\tconst content = readFileSync(resolved, \"utf-8\");\n\t\treturn JSON.parse(content) as Partial<ServerConfig>;\n\t} catch (err) {\n\t\tthrow new Error(`PI_SERVER_CONFIG file contains invalid JSON: ${resolved}`, { cause: err });\n\t}\n}\n\nexport function loadConfig(overrides?: Partial<ServerConfig>): ServerConfig {\n\tconst fileConfig = loadConfigFile();\n\n\treturn {\n\t\thost: overrides?.host ?? process.env.PI_SERVER_HOST ?? fileConfig.host ?? DEFAULT_CONFIG.host,\n\t\tport:\n\t\t\toverrides?.port ??\n\t\t\t(process.env.PI_SERVER_PORT ? parseInt(process.env.PI_SERVER_PORT, 10) : undefined) ??\n\t\t\tfileConfig.port ??\n\t\t\tDEFAULT_CONFIG.port,\n\t\tauthToken:\n\t\t\toverrides?.authToken ?? process.env.PI_SERVER_AUTH_TOKEN ?? fileConfig.authToken ?? DEFAULT_CONFIG.authToken,\n\t\tsessionStoreDir: resolve(\n\t\t\toverrides?.sessionStoreDir ??\n\t\t\t\tprocess.env.PI_SERVER_SESSION_STORE_DIR ??\n\t\t\t\tfileConfig.sessionStoreDir ??\n\t\t\t\tDEFAULT_CONFIG.sessionStoreDir,\n\t\t),\n\t\tuploadDir: resolve(\n\t\t\toverrides?.uploadDir ?? process.env.PI_SERVER_UPLOAD_DIR ?? fileConfig.uploadDir ?? DEFAULT_CONFIG.uploadDir,\n\t\t),\n\t};\n}\n"]}