const fs = require('node:fs'); const path = require('node:path'); const vm = require('node:vm'); const assert = require('node:assert/strict'); const source = fs.readFileSync(process.argv[2] || path.join(__dirname, '../huobao-source/desktop/dist/main.js'),'utf8'); function extract(name) { const start = source.indexOf(`function ${name}(`); return source.slice(start,source.indexOf('\n}',start)+2); } let config = null; const context = vm.createContext({ path5:path.win32, process:{resourcesPath:'D:\\web\\dj\\HuobaoDrama\\resources'}, import_electron3:{app:{isPackaged:true,getPath:()=> 'C:\\Users\\pc\\AppData\\Roaming\\HuobaoDrama'}}, fs5:{existsSync:()=>config!==null,readFileSync:()=>config,mkdirSync:()=>{}}, console:{warn:()=>{}} }); vm.runInContext(`const STORAGE_CONFIG_FILE='storage-config.json';${extract('storageConfigPath')}\n${extract('loadStorageConfig')}\nthis.load=loadStorageConfig;`,context); assert.equal(context.load(),'D:\\web\\dj\\huobao-data'); config='{bad json'; assert.equal(context.load(),'D:\\web\\dj\\huobao-data'); config=JSON.stringify({version:1,dataDir:'E:\\MyDramaData'}); assert.equal(context.load(),'E:\\MyDramaData'); console.log('Persistent data: fresh profile, invalid profile config and custom directory passed.');