UNPKG

warframe-worldstate-parser

Version:

An Open parser for Warframe's Worldstate in Javascript

101 lines (100 loc) 3.25 kB
import { n as __decorateMetadata, t as __decorate } from "../../decorate-BCC26nnB.mjs"; import { WorldStateObject } from "./WorldStateObject.mjs"; import { VoidTraderItem } from "./VoidTraderItem.mjs"; import { VoidTraderSchedule } from "./VoidTraderSchedule.mjs"; import { Type } from "class-transformer"; import { IsArray, IsBoolean, IsDate, IsString, ValidateNested } from "class-validator"; import { fromNow, insist, node, parseDate, timeDeltaToString } from "warframe-worldstate-data/utilities"; //#region lib/models/VoidTrader.ts /** * Represents a void trader * @augments {WorldStateObject} */ var VoidTrader = class extends WorldStateObject { /** * The void trader's name */ character; /** * The node at which the Void Trader appears */ location; /** * The trader's inventory */ inventory; /** * Pseudo Identifier for identifying changes in inventory */ psId; /** * The initial start date */ initialStart; /** * Whether it's completed or not */ completed; /** * Possible schedule */ schedule; /** * @param data The trader data * @param deps The dependencies object * @param deps.locale Locale to use for translations * @param deps.character The trader name */ constructor(data, { locale = "en", character } = { locale: "en" }) { super(data); insist({ ...data }, "Activation", "Expiry"); this.character = data.Character ? data.Character.replace("Baro'Ki Teel", "Baro Ki'Teer") : character ?? ""; this.location = node(data.Node, locale); this.inventory = data.Manifest ? data.Manifest.map((i) => new VoidTraderItem(i, { locale })) : []; this.psId = `${this.id}${this.inventory.length}`; this.initialStart = parseDate(data.InitialStartDate); this.completed = data.Completed; this.schedule = data.ScheduleInfo ? data.ScheduleInfo.map((i) => new VoidTraderSchedule(i, { locale })) : []; } /** * Whether the trader is active */ get active() { return fromNow(this.activation) < 0 && fromNow(this.expiry) > 0; } /** * Time delta string from now to the start */ get startString() { return timeDeltaToString(fromNow(this.activation)); } /** * Time delta string from now to the end */ get endString() { return timeDeltaToString(fromNow(this.expiry)); } }; __decorate([IsString(), __decorateMetadata("design:type", String)], VoidTrader.prototype, "character", void 0); __decorate([IsString(), __decorateMetadata("design:type", String)], VoidTrader.prototype, "location", void 0); __decorate([ IsArray(), ValidateNested({ each: true }), Type(() => VoidTraderItem), __decorateMetadata("design:type", Array) ], VoidTrader.prototype, "inventory", void 0); __decorate([IsString(), __decorateMetadata("design:type", String)], VoidTrader.prototype, "psId", void 0); __decorate([ IsDate(), Type(() => Date), __decorateMetadata("design:type", typeof Date === "undefined" ? Object : Date) ], VoidTrader.prototype, "initialStart", void 0); __decorate([IsBoolean(), __decorateMetadata("design:type", Boolean)], VoidTrader.prototype, "completed", void 0); __decorate([ IsArray(), ValidateNested({ each: true }), Type(() => VoidTraderSchedule), __decorateMetadata("design:type", Array) ], VoidTrader.prototype, "schedule", void 0); //#endregion export { VoidTrader };