import './_planet.mjs';
import { test } from 'node:test';
import assert from 'node:assert/strict';
import { readdirSync, readFileSync, existsSync } from 'node:fs';
import { HTML, IMPORTS } from './importmap.mjs';
const JS = new URL('../js/', import.meta.url);
const files = readdirSync(JS).filter(f => f.endsWith('.js'));
test('import map targets exist', () => {
for (const v of Object.values(IMPORTS)) assert.ok(existsSync(new URL(v, new URL('../', import.meta.url))), v);
});
test('every viewer module links (imports resolve, named exports exist)', async () => {
for (const f of files) await import(new URL(f, JS).href);
});
test('every #id the scripts look up exists in index.html', () => {
const ids = new Set([...HTML.matchAll(/\bid="([\w-]+)"/g)].map(m => m[1]));
for (const f of files) {
for (const m of readFileSync(new URL(f, JS), 'utf8').matchAll(/\$\('#([\w-]+)'\)/g)) assert.ok(ids.has(m[1]), `${f}: #${m[1]}`);
}
});