/* eslint-disable @typescript-eslint/no-var-requires */ const fs = require("fs").promises; const path = require("path"); async function getSave(file) { const data = await fs.readFile(file, "utf8"); const save = JSON.parse(decodeURIComponent(escape(atob(data)))); const saveData = save.data; let gameSave = { PlayerSave: JSON.parse(saveData.PlayerSave), CompaniesSave: JSON.parse(saveData.CompaniesSave), FactionsSave: JSON.parse(saveData.FactionsSave), AliasesSave: JSON.parse(saveData.AliasesSave), GlobalAliasesSave: JSON.parse(saveData.GlobalAliasesSave), MessagesSave: JSON.parse(saveData.MessagesSave), StockMarketSave: JSON.parse(saveData.StockMarketSave), SettingsSave: JSON.parse(saveData.SettingsSave), VersionSave: JSON.parse(saveData.VersionSave), LastExportBonus: JSON.parse(saveData.LastExportBonus), StaneksGiftSave: JSON.parse(saveData.StaneksGiftSave), SaveTimestamp: new Date(parseInt(saveData.SaveTimestamp ?? "0", 10)).toLocaleString(), }; const serverStrings = JSON.parse(saveData.AllServersSave); const servers = {}; for (const [key, value] of Object.entries(serverStrings)) { servers[key] = value.data; } gameSave.AllServersSave = servers; if (saveData.AllGangsSave) { gameSave.AllGangsSave = JSON.parse(saveData.AllGangsSave); } return gameSave; } async function main(input, output) { const result = await getSave(input); await fs.writeFile(output, JSON.stringify(result, null, 2)); return result; } const input = path.resolve(process.argv[2]); const output = path.resolve(process.argv[3]); console.log(`Input: ${input}`); console.log(`Output: ${output}`); main(input, output).then(() => { console.log("Done!"); });