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