/** * Capture/smoke helper for the g6 connectors: load connectors/domains.json plus ONLY this group's * domains.d fragment through `setDomains()`. Parallel contributors may leave a temporarily invalid * fragment in domains.d; this keeps our live captures runnable without touching their files. * (Production uses the normal loader, which validates every fragment.) */ import { readFileSync } from 'node:fs'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; import { setDomains } from '@rareindex/connectors'; const here = path.dirname(fileURLToPath(import.meta.url)); const root = path.resolve(here, '../../..'); export function useGroupDomains(): void { const base = JSON.parse(readFileSync(path.join(root, 'connectors/domains.json'), 'utf8')) as { version?: string; defaults?: Record; domains?: Record }; const frag = JSON.parse(readFileSync(path.join(root, 'connectors/domains.d/g6-comics-toys-games.json'), 'utf8')) as { domains?: Record }; setDomains({ version: base.version ?? '1.0', defaults: (base.defaults ?? {}) as never, domains: { ...(base.domains ?? {}), ...(frag.domains ?? {}) } as never }); } /** Loads repo-root .env (FIRECRAWL_API_KEY / SCRAPFLY_API_KEY) when present. */ export function loadEnv(): void { try { process.loadEnvFile?.(path.join(root, '.env')); } catch { /* no .env — fine for api-only connectors */ } }