From ac5b61eef32953ea1736dcbc6f9cc665daf4ab88 Mon Sep 17 00:00:00 2001 From: viktech Date: Mon, 22 Jun 2026 23:34:18 +0100 Subject: [PATCH] Serverless Detection & Overrides --- src/lib/storage.ts | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/lib/storage.ts b/src/lib/storage.ts index 35a063d..ba93b6f 100644 --- a/src/lib/storage.ts +++ b/src/lib/storage.ts @@ -1,12 +1,16 @@ import { Low } from 'lowdb' import { JSONFile } from 'lowdb/node' import { join } from 'path' -import { homedir } from 'os' +import { homedir, tmpdir } from 'os' import { mkdirSync } from 'fs' import type { Database } from '../modules/types' -const DATA_DIR = join(homedir(), '.xrithm') -const DB_PATH = join(DATA_DIR, 'db.json') +let DATA_DIR = + process.env.XRITHM_DATA_DIR || + (process.env.VERCEL || process.env.LAMBDA_TASK_ROOT + ? join(tmpdir(), '.xrithm') + : join(homedir(), '.xrithm')) +let DB_PATH = join(DATA_DIR, 'db.json') const defaultData: Database = { config: {}, @@ -42,7 +46,18 @@ function mergeDefaults(data?: Database): Database { export async function getDB(): Promise> { if (!db) { - mkdirSync(DATA_DIR, { recursive: true }) + try { + mkdirSync(DATA_DIR, { recursive: true }) + } catch (err) { + const tempDir = join(tmpdir(), '.xrithm') + if (DATA_DIR !== tempDir) { + DATA_DIR = tempDir + DB_PATH = join(DATA_DIR, 'db.json') + mkdirSync(DATA_DIR, { recursive: true }) + } else { + throw err + } + } const adapter = new JSONFile(DB_PATH) db = new Low(adapter, defaultData) await db.read()