const fs = require('fs'), ts = require('typescript'), assert = require('node:assert/strict'); const source = fs.readFileSync('assets/Script/module/Pay/Utils.ts', 'utf8').split(' static getGacha')[0] + '\n}'; const code = ts.transpileModule(source, { compilerOptions: { target: ts.ScriptTarget.ES2017, module: ts.ModuleKind.CommonJS } }).outputText; let version, session; const requests = []; const cc = { fx: { GameTool: { getWechatGameVersion: () => version }, GameConfig: { GM_INFO: { token: 'test-token' } } }, loader: { getXMLHttpRequest: () => ({ open(method, url) { this.url = url; }, setRequestHeader() {}, send(body) { requests.push({ url: this.url, body }); } }) } }; const out = {}; new Function('require', 'exports', 'cc', 'wx', code)(() => ({}), out, cc, { openCustomerServiceConversation: options => { session = JSON.parse(options.sessionFrom); } }); cc.fx.GameTool.shushu_Track = () => {}; const Utils = out.default; for (version of ['开发版', '体验版', '正式版']) { requests.length = 0; Utils.POST('login', {}, () => {}); Utils.POSTJSON('goldMiner/index', { action: 'info' }, () => {}); const expected = version === '正式版' ? Utils.httpip : Utils.testHttpip; assert.equal(requests[0].url, expected + 'login'); assert.equal(requests[1].url, expected + 'goldMiner/index'); assert.equal(JSON.parse(requests[1].body).token, 'test-token'); let created; Utils.GoKEFu({ payment_name: 'gold_miner_1', payment_count: 1, price: 600 }, () => {}, order => created = order); assert.equal(session.outTradeNo, created); assert(created.startsWith(version === '正式版' ? 'wcx_' : 'wct_')); } console.log('PASS: login and activity requests share the same server in all three release environments.');