import {readRepositoryMedia} from './managed-media.mjs';
import {createRequire} from 'node:module';
import {readFile} from 'node:fs/promises';
import {fileURLToPath} from 'node:url';
import path from 'node:path';
const root=path.resolve(path.dirname(fileURLToPath(import.meta.url)),'..');
const require=createRequire(path.join(root,'apps/waterfall-wiki/package.json')),sharp=require('sharp');
const layouts=JSON.parse(await readFile(path.join(root,'content/layout-reference/manifest.json'),'utf8'));
const layers=[];let shapes='';
for(const[i,l]of layouts.entries()){
const x=52+i%6*166,y=200+Math.floor(i/6)*232;
shapes+=`${l.id.toUpperCase()}`;
const bytes=await sharp(await readRepositoryMedia(`content/layout-reference/assets/${l.id}/source.png`)).resize({width:130,height:190,fit:'inside'}).png().toBuffer();
const meta=await sharp(bytes).metadata();layers.push({input:bytes,left:Math.round(x+(146-meta.width)/2),top:y+7});
}
const svg=``;
if(!process.env.MEDIA_OUTPUT_FILE)throw Error('Set MEDIA_OUTPUT_FILE to an external authoring output');
const output=path.resolve(process.env.MEDIA_OUTPUT_FILE);if(output===root||output.startsWith(root+path.sep))throw Error('Output must be outside repository');
await sharp(Buffer.from(svg)).composite(layers).png().toFile(output);
console.log('Created Router cover from all 27 actual source crops.');