| |
| |
| import fs from 'node:fs'; |
| import path from 'node:path'; |
| import { fileURLToPath } from 'node:url'; |
| |
| export const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); |
| |
| |
| try { |
| for (const line of fs.readFileSync(path.join(ROOT, '.env'), 'utf8').split(/\r?\n/)) { |
| const m = line.match(/^\s*([A-Z_][A-Z0-9_]*)\s*=\s*(.*?)\s*$/i); |
| if (m && process.env[m[1]] == null) process.env[m[1]] = m[2].replace(/^(['"])(.*)\1$/, '$2'); |
| } |
| } catch {} |
| |
| const env = process.env; |
| const num = (v, d) => (v != null && v !== '' && Number.isFinite(+v) ? +v : d); |
| |
| export const config = { |
| port: num(env.PORT, 3000), |
| portFixed: env.PORT != null && env.PORT !== '', |
| host: env.HOST || '127.0.0.1', |
| |
| feedUrl: env.FEED_URL || 'wss://stream.pumpapi.io/', |
| |
| firehose: (env.FIREHOSE || 'on').toLowerCase() !== 'off', |
| dataDir: path.resolve(ROOT, env.DATA_DIR || 'data'), |
| |
| ipfsGateways: (env.IPFS_GATEWAYS || 'https://ipfs.filebase.io/ipfs/,https://4everland.io/ipfs/,https://pump.mypinata.cloud/ipfs/').split(',').map(s => s.trim()).filter(s => /^https:\/\/[^\s]+\/ipfs\/$/.test(s)), |
| |
| stretchAt: num(env.STRETCH_AT, 60), |
| |
| newMaxAgeMin: num(env.NEW_MAX_AGE_MIN, 60), |
| |
| columnCap: num(env.COLUMN_CAP, 80), |
| |
| tradeCap: num(env.TRADE_CAP, 1000), |
| |
| idleDropMin: num(env.IDLE_DROP_MIN, 120), |
| |
| maxCoins: num(env.MAX_COINS, 6000), |
| |
| logEvery: num(env.LOG_EVERY, 15), |
| }; |