/* render-composition.mjs — render a grouped composition file to SVG. Usage: node tools/render-composition.mjs [out.svg] [size] */ import { writeFileSync } from 'node:fs'; import { resolve } from 'node:path'; import { pathToFileURL } from 'node:url'; import { renderComposition } from '../src/compose/composition.js'; const file = process.argv[2]; if (!file) { console.error('usage: node tools/render-composition.mjs [out.svg] [size]'); process.exit(1); } const out = process.argv[3] || '/tmp/composition.svg'; const size = process.argv[4] ? +process.argv[4] : undefined; const mod = await import(pathToFileURL(resolve(file)).href); const comp = mod.composition || mod.default; if (!comp) { console.error('composition file must `export const composition = {...}`'); process.exit(1); } const svg = renderComposition(comp, size); writeFileSync(out, svg); console.log(`composition -> ${out} (${(svg.length / 1024).toFixed(0)} KB, size=${size || comp.size || 1500})`);