@wfcd/arsenal-parser
Version:
Parser for Digital Extreme's Twitch Arsenal Extension data
392 lines (391 loc) • 7.82 kB
text/typescript
import { Arcane, ColorMap, Item, ModResolveable, ModUnion, RawColors } from "@wfcd/items";
//#region src/supporting/BaseObject.d.ts
interface BaseObject {
uniqueName: string;
xp: number;
polarized: number;
focus?: string;
features?: number;
upgrades: ModResolveable[];
skins?: Array<{
uniqueName: string;
}>;
pricol?: RawColors;
attcol?: RawColors;
sigcol?: RawColors;
eyecol?: RawColors;
hide?: boolean;
}
//#endregion
//#region src/Archwing.d.ts
declare class WarframeArchwing {
uniqueName: string;
archwing?: Item;
xp: number;
polarized: number;
upgrades: {
arcanes: Arcane[];
mods: ModUnion[];
};
colors: {
primary?: ColorMap;
attachments?: ColorMap;
};
constructor(archwing: BaseObject);
}
//#endregion
//#region src/Companion.d.ts
interface RawCompanion extends BaseObject {
type: string;
itemName?: string;
upgrades: ModResolveable[];
}
declare class WarframeCompanion {
uniqueName: string;
name?: string;
companion?: Item;
xp: number;
polarized: number;
cosmetics?: {
uniqueName: string;
}[];
colors: {
primary?: ColorMap;
attachments?: ColorMap;
};
upgrades: {
arcanes: Arcane[];
mods: ModUnion[];
};
type: string;
constructor(companion: RawCompanion);
}
//#endregion
//#region src/Mech.d.ts
declare class WarframeMech {
uniqueName: string;
mech?: Item;
xp: number;
polarized: number;
cosmetics?: Array<Item | {
uniqueName: string;
}>;
colors: {
primary?: ColorMap;
sigil?: ColorMap;
attachments?: ColorMap;
};
upgrades: {
arcanes: Arcane[];
mods: ModUnion[];
};
features?: number;
constructor(mech: BaseObject);
}
//#endregion
//#region src/OperatorAmp.d.ts
interface RawAmp extends BaseObject {
modularParts?: {
LWPT_AMP_OCULUS: string;
LWPT_AMP_BRACE: string;
LWPT_AMP_CORE: string;
};
}
interface AmpParts {
prism: Item | {
uniqueName: string;
};
scaffold: Item | {
uniqueName: string;
};
brace: Item | {
uniqueName: string;
};
}
declare class OperatorAmp {
xp: number;
polarized: number;
amp: Item | object;
parts: AmpParts | undefined;
colors: ColorMap | undefined;
constructor(amp: RawAmp);
}
//#endregion
//#region src/Parazon.d.ts
declare class WarframeParazon {
uniqueName: string;
xp: number;
polarized: number;
upgrades: {
arcanes: Arcane[];
mods: ModUnion[];
};
cosmetics?: {
uniqueName: string;
}[];
colors?: ColorMap;
constructor(parazon: BaseObject);
}
//#endregion
//#region src/Player.d.ts
interface PlayerInformation {
playerName: string;
masteryRank: number;
lastUpdated: number;
glyph: string;
title?: string;
focus?: string;
}
/** Warframe Player information */
declare class WarframePlayer {
/**
* Player name
*/
name: string;
/**
* Player mastery rank
*/
masteryRank: number;
/**
* Last updated date/time
*/
lastUpdated: Date;
/**
* Glyph item
*/
glyph: Item | string;
/**
* Currently selected focus school
*/
focusSchool: string;
constructor(data: PlayerInformation);
}
//#endregion
//#region src/Weapon.d.ts
interface RawWeapon extends BaseObject {
itemName?: string;
modularParts?: Record<string, string>;
}
declare class WarframeWeapon {
xp: number;
polarized: number;
upgrades: {
arcanes: Arcane[];
mods: ModUnion[];
};
name?: string;
cosmetics: {
uniqueName: string;
}[];
parts?: Record<string, Item | {
uniqueName: string;
}>;
weapon?: Item | {
uniqueName: string;
};
colors?: {
primary?: ColorMap;
};
constructor(weapon: RawWeapon);
}
//#endregion
//#region src/Railjack.d.ts
type RawItemObject = {
uniqueName: string;
};
type CrewMemberSlots = {
SLOT_A: RawCrewMember;
SLOT_B: RawCrewMember;
SLOT_C: RawCrewMember;
};
type CrewMemberSkill = {
Assinged: number;
};
interface RawRailjackObject {
railjack: RawRailjack;
armaments: RawArmaments;
crew: {
members: CrewMemberSlots;
};
}
interface RawRailjack extends BaseObject {
itemName: string;
modularParts: {
SHIELD: RawItemObject;
ENGINES: RawItemObject;
REACTOR: RawItemObject;
HULL: RawItemObject;
};
}
interface RailjackLoadout {
shield: Item | RawItemObject;
engines: Item | RawItemObject;
reactor: Item | RawItemObject;
hull: Item | RawItemObject;
}
interface RawArmaments {
modularParts: {
PILOT: RawItemObject;
ORDINANCE: RawItemObject;
PORT_GUNS: RawItemObject;
};
}
interface RawCrewMember extends BaseObject {
role: number;
skills: {
PILOTING: CrewMemberSkill;
GUNNERY: CrewMemberSkill;
ENGINEERING: CrewMemberSkill;
COMBAT: CrewMemberSkill;
SURVIVABILITY: CrewMemberSkill;
};
suit: string;
secondincommand: boolean;
crewweapon: RawWeapon;
faction: string;
}
declare class Armaments {
pilot: Item | RawItemObject;
portGuns: Item | RawItemObject;
ordinance: Item | RawItemObject;
constructor(armaments: RawArmaments);
}
declare class CrewMember {
uniqueName: string;
xp: number;
skills: {
piloting: number;
gunnery: number;
repair: number;
combat: number;
endurance: number;
};
isSecondInCommand: boolean;
weapon: WarframeWeapon;
colors: {
primary?: ColorMap;
attachments?: ColorMap;
syandana?: ColorMap;
sigil?: ColorMap;
};
/**
* 1 - Defender
* 2 - Pilot
* 3 - Gunner
* 4 - Engineer
*/
role: number;
constructor(member: RawCrewMember);
}
declare class Railjack {
uniqueName: string;
name: string;
loadout: RailjackLoadout;
upgrades: {
arcanes: Arcane[];
mods: ModUnion[];
};
armaments: Armaments;
crewMembers: CrewMember[];
color: {
primary?: ColorMap;
};
constructor({
railjack,
armaments,
crew
}: RawRailjackObject);
}
//#endregion
//#region src/Warframe.d.ts
declare class Warframe {
uniqueName: string;
warframe?: Item;
xp: number;
polarized: number;
features?: number;
cosmetics: {
uniqueName: string;
}[];
upgrades: {
arcanes: Arcane[];
mods: ModUnion[];
};
colors: {
primary?: ColorMap;
attachments?: ColorMap;
syandana?: ColorMap;
sigil?: ColorMap;
};
constructor(frame: BaseObject);
}
//#endregion
//#region src/ArsenalParser.d.ts
interface BaseArsenalData {
accountInfo: PlayerInformation;
loadOuts: BaseLoadouts;
}
interface BaseLoadouts {
NORMAL: {
warframe: BaseObject;
primary: RawWeapon;
secondary: RawWeapon;
melee: RawWeapon;
heavy: RawWeapon;
exalted: RawWeapon | RawCompanion;
};
ARCHWING: {
archwing: BaseObject;
primary: RawWeapon;
melee: RawWeapon;
};
DATAKNIFE: {
parazon: BaseObject;
primary: BaseObject;
};
OPERATOR: {
amp: BaseObject;
};
SENTINEL: {
roboticweapon?: RawWeapon;
companion?: RawCompanion;
};
MECH: {
mech: BaseObject;
heavy: RawWeapon;
exalted: RawWeapon;
};
RAILJACK: RawRailjackObject;
}
interface ArsenalLoadout {
warframe: Warframe;
primary?: WarframeWeapon;
secondary?: WarframeWeapon;
melee?: WarframeWeapon;
heavy?: WarframeWeapon;
exalted?: WarframeWeapon;
vechiles?: VechilesLoadout;
parazon?: WarframeParazon;
amp?: OperatorAmp;
companion?: WarframeCompanion;
roboticweapon?: WarframeWeapon;
railjack?: Railjack;
}
interface VechilesLoadout {
archwing?: WarframeArchwing;
primary?: WarframeWeapon;
melee?: WarframeWeapon;
necramech?: {
mech: WarframeMech;
heavy: WarframeWeapon;
exalted: WarframeWeapon;
};
}
declare class ArsenalData {
account: WarframePlayer;
loadout: ArsenalLoadout;
exalted?: WarframeCompanion;
constructor(data: BaseArsenalData);
}
//#endregion
export { ArsenalLoadout, BaseArsenalData, BaseLoadouts, VechilesLoadout, ArsenalData as default };