import { createRouter, createCrawlContext, getConnectorMeta } from '@rareindex/connectors'; import { saveFixture } from '@rareindex/connectors/testing'; import createConnector from './index.js'; const save = process.argv.includes('--save'); const meta = getConnectorMeta('brickset'); const connector = createConnector(meta); const ctx = createCrawlContext({ router: createRouter({}), meta, options: { mode: 'probe', limit: 3, seeds: ['theme-Icons'] } }); for await (const raw of connector.crawl(ctx)) { const out = await connector.normalize({ ...raw, externalId: raw.externalId ?? null, fetchedAt: raw.fetchedAt ?? new Date() }); console.log(`raw ${raw.externalId} → ${out.length}`); for (const r of out) console.log(' ', JSON.stringify(r).slice(0, 320)); } const lk = await connector.lookup('https://brickset.com/sets/10179-1/Ultimate-Collectors-Millennium-Falcon', ctx); if (lk[0]) { const out = await connector.normalize({ ...lk[0], externalId: lk[0].externalId ?? null, fetchedAt: lk[0].fetchedAt ?? new Date() }); console.log('lookup 10179 →', out.length, JSON.stringify(out[0]).slice(0, 400)); if (save) saveFixture('brickset', '10179-1-millennium-falcon', { raw: { url: lk[0].url, externalId: lk[0].externalId ?? null, kind: lk[0].kind, engine: lk[0].engine, fetchedAt: lk[0].fetchedAt ?? new Date(), payload: lk[0].payload }, expect: { count: 3, kinds: ['catalog_item', 'price_observation'], first: { 'attributes.number': '10179', 'attributes.year': 2007 } }, note: 'Captured live from brickset.com' }); } const lk2 = await connector.lookup('https://brickset.com/sets/75192-1', ctx); if (lk2[0] && save) saveFixture('brickset', '75192-1-millennium-falcon', { raw: { url: lk2[0].url, externalId: lk2[0].externalId ?? null, kind: lk2[0].kind, engine: lk2[0].engine, fetchedAt: lk2[0].fetchedAt ?? new Date(), payload: lk2[0].payload }, expect: { minCount: 1, kinds: ['catalog_item', 'price_observation'] }, note: 'Captured live from brickset.com' }); console.log('engineStats', ctx.engineStats, 'anomalies', ctx.anomalies);