UNPKG

warframe-worldstate-parser

Version:

An Open parser for Warframe's Worldstate in Javascript

148 lines (147 loc) 5.73 kB
import { n as __decorateMetadata, t as __decorate } from "../../decorate-BCC26nnB.mjs"; import { WorldStateObject } from "./WorldStateObject.mjs"; import { createHash } from "node:crypto"; import { Type } from "class-transformer"; import { IsArray, IsBoolean, IsString, ValidateNested } from "class-validator"; import { faction, languageDesc, languageString, missionType } from "warframe-worldstate-data/utilities"; //#region lib/models/Archimedea.ts var ArchimedeaMissionDifficultyRisk = class { key; name; description; isHard; }; __decorate([IsString(), __decorateMetadata("design:type", String)], ArchimedeaMissionDifficultyRisk.prototype, "key", void 0); __decorate([IsString(), __decorateMetadata("design:type", String)], ArchimedeaMissionDifficultyRisk.prototype, "name", void 0); __decorate([IsString(), __decorateMetadata("design:type", String)], ArchimedeaMissionDifficultyRisk.prototype, "description", void 0); __decorate([IsBoolean(), __decorateMetadata("design:type", Boolean)], ArchimedeaMissionDifficultyRisk.prototype, "isHard", void 0); var ArchimedeaMissionDifficulty = class { key; name; description; }; __decorate([IsString(), __decorateMetadata("design:type", String)], ArchimedeaMissionDifficulty.prototype, "key", void 0); __decorate([IsString(), __decorateMetadata("design:type", String)], ArchimedeaMissionDifficulty.prototype, "name", void 0); __decorate([IsString(), __decorateMetadata("design:type", String)], ArchimedeaMissionDifficulty.prototype, "description", void 0); var PersonalModifier = class { key; name; description; }; __decorate([IsString(), __decorateMetadata("design:type", String)], PersonalModifier.prototype, "key", void 0); __decorate([IsString(), __decorateMetadata("design:type", String)], PersonalModifier.prototype, "name", void 0); __decorate([IsString(), __decorateMetadata("design:type", String)], PersonalModifier.prototype, "description", void 0); /** * An Archimedea mission with risk and deviations */ var ArchimedeaMission = class { faction; factionKey; missionType; missionTypeKey; deviation; risks; /** * @param mission Challenge mission type * @param locale Locale for translation */ constructor(mission, locale) { this.faction = faction(mission.faction, locale); this.factionKey = faction(mission.faction, "en"); this.missionType = missionType(mission.missionType, locale); this.missionTypeKey = missionType(mission.missionType, "en"); const normal = mission.difficulties[0]; this.deviation = { key: normal.deviation, name: languageString(normal.deviation, locale), description: languageDesc(normal.deviation, locale) }; this.risks = normal.risks.map((risk) => ({ key: risk, name: languageString(risk, locale), description: languageDesc(risk, locale), isHard: false })); for (const diff of mission.difficulties.slice(1)) { const risks = diff.risks.slice(1).map((risk) => ({ key: risk, name: languageString(risk, locale), description: languageDesc(risk, locale), isHard: diff.type === "CD_HARD" })); this.risks.push(...risks); } } }; __decorate([IsString(), __decorateMetadata("design:type", String)], ArchimedeaMission.prototype, "faction", void 0); __decorate([IsString(), __decorateMetadata("design:type", String)], ArchimedeaMission.prototype, "factionKey", void 0); __decorate([IsString(), __decorateMetadata("design:type", String)], ArchimedeaMission.prototype, "missionType", void 0); __decorate([IsString(), __decorateMetadata("design:type", String)], ArchimedeaMission.prototype, "missionTypeKey", void 0); __decorate([ ValidateNested(), Type(() => ArchimedeaMissionDifficulty), __decorateMetadata("design:type", typeof ArchimedeaMissionDifficulty === "undefined" ? Object : ArchimedeaMissionDifficulty) ], ArchimedeaMission.prototype, "deviation", void 0); __decorate([ IsArray(), ValidateNested({ each: true }), Type(() => ArchimedeaMissionDifficultyRisk), __decorateMetadata("design:type", Array) ], ArchimedeaMission.prototype, "risks", void 0); var Archimedea = class extends WorldStateObject { /** * MD5 generated ID */ id; /** * Archimedea type */ type; /** * Archimedea type untranslated */ typeKey; /** * Missions along with deviations and risks */ missions; /** * Modifiers applied to the player */ personalModifiers; /** * @param data Data to parse * @param locale Locale to translate to */ constructor(data, { locale } = { locale: "en" }) { super(data); this.id = createHash("md5").update(JSON.stringify(data), "utf8").digest("hex"); this.type = languageString(data.Type, locale); this.typeKey = languageString(data.Type, "en"); this.missions = data.Missions.map((m) => new ArchimedeaMission(m, locale)); this.personalModifiers = data.Variables.map((i) => { return { key: i, name: languageString(i, locale), description: languageDesc(i, locale) }; }); } }; __decorate([IsString(), __decorateMetadata("design:type", String)], Archimedea.prototype, "id", void 0); __decorate([IsString(), __decorateMetadata("design:type", String)], Archimedea.prototype, "type", void 0); __decorate([IsString(), __decorateMetadata("design:type", String)], Archimedea.prototype, "typeKey", void 0); __decorate([ IsArray(), ValidateNested({ each: true }), Type(() => ArchimedeaMission), __decorateMetadata("design:type", Array) ], Archimedea.prototype, "missions", void 0); __decorate([ IsArray(), ValidateNested({ each: true }), Type(() => PersonalModifier), __decorateMetadata("design:type", Array) ], Archimedea.prototype, "personalModifiers", void 0); //#endregion export { Archimedea, ArchimedeaMission, ArchimedeaMissionDifficulty, ArchimedeaMissionDifficultyRisk, PersonalModifier };