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);