import { RequestHandler } from "express"; import { getEnglishString } from "@/src/services/itemDataService"; import { ExportArcanes, ExportGear, ExportResources, ExportUpgrades, ExportWarframes, ExportWeapons } from "warframe-public-export-plus"; import archonCrystalUpgrades from "@/static/fixed_responses/webuiArchonCrystalUpgrades.json"; interface ListedItem { uniqueName: string; name: string; fusionLimit?: number; } const getItemListsController: RequestHandler = (_req, res) => { const weapons = []; const miscitems = []; for (const [uniqueName, item] of Object.entries(ExportWeapons)) { if (item.productCategory !== "OperatorAmps") { if (item.totalDamage !== 0) { weapons.push({ uniqueName, name: getEnglishString(item.name) }); } else if (!item.excludeFromCodex) { miscitems.push({ uniqueName: "MiscItems:" + uniqueName, name: getEnglishString(item.name) }); } } } for (const [uniqueName, item] of Object.entries(ExportResources)) { miscitems.push({ uniqueName: "MiscItems:" + uniqueName, name: getEnglishString(item.name) }); } for (const [uniqueName, item] of Object.entries(ExportGear)) { miscitems.push({ uniqueName: "Consumables:" + uniqueName, name: getEnglishString(item.name) }); } const mods: ListedItem[] = []; const badItems: Record = {}; for (const [uniqueName, upgrade] of Object.entries(ExportUpgrades)) { mods.push({ uniqueName, name: getEnglishString(upgrade.name), fusionLimit: upgrade.fusionLimit }); if (upgrade.isStarter || upgrade.isFrivolous || upgrade.upgradeEntries) { badItems[uniqueName] = true; } } for (const [uniqueName, arcane] of Object.entries(ExportArcanes)) { mods.push({ uniqueName, name: getEnglishString(arcane.name) }); if (arcane.isFrivolous) { badItems[uniqueName] = true; } } res.json({ warframes: Object.entries(ExportWarframes) .filter(([_uniqueName, warframe]) => warframe.productCategory == "Suits") .map(([uniqueName, warframe]) => { return { uniqueName, name: getEnglishString(warframe.name) }; }), weapons, miscitems, mods, badItems, archonCrystalUpgrades }); }; export { getItemListsController };