// Device authentication management for Epic Games // Based on https://github.com/claabs/epicgames-freegames-node import fs from 'node:fs'; import path from 'node:path'; import { dataDir } from './util.js'; const CONFIG_DIR = dataDir('config'); const deviceAuthsFilename = path.join(CONFIG_DIR, 'device-auths.json'); // Ensure config directory exists if (!fs.existsSync(CONFIG_DIR)) { fs.mkdirSync(CONFIG_DIR, { recursive: true }); } export async function getDeviceAuths() { try { const deviceAuths = JSON.parse(fs.readFileSync(deviceAuthsFilename, 'utf-8')); return deviceAuths; } catch { return undefined; } } export async function getAccountAuth(account) { const deviceAuths = await getDeviceAuths(); return deviceAuths?.[account]; } export async function writeDeviceAuths(deviceAuths) { fs.writeFileSync(deviceAuthsFilename, JSON.stringify(deviceAuths, null, 2)); } export async function setAccountAuth(account, accountAuth) { const existingDeviceAuths = (await getDeviceAuths()) ?? {}; existingDeviceAuths[account] = accountAuth; await writeDeviceAuths(existingDeviceAuths); }