warframe-worldstate-parser 4.6.1 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Alert-BS8PWPP3.d.ts +45 -0
- package/dist/Alert-DH1kglDU.js +52 -0
- package/dist/Archidemea-C0EMRUKc.js +59 -0
- package/dist/Archidemea-DOh4trTM.d.ts +55 -0
- package/dist/Calendar-CgEkm6e6.d.ts +78 -0
- package/dist/Calendar-CtzZQXj7.js +81 -0
- package/dist/CambionCycle-C6NHUjOU.js +30 -0
- package/dist/CambionCycle-uEBpbMim.d.ts +23 -0
- package/dist/CetusCycle-DIZdevob.js +90 -0
- package/dist/CetusCycle-ooMM7hkg.d.ts +49 -0
- package/dist/ChallengeInstance-Bi2zg4q-.d.ts +53 -0
- package/dist/ChallengeInstance-DHwTTwMH.js +48 -0
- package/dist/ConclaveChallenge-Dp5yOxVu.js +80 -0
- package/dist/ConclaveChallenge-JbcEcL4s.d.ts +76 -0
- package/dist/ConstructionProgress-DfcpaGL5.js +25 -0
- package/dist/ConstructionProgress-FAySTEod.d.ts +19 -0
- package/dist/DailyDeal-BGqZAp-j.js +66 -0
- package/dist/DailyDeal-Na-EaiFS.d.ts +66 -0
- package/dist/DarkSector-BQ97_8h6.js +138 -0
- package/dist/DarkSector-zkCUywz1.d.ts +142 -0
- package/dist/DarkSectorBattle-5PyUPhxY.js +53 -0
- package/dist/DarkSectorBattle-DY33Bfuq.d.ts +53 -0
- package/dist/Dependency-DkOHLql6.d.ts +38 -0
- package/dist/DuviriChoice-DRNDUbyc.js +22 -0
- package/dist/DuviriChoice-MIHsOBS7.d.ts +18 -0
- package/dist/DuviriCycle-B0zp0KxS.d.ts +25 -0
- package/dist/DuviriCycle-CmHJStJo.js +58 -0
- package/dist/EarthCycle-B9aIOAEY.js +75 -0
- package/dist/EarthCycle-RELuZL01.d.ts +60 -0
- package/dist/ExternalMission-DCzJkPC8.d.ts +49 -0
- package/dist/Fissure-7yFmOet3.js +85 -0
- package/dist/Fissure-Bj61i8dc.d.ts +78 -0
- package/dist/FlashSale-BxVI0J6A.js +75 -0
- package/dist/FlashSale-PDG4uQq4.d.ts +71 -0
- package/dist/GlobalUpgrade-BRQXf3JM.d.ts +55 -0
- package/dist/GlobalUpgrade-B_TKK1m_.js +58 -0
- package/dist/ImgCdn-BnbJ9K-0.js +7 -0
- package/dist/Invasion-BMic1K12.js +110 -0
- package/dist/Invasion-BskF60zh.d.ts +113 -0
- package/dist/Kinepage-CRRKVulq.d.ts +22 -0
- package/dist/Kinepage-iWFwTZtr.js +24 -0
- package/dist/Kuva-DqkxvPUg.js +85 -0
- package/dist/KuvaLogEntry-d5fskHaK.d.ts +21 -0
- package/dist/MidrathCycle-BfQtfG4p.d.ts +25 -0
- package/dist/MidrathCycle-DDfT7zVx.js +69 -0
- package/dist/Mission-CWE16ouO.d.ts +138 -0
- package/dist/Mission-ZuSsAYNm.js +140 -0
- package/dist/News-7F8Nbp4A.js +122 -0
- package/dist/News-BfAgbYSY.d.ts +101 -0
- package/dist/Nightwave-DDX0_zJU.js +60 -0
- package/dist/Nightwave-_0RzWikV.d.ts +59 -0
- package/dist/NightwaveChallenge-DDdrqvge.d.ts +51 -0
- package/dist/NightwaveChallenge-DwilvXfi.js +53 -0
- package/dist/PersistentEnemy-DRcO4V2r.d.ts +79 -0
- package/dist/PersistentEnemy-axYxYzv_.js +76 -0
- package/dist/Reward-5VIpHu9A.d.ts +68 -0
- package/dist/Reward-OauJ45jJ.js +73 -0
- package/dist/RewardData-qEvfHYxA.js +76 -0
- package/dist/RewardTypes-Cfq9FeIl.js +328 -0
- package/dist/RewardTypes-DYaUn77A.d.ts +34 -0
- package/dist/SentientOutpost-B2KZUJ7H.js +65 -0
- package/dist/SentientOutpost-DmlClvel.d.ts +47 -0
- package/dist/Simaris-B9Mvso2q.js +35 -0
- package/dist/Simaris-Bc-jNhED.d.ts +37 -0
- package/dist/Sortie-DPv-7SQ-.d.ts +60 -0
- package/dist/Sortie-DcoAnEaJ.js +73 -0
- package/dist/SortieVariant-BFkYiBho.d.ts +49 -0
- package/dist/SortieVariant-eWuI1uh9.js +51 -0
- package/dist/SteelPathOffering-DyAzr3P9.js +85 -0
- package/dist/SteelPathOffering-OHNTCFo5.d.ts +38 -0
- package/dist/SyndicateJob-BK7OMLmv.js +141 -0
- package/dist/SyndicateJob-DOtXWjRF.d.ts +76 -0
- package/dist/SyndicateMission-5PZIEM8P.js +66 -0
- package/dist/SyndicateMission-DmGG5lGy.d.ts +58 -0
- package/dist/Tmp-DkQq1arD.js +21 -0
- package/dist/VallisCycle-BX8yyKx3.js +76 -0
- package/dist/VallisCycle-BXcmzqqG.d.ts +31 -0
- package/dist/VoidTrader-CbLMfEVj.js +77 -0
- package/dist/VoidTrader-CihLWgSV.d.ts +74 -0
- package/dist/VoidTraderItem-BzeD-S6-.js +38 -0
- package/dist/VoidTraderItem-CkYAKAEn.d.ts +43 -0
- package/dist/VoidTraderSchedule-C-K8Zdfk.js +14 -0
- package/dist/VoidTraderSchedule-DKDtu-9d.d.ts +16 -0
- package/dist/WeeklyChallenge-C6sc4j7i.d.ts +20 -0
- package/dist/WeeklyChallenge-MzUEZAjv.js +21 -0
- package/dist/WorldEvent-BS9QHG_f.d.ts +205 -0
- package/dist/WorldEvent-nis9w9cn.js +213 -0
- package/dist/WorldState-DNSPrZR_.d.ts +257 -0
- package/dist/WorldState-uppX0Xt1.js +330 -0
- package/dist/WorldstateObject-BSTYuZwm.js +54 -0
- package/dist/WorldstateObject-wfRTeGpm.d.ts +48 -0
- package/dist/ZarimanCycle-BJ84QUFg.js +81 -0
- package/dist/ZarimanCycle-CjNQXhVO.d.ts +45 -0
- package/dist/lib/Tmp.d.ts +24 -0
- package/dist/lib/Tmp.js +6 -0
- package/dist/lib/WorldState.d.ts +47 -0
- package/dist/lib/WorldState.js +49 -0
- package/dist/lib/models/Alert.d.ts +8 -0
- package/dist/lib/models/Alert.js +9 -0
- package/dist/lib/models/Archidemea.d.ts +2 -0
- package/dist/lib/models/Archidemea.js +3 -0
- package/dist/lib/models/Calendar.d.ts +3 -0
- package/dist/lib/models/Calendar.js +4 -0
- package/dist/lib/models/CambionCycle.d.ts +4 -0
- package/dist/lib/models/CambionCycle.js +4 -0
- package/dist/lib/models/CetusCycle.d.ts +3 -0
- package/dist/lib/models/CetusCycle.js +4 -0
- package/dist/lib/models/ChallengeInstance.d.ts +4 -0
- package/dist/lib/models/ChallengeInstance.js +3 -0
- package/dist/lib/models/ConclaveChallenge.d.ts +5 -0
- package/dist/lib/models/ConclaveChallenge.js +4 -0
- package/dist/lib/models/ConstructionProgress.d.ts +3 -0
- package/dist/lib/models/ConstructionProgress.js +4 -0
- package/dist/lib/models/DailyDeal.d.ts +5 -0
- package/dist/lib/models/DailyDeal.js +4 -0
- package/dist/lib/models/DarkSector.d.ts +9 -0
- package/dist/lib/models/DarkSector.js +10 -0
- package/dist/lib/models/DarkSectorBattle.d.ts +3 -0
- package/dist/lib/models/DarkSectorBattle.js +3 -0
- package/dist/lib/models/DuviriCycle.d.ts +4 -0
- package/dist/lib/models/DuviriCycle.js +4 -0
- package/dist/lib/models/EarthCycle.d.ts +3 -0
- package/dist/lib/models/EarthCycle.js +4 -0
- package/dist/lib/models/Fissure.d.ts +5 -0
- package/dist/lib/models/Fissure.js +4 -0
- package/dist/lib/models/FlashSale.d.ts +5 -0
- package/dist/lib/models/FlashSale.js +4 -0
- package/dist/lib/models/GlobalUpgrade.d.ts +5 -0
- package/dist/lib/models/GlobalUpgrade.js +4 -0
- package/dist/lib/models/Invasion.d.ts +7 -0
- package/dist/lib/models/Invasion.js +8 -0
- package/dist/lib/models/Kinepage.d.ts +2 -0
- package/dist/lib/models/Kinepage.js +3 -0
- package/dist/lib/models/Kuva.d.ts +22 -0
- package/dist/lib/models/Kuva.js +3 -0
- package/dist/lib/models/MidrathCycle.d.ts +3 -0
- package/dist/lib/models/MidrathCycle.js +4 -0
- package/dist/lib/models/Mission.d.ts +6 -0
- package/dist/lib/models/Mission.js +7 -0
- package/dist/lib/models/News.d.ts +3 -0
- package/dist/lib/models/News.js +5 -0
- package/dist/lib/models/Nightwave.d.ts +4 -0
- package/dist/lib/models/Nightwave.js +5 -0
- package/dist/lib/models/NightwaveChallenge.d.ts +3 -0
- package/dist/lib/models/NightwaveChallenge.js +4 -0
- package/dist/lib/models/PersistentEnemy.d.ts +3 -0
- package/dist/lib/models/PersistentEnemy.js +4 -0
- package/dist/lib/models/Reward.d.ts +5 -0
- package/dist/lib/models/Reward.js +6 -0
- package/dist/lib/models/SentientOutpost.d.ts +4 -0
- package/dist/lib/models/SentientOutpost.js +3 -0
- package/dist/lib/models/Simaris.d.ts +4 -0
- package/dist/lib/models/Simaris.js +3 -0
- package/dist/lib/models/Sortie.d.ts +9 -0
- package/dist/lib/models/Sortie.js +10 -0
- package/dist/lib/models/SortieVariant.d.ts +4 -0
- package/dist/lib/models/SortieVariant.js +3 -0
- package/dist/lib/models/SteelPathOffering.d.ts +2 -0
- package/dist/lib/models/SteelPathOffering.js +3 -0
- package/dist/lib/models/SyndicateJob.d.ts +5 -0
- package/dist/lib/models/SyndicateJob.js +4 -0
- package/dist/lib/models/SyndicateMission.d.ts +6 -0
- package/dist/lib/models/SyndicateMission.js +5 -0
- package/dist/lib/models/VallisCycle.d.ts +3 -0
- package/dist/lib/models/VallisCycle.js +4 -0
- package/dist/lib/models/VoidTrader.d.ts +7 -0
- package/dist/lib/models/VoidTrader.js +6 -0
- package/dist/lib/models/VoidTraderItem.d.ts +4 -0
- package/dist/lib/models/VoidTraderItem.js +3 -0
- package/dist/lib/models/VoidTraderSchedule.d.ts +4 -0
- package/dist/lib/models/VoidTraderSchedule.js +3 -0
- package/dist/lib/models/WeeklyChallenge.d.ts +6 -0
- package/dist/lib/models/WeeklyChallenge.js +5 -0
- package/dist/lib/models/WorldEvent.d.ts +8 -0
- package/dist/lib/models/WorldEvent.js +9 -0
- package/dist/lib/models/WorldstateObject.d.ts +2 -0
- package/dist/lib/models/WorldstateObject.js +3 -0
- package/dist/lib/models/ZarimanCycle.d.ts +3 -0
- package/dist/lib/models/ZarimanCycle.js +4 -0
- package/dist/lib/supporting/Dependency.d.ts +3 -0
- package/dist/lib/supporting/Dependency.js +1 -0
- package/dist/lib/supporting/DuviriChoice.d.ts +3 -0
- package/dist/lib/supporting/DuviriChoice.js +3 -0
- package/dist/lib/supporting/ExternalMission.d.ts +2 -0
- package/dist/lib/supporting/ExternalMission.js +1 -0
- package/dist/lib/supporting/ImgCdn.d.ts +6 -0
- package/dist/lib/supporting/ImgCdn.js +3 -0
- package/dist/lib/supporting/KuvaLogEntry.d.ts +2 -0
- package/dist/lib/supporting/KuvaLogEntry.js +1 -0
- package/dist/lib/supporting/RewardData.d.ts +11 -0
- package/dist/lib/supporting/RewardData.js +3 -0
- package/dist/lib/supporting/RewardTypes.d.ts +2 -0
- package/dist/lib/supporting/RewardTypes.js +5 -0
- package/dist/main.d.ts +47 -0
- package/dist/main.js +49 -0
- package/dist/resources/.gitkeep +1 -0
- package/dist/resources/alt_helmet_thumb.png +0 -0
- package/dist/resources/aura_thumb.png +0 -0
- package/dist/resources/clantech_thmb.png +0 -0
- package/dist/resources/endo_thumb.png +0 -0
- package/dist/resources/exilus_thumb.png +0 -0
- package/dist/resources/forma_thumb.png +0 -0
- package/dist/resources/glaive_thumb.png +0 -0
- package/dist/resources/mutalist_thumb.png +0 -0
- package/dist/resources/nightmare_thumb.png +0 -0
- package/dist/resources/nitain_thumb.png +0 -0
- package/dist/resources/potato_thumb.png +0 -0
- package/dist/resources/resource_thumb.png +0 -0
- package/dist/resources/vauban_thumb.png +0 -0
- package/dist/resources/weapon_skin_thumb.png +0 -0
- package/package.json +9 -11
- package/lib/WorldState.js +0 -404
- package/lib/models/Alert.js +0 -90
- package/lib/models/Calendar.js +0 -74
- package/lib/models/CambionCycle.js +0 -32
- package/lib/models/CetusCycle.js +0 -126
- package/lib/models/ChallengeInstance.js +0 -57
- package/lib/models/ConclaveChallenge.js +0 -154
- package/lib/models/ConstructionProgress.js +0 -31
- package/lib/models/DailyDeal.js +0 -103
- package/lib/models/DarkSector.js +0 -154
- package/lib/models/DarkSectorBattle.js +0 -56
- package/lib/models/DeepArchidemea.js +0 -33
- package/lib/models/DuviriCycle.js +0 -65
- package/lib/models/EarthCycle.js +0 -119
- package/lib/models/Fissure.js +0 -136
- package/lib/models/FlashSale.js +0 -123
- package/lib/models/GlobalUpgrade.js +0 -122
- package/lib/models/Invasion.js +0 -183
- package/lib/models/Kinepage.js +0 -11
- package/lib/models/Kuva.js +0 -122
- package/lib/models/MidrathCycle.js +0 -94
- package/lib/models/Mission.js +0 -179
- package/lib/models/News.js +0 -174
- package/lib/models/Nightwave.js +0 -91
- package/lib/models/NightwaveChallenge.js +0 -63
- package/lib/models/PersistentEnemy.js +0 -100
- package/lib/models/Reward.js +0 -111
- package/lib/models/SentientOutpost.js +0 -68
- package/lib/models/Simaris.js +0 -47
- package/lib/models/Sortie.js +0 -143
- package/lib/models/SortieVariant.js +0 -57
- package/lib/models/SteelPathOffering.js +0 -99
- package/lib/models/SyndicateJob.js +0 -185
- package/lib/models/SyndicateMission.js +0 -111
- package/lib/models/VallisCycle.js +0 -125
- package/lib/models/VoidTrader.js +0 -134
- package/lib/models/VoidTraderItem.js +0 -24
- package/lib/models/VoidTraderSchedule.js +0 -8
- package/lib/models/WeeklyChallenge.js +0 -27
- package/lib/models/WorldEvent.js +0 -326
- package/lib/models/WorldstateObject.js +0 -106
- package/lib/models/ZarimanCycle.js +0 -124
- package/lib/supporting/Dependency.js +0 -6
- package/lib/supporting/DuviriChoice.js +0 -16
- package/lib/supporting/ExternalMission.js +0 -13
- package/lib/supporting/ImgCdn.js +0 -9
- package/lib/supporting/MarkdownSettings.js +0 -30
- package/lib/supporting/RewardData.js +0 -77
- package/lib/supporting/RewardTypes.js +0 -327
- package/main.js +0 -4
- package/types/lib/WorldState.d.ts +0 -199
- package/types/lib/models/Alert.d.ts +0 -53
- package/types/lib/models/Calendar.d.ts +0 -16
- package/types/lib/models/CambionCycle.d.ts +0 -20
- package/types/lib/models/CetusCycle.d.ts +0 -47
- package/types/lib/models/ChallengeInstance.d.ts +0 -42
- package/types/lib/models/ConclaveChallenge.d.ts +0 -90
- package/types/lib/models/ConstructionProgress.d.ts +0 -14
- package/types/lib/models/DailyDeal.d.ts +0 -78
- package/types/lib/models/DarkSector.d.ts +0 -121
- package/types/lib/models/DarkSectorBattle.d.ts +0 -44
- package/types/lib/models/DeepArchidemea.d.ts +0 -8
- package/types/lib/models/DuviriCycle.d.ts +0 -21
- package/types/lib/models/EarthCycle.d.ts +0 -64
- package/types/lib/models/Fissure.d.ts +0 -83
- package/types/lib/models/FlashSale.d.ts +0 -86
- package/types/lib/models/GlobalUpgrade.d.ts +0 -86
- package/types/lib/models/Invasion.d.ts +0 -124
- package/types/lib/models/Kinepage.d.ts +0 -6
- package/types/lib/models/Kuva.d.ts +0 -60
- package/types/lib/models/MidrathCycle.d.ts +0 -39
- package/types/lib/models/Mission.d.ts +0 -136
- package/types/lib/models/News.d.ts +0 -104
- package/types/lib/models/Nightwave.d.ts +0 -53
- package/types/lib/models/NightwaveChallenge.d.ts +0 -45
- package/types/lib/models/PersistentEnemy.d.ts +0 -70
- package/types/lib/models/Reward.d.ts +0 -95
- package/types/lib/models/SentientOutpost.d.ts +0 -54
- package/types/lib/models/Simaris.d.ts +0 -33
- package/types/lib/models/Sortie.d.ts +0 -72
- package/types/lib/models/SortieVariant.d.ts +0 -43
- package/types/lib/models/SteelPathOffering.d.ts +0 -19
- package/types/lib/models/SyndicateJob.d.ts +0 -72
- package/types/lib/models/SyndicateMission.d.ts +0 -56
- package/types/lib/models/VallisCycle.d.ts +0 -53
- package/types/lib/models/VoidTrader.d.ts +0 -45
- package/types/lib/models/VoidTraderItem.d.ts +0 -25
- package/types/lib/models/VoidTraderSchedule.d.ts +0 -7
- package/types/lib/models/WeeklyChallenge.d.ts +0 -12
- package/types/lib/models/WorldEvent.d.ts +0 -216
- package/types/lib/models/WorldstateObject.d.ts +0 -120
- package/types/lib/models/ZarimanCycle.d.ts +0 -42
- package/types/lib/supporting/Dependency.d.ts +0 -7
- package/types/lib/supporting/DuviriChoice.d.ts +0 -9
- package/types/lib/supporting/ExternalMission.d.ts +0 -48
- package/types/lib/supporting/ImgCdn.d.ts +0 -3
- package/types/lib/supporting/MarkdownSettings.d.ts +0 -30
- package/types/lib/supporting/RewardData.d.ts +0 -9
- package/types/lib/supporting/RewardTypes.d.ts +0 -8
- package/types/main.d.ts +0 -3
package/lib/models/News.js
DELETED
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
import { fromNow, parseDate, timeDeltaToString, toNow, languageString } from 'warframe-worldstate-data/utilities';
|
|
2
|
-
|
|
3
|
-
import { cdn, deProxy } from '../supporting/ImgCdn.js';
|
|
4
|
-
import mdConfig from '../supporting/MarkdownSettings.js';
|
|
5
|
-
|
|
6
|
-
import WorldstateObject from './WorldstateObject.js';
|
|
7
|
-
|
|
8
|
-
const updateReg = /(update|hotfix|patch-notes)/i;
|
|
9
|
-
const primeAccessReg = /(access)/i;
|
|
10
|
-
const streamReg = /(devstream|prime-time|warframeinternational|stream)/i;
|
|
11
|
-
const langString = /(\/Lotus\/Language\/)/i;
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Represents a game news item
|
|
15
|
-
* @augments {WorldstateObject}
|
|
16
|
-
*/
|
|
17
|
-
export default class News extends WorldstateObject {
|
|
18
|
-
/**
|
|
19
|
-
* @param {object} data The news data
|
|
20
|
-
* @param {string} locale Locale to use for determining language
|
|
21
|
-
*/
|
|
22
|
-
constructor(data, { locale = 'en' } = { locale: 'en' }) {
|
|
23
|
-
super(data);
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* The news message
|
|
27
|
-
* @type {string}
|
|
28
|
-
*/
|
|
29
|
-
this.message = (data.Messages.find((msg) => msg.LanguageCode === locale) || { Message: '' }).Message;
|
|
30
|
-
if (langString.test(this.message)) {
|
|
31
|
-
this.message = languageString(this.message, locale);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* The link to the forum post
|
|
36
|
-
* @type {string}
|
|
37
|
-
*/
|
|
38
|
-
this.link = data.Prop;
|
|
39
|
-
if ((!this.link || !this.link.length) && data.Links && data.Links.length) {
|
|
40
|
-
this.link = (data.Links.find((l) => l.LanguageCode === locale) || { Link: 'https://www.warframe.com/' }).Link;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* The news's image link
|
|
45
|
-
* @type {string}
|
|
46
|
-
*/
|
|
47
|
-
this.imageLink = data.ImageUrl ? deProxy(data.ImageUrl) : cdn('img/news-placeholder.png');
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Whether this has priority over other news or not
|
|
51
|
-
* @type {boolean}
|
|
52
|
-
*/
|
|
53
|
-
this.priority = data.Priority;
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* The date at which the post was published
|
|
57
|
-
* @type {Date}
|
|
58
|
-
*/
|
|
59
|
-
this.date = parseDate(data.Date);
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* The date at which the event starts
|
|
63
|
-
* @type {?Date}
|
|
64
|
-
*/
|
|
65
|
-
this.startDate = data.EventStartDate ? parseDate(data.EventStartDate) : undefined;
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* The date at which the event ends
|
|
69
|
-
* @type {?Date}
|
|
70
|
-
*/
|
|
71
|
-
this.endDate = data.EventEndDate ? parseDate(data.EventEndDate) : undefined;
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* ETA string (at time of object creation)
|
|
75
|
-
* @type {string}
|
|
76
|
-
*/
|
|
77
|
-
this.eta = this.getETAString();
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Whether this is an update news item
|
|
81
|
-
* @type {boolean}
|
|
82
|
-
*/
|
|
83
|
-
this.update = this.isUpdate();
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Whether this is a prime access news item
|
|
87
|
-
* @type {boolean}
|
|
88
|
-
*/
|
|
89
|
-
this.primeAccess = this.isPrimeAccess();
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Whether or not this is a stream
|
|
93
|
-
* @type {boolean}
|
|
94
|
-
*/
|
|
95
|
-
this.stream = this.isStream();
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Translation of the news item
|
|
99
|
-
* @type {Record<string, string>}
|
|
100
|
-
*/
|
|
101
|
-
this.translations = {};
|
|
102
|
-
data.Messages.forEach((message) => {
|
|
103
|
-
this.translations[message.LanguageCode ?? 'en'] = message.Message;
|
|
104
|
-
|
|
105
|
-
if (langString.test(message.Message)) {
|
|
106
|
-
this.translations[message.LanguageCode] = languageString(message.Message, message.LanguageCode);
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* The string representation of this object at creation
|
|
112
|
-
* @type {string}
|
|
113
|
-
*/
|
|
114
|
-
this.asString = this.toString();
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* Get a string indicating how long it will take for the event to start or
|
|
119
|
-
* how long it's been since the news went up
|
|
120
|
-
* @returns {string} the estimated time of arrival for the event
|
|
121
|
-
*/
|
|
122
|
-
getETAString() {
|
|
123
|
-
if (this.endDate) {
|
|
124
|
-
const timeDelta = fromNow(this.endDate);
|
|
125
|
-
return `in ${timeDeltaToString(timeDelta)}`;
|
|
126
|
-
}
|
|
127
|
-
const timeDelta = toNow(this.date);
|
|
128
|
-
return `${timeDeltaToString(timeDelta)} ago`;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Whether or not this is about a game update
|
|
133
|
-
* @returns {boolean} whether the news is about an update
|
|
134
|
-
*/
|
|
135
|
-
isUpdate() {
|
|
136
|
-
return updateReg.test(this.link);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Whether this is about a new Prime Access
|
|
141
|
-
* @returns {boolean} whether the news is about a new Prime Access
|
|
142
|
-
*/
|
|
143
|
-
isPrimeAccess() {
|
|
144
|
-
return primeAccessReg.test(this.link);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* Whether this is about a new stream
|
|
149
|
-
* @returns {boolean} whether the news is for a stream
|
|
150
|
-
*/
|
|
151
|
-
isStream() {
|
|
152
|
-
return streamReg.test(this.message);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* String representation
|
|
157
|
-
* @returns {string} string representation
|
|
158
|
-
*/
|
|
159
|
-
toString() {
|
|
160
|
-
return (
|
|
161
|
-
`[${this.getETAString()}] ${mdConfig.linkBegin}${this.message}` +
|
|
162
|
-
`${mdConfig.linkMid}${this.link}${mdConfig.linkEnd}`
|
|
163
|
-
);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
/**
|
|
167
|
-
* The title of the news item in the specified language
|
|
168
|
-
* @param {string} langCode Ex. 'es', 'de', 'fr'
|
|
169
|
-
* @returns {string} The title of the news item in the specified language
|
|
170
|
-
*/
|
|
171
|
-
getTitle(langCode) {
|
|
172
|
-
return langCode in this.translations ? this.translations[langCode] : this.message;
|
|
173
|
-
}
|
|
174
|
-
}
|
package/lib/models/Nightwave.js
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { fromNow, timeDeltaToString, languageString } from 'warframe-worldstate-data/utilities';
|
|
2
|
-
|
|
3
|
-
import mdConfig from '../supporting/MarkdownSettings.js';
|
|
4
|
-
|
|
5
|
-
import WorldstateObject from './WorldstateObject.js';
|
|
6
|
-
import NightwaveChallenge from './NightwaveChallenge.js';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Represents an alert
|
|
10
|
-
* @augments {WorldstateObject}
|
|
11
|
-
*/
|
|
12
|
-
export default class Nightwave extends WorldstateObject {
|
|
13
|
-
/**
|
|
14
|
-
* @param {object} data The alert data
|
|
15
|
-
* @param {object} deps The dependencies object
|
|
16
|
-
* @param {string} deps.locale Locale to use for translations
|
|
17
|
-
*/
|
|
18
|
-
constructor(data, { locale = 'en' } = { locale: 'en' }) {
|
|
19
|
-
super(data);
|
|
20
|
-
|
|
21
|
-
this.id = `nightwave${new Date(this.expiry).getTime()}`;
|
|
22
|
-
|
|
23
|
-
const deps = {
|
|
24
|
-
locale,
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* The current season. 0-indexed.
|
|
29
|
-
* @type {number}
|
|
30
|
-
*/
|
|
31
|
-
this.season = data.Season;
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Descriptor for affiliation
|
|
35
|
-
* @type {string}
|
|
36
|
-
*/
|
|
37
|
-
this.tag = languageString(data.AffiliationTag, locale);
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* The current season's current phase. 0-indexed.
|
|
41
|
-
* @type {number}
|
|
42
|
-
*/
|
|
43
|
-
this.phase = data.Phase;
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Misc params provided.
|
|
47
|
-
* @type {object}
|
|
48
|
-
*/
|
|
49
|
-
this.params = JSON.parse(data.Params || '{}');
|
|
50
|
-
|
|
51
|
-
this.possibleChallenges = (data.Challenges || [])
|
|
52
|
-
.map((challenge) => new NightwaveChallenge(challenge, deps))
|
|
53
|
-
.filter((challenge) => challenge);
|
|
54
|
-
|
|
55
|
-
this.activeChallenges = (data.ActiveChallenges || [])
|
|
56
|
-
.map((challenge) => new NightwaveChallenge(challenge, deps))
|
|
57
|
-
.filter((challenge) => challenge);
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* An array containing the types of all of the alert's rewards
|
|
61
|
-
* @type {Array.<string>}
|
|
62
|
-
*/
|
|
63
|
-
this.rewardTypes = this.getRewardTypes().length ? this.getRewardTypes() : ['credits'];
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Get a string indicating how much time is left before the alert expires
|
|
68
|
-
* @returns {string} estimated timer of the alert
|
|
69
|
-
*/
|
|
70
|
-
getETAString() {
|
|
71
|
-
return timeDeltaToString(fromNow(this.expiry));
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Get an array containing the types of all of the nightwave season's rewards
|
|
76
|
-
* @returns {Array.<string>} an array containing the types of all of the nightwave season's rewards
|
|
77
|
-
*/
|
|
78
|
-
getRewardTypes() {
|
|
79
|
-
return [];
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* The alert's string representation
|
|
84
|
-
* @returns {string} string representation of the alert
|
|
85
|
-
*/
|
|
86
|
-
toString() {
|
|
87
|
-
return `${mdConfig.codeBlock}Nightwave Season ${this.season + 1} - ${this.tag} - Phase ${this.phase + 1}${
|
|
88
|
-
mdConfig.blockEnd
|
|
89
|
-
}`;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { languageDesc, languageString } from 'warframe-worldstate-data/utilities';
|
|
2
|
-
|
|
3
|
-
import WorldstateObject from './WorldstateObject.js';
|
|
4
|
-
|
|
5
|
-
const repBase = 1000;
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Represents an alert
|
|
9
|
-
* @augments {WorldstateObject}
|
|
10
|
-
*/
|
|
11
|
-
export default class NightwaveChallenge extends WorldstateObject {
|
|
12
|
-
/**
|
|
13
|
-
* @param {object} data The alert data
|
|
14
|
-
* @param {object} deps The dependencies object
|
|
15
|
-
* @param {string} deps.locale Locale to use for translations
|
|
16
|
-
*/
|
|
17
|
-
constructor(data, { locale = 'en' } = { locale: 'en' }) {
|
|
18
|
-
super(data);
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Whether or not this is a daily challenge
|
|
22
|
-
* @type {boolean}
|
|
23
|
-
*/
|
|
24
|
-
this.isDaily = data.Daily || false;
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Whether or not the challenge is an elite challenge
|
|
28
|
-
* @type {boolean}
|
|
29
|
-
*/
|
|
30
|
-
this.isElite = /hard/gi.test(data.Challenge);
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* The descriptor for this challenge
|
|
34
|
-
* @type {string}
|
|
35
|
-
*/
|
|
36
|
-
this.desc = languageDesc(data.Challenge, locale);
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* The title for this challenge
|
|
40
|
-
* @type {string}
|
|
41
|
-
*/
|
|
42
|
-
this.title = languageString(data.Challenge, locale);
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Generated id from expiry, challenge string,
|
|
46
|
-
* and whether or not it has `[PH]` (designating placeholder text)
|
|
47
|
-
* @type {string}
|
|
48
|
-
*/
|
|
49
|
-
this.id = `${this.expiry.getTime()}${data.Challenge.split('/').slice(-1)[0].toLowerCase()}`;
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Reputation reward for ranking up in the Nightwave
|
|
53
|
-
* @type {number}
|
|
54
|
-
*/
|
|
55
|
-
this.reputation = repBase + (!this.isDaily ? 3500 : 0) + (this.isElite ? 2500 : 0);
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Whether this challenge is permanent
|
|
59
|
-
* @type {boolean}
|
|
60
|
-
*/
|
|
61
|
-
this.isPermanent = Boolean(data?.Permanent);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { parseDate, languageString, node, region } from 'warframe-worldstate-data/utilities';
|
|
2
|
-
|
|
3
|
-
import mdConfig from '../supporting/MarkdownSettings.js';
|
|
4
|
-
|
|
5
|
-
import WorldstateObject from './WorldstateObject.js';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Represents a persistent enemy
|
|
9
|
-
* @augments {WorldstateObject}
|
|
10
|
-
*/
|
|
11
|
-
export default class PersistentEnemy extends WorldstateObject {
|
|
12
|
-
/**
|
|
13
|
-
* @param {object} data The persistent enemy data
|
|
14
|
-
* @param {object} deps The dependencies object
|
|
15
|
-
* @param {string} deps.locale Locale to use for translations
|
|
16
|
-
*/
|
|
17
|
-
constructor(data, { locale = 'en' } = { locale: 'en' }) {
|
|
18
|
-
super(data);
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* The enemy's type
|
|
22
|
-
* @type {string}
|
|
23
|
-
*/
|
|
24
|
-
this.agentType = languageString(data.AgentType, locale);
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* The location tag
|
|
28
|
-
* @type {string}
|
|
29
|
-
*/
|
|
30
|
-
this.locationTag = languageString(data.LocTag, locale);
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* The enemy's rank
|
|
34
|
-
* @type {number}
|
|
35
|
-
*/
|
|
36
|
-
this.rank = data.Rank;
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* The enemy's remaining health percentage
|
|
40
|
-
* @type {number}
|
|
41
|
-
*/
|
|
42
|
-
this.healthPercent = Number.parseFloat(data.HealthPercent);
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* The percentual damage that the enemy takes when it's defeated
|
|
46
|
-
* @type {number}
|
|
47
|
-
*/
|
|
48
|
-
this.fleeDamage = data.FleeDamage;
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* The region where the enemy is located
|
|
52
|
-
* @type {string}
|
|
53
|
-
*/
|
|
54
|
-
this.region = region(data.Region, locale);
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* The last time the enemy was discovered
|
|
58
|
-
* @type {Date}
|
|
59
|
-
*/
|
|
60
|
-
this.lastDiscoveredTime = parseDate(data.LastDiscoveredTime);
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* The node at which the enemy was last discovered
|
|
64
|
-
* @type {string}
|
|
65
|
-
*/
|
|
66
|
-
this.lastDiscoveredAt = node(data.LastDiscoveredLocation, locale);
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Whether or not the enemy is currently available
|
|
70
|
-
* @type {boolean}
|
|
71
|
-
*/
|
|
72
|
-
this.isDiscovered = data.Discovered;
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Whether or not the enemy is using ticketing
|
|
76
|
-
* @type {boolean}
|
|
77
|
-
*/
|
|
78
|
-
this.isUsingTicketing = data.UseTicketing;
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Fake ID incorporating discovery
|
|
82
|
-
* @type {string}
|
|
83
|
-
*/
|
|
84
|
-
this.pid = `${this.id}${this.isDiscovered}`;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Returns a string representation of the persistent enemy
|
|
89
|
-
* @returns {string} string representation
|
|
90
|
-
*/
|
|
91
|
-
toString() {
|
|
92
|
-
const status = this.isDiscovered ? 'discovered' : 'not discovered';
|
|
93
|
-
const lines = [
|
|
94
|
-
`${this.agentType} last discovered at ${this.lastDiscoveredAt}.`,
|
|
95
|
-
`It has ${this.healthPercent}% health remaining and is currently ${status}`,
|
|
96
|
-
];
|
|
97
|
-
|
|
98
|
-
return lines.join(mdConfig.lineEnd);
|
|
99
|
-
}
|
|
100
|
-
}
|
package/lib/models/Reward.js
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import { languageString, insist } from 'warframe-worldstate-data/utilities';
|
|
2
|
-
|
|
3
|
-
import rewardTypes from '../supporting/RewardTypes.js';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* An object describing a type of reward, including name, description,
|
|
7
|
-
* test function to verify type from a string, thumbnail url, and color
|
|
8
|
-
* @typedef {object} RewardType
|
|
9
|
-
* @property {string} name - Name of the reward type
|
|
10
|
-
* @property {string} description - Description of the reward type
|
|
11
|
-
* @property {string} test - Function for testing the return type against a string
|
|
12
|
-
* @property {string} thumbnail - Thumbnail url for this reward type
|
|
13
|
-
* @property {string} color - Summary color representing this reward type
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Returns the type of a given item
|
|
18
|
-
* @param {string} item The item whose type needs to be determined
|
|
19
|
-
* @param {Array.<RewardType>} [types] The possible types
|
|
20
|
-
* @returns {string} The type name
|
|
21
|
-
*/
|
|
22
|
-
export function getItemType(item, types = rewardTypes) {
|
|
23
|
-
return types.find((t) => t.test(item)).name;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Returns the full type of a given item
|
|
28
|
-
* @param {string} item The item whose type needs to be determined
|
|
29
|
-
* @param {Array.<RewardType>} [types] The possible types
|
|
30
|
-
* @returns {RewardType} The type
|
|
31
|
-
*/
|
|
32
|
-
export function getItemTypeFull(item, types = rewardTypes) {
|
|
33
|
-
return types.find((t) => t.test(item));
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Represents a mission reward
|
|
38
|
-
*/
|
|
39
|
-
export default class Reward {
|
|
40
|
-
/**
|
|
41
|
-
* @param {object} data The mission data
|
|
42
|
-
* @param {Dependency} deps The dependencies object
|
|
43
|
-
* @param {string} deps.locale Locale to use for translations
|
|
44
|
-
*/
|
|
45
|
-
constructor(data, { locale = 'en' } = { locale: 'en' }) {
|
|
46
|
-
insist(data);
|
|
47
|
-
/**
|
|
48
|
-
* The items being rewarded
|
|
49
|
-
* @type {Array.<string>}
|
|
50
|
-
*/
|
|
51
|
-
this.items = data.items ? data.items.map((i) => languageString(i), locale) : [];
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* The counted items being rewarded
|
|
55
|
-
* @type {Array.<object>}
|
|
56
|
-
*/
|
|
57
|
-
this.countedItems = data.countedItems
|
|
58
|
-
? data.countedItems.map((i) => ({
|
|
59
|
-
count: i.ItemCount,
|
|
60
|
-
type: languageString(i.ItemType, locale),
|
|
61
|
-
key: languageString(i.ItemType),
|
|
62
|
-
}))
|
|
63
|
-
: [];
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* The credits being rewarded
|
|
67
|
-
* @type {number}
|
|
68
|
-
*/
|
|
69
|
-
this.credits = data.credits || 0;
|
|
70
|
-
|
|
71
|
-
this.asString = this.toString();
|
|
72
|
-
|
|
73
|
-
this.itemString = this.items
|
|
74
|
-
.concat(this.countedItems.map((i) => `${i.count > 1 ? i.count : ''} ${i.type}`.trim()))
|
|
75
|
-
.join(' + ');
|
|
76
|
-
|
|
77
|
-
this.thumbnail = this.getTypesFull()[0] ? this.getTypesFull()[0].thumbnail : 'https://i.imgur.com/JCKyUXJ.png';
|
|
78
|
-
|
|
79
|
-
this.color = this.getTypesFull()[0] ? this.getTypesFull()[0].color : 0xf1c40f;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* The types of all items that are being rewarded
|
|
84
|
-
* @returns {Array.<string>} types as array of string
|
|
85
|
-
*/
|
|
86
|
-
getTypes() {
|
|
87
|
-
return this.items.concat(this.countedItems.map((i) => i.key)).map((t) => getItemType(t));
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* The types of all the items that are being rewarded
|
|
92
|
-
* @returns {Array.<RewardType>} array of reward types
|
|
93
|
-
*/
|
|
94
|
-
getTypesFull() {
|
|
95
|
-
return this.items.concat(this.countedItems.map((i) => i.key)).map((t) => getItemTypeFull(t));
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* The reward's string representation
|
|
100
|
-
* @returns {string} reward's string representation
|
|
101
|
-
*/
|
|
102
|
-
toString() {
|
|
103
|
-
const tokens = this.items.concat(this.countedItems.map((i) => `${i.count > 1 ? i.count : ''} ${i.type}`.trim()));
|
|
104
|
-
|
|
105
|
-
if (this.credits) {
|
|
106
|
-
tokens.push(`${this.credits}cr`);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
return tokens.join(' + ');
|
|
110
|
-
}
|
|
111
|
-
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { node, nodeEnemy, nodeMissionType } from 'warframe-worldstate-data/utilities';
|
|
2
|
-
|
|
3
|
-
const duration = 1800;
|
|
4
|
-
|
|
5
|
-
const sat = () => {
|
|
6
|
-
const now = Math.floor(Date.now() / 1000);
|
|
7
|
-
// One cycle = 3 hours
|
|
8
|
-
const cycleSeconds = now % duration;
|
|
9
|
-
// active range is after 30m and lasts for 30m
|
|
10
|
-
const active = cycleSeconds > 0 && cycleSeconds < 1800;
|
|
11
|
-
const start = (now - cycleSeconds) * 1000;
|
|
12
|
-
const end = (now - cycleSeconds + duration) * 1000;
|
|
13
|
-
|
|
14
|
-
return {
|
|
15
|
-
active,
|
|
16
|
-
expiry: new Date(end),
|
|
17
|
-
activation: new Date(start),
|
|
18
|
-
};
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Mission typeDef
|
|
23
|
-
* @typedef {object} Mission
|
|
24
|
-
* @property {string} node Mission node name
|
|
25
|
-
* @property {string} enemy Node enemy
|
|
26
|
-
* @property {string} type Mission type of the node
|
|
27
|
-
*/
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Represents a set of sentient outposts that are present
|
|
31
|
-
* Parsed source is combined data from DE's worldstate and semlar.com/anomaly.json
|
|
32
|
-
* @property {Mission} mission List of current missions
|
|
33
|
-
* @property {string} id Identifier for the mission node with active indicator
|
|
34
|
-
* @property {boolean} active Whether or not the mission is active
|
|
35
|
-
* @property {Date} activation When the mission became or becomes active
|
|
36
|
-
* @property {Date} expiry When the mission became or becomes inactive
|
|
37
|
-
* @property {object} previous Estimation data for the last mission that was active.
|
|
38
|
-
* Could also be the current.
|
|
39
|
-
* @property {Date} previous.activation When the mission became or becomes active
|
|
40
|
-
* @property {Date} previous.expiry When the mission became or becomes inactive
|
|
41
|
-
*/
|
|
42
|
-
export default class SentientOutpost {
|
|
43
|
-
#node;
|
|
44
|
-
constructor(sfn, { locale, sentientData, logger }) {
|
|
45
|
-
this.#node = sfn || '000';
|
|
46
|
-
const id = `CrewBattleNode${this.#node}`;
|
|
47
|
-
/* istanbul ignore if */
|
|
48
|
-
if (this.#node === '000') {
|
|
49
|
-
this.mission = undefined;
|
|
50
|
-
} else {
|
|
51
|
-
this.mission = {
|
|
52
|
-
node: node(id, locale),
|
|
53
|
-
faction: nodeEnemy(id, locale),
|
|
54
|
-
type: nodeMissionType(id, locale),
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
({ activation: this.activation, expiry: this.expiry } = sat());
|
|
58
|
-
this.active = Boolean(this.mission);
|
|
59
|
-
this.id = `${id}:${this.active}`;
|
|
60
|
-
|
|
61
|
-
if (!sentientData) {
|
|
62
|
-
logger.debug('No outpost data, skipping');
|
|
63
|
-
} else {
|
|
64
|
-
this.activation = new Date(sentientData.start * 1000);
|
|
65
|
-
this.expiry = new Date(sentientData.end * 1000);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
package/lib/models/Simaris.js
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { languageString } from 'warframe-worldstate-data/utilities';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Contains information about sanctuary targets
|
|
5
|
-
*/
|
|
6
|
-
export default class Simaris {
|
|
7
|
-
/**
|
|
8
|
-
* @param {object} data The sanctuary data
|
|
9
|
-
* @param {object} deps The dependencies object
|
|
10
|
-
* @param {string} deps.locale Locale to use for translations
|
|
11
|
-
*/
|
|
12
|
-
constructor(data, { locale = 'en' } = { locale: 'en' }) {
|
|
13
|
-
if (!data || !Object.keys(data).length) {
|
|
14
|
-
// eslint-disable-next-line no-param-reassign
|
|
15
|
-
data = {};
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* The sanctuary target
|
|
20
|
-
* @type {string}
|
|
21
|
-
*/
|
|
22
|
-
this.target = languageString(data.LastCompletedTargetType, locale) || 'N/A';
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Whether or not the target is currently active
|
|
26
|
-
* @type {boolean}
|
|
27
|
-
*/
|
|
28
|
-
this.isTargetActive = !data.LastCompletedTargetType;
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* A string representation of the current sanctuary status
|
|
32
|
-
* @type {string}
|
|
33
|
-
*/
|
|
34
|
-
this.asString = this.toString();
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Returns a string representation of the current sanctuary status
|
|
39
|
-
* @returns {string} a string representation of the current sanctuary status
|
|
40
|
-
*/
|
|
41
|
-
toString() {
|
|
42
|
-
return (
|
|
43
|
-
`Simaris's ${this.isTargetActive ? 'current' : 'previous'} objective ` +
|
|
44
|
-
`${this.isTargetActive ? 'is' : 'was'} ${this.target}`
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
}
|