UNPKG

@wfcd/arsenal-parser

Version:

Parser for Digital Extreme's Twitch Arsenal Extension data

392 lines (391 loc) 7.82 kB
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 };