import { readFileSync } from 'node:fs'; import { ConnectorMetaSchema, createCrawlContext, createRouter } from '@rareindex/connectors'; import { saveFixture } from '@rareindex/connectors/testing'; import { childLogger } from '@rareindex/shared'; import create from '../noble-knight/index.js'; const meta = ConnectorMetaSchema.parse(JSON.parse(readFileSync('connectors/api/noble-knight/meta.json', 'utf8'))); const c = create(meta); const ctx = createCrawlContext({ router: createRouter({}), meta, options: { mode: 'probe' }, log: childLogger({}) }); for (const [name, url] of [['board-game', 'https://www.nobleknight.com/P/2147993326/007---Spectre-Board-Game'], ['gunpla', 'https://www.nobleknight.com/P/2148351787/002-Ex-S-GUNDAM']] as const) { const raws = await c.lookup!(url, ctx); const raw = raws[0]!; const fetchedAt = raw.fetchedAt ?? new Date(); const records = await c.normalize({ ...raw, externalId: raw.externalId ?? null, fetchedAt }); saveFixture(meta.id, name, { raw: { url: raw.url, externalId: raw.externalId ?? null, kind: raw.kind, engine: raw.engine, fetchedAt, payload: raw.payload }, expect: { count: records.length, kinds: [...new Set(records.map((r) => r.kind))] }, note: `Captured live via lookup(${url}).` }); console.log(name, records.length, records.map((r) => r.kind)); }