UNPKG

@lit-protocol/e2e

Version:

Lit Protocol E2E testing package for running comprehensive integration tests

58 lines 2.04 kB
import fs from 'node:fs'; import path from 'node:path'; import { randomBytes } from 'node:crypto'; import { privateKeyToAccount } from 'viem/accounts'; const DEFAULT_E2E_DIR = path.resolve(process.cwd(), '.e2e'); const DEFAULT_ACCOUNTS_FILE = path.join(DEFAULT_E2E_DIR, 'generated-accounts.jsonl'); export const E2E_RUN_ID = process.env['E2E_RUN_ID'] ?? `${Date.now()}-${process.pid}-${randomBytes(4).toString('hex')}`; export function getGeneratedAccountsFilePath() { return process.env['E2E_GENERATED_ACCOUNTS_FILE'] ?? DEFAULT_ACCOUNTS_FILE; } export function persistGeneratedAccount(params) { const filePath = getGeneratedAccountsFilePath(); fs.mkdirSync(path.dirname(filePath), { recursive: true }); const account = privateKeyToAccount(params.privateKey); const record = { runId: E2E_RUN_ID, createdAt: new Date().toISOString(), network: params.network, label: params.label, address: account.address, privateKey: params.privateKey, }; fs.appendFileSync(filePath, `${JSON.stringify(record)}\n`, { encoding: 'utf8', }); // Best-effort: restrict permissions on *nix. try { fs.chmodSync(filePath, 0o600); } catch { // Ignore (e.g. Windows or filesystem constraints). } return record; } export function readGeneratedAccounts(params) { const filePath = params?.filePath ?? getGeneratedAccountsFilePath(); if (!fs.existsSync(filePath)) return []; const runId = params?.runId; const lines = fs.readFileSync(filePath, 'utf8').split('\n'); const records = []; for (const line of lines) { if (!line.trim()) continue; try { const parsed = JSON.parse(line); if (runId && parsed.runId !== runId) continue; records.push(parsed); } catch { // Ignore malformed lines (best-effort persistence). } } return records; } //# sourceMappingURL=generated-accounts.js.map