12 lines
1.4 KiB
JavaScript
12 lines
1.4 KiB
JavaScript
import {managedMedia} from './managed-media.mjs';
|
|
/** Package the 27 audited layers; no new Wiki document routes or copied DB. */
|
|
import {readFile,writeFile} from 'node:fs/promises';
|
|
const root=new URL('../',import.meta.url),read=p=>readFile(new URL(p,root)),raw=JSON.parse(await read('content/layout-reference/manifest.json')),ids=JSON.parse(await read('content/layout-reference/post-ids.json'));
|
|
const image=async p=>'/api/media/'+managedMedia['content/layout-reference/assets/'+p.replace(/^asset:/,'')].id;
|
|
const layouts=[];
|
|
for(const m of raw){const elements=[];for(const e of m.elements)elements.push({...e,raster:await image(e.asset),...(e.mask?{shape:await image(e.mask)}:{})});layouts.push({id:m.id,name:m.name,width:m.width,height:m.height,tutorialUrl:'/explore/'+ids[m.id],sourceSha256:m.source.sha256,source:await image(m.reference),background:await image(m.background),elements});}
|
|
await writeFile(new URL('apps/studio/src/content/templates/layouts.json',root),JSON.stringify(layouts));
|
|
await writeFile(new URL('apps/waterfall-wiki/src/content/studio-layouts.json',root),JSON.stringify(layouts.map(({source,background,elements,...l})=>({...l,elements:elements.map(({id,kind,role,box,direction,text,reading})=>({id,kind,role,box,direction,text,reading}))}))));
|
|
await writeFile(new URL('apps/waterfall-wiki/src/lib/layout-parameters.ts',root),await read('apps/studio/src/lib/layout-parameters.ts'));
|
|
console.log('Packaged '+layouts.length+' corresponding layouts');
|