'use strict'; const test = require('node:test'); const assert = require('node:assert/strict'); const argv = require('../src/argv'); const scrapers = require('../src/scrapers/scrapers'); const { fetchEntitiesBySlug } = require('../src/entities'); const actorScrapers = scrapers.actors; // profiler in this context is shorthand for profile scraper async function init() { const entitiesBySlug = await fetchEntitiesBySlug(Object.keys(actorScrapers), { types: ['channel', 'network', 'info'], prefer: argv.prefer }); Object.entries(actorScrapers).reduce(async (chain, [entitySlug, scraper]) => { await chain; const entity = entitiesBySlug[entitySlug] || null; const profilers = Array.from(new Set(Object.entries(scraper) // some layouts will use the same profiler .flatMap(([fnKey, fnOrLayout]) => { if (fnOrLayout.fetchProfile) { // layout return fnOrLayout.fetchProfile; } if (fnKey === 'fetchProfile') { // primary return fnOrLayout; } return null; }).filter(Boolean))); await test(`${entitySlug} (${entity?.name})`, async () => { await test('has entity', () => assert.notEqual(entity, null)); await test('has profilers', () => assert.ok(profilers.length > 0)); await test('foo', () => { assert.strictEqual(5, 5); }); }); }, Promise.resolve()); } init();