MissionInventoryUpdate(not completed), Mod upgrade, Booster purchase #49
@ -1,18 +1,24 @@
 | 
				
			|||||||
import { RequestHandler } from "express";
 | 
					import { RequestHandler } from "express";
 | 
				
			||||||
import { missionInventoryUpdate } from "@/src/services/inventoryService";
 | 
					import { missionInventoryUpdate } from "@/src/services/inventoryService";
 | 
				
			||||||
import { MissionInventoryUpdate, MissionInventoryUpdateRewardInfo } from "@/src/types/missionInventoryUpdateType";
 | 
					import {
 | 
				
			||||||
 | 
					    MissionInventoryUpdate,
 | 
				
			||||||
 | 
					    MissionInventoryUpdateRewardInfo,
 | 
				
			||||||
 | 
					    MissionRewardResponse,
 | 
				
			||||||
 | 
					    Reward
 | 
				
			||||||
 | 
					} from "@/src/types/missionInventoryUpdateType";
 | 
				
			||||||
 | 
					import { RawUpgrade } from "@/src/types/inventoryTypes/inventoryTypes";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import missionsDropTable from "@/static/json/missions-drop-table.json";
 | 
					import missionsDropTable from "@/static/json/missions-drop-table.json";
 | 
				
			||||||
import missionNames from "@/static/json/mission-names.json";
 | 
					import {
 | 
				
			||||||
import modNames from "@/static/json/mod-names.json";
 | 
					    modNames,
 | 
				
			||||||
import relicNames from "@/static/json/relic-names.json";
 | 
					    relicNames,
 | 
				
			||||||
import skinNames from "@/static/json/skin-names.json";
 | 
					    skinNames,
 | 
				
			||||||
import miscNames from "@/static/json/misc-names.json";
 | 
					    miscNames,
 | 
				
			||||||
import resourceNames from "@/static/json/resource-names.json";
 | 
					    resourceNames,
 | 
				
			||||||
import gearNames from "@/static/json/gear-names.json";
 | 
					    gearNames,
 | 
				
			||||||
import arcaneNames from "@/static/json/arcane-names.json";
 | 
					    arcaneNames,
 | 
				
			||||||
import craftNames from "@/static/json/craft-names.json";
 | 
					    craftNames
 | 
				
			||||||
import { RawUpgrade } from "@/src/types/inventoryTypes/inventoryTypes";
 | 
					} from "@/static/data/items";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
**** INPUT ****
 | 
					**** INPUT ****
 | 
				
			||||||
@ -118,9 +124,6 @@ const missionInventoryUpdateController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
- [x]  FusionPoints
 | 
					- [x]  FusionPoints
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
interface StringDictionary {
 | 
					 | 
				
			||||||
    [key: string]: string;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
const getRewards = (
 | 
					const getRewards = (
 | 
				
			||||||
    rewardInfo: MissionInventoryUpdateRewardInfo | undefined
 | 
					    rewardInfo: MissionInventoryUpdateRewardInfo | undefined
 | 
				
			||||||
): { InventoryChanges: MissionInventoryUpdate; MissionRewards: MissionRewardResponse[] } => {
 | 
					): { InventoryChanges: MissionInventoryUpdate; MissionRewards: MissionRewardResponse[] } => {
 | 
				
			||||||
@ -144,8 +147,7 @@ const getRewards = (
 | 
				
			|||||||
    //     "rewardSeed": -5604904486637266000
 | 
					    //     "rewardSeed": -5604904486637266000
 | 
				
			||||||
    // },
 | 
					    // },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const missionName = (missionNames as StringDictionary)[rewardInfo.node];
 | 
					    const rewards = (missionsDropTable as { [key: string]: Reward[] })[rewardInfo.node];
 | 
				
			||||||
    const rewards = missionsDropTable.find(i => i.mission === missionName)?.rewards;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!rewards) return { InventoryChanges: {}, MissionRewards: [] };
 | 
					    if (!rewards) return { InventoryChanges: {}, MissionRewards: [] };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -165,11 +167,6 @@ const getRewards = (
 | 
				
			|||||||
    return formatRewardsToInventoryType(guaranteedDrops);
 | 
					    return formatRewardsToInventoryType(guaranteedDrops);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
interface Reward {
 | 
					 | 
				
			||||||
    name: string;
 | 
					 | 
				
			||||||
    chance: number;
 | 
					 | 
				
			||||||
    rotation?: string;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
const getRandomRewardByChance = (data: Reward[] | undefined): Reward | undefined => {
 | 
					const getRandomRewardByChance = (data: Reward[] | undefined): Reward | undefined => {
 | 
				
			||||||
    if (!data || data.length == 0) return;
 | 
					    if (!data || data.length == 0) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -187,33 +184,22 @@ const getRandomRewardByChance = (data: Reward[] | undefined): Reward | undefined
 | 
				
			|||||||
    return;
 | 
					    return;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
interface MissionRewardResponse {
 | 
					 | 
				
			||||||
    StoreItem?: string;
 | 
					 | 
				
			||||||
    TypeName: string;
 | 
					 | 
				
			||||||
    UpgradeLevel: number;
 | 
					 | 
				
			||||||
    ItemCount: number;
 | 
					 | 
				
			||||||
    TweetText: string;
 | 
					 | 
				
			||||||
    ProductCategory: string;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
const formatRewardsToInventoryType = (
 | 
					const formatRewardsToInventoryType = (
 | 
				
			||||||
    rewards: Reward[]
 | 
					    rewards: Reward[]
 | 
				
			||||||
): { InventoryChanges: MissionInventoryUpdate; MissionRewards: MissionRewardResponse[] } => {
 | 
					): { InventoryChanges: MissionInventoryUpdate; MissionRewards: MissionRewardResponse[] } => {
 | 
				
			||||||
    const InventoryChanges: MissionInventoryUpdate = {};
 | 
					    const InventoryChanges: MissionInventoryUpdate = {};
 | 
				
			||||||
    const MissionRewards: MissionRewardResponse[] = [];
 | 
					    const MissionRewards: MissionRewardResponse[] = [];
 | 
				
			||||||
    rewards.forEach(i => {
 | 
					    rewards.forEach(i => {
 | 
				
			||||||
        const mod = (modNames as StringDictionary)[i.name];
 | 
					        const mod = modNames[i.name];
 | 
				
			||||||
        const skin = (skinNames as StringDictionary)[i.name];
 | 
					        const skin = skinNames[i.name];
 | 
				
			||||||
        const gear = (gearNames as StringDictionary)[i.name];
 | 
					        const gear = gearNames[i.name];
 | 
				
			||||||
        const arcane = (arcaneNames as StringDictionary)[i.name];
 | 
					        const arcane = arcaneNames[i.name];
 | 
				
			||||||
        const craft = (craftNames as StringDictionary)[i.name];
 | 
					        const craft = craftNames[i.name];
 | 
				
			||||||
        const misc =
 | 
					        const misc = miscNames[i.name] || miscNames[i.name.replace(/\d+X\s*/, "")];
 | 
				
			||||||
            (miscNames as StringDictionary)[i.name] || (miscNames as StringDictionary)[i.name.replace(/\d+X\s*/, "")];
 | 
					        const resource = resourceNames[i.name] || resourceNames[i.name.replace(/\d+X\s*/, "")];
 | 
				
			||||||
        const resource =
 | 
					 | 
				
			||||||
            (resourceNames as StringDictionary)[i.name] ||
 | 
					 | 
				
			||||||
            (resourceNames as StringDictionary)[i.name.replace(/\d+X\s*/, "")];
 | 
					 | 
				
			||||||
        const relic =
 | 
					        const relic =
 | 
				
			||||||
            (relicNames as StringDictionary)[i.name.replace("Relic", "Exceptional")] ||
 | 
					            relicNames[i.name.replace("Relic", "Exceptional")] ||
 | 
				
			||||||
            (relicNames as StringDictionary)[i.name.replace("Relic (Radiant)", "Radiant")];
 | 
					            relicNames[i.name.replace("Relic (Radiant)", "Radiant")];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (mod) {
 | 
					        if (mod) {
 | 
				
			||||||
            if (!InventoryChanges.RawUpgrades) InventoryChanges.RawUpgrades = [];
 | 
					            if (!InventoryChanges.RawUpgrades) InventoryChanges.RawUpgrades = [];
 | 
				
			||||||
@ -250,4 +236,38 @@ const formatRewardsToInventoryType = (
 | 
				
			|||||||
    return { InventoryChanges, MissionRewards };
 | 
					    return { InventoryChanges, MissionRewards };
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// eslint-disable-next-line @typescript-eslint/no-unused-vars
 | 
				
			||||||
 | 
					const _missionRewardsCheckAllNamings = () => {
 | 
				
			||||||
 | 
					    let tempRewards: Reward[] = [];
 | 
				
			||||||
 | 
					    Object.values(missionsDropTable as { [key: string]: Reward[] }).forEach(i => {
 | 
				
			||||||
 | 
					        i.forEach(j => {
 | 
				
			||||||
 | 
					            tempRewards.push(j);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    tempRewards = tempRewards
 | 
				
			||||||
 | 
					        .filter(i => !modNames[i.name])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .filter(i => !skinNames[i.name])
 | 
				
			||||||
 | 
					        .filter(i => !miscNames[i.name])
 | 
				
			||||||
 | 
					        .filter(i => !miscNames[i.name.replace(/\d+X\s*/, "")])
 | 
				
			||||||
 | 
					        .filter(i => !resourceNames[i.name])
 | 
				
			||||||
 | 
					        .filter(i => !resourceNames[i.name.replace(/\d+X\s*/, "")])
 | 
				
			||||||
 | 
					        .filter(i => !gearNames[i.name])
 | 
				
			||||||
 | 
					        .filter(i => !arcaneNames[i.name])
 | 
				
			||||||
 | 
					        .filter(i => !craftNames[i.name])
 | 
				
			||||||
 | 
					        .filter(i => {
 | 
				
			||||||
 | 
					            // return true;
 | 
				
			||||||
 | 
					            // return !relicNames[i.name.replace("Relic", "Exceptional")];
 | 
				
			||||||
 | 
					            // console.log(i.name.replace("Relic", "Exceptional"));
 | 
				
			||||||
 | 
					            return (
 | 
				
			||||||
 | 
					                !relicNames[i.name.replace("Relic", "Exceptional")] &&
 | 
				
			||||||
 | 
					                !relicNames[i.name.replace("Relic (Radiant)", "Radiant")]
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					        .filter(i => !i.name.includes(" Endo"))
 | 
				
			||||||
 | 
					        .filter(i => !i.name.includes(" Credits Cache") && !i.name.includes("Return: "));
 | 
				
			||||||
 | 
					    console.log(tempRewards);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					// _missionRewardsCheckAllNamings();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export { missionInventoryUpdateController };
 | 
					export { missionInventoryUpdateController };
 | 
				
			||||||
 | 
				
			|||||||
@ -73,3 +73,18 @@ export interface MissionInventoryUpdate {
 | 
				
			|||||||
| 
						
							
	
	
	
	
	
	
	
	 | 
				|||||||
    RewardInfo?: MissionInventoryUpdateRewardInfo;
 | 
					    RewardInfo?: MissionInventoryUpdateRewardInfo;
 | 
				
			||||||
    FusionPoints?: number;
 | 
					    FusionPoints?: number;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						
							
	
	
	
	
	
	
	
	 instead of this use /types/commonTypes Oid type instead of this use /types/commonTypes Oid type 
			
			
		 | 
				|||||||
 | 
					export interface MissionRewardResponse {
 | 
				
			||||||
| 
						
							
	
	
	
	
	
	
	
	 instead of this use /types/commonTypes Oid type instead of this use /types/commonTypes Oid type 
			
			
		 | 
				|||||||
 | 
					    StoreItem?: string;
 | 
				
			||||||
| 
						
							
	
	
	
	
	
	
	
	 instead of this use /types/commonTypes Oid type instead of this use /types/commonTypes Oid type 
			
			
		 | 
				|||||||
 | 
					    TypeName: string;
 | 
				
			||||||
| 
						
							
	
	
	
	
	
	
	
	 instead of this use /types/commonTypes Oid type instead of this use /types/commonTypes Oid type 
			
			
		 | 
				|||||||
 | 
					    UpgradeLevel: number;
 | 
				
			||||||
| 
						
							
	
	
	
	
	
	
	
	 instead of this use /types/commonTypes Oid type instead of this use /types/commonTypes Oid type 
			
			
		 | 
				|||||||
 | 
					    ItemCount: number;
 | 
				
			||||||
| 
						
							
	
	
	
	
	
	
	
	 instead of this use /types/commonTypes Oid type instead of this use /types/commonTypes Oid type 
			
			
		 | 
				|||||||
 | 
					    TweetText: string;
 | 
				
			||||||
| 
						
							
	
	
	
	
	
	
	
	 instead of this use /types/commonTypes Oid type instead of this use /types/commonTypes Oid type 
			
			
		 | 
				|||||||
 | 
					    ProductCategory: string;
 | 
				
			||||||
| 
						
							
	
	
	
	
	
	
	
	 instead of this use /types/commonTypes Oid type instead of this use /types/commonTypes Oid type 
			
			
		 | 
				|||||||
 | 
					}
 | 
				
			||||||
| 
						
							
	
	
	
	
	
	
	
	 instead of this use /types/commonTypes Oid type instead of this use /types/commonTypes Oid type 
			
			
		 | 
				|||||||
 | 
					
 | 
				
			||||||
| 
						
							
	
	
	
	
	
	
	
	 instead of this use /types/commonTypes Oid type instead of this use /types/commonTypes Oid type 
			
			
		 | 
				|||||||
 | 
					export interface Reward {
 | 
				
			||||||
| 
						
							
	
	
	
	
	
	
	
	 instead of this use /types/commonTypes Oid type instead of this use /types/commonTypes Oid type 
			
			
		 | 
				|||||||
 | 
					    name: string;
 | 
				
			||||||
| 
						
							
	
	
	
	
	
	
	
	 instead of this use /types/commonTypes Oid type instead of this use /types/commonTypes Oid type 
			
			
		 | 
				|||||||
 | 
					    chance: number;
 | 
				
			||||||
| 
						
							
	
	
	
	
	
	
	
	 instead of this use /types/commonTypes Oid type instead of this use /types/commonTypes Oid type 
			
			
		 | 
				|||||||
 | 
					    rotation?: string;
 | 
				
			||||||
| 
						
							
	
	
	
	
	
	
	
	 instead of this use /types/commonTypes Oid type instead of this use /types/commonTypes Oid type 
			
			
		 | 
				|||||||
 | 
					}
 | 
				
			||||||
| 
						
							
	
	
	
	
	
	
	
	 instead of this use /types/commonTypes Oid type instead of this use /types/commonTypes Oid type 
			
			
		 | 
				|||||||
 | 
				
			|||||||
| 
						
							
	
	
	
	
	
	
	
	 instead of this use /types/commonTypes Oid type instead of this use /types/commonTypes Oid type 
			
			
		instead of this use /types/commonTypes Oid type instead of this use /types/commonTypes Oid type 
			
			
		 | 
				|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
import Items, { Item, Weapon } from "warframe-items";
 | 
					import Items, { Category, Item, Warframe, Weapon } from "warframe-items";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type MinWeapon = Omit<Weapon, "patchlogs">;
 | 
					type MinWeapon = Omit<Weapon, "patchlogs">;
 | 
				
			||||||
type MinItem = Omit<Item, "patchlogs">;
 | 
					type MinItem = Omit<Item, "patchlogs">;
 | 
				
			||||||
@ -16,3 +16,39 @@ export const items: MinItem[] = new Items({ category: ["All"] }).map(item => {
 | 
				
			|||||||
    delete next.patchlogs;
 | 
					    delete next.patchlogs;
 | 
				
			||||||
    return next;
 | 
					    return next;
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const getNamesObj = (category: Category) =>
 | 
				
			||||||
 | 
					    new Items({ category: [category] }).reduce((acc, i) => {
 | 
				
			||||||
 | 
					        acc[i.name!] = category !== "Mods" ? i.uniqueName! : i.uniqueName!.replace("'S", "'s");
 | 
				
			||||||
 | 
					        return acc;
 | 
				
			||||||
 | 
					    }, {} as ImportAssertions);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const modNames = getNamesObj("Mods");
 | 
				
			||||||
 | 
					export const resourceNames = getNamesObj("Resources");
 | 
				
			||||||
 | 
					export const miscNames = getNamesObj("Misc");
 | 
				
			||||||
 | 
					export const relicNames = getNamesObj("Relics");
 | 
				
			||||||
 | 
					export const skinNames = getNamesObj("Skins");
 | 
				
			||||||
 | 
					export const arcaneNames = getNamesObj("Arcanes");
 | 
				
			||||||
 | 
					export const gearNames = getNamesObj("Gear");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const craftNames: ImportAssertions = Object.fromEntries(
 | 
				
			||||||
 | 
					    (
 | 
				
			||||||
 | 
					        new Items({
 | 
				
			||||||
 | 
					            category: [
 | 
				
			||||||
 | 
					                "Warframes",
 | 
				
			||||||
 | 
					                "Gear",
 | 
				
			||||||
 | 
					                "Melee",
 | 
				
			||||||
 | 
					                "Primary",
 | 
				
			||||||
 | 
					                "Secondary",
 | 
				
			||||||
 | 
					                "Sentinels",
 | 
				
			||||||
 | 
					                "Misc",
 | 
				
			||||||
 | 
					                "Arch-Gun",
 | 
				
			||||||
 | 
					                "Arch-Melee"
 | 
				
			||||||
 | 
					            ]
 | 
				
			||||||
 | 
					        }) as Warframe[]
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					        .flatMap(j => j.components || [])
 | 
				
			||||||
 | 
					        .filter(i => i.drops && i.drops[0])
 | 
				
			||||||
 | 
					        .map(i => [i.drops![0].type, i.uniqueName])
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					craftNames["Forma Blueprint"] = "/Lotus/StoreItems/Types/Items/MiscItems/Forma";
 | 
				
			||||||
 | 
				
			|||||||
@ -1,31 +0,0 @@
 | 
				
			|||||||
/* eslint-disable */
 | 
					 | 
				
			||||||
import missionsDropTable from '../missions-drop-table.json' assert { type: "json" };
 | 
					 | 
				
			||||||
import modNames from '../mod-names.json' assert { type: "json" };
 | 
					 | 
				
			||||||
import relicNames from '../relic-names.json' assert { type: "json" };
 | 
					 | 
				
			||||||
import skinNames from '../skin-names.json' assert { type: "json" };
 | 
					 | 
				
			||||||
import miscNames from '../misc-names.json' assert { type: "json" };
 | 
					 | 
				
			||||||
import resourceNames from '../resource-names.json' assert { type: "json" };
 | 
					 | 
				
			||||||
import gearNames from '../gear-names.json' assert { type: "json" };
 | 
					 | 
				
			||||||
import arcaneNames from '../arcane-names.json' assert { type: "json" };
 | 
					 | 
				
			||||||
import craftNames from '../craft-names.json' assert { type: "json" };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
let tempRewards = [];
 | 
					 | 
				
			||||||
missionsDropTable.forEach(i=>{
 | 
					 | 
				
			||||||
    i.rewards.forEach(j=>{
 | 
					 | 
				
			||||||
        tempRewards.push(j);
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
tempRewards = tempRewards
 | 
					 | 
				
			||||||
    .filter(i=>!modNames[i.name])
 | 
					 | 
				
			||||||
    .filter(i=>!relicNames[i.name.replace('Relic','Exceptional')] && !relicNames[i.name.replace('Relic (Radiant)','Radiant')])
 | 
					 | 
				
			||||||
    .filter(i=>!skinNames[i.name])
 | 
					 | 
				
			||||||
    .filter(i=>!miscNames[i.name])
 | 
					 | 
				
			||||||
    .filter(i=>!miscNames[i.name.replace(/\d+X\s*/, '')])
 | 
					 | 
				
			||||||
    .filter(i=>!resourceNames[i.name])
 | 
					 | 
				
			||||||
    .filter(i=>!resourceNames[i.name.replace(/\d+X\s*/, '')])
 | 
					 | 
				
			||||||
    .filter(i=>!gearNames[i.name])
 | 
					 | 
				
			||||||
    .filter(i=>!arcaneNames[i.name])
 | 
					 | 
				
			||||||
    .filter(i=>!craftNames[i.name])
 | 
					 | 
				
			||||||
    .filter(i=>!i.name.includes(' Endo'))
 | 
					 | 
				
			||||||
    .filter(i=>!i.name.includes(' Credits Cache') && !i.name.includes('Return: '));
 | 
					 | 
				
			||||||
console.log(tempRewards);
 | 
					 | 
				
			||||||
@ -1,89 +0,0 @@
 | 
				
			|||||||
/* eslint-disable */
 | 
					 | 
				
			||||||
import Warframes from './Warframes.json' assert { type: "json" };
 | 
					 | 
				
			||||||
import Gear from './Gear.json' assert { type: "json" };
 | 
					 | 
				
			||||||
import Melee from './Melee.json' assert { type: "json" };
 | 
					 | 
				
			||||||
import Primary from './Primary.json' assert { type: "json" };
 | 
					 | 
				
			||||||
import Secondary from './Secondary.json' assert { type: "json" };
 | 
					 | 
				
			||||||
import Sentinels from './Sentinels.json' assert { type: "json" };
 | 
					 | 
				
			||||||
import Misc from './Misc.json' assert { type: "json" };
 | 
					 | 
				
			||||||
import ArchGun from './Arch-Gun.json' assert { type: "json" };
 | 
					 | 
				
			||||||
import ArchMelee from './Arch-Melee.json' assert { type: "json" };
 | 
					 | 
				
			||||||
import fs from 'fs';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const formated = {};
 | 
					 | 
				
			||||||
Warframes.forEach(j=>{
 | 
					 | 
				
			||||||
    j.components?.forEach(i=>{
 | 
					 | 
				
			||||||
        if(i.drops && i.drops[0]){
 | 
					 | 
				
			||||||
            formated[i.drops[0].type] = i.uniqueName;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
Gear.forEach(j=>{
 | 
					 | 
				
			||||||
    j.components?.forEach(i=>{
 | 
					 | 
				
			||||||
        if(i.drops && i.drops[0]){
 | 
					 | 
				
			||||||
            formated[i.drops[0].type] = i.uniqueName;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
Melee.forEach(j=>{
 | 
					 | 
				
			||||||
    j.components?.forEach(i=>{
 | 
					 | 
				
			||||||
        if(i.drops && i.drops[0]){
 | 
					 | 
				
			||||||
            formated[i.drops[0].type] = i.uniqueName;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
Primary.forEach(j=>{
 | 
					 | 
				
			||||||
    j.components?.forEach(i=>{
 | 
					 | 
				
			||||||
        if(i.drops && i.drops[0]){
 | 
					 | 
				
			||||||
            formated[i.drops[0].type] = i.uniqueName;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
Secondary.forEach(j=>{
 | 
					 | 
				
			||||||
    j.components?.forEach(i=>{
 | 
					 | 
				
			||||||
        if(i.drops && i.drops[0]){
 | 
					 | 
				
			||||||
            formated[i.drops[0].type] = i.uniqueName;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
Sentinels.forEach(j=>{
 | 
					 | 
				
			||||||
    j.components?.forEach(i=>{
 | 
					 | 
				
			||||||
        if(i.drops && i.drops[0]){
 | 
					 | 
				
			||||||
            formated[i.drops[0].type] = i.uniqueName;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
Misc.forEach(j=>{
 | 
					 | 
				
			||||||
    j.components?.forEach(i=>{
 | 
					 | 
				
			||||||
        if(i.drops && i.drops[0]){
 | 
					 | 
				
			||||||
            formated[i.drops[0].type] = i.uniqueName;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
ArchGun.forEach(j=>{
 | 
					 | 
				
			||||||
    j.components?.forEach(i=>{
 | 
					 | 
				
			||||||
        if(i.drops && i.drops[0]){
 | 
					 | 
				
			||||||
            formated[i.drops[0].type] = i.uniqueName;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
ArchMelee.forEach(j=>{
 | 
					 | 
				
			||||||
    j.components?.forEach(i=>{
 | 
					 | 
				
			||||||
        if(i.drops && i.drops[0]){
 | 
					 | 
				
			||||||
            formated[i.drops[0].type] = i.uniqueName;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
formated['Forma Blueprint'] = "/Lotus/StoreItems/Types/Items/MiscItems/Forma";
 | 
					 | 
				
			||||||
console.log(formated);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const fileBody =  JSON.stringify(formated);
 | 
					 | 
				
			||||||
fs.writeFile("./craft-names.json", fileBody, err => {
 | 
					 | 
				
			||||||
    if (err) {
 | 
					 | 
				
			||||||
        console.log(err.message);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        throw err;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    console.log('data written to file');
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
@ -1,20 +0,0 @@
 | 
				
			|||||||
/* eslint-disable */
 | 
					 | 
				
			||||||
import mods from './Arch-Melee.json' assert { type: "json" };
 | 
					 | 
				
			||||||
import fs from 'fs';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const formatedMods = {};
 | 
					 | 
				
			||||||
for (let index = 0; index < mods.length; index++) {
 | 
					 | 
				
			||||||
    const {name, uniqueName} = mods[index];
 | 
					 | 
				
			||||||
    formatedMods[name] = uniqueName;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const fileBody =  JSON.stringify(formatedMods);
 | 
					 | 
				
			||||||
fs.writeFile("./arch-melee-names.json", fileBody, err => {
 | 
					 | 
				
			||||||
    if (err) {
 | 
					 | 
				
			||||||
        console.log(err.message);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        throw err;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    console.log('data written to file');
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
instead of this use /types/commonTypes Oid type
instead of this use /types/commonTypes Oid type