import fs from 'node:fs/promises'; import assert from 'node:assert/strict'; import {randomUUID,createHash} from 'node:crypto'; import {spawn} from 'node:child_process'; import vm from 'node:vm'; async function probe(mode,job,input={},legacy=false){ return new Promise((resolve,reject)=>{ const php=mode==='compras'?'C:/Users/macbook/.config/investmoz/php-8.5.11/php.exe':'C:/laragon/tools/sgf-tempo/php-8.4.27/php.exe'; const p=spawn(php,[legacy?'scripts/payables-probe.php':'scripts/settlements-probe.php',mode,job],{windowsHide:true});let out='',err=''; p.stdout.on('data',d=>out+=d);p.stderr.on('data',d=>err+=d);p.on('error',reject);p.on('close',code=>{try{if(code)throw Error('Isolated probe failed '+job+': '+out+err);resolve(JSON.parse(out));}catch(e){reject(e);}});p.stdin.end(JSON.stringify(input)); }); } const hosts=[]; for(const mode of ['compras','sgf']){ const base=`http://127.0.0.1:${mode==='compras'?8007:8008}`; function client(){const cookies=new Map();let csrf='',context='';return { async request(path,method='GET',body,key=randomUUID(),form=false){ const r=await fetch(base+path,{redirect:'manual',signal:AbortSignal.timeout(20000),method,headers:{Connection:'close',Accept:'application/json','Content-Type':form?'application/x-www-form-urlencoded':'application/json',Cookie:[...cookies].map(([k,v])=>`${k}=${v}`).join('; '),'X-CSRF-TOKEN':csrf,'X-SGF-Context':context,'Idempotency-Key':key},...(body===undefined?{}:{body:form?new URLSearchParams(body):JSON.stringify(body)})}); for(const cookie of r.headers.getSetCookie()){const pair=cookie.split(';',1)[0],i=pair.indexOf('=');cookies.set(pair.slice(0,i),pair.slice(i+1));} const html=await r.text();let data;try{data=JSON.parse(html);}catch{} csrf=html.match(/name="_token" value="([^"]+)"/)?.[1]??data?.csrf??csrf; const embedded=html.match(/const settings=(.*);/);if(embedded){const s=JSON.parse(embedded[1]);csrf=s.csrf;context=s.context??context;new vm.Script(html.match(/