import { readFileSync } from 'node:fs';
import { resolve } from 'node:path';

const root = resolve(import.meta.dirname, '..');
const read = file => readFileSync(resolve(root, file), 'utf8');
const assert = (condition, message) => { if (!condition) throw new Error(message); };

const pkg = JSON.parse(read('package.json'));
const index = read('public/index.html');
const app = read('public/app.js');
const style = read('public/style.css');
const setup = read('setup.ps1');

assert(pkg.version === '1.25.1', 'Paketversion ist nicht 1.25.1.');
assert(index.includes('name="vendoo-build" content="1.25.1"'), 'Build-Metadatum fehlt.');
assert(index.includes('style.css?v=1.25.1'), 'CSS-Cache-Buster fehlt.');
assert(index.includes('app.js?v=1.25.1'), 'JS-Cache-Buster fehlt.');
assert(app.includes("VENDOO_UI_BUILD = '1.25.1'"), 'UI-Buildkennung fehlt.');
assert(setup.includes('/?build=1.25.1'), 'Windows-Start-Cache-Buster fehlt.');

assert(style.includes('grid-template-columns:repeat(auto-fit'), 'Automatisch fließendes Galerie-Raster fehlt.');
assert(style.includes('container-name:media-card'), 'Galeriekarten sind keine Container.');
assert(style.includes('@container media-card (max-width: 235px)'), 'Schmale Kartendarstellung fehlt.');
assert(style.includes('@container media-card (min-width: 340px)'), 'Breite Kartendarstellung fehlt.');
assert(app.includes('class="media-card-open"'), 'Klickbare Bildfläche fehlt.');
assert(app.includes("mediaActionIcon('open')"), 'Professioneller Bildöffnen-Indikator fehlt.');
assert(!app.includes('class="media-card-preview"'), 'Alter großer Öffnen-/Vorschau-Button ist noch vorhanden.');
assert(app.includes('class="media-action"'), 'Adaptives Aktionsdock fehlt.');
assert(app.includes("mediaActionIcon('edit')") && app.includes("mediaActionIcon('delete')"), 'Galerieaktionssymbole fehlen.');
assert(index.match(/data-media-pagination/g)?.length === 2, 'Pagination muss oben und unten vorhanden sein.');
assert(index.match(/data-media-page-jump/g)?.length === 2, 'Direkte Seitenauswahl muss oben und unten vorhanden sein.');
assert(app.includes("root.querySelectorAll('[data-media-page-action]')"), 'Paginierungsbuttons sind nicht angebunden.');
assert(app.includes("root.querySelectorAll('[data-media-page-jump]')"), 'Direkter Seitensprung ist nicht angebunden.');
assert(style.includes('.media-pagination-top') && style.includes('.media-pagination-bottom'), 'Pagination ist nicht oben und unten gestaltet.');
assert(style.includes('.media-card.is-selected .media-card-image'), 'Sichtbarer Auswahlzustand fehlt.');
assert(style.includes('@media (hover:none)'), 'Touch-Geräte werden nicht berücksichtigt.');

console.log(JSON.stringify({
  ok: true,
  release: '1.25.1',
  adaptive_grid: true,
  card_container_queries: true,
  full_image_click_target: true,
  oversized_open_button_removed: true,
  adaptive_selection_and_favorite_overlays: true,
  adaptive_action_dock: true,
  pagination_top_and_bottom: true,
  direct_page_jump: true,
  touch_behavior: true,
}, null, 2));
