import ts from 'typescript';import {readFileSync} from 'node:fs'; const source=readFileSync(new URL('./cloud/payroll-integrity.js',import.meta.url),'utf8'); export const round2Helpers=['payrollSettlementSyncStatus','payrollCanonicalSnapshot','payrollPreviewData','payrollOverviewData','payrollExportData']; function functions(code){const file=ts.createSourceFile('gateway.js',code,ts.ScriptTarget.Latest,true,ts.ScriptKind.JS);return new Map(file.statements.filter(ts.isFunctionDeclaration).map(node=>[node.name?.text,{start:node.getStart(file),end:node.end,text:node.getText(file)}]));} export function patchRound2(original){const current=functions(original),next=functions(source);const edits=round2Helpers.map(name=>{if(!current.has(name)||!next.has(name))throw Error('Missing helper '+name);return{...current.get(name),text:next.get(name).text};}).sort((a,b)=>b.start-a.start);let result=original;for(const edit of edits)result=result.slice(0,edit.start)+edit.text+result.slice(edit.end);if(current.has('payrollPreviewUncached'))throw Error('Unexpected already-patched gateway');result+='\n'+next.get('payrollPreviewUncached').text;new Function(result);return result;}