import fs from 'node:fs'; import vm from 'node:vm'; import assert from 'node:assert/strict'; const source=fs.readFileSync('public/app-runtime.js','utf8'); const code=source.slice(source.indexOf(' function loadConfig() {'),source.indexOf(' function saveConfig() {')); const url='https://usfjwhztqoopzzfmfbis.supabase.co',key='sb_publishable_CAxfhMKrduJjuk_5ybCQLg_TqSGWGoy'; const run=config=>{const storage=new Map([['sunCloudV2Config',JSON.stringify(config)],['sunOrders','[{"id":"old-order"}]']]);const ctx={DEFAULT_SUPABASE_URL:url,DEFAULT_SUPABASE_KEY:key,CONFIG_KEY:'sunCloudV2Config',localStorage:{getItem:k=>storage.get(k),setItem:(k,v)=>storage.set(k,v)}};vm.createContext(ctx);const result=vm.runInContext(code+';loadConfig()',ctx);return{result,storage};}; for(const retired of ['https://cksuehzcimitsxmeloes.supabase.co','https://api.caterium.ru']){const {result,storage}=run({url:retired,key:'old-key',workspaceId:'old-company',autoSync:false});assert.equal(result.url,url);assert.equal(result.key,key);assert.equal(result.workspaceId,'');assert.equal(result.legacyLocalWorkspaceId,'old-company');assert.equal(result.autoSync,false);assert.equal(storage.get('sunOrders'),'[{"id":"old-order"}]');assert.ok(storage.has('cateriumRetiredBackend20260917'));} const {result}=run({url,key,workspaceId:'new-company',localWorkspaceId:'new-company',tenantStorageReady:true});assert.equal(result.workspaceId,'new-company');assert.equal(result.localWorkspaceId,'new-company'); assert.equal(run({}).result.url,url); console.log('PASS backend cutover: retired config upgraded, old local data preserved separately, fresh config stable');