warframe-worldstate-parser 4.6.2 → 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/Alert.js
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { fromNow, timeDeltaToString } from 'warframe-worldstate-data/utilities';
|
|
2
|
-
|
|
3
|
-
import mdConfig from '../supporting/MarkdownSettings.js';
|
|
4
|
-
|
|
5
|
-
import WorldstateObject from './WorldstateObject.js';
|
|
6
|
-
import Mission from './Mission.js';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Represents an alert
|
|
10
|
-
* @augments {WorldstateObject}
|
|
11
|
-
*/
|
|
12
|
-
export default class Alert extends WorldstateObject {
|
|
13
|
-
/**
|
|
14
|
-
* @param {object} data The alert data
|
|
15
|
-
* @param {string} locale Locale to use for translations
|
|
16
|
-
*/
|
|
17
|
-
constructor(data, { locale = 'en' } = { locale: 'en' }) {
|
|
18
|
-
super(data);
|
|
19
|
-
|
|
20
|
-
const deps = {
|
|
21
|
-
locale,
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* The mission that the players have to complete
|
|
26
|
-
* @type {Mission}
|
|
27
|
-
*/
|
|
28
|
-
this.mission = new Mission(data.MissionInfo, deps);
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* ETA string (at time of object creation)
|
|
32
|
-
* @type {string}
|
|
33
|
-
*/
|
|
34
|
-
this.eta = this.getETAString();
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* An array containing the types of all of the alert's rewards
|
|
38
|
-
* @type {Array.<string>}
|
|
39
|
-
*/
|
|
40
|
-
this.rewardTypes = this.getRewardTypes().length ? this.getRewardTypes() : ['credits'];
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* A tag that DE occasionally provides, such as `LotusGift`
|
|
44
|
-
* @type {string}
|
|
45
|
-
*/
|
|
46
|
-
this.tag = data.Tag || undefined;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Get the alert's description text
|
|
51
|
-
* @returns {string} the description
|
|
52
|
-
*/
|
|
53
|
-
getDescription() {
|
|
54
|
-
return this.mission.description;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Get the alert's reward
|
|
59
|
-
* @returns {Reward} the reward
|
|
60
|
-
*/
|
|
61
|
-
getReward() {
|
|
62
|
-
return this.mission.reward;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Get a string indicating how much time is left before the alert expires
|
|
67
|
-
* @returns {string} the time left
|
|
68
|
-
*/
|
|
69
|
-
getETAString() {
|
|
70
|
-
return timeDeltaToString(fromNow(this.expiry));
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Get an array containing the types of all of the alert's rewards
|
|
75
|
-
* @returns {Array.<string>} an array containing the types of all of the alert's rewards
|
|
76
|
-
*/
|
|
77
|
-
getRewardTypes() {
|
|
78
|
-
return this.mission.reward.getTypes();
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* The alert's string representation
|
|
83
|
-
* @returns {string} the string representation
|
|
84
|
-
*/
|
|
85
|
-
toString() {
|
|
86
|
-
const lines = [this.mission.toString(), this.getETAString()];
|
|
87
|
-
|
|
88
|
-
return `${mdConfig.codeBlock}${lines.join(mdConfig.lineEnd)}${mdConfig.blockEnd}`;
|
|
89
|
-
}
|
|
90
|
-
}
|
package/lib/models/Calendar.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
languageDesc,
|
|
3
|
-
languageString,
|
|
4
|
-
parseDate,
|
|
5
|
-
translateCalendarEvent,
|
|
6
|
-
translateSeason,
|
|
7
|
-
} from 'warframe-worldstate-data/utilities';
|
|
8
|
-
|
|
9
|
-
const EventTypes = Object.freeze({
|
|
10
|
-
PLOT: 'CET_PLOT',
|
|
11
|
-
REWARD: 'CET_REWARD',
|
|
12
|
-
CHALLENGE: 'CET_CHALLENGE',
|
|
13
|
-
UPGRADE: 'CET_UPGRADE',
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Event data for a 1999 calendar day
|
|
18
|
-
* @param {object} event raw event data
|
|
19
|
-
*/
|
|
20
|
-
class DayEvent {
|
|
21
|
-
constructor(event) {
|
|
22
|
-
this.type = translateCalendarEvent(event.type);
|
|
23
|
-
|
|
24
|
-
if (event.challenge) this.challenge = this.eventDescription(event.challenge);
|
|
25
|
-
|
|
26
|
-
if (event.upgrade) this.upgrade = this.eventDescription(event.upgrade);
|
|
27
|
-
|
|
28
|
-
if (event.reward) this.reward = languageString(event.reward);
|
|
29
|
-
|
|
30
|
-
if (event.type === EventTypes.PLOT) {
|
|
31
|
-
this.dialogueName = event.dialogueName;
|
|
32
|
-
this.dialogueConvo = event.dialogueConvo;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
eventDescription(name) {
|
|
37
|
-
return { title: languageString(name), description: languageDesc(name) };
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export default class Calendar {
|
|
42
|
-
constructor(calendar) {
|
|
43
|
-
this.activation = parseDate(calendar.Activation);
|
|
44
|
-
|
|
45
|
-
this.expiry = parseDate(calendar.Expiry);
|
|
46
|
-
|
|
47
|
-
this.days = Array.isArray(calendar.Days)
|
|
48
|
-
? calendar.Days.filter(Boolean).map((d) => ({
|
|
49
|
-
...d,
|
|
50
|
-
date: this.getDate(d.day).toISOString(),
|
|
51
|
-
events: d.events.map((e) => new DayEvent(e)),
|
|
52
|
-
}))
|
|
53
|
-
: [];
|
|
54
|
-
|
|
55
|
-
this.season = translateSeason(calendar.Season);
|
|
56
|
-
|
|
57
|
-
this.yearIteration = calendar.YearIteration;
|
|
58
|
-
|
|
59
|
-
this.version = calendar.Version;
|
|
60
|
-
|
|
61
|
-
this.requirements = calendar.UpgradeAvaliabilityRequirements;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Converts number of day to a date in 1999 in UTC
|
|
66
|
-
* @param {number} day number of the day in a year
|
|
67
|
-
* @returns {Date} the date in 1999
|
|
68
|
-
*/
|
|
69
|
-
getDate(day) {
|
|
70
|
-
const date = new Date(Date.UTC(1999));
|
|
71
|
-
date.setUTCDate(date.getUTCDate() + day - 1);
|
|
72
|
-
return date;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { fromNow } from 'warframe-worldstate-data/utilities';
|
|
2
|
-
|
|
3
|
-
import WorldstateObject from './WorldstateObject.js';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Represents the current Cambion Drift Fass/Vome Cycle
|
|
7
|
-
* @augments {WorldstateObject}
|
|
8
|
-
* @property {string} timeLeft time rendering of amount of time left
|
|
9
|
-
*/
|
|
10
|
-
export default class CambionCycle extends WorldstateObject {
|
|
11
|
-
/**
|
|
12
|
-
* @param {CetusCycle} cetusCycle Match data from cetus cycle for data
|
|
13
|
-
*/
|
|
14
|
-
constructor(cetusCycle) {
|
|
15
|
-
super({ _id: { $oid: 'cambionCycle0' } });
|
|
16
|
-
|
|
17
|
-
({ activation: this.activation, expiry: this.expiry, timeLeft: this.timeLeft } = cetusCycle);
|
|
18
|
-
|
|
19
|
-
this.state = cetusCycle.isDay ? 'fass' : 'vome';
|
|
20
|
-
this.active = this.state;
|
|
21
|
-
|
|
22
|
-
this.id = `cambionCycle${this.expiry.getTime()}`;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Get whether the event has expired
|
|
27
|
-
* @returns {boolean} whether the event has expired
|
|
28
|
-
*/
|
|
29
|
-
getExpired() {
|
|
30
|
-
return fromNow(this.expiry) < 0;
|
|
31
|
-
}
|
|
32
|
-
}
|
package/lib/models/CetusCycle.js
DELETED
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { fromNow, timeDeltaToString } from 'warframe-worldstate-data/utilities';
|
|
2
|
-
|
|
3
|
-
import mdConfig from '../supporting/MarkdownSettings.js';
|
|
4
|
-
|
|
5
|
-
import WorldstateObject from './WorldstateObject.js';
|
|
6
|
-
|
|
7
|
-
const nightTime = 3000;
|
|
8
|
-
|
|
9
|
-
const maximums = {
|
|
10
|
-
day: 6000000,
|
|
11
|
-
night: 3000000,
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Represents the current Earth Day/Night Cycle
|
|
16
|
-
* @augments {WorldstateObject}
|
|
17
|
-
*/
|
|
18
|
-
export default class CetusCycle extends WorldstateObject {
|
|
19
|
-
/**
|
|
20
|
-
* The end of the Ostron bounties timer (marks the end of night)
|
|
21
|
-
* @type {Date}
|
|
22
|
-
* @private
|
|
23
|
-
*/
|
|
24
|
-
#bountiesEndDate;
|
|
25
|
-
/**
|
|
26
|
-
* The current cetus cycle, for calculating the other fields
|
|
27
|
-
* @type {object}
|
|
28
|
-
* @private
|
|
29
|
-
*/
|
|
30
|
-
#ec;
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* @param {Date} bountiesEndDate The end date for Ostron bounties
|
|
34
|
-
*/
|
|
35
|
-
constructor(bountiesEndDate) {
|
|
36
|
-
super({ _id: { $oid: 'cetusCycle0' } });
|
|
37
|
-
|
|
38
|
-
this.#bountiesEndDate = bountiesEndDate;
|
|
39
|
-
this.#ec = this.getCurrentCetusCycle();
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* The date and time at which the event ends
|
|
43
|
-
* @type {Date}
|
|
44
|
-
*/
|
|
45
|
-
this.expiry = this.#ec.expiry;
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* The date and time at which the event started
|
|
49
|
-
* @type {Date}
|
|
50
|
-
*/
|
|
51
|
-
this.activation = new Date(this.#ec.start);
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Whether it's daytime
|
|
55
|
-
* @type {boolean}
|
|
56
|
-
*/
|
|
57
|
-
this.isDay = this.#ec.dayTime;
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Current cycle state. One of `day`, `night`
|
|
61
|
-
* @type {string}
|
|
62
|
-
*/
|
|
63
|
-
this.state = this.#ec.state;
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Time remaining string
|
|
67
|
-
* @type {string}
|
|
68
|
-
*/
|
|
69
|
-
this.timeLeft = this.#ec.timeLeft;
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Whether this is for Cetus Cycle
|
|
73
|
-
* @type {boolean}
|
|
74
|
-
*/
|
|
75
|
-
this.isCetus = true;
|
|
76
|
-
|
|
77
|
-
this.id = `cetusCycle${this.expiry.getTime()}`;
|
|
78
|
-
|
|
79
|
-
this.shortString = `${this.timeLeft.replace(/\s\d*s/gi, '')} to ${this.isDay ? 'Night' : 'Day'}`;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Get whether or not the event has expired
|
|
84
|
-
* @returns {boolean} whether the event has expired
|
|
85
|
-
*/
|
|
86
|
-
getExpired() {
|
|
87
|
-
return fromNow(this.expiry) < 0;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
getCurrentCetusCycle() {
|
|
91
|
-
const now = Date.now();
|
|
92
|
-
const bountiesClone = this.#bountiesEndDate;
|
|
93
|
-
bountiesClone.setSeconds(0);
|
|
94
|
-
let millisLeft = fromNow(bountiesClone);
|
|
95
|
-
const secondsToNightEnd = (millisLeft / 1000).toFixed(0);
|
|
96
|
-
const dayTime = secondsToNightEnd > nightTime;
|
|
97
|
-
|
|
98
|
-
const secondsRemainingInCycle = dayTime ? secondsToNightEnd - nightTime : secondsToNightEnd;
|
|
99
|
-
millisLeft = secondsRemainingInCycle * 1000;
|
|
100
|
-
const minutesCoef = 1000 * 60;
|
|
101
|
-
const expiry = new Date(Math.round((now + millisLeft) / minutesCoef) * minutesCoef);
|
|
102
|
-
const state = dayTime ? 'day' : 'night';
|
|
103
|
-
|
|
104
|
-
return {
|
|
105
|
-
dayTime,
|
|
106
|
-
timeLeft: timeDeltaToString(millisLeft),
|
|
107
|
-
expiry,
|
|
108
|
-
expiresIn: millisLeft,
|
|
109
|
-
state,
|
|
110
|
-
start: expiry.getTime() - maximums[state],
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* The event's string representation
|
|
116
|
-
* @returns {string} The string representation of the event
|
|
117
|
-
*/
|
|
118
|
-
toString() {
|
|
119
|
-
const lines = [
|
|
120
|
-
`Operator, Cetus is currently in ${this.state}time`,
|
|
121
|
-
`Time remaining until ${this.isDay ? 'night' : 'day'}: ${this.timeLeft}`,
|
|
122
|
-
];
|
|
123
|
-
|
|
124
|
-
return lines.join(mdConfig.lineEnd);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { languageString } from 'warframe-worldstate-data/utilities';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Describes a world challenge instance
|
|
5
|
-
*/
|
|
6
|
-
export default class ChallengeInstance {
|
|
7
|
-
/**
|
|
8
|
-
* @param {object} data The challenge instance data
|
|
9
|
-
* @param {Dependency} deps The dependencies object
|
|
10
|
-
* @param {string} deps.locale Locale to use for translations
|
|
11
|
-
*/
|
|
12
|
-
constructor(data, { locale = 'en' } = { locale: 'en' }) {
|
|
13
|
-
/**
|
|
14
|
-
* Type of challenge
|
|
15
|
-
* @type {string}
|
|
16
|
-
*/
|
|
17
|
-
this.type = languageString(data.Type, locale);
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Minimum enemy level to fulfill challenge
|
|
21
|
-
* @type {number}
|
|
22
|
-
*/
|
|
23
|
-
this.minEnemyLevel = Number(data.MinimumEnemyLevel);
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Required number of units to complete challenge
|
|
27
|
-
* @type {number}
|
|
28
|
-
*/
|
|
29
|
-
this.requiredAmount = Number(data.RequiredCount);
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Waypoint for amount of units between progression updates
|
|
33
|
-
* @type {number}
|
|
34
|
-
*/
|
|
35
|
-
this.progressAmount = Number(data.ProgressIndicatorFreq);
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Required damage type
|
|
39
|
-
* @type {string | undefined}
|
|
40
|
-
*/
|
|
41
|
-
this.damageType = data.DamageType ? languageString(data.DamageType, locale) : undefined;
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Target to fulfill challenge
|
|
45
|
-
* @type {string}
|
|
46
|
-
*/
|
|
47
|
-
this.target =
|
|
48
|
-
data.VictimType && data.VictimType[0]
|
|
49
|
-
? languageString(data.VictimType[0], locale)
|
|
50
|
-
: // eslint-disable-next-line no-underscore-dangle
|
|
51
|
-
data.Script._faction;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
toString() {
|
|
55
|
-
return `Task: ${this.type}\nAmount: ${this.requiredAmount}\nTarget: ${this.target}`;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
parseDate,
|
|
3
|
-
fromNow,
|
|
4
|
-
timeDeltaToString,
|
|
5
|
-
conclaveMode,
|
|
6
|
-
conclaveCategory,
|
|
7
|
-
conclaveChallenge,
|
|
8
|
-
} from 'warframe-worldstate-data/utilities';
|
|
9
|
-
|
|
10
|
-
import WorldstateObject from './WorldstateObject.js';
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Represents a Conclave challenge
|
|
14
|
-
* @augments {WorldstateObject}
|
|
15
|
-
*/
|
|
16
|
-
export default class ConclaveChallenge extends WorldstateObject {
|
|
17
|
-
/**
|
|
18
|
-
* @param {object} data The challenge data
|
|
19
|
-
* @param {object} deps The dependencies object
|
|
20
|
-
* @param {string} deps.locale Locale to use for translations
|
|
21
|
-
*/
|
|
22
|
-
constructor(data, { locale = 'en' } = { locale: 'en' }) {
|
|
23
|
-
super(data);
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* The time and date at which the challenge expires
|
|
27
|
-
* @type {Date}
|
|
28
|
-
*/
|
|
29
|
-
this.expiry = parseDate(data.endDate);
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* The time and date at which the challenge starts
|
|
33
|
-
* @type {Date}
|
|
34
|
-
*/
|
|
35
|
-
this.activation = parseDate(data.startDate);
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* The number of times that the challenge's objective needs to be completed
|
|
39
|
-
* @type {number}
|
|
40
|
-
*/
|
|
41
|
-
this.amount = data.params[0].v;
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* The PVP mode that the challenge must be completed in
|
|
45
|
-
* @type {string}
|
|
46
|
-
*/
|
|
47
|
-
this.mode = conclaveMode(data.PVPMode, locale);
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* The challenge's category (daily, weekly...)
|
|
51
|
-
* @type {string}
|
|
52
|
-
*/
|
|
53
|
-
this.category = conclaveCategory(data.Category, locale);
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* ETA string (at time of object creation)
|
|
57
|
-
* @type {string}
|
|
58
|
-
*/
|
|
59
|
-
this.eta = this.getEndString();
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Whether or not this is expired (at time of object creation)
|
|
63
|
-
* @type {boolean}
|
|
64
|
-
*/
|
|
65
|
-
this.expired = this.isExpired();
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Whether or not this is a daily conclave challenge.
|
|
69
|
-
* @type {boolean}
|
|
70
|
-
*/
|
|
71
|
-
this.daily = this.isDaily();
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Whether or not this is the root challenge
|
|
75
|
-
* @type {boolean}
|
|
76
|
-
*/
|
|
77
|
-
this.rootChallenge = this.isRootChallenge();
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* the end string
|
|
81
|
-
* @type {string}
|
|
82
|
-
*/
|
|
83
|
-
this.endString = this.getEndString();
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* The challenge's description text
|
|
87
|
-
* @type {string}
|
|
88
|
-
*/
|
|
89
|
-
this.description = undefined;
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Title of the challenge
|
|
93
|
-
* @type {string}
|
|
94
|
-
*/
|
|
95
|
-
this.title = undefined;
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Standing granted by completing challenge.
|
|
99
|
-
* @type {number}
|
|
100
|
-
*/
|
|
101
|
-
this.standing = undefined;
|
|
102
|
-
|
|
103
|
-
const challenge = conclaveChallenge(data.challengeTypeRefID, locale);
|
|
104
|
-
|
|
105
|
-
({ title: this.title, description: this.description, standing: this.standing } = challenge);
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* This challenge as a string
|
|
109
|
-
* @type {string}
|
|
110
|
-
*/
|
|
111
|
-
this.asString = this.toString();
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* Get whether or not the challenge is daily
|
|
116
|
-
* @returns {boolean} whether the category is daily
|
|
117
|
-
*/
|
|
118
|
-
isDaily() {
|
|
119
|
-
return this.category.toLowerCase() === 'day';
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Get whether or not this is the weekly root challenge
|
|
124
|
-
* @returns {boolean} whether this is the root challenge
|
|
125
|
-
*/
|
|
126
|
-
isRootChallenge() {
|
|
127
|
-
return this.category.toLowerCase() === 'week_root';
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* Get whether or not the challenge has expired
|
|
132
|
-
* @returns {boolean} Whether or not the challenge has expired
|
|
133
|
-
*/
|
|
134
|
-
isExpired() {
|
|
135
|
-
return fromNow(this.expiry) < 0;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
/**
|
|
139
|
-
* Get a string indicating how much time is left before the challenge expires
|
|
140
|
-
* @returns {string} The time left before the challenge expires
|
|
141
|
-
*/
|
|
142
|
-
getEndString() {
|
|
143
|
-
const timeDelta = fromNow(this.expiry);
|
|
144
|
-
return timeDeltaToString(timeDelta);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* The conclave challenge's string representation
|
|
149
|
-
* @returns {string} The string representation of the conclave challenge
|
|
150
|
-
*/
|
|
151
|
-
toString() {
|
|
152
|
-
return `${this.description} on ${this.mode} ${this.amount} times in a ${this.category}`;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import mdConfig from '../supporting/MarkdownSettings.js';
|
|
2
|
-
|
|
3
|
-
import WorldstateObject from './WorldstateObject.js';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Represents enemy construction progress
|
|
7
|
-
* @augments {WorldstateObject}
|
|
8
|
-
*/
|
|
9
|
-
export default class ConstructionProgress extends WorldstateObject {
|
|
10
|
-
/**
|
|
11
|
-
* @param {object} data The construction data
|
|
12
|
-
*/
|
|
13
|
-
constructor(data) {
|
|
14
|
-
super(data);
|
|
15
|
-
|
|
16
|
-
this.fomorianProgress = (data.ProjectPct[0] || 0.0).toFixed(2);
|
|
17
|
-
this.razorbackProgress = (data.ProjectPct[1] || 0.0).toFixed(2);
|
|
18
|
-
this.unknownProgress = (data.ProjectPct[2] || 0.0).toFixed(2);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* The alert's string representation
|
|
23
|
-
* @returns {string} string representation
|
|
24
|
-
*/
|
|
25
|
-
toString() {
|
|
26
|
-
return (
|
|
27
|
-
`${mdConfig.codeBlock}Fomorian: ${this.fomorianProgress}%${mdConfig.lineEnd}Razorback: ` +
|
|
28
|
-
`${this.razorbackProgress}%${mdConfig.lineEnd}Unknown: ${this.unknownProgress}%${mdConfig.blockEnd}`
|
|
29
|
-
);
|
|
30
|
-
}
|
|
31
|
-
}
|
package/lib/models/DailyDeal.js
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { parseDate, timeDeltaToString, fromNow, languageString } from 'warframe-worldstate-data/utilities';
|
|
2
|
-
|
|
3
|
-
import mdConfig from '../supporting/MarkdownSettings.js';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Represents a daily deal
|
|
7
|
-
*/
|
|
8
|
-
export default class DailyDeal {
|
|
9
|
-
/**
|
|
10
|
-
* @param {object} data The deal data
|
|
11
|
-
* @param {object} deps The dependencies object
|
|
12
|
-
* @param {string} deps.locale Locale to use for translations
|
|
13
|
-
*/
|
|
14
|
-
constructor(data, { locale = 'en' } = { locale: 'en' }) {
|
|
15
|
-
/**
|
|
16
|
-
* The item that is being offered in the sale
|
|
17
|
-
* @type {string}
|
|
18
|
-
*/
|
|
19
|
-
this.item = languageString(data.StoreItem, locale);
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* The uniqueName for the item on sale.
|
|
23
|
-
* @type {string}
|
|
24
|
-
*/
|
|
25
|
-
this.uniqueName = data.StoreItem;
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* The date and time at which the deal will expire
|
|
29
|
-
* @type {Date}
|
|
30
|
-
*/
|
|
31
|
-
this.expiry = parseDate(data.Expiry);
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* The date and time at which the deal will or did start
|
|
35
|
-
* @type {Date}
|
|
36
|
-
*/
|
|
37
|
-
this.activation = parseDate(data.Activation);
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* The item's original price
|
|
41
|
-
* @type {number}
|
|
42
|
-
*/
|
|
43
|
-
this.originalPrice = data.OriginalPrice;
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* The item's discounted price
|
|
47
|
-
* @type {number}
|
|
48
|
-
*/
|
|
49
|
-
this.salePrice = data.SalePrice;
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* The number of available items on sale
|
|
53
|
-
* @type {number}
|
|
54
|
-
*/
|
|
55
|
-
this.total = data.AmountTotal;
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* The number of items that have already been sold
|
|
59
|
-
* @type {number}
|
|
60
|
-
*/
|
|
61
|
-
this.sold = data.AmountSold;
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Unique identifier for this deal built from the end time and item
|
|
65
|
-
* @type {string}
|
|
66
|
-
*/
|
|
67
|
-
this.id = `${data.StoreItem.split('/').slice(-1)[0]}${this.expiry.getTime()}`;
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* ETA string (at time of object creation)
|
|
71
|
-
* @type {string}
|
|
72
|
-
*/
|
|
73
|
-
this.eta = this.getETAString();
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Percent discount
|
|
77
|
-
* @type {number}
|
|
78
|
-
*/
|
|
79
|
-
this.discount = data.Discount;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Get a string indicating how much time is left before the deal expires
|
|
84
|
-
* @returns {string} estimated time remaining on the deal
|
|
85
|
-
*/
|
|
86
|
-
getETAString() {
|
|
87
|
-
return timeDeltaToString(fromNow(this.expiry));
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Returns a string representation of the daily deal
|
|
92
|
-
* @returns {string} The string representation of the daily deal
|
|
93
|
-
*/
|
|
94
|
-
toString() {
|
|
95
|
-
const lines = [
|
|
96
|
-
`Daily Deal: ${this.item}`,
|
|
97
|
-
`${this.salePrice}p (original ${this.originalPrice}p)`,
|
|
98
|
-
`${this.sold} / ${this.total} sold`,
|
|
99
|
-
`Expires in ${this.getETAString()}`,
|
|
100
|
-
];
|
|
101
|
-
return lines.join(mdConfig.lineEnd);
|
|
102
|
-
}
|
|
103
|
-
}
|