warframe-worldstate-parser
Version:
An Open parser for Warframe's Worldstate in Javascript
101 lines (100 loc) • 3.25 kB
JavaScript
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 };