import { readFile, writeFile, mkdir, readdir } from 'node:fs/promises';
import { resolve } from 'node:path';
const root=resolve(import.meta.dirname,'../release/netlify-preview');
const target=resolve(import.meta.dirname,'../release/netlify-upload');
await mkdir(target,{recursive:true});
const files={};
async function walk(dir) { for(const entry of await readdir(dir,{withFileTypes:true})) { const path=resolve(dir,entry.name); if(entry.isDirectory()) await walk(path); else files[path.slice(root.length+1)]=(await readFile(path)).toString('base64'); } }
await walk(root);
await writeFile(resolve(target,'deployment-payload.json'),JSON.stringify(files));
for(const name of ['package.json','package-lock.json']) await writeFile(resolve(target,name),await readFile(resolve(root,name)));
await writeFile(resolve(target,'unpack.mjs'),`import {readFile,mkdir,writeFile} from 'node:fs/promises';
import {resolve,dirname} from 'node:path';
const root=process.cwd();
const files=JSON.parse(await readFile('deployment-payload.json','utf8'));
for(const [name,data] of Object.entries(files)) {
if(name==='netlify.toml'||name==='package.json'||name==='package-lock.json') continue;
const dest=resolve(root,name);
if(!dest.startsWith(root+'/')) throw new Error('Invalid package path');
await mkdir(dirname(dest),{recursive:true});
await writeFile(dest,Buffer.from(data,'base64'));
}
console.log('Prepared MARMAR Context frontend and functions.');
`);
let toml=await readFile(resolve(root,'netlify.toml'),'utf8');
toml=toml.replace('[build]','[build]\n command = "node unpack.mjs"');
await writeFile(resolve(target,'netlify.toml'),toml);
console.log(target);