90 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
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<string, boolean> = {};
 | 
						|
    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 };
 |