const fs=require('fs'),vm=require('vm'),assert=require('assert').strict; const ts=require('C:/ProgramData/cocos/editors/Creator/3.8.7/resources/app.asar.unpacked/node_modules/typescript'); const accounts=[...Array(12)].map((_,i)=>({username:'cnrzh'+String(i+1).padStart(3,'0')})); [1,2,4,5,7,8,3,11,6,14,9,17,12,13,15,16,18,19].forEach(i=>accounts.push({username:'wcnr'+String(i).padStart(3,'0')})); const m=new Map();const store={get length(){return m.size},key:i=>[...m.keys()][i],getItem:k=>m.get(k)??null,setItem:(k,v)=>m.set(k,v),removeItem:k=>m.delete(k)}; for(const a of accounts)for(const k of ['prism.auth.save.'+a.username,'prism.profile.'+a.username,'prism.auth.pay.'+a.username+'.2026-10','prism.auth.usage.'+a.username+'.2026-10-23'])m.set(k,'old'); for(const k of ['prism.auth.v1','prism.auth.save.中文账号','unrelated','prism.auth.save.cnrzh001extra'])m.set(k,'keep'); const exportsObj={};vm.runInNewContext(ts.transpileModule(fs.readFileSync('assets/games/auth/scripts/AuthRuntime.ts','utf8'),{compilerOptions:{module:ts.ModuleKind.CommonJS,target:ts.ScriptTarget.ES2015}}).outputText,{exports:exportsObj,require:k=>k==='cc'?{sys:{localStorage:store}}:{TEST_ACCOUNTS:accounts,AuthService:class{}}}); exportsObj.resetFixtureSavesOnce(store); assert.equal(Object.keys(JSON.parse(m.get('prism.fixture.reset.20261023.backup'))).length,120); for(const k of ['prism.auth.v1','prism.auth.save.中文账号','unrelated','prism.auth.save.cnrzh001extra'])assert.equal(m.get(k),'keep'); assert.equal(m.has('prism.auth.save.cnrzh001'),false);m.set('prism.auth.save.cnrzh001','new progress');exportsObj.resetFixtureSavesOnce(store);assert.equal(m.get('prism.auth.save.cnrzh001'),'new progress'); console.log('PASS: all 30 fixture accounts reset, backup retained, custom accounts isolated, repeated startup preserves new progress');