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.
Files changed (311) hide show
  1. package/dist/Alert-BS8PWPP3.d.ts +45 -0
  2. package/dist/Alert-DH1kglDU.js +52 -0
  3. package/dist/Archidemea-C0EMRUKc.js +59 -0
  4. package/dist/Archidemea-DOh4trTM.d.ts +55 -0
  5. package/dist/Calendar-CgEkm6e6.d.ts +78 -0
  6. package/dist/Calendar-CtzZQXj7.js +81 -0
  7. package/dist/CambionCycle-C6NHUjOU.js +30 -0
  8. package/dist/CambionCycle-uEBpbMim.d.ts +23 -0
  9. package/dist/CetusCycle-DIZdevob.js +90 -0
  10. package/dist/CetusCycle-ooMM7hkg.d.ts +49 -0
  11. package/dist/ChallengeInstance-Bi2zg4q-.d.ts +53 -0
  12. package/dist/ChallengeInstance-DHwTTwMH.js +48 -0
  13. package/dist/ConclaveChallenge-Dp5yOxVu.js +80 -0
  14. package/dist/ConclaveChallenge-JbcEcL4s.d.ts +76 -0
  15. package/dist/ConstructionProgress-DfcpaGL5.js +25 -0
  16. package/dist/ConstructionProgress-FAySTEod.d.ts +19 -0
  17. package/dist/DailyDeal-BGqZAp-j.js +66 -0
  18. package/dist/DailyDeal-Na-EaiFS.d.ts +66 -0
  19. package/dist/DarkSector-BQ97_8h6.js +138 -0
  20. package/dist/DarkSector-zkCUywz1.d.ts +142 -0
  21. package/dist/DarkSectorBattle-5PyUPhxY.js +53 -0
  22. package/dist/DarkSectorBattle-DY33Bfuq.d.ts +53 -0
  23. package/dist/Dependency-DkOHLql6.d.ts +38 -0
  24. package/dist/DuviriChoice-DRNDUbyc.js +22 -0
  25. package/dist/DuviriChoice-MIHsOBS7.d.ts +18 -0
  26. package/dist/DuviriCycle-B0zp0KxS.d.ts +25 -0
  27. package/dist/DuviriCycle-CmHJStJo.js +58 -0
  28. package/dist/EarthCycle-B9aIOAEY.js +75 -0
  29. package/dist/EarthCycle-RELuZL01.d.ts +60 -0
  30. package/dist/ExternalMission-DCzJkPC8.d.ts +49 -0
  31. package/dist/Fissure-7yFmOet3.js +85 -0
  32. package/dist/Fissure-Bj61i8dc.d.ts +78 -0
  33. package/dist/FlashSale-BxVI0J6A.js +75 -0
  34. package/dist/FlashSale-PDG4uQq4.d.ts +71 -0
  35. package/dist/GlobalUpgrade-BRQXf3JM.d.ts +55 -0
  36. package/dist/GlobalUpgrade-B_TKK1m_.js +58 -0
  37. package/dist/ImgCdn-BnbJ9K-0.js +7 -0
  38. package/dist/Invasion-BMic1K12.js +110 -0
  39. package/dist/Invasion-BskF60zh.d.ts +113 -0
  40. package/dist/Kinepage-CRRKVulq.d.ts +22 -0
  41. package/dist/Kinepage-iWFwTZtr.js +24 -0
  42. package/dist/Kuva-DqkxvPUg.js +85 -0
  43. package/dist/KuvaLogEntry-d5fskHaK.d.ts +21 -0
  44. package/dist/MidrathCycle-BfQtfG4p.d.ts +25 -0
  45. package/dist/MidrathCycle-DDfT7zVx.js +69 -0
  46. package/dist/Mission-CWE16ouO.d.ts +138 -0
  47. package/dist/Mission-ZuSsAYNm.js +140 -0
  48. package/dist/News-7F8Nbp4A.js +122 -0
  49. package/dist/News-BfAgbYSY.d.ts +101 -0
  50. package/dist/Nightwave-DDX0_zJU.js +60 -0
  51. package/dist/Nightwave-_0RzWikV.d.ts +59 -0
  52. package/dist/NightwaveChallenge-DDdrqvge.d.ts +51 -0
  53. package/dist/NightwaveChallenge-DwilvXfi.js +53 -0
  54. package/dist/PersistentEnemy-DRcO4V2r.d.ts +79 -0
  55. package/dist/PersistentEnemy-axYxYzv_.js +76 -0
  56. package/dist/Reward-5VIpHu9A.d.ts +68 -0
  57. package/dist/Reward-OauJ45jJ.js +73 -0
  58. package/dist/RewardData-qEvfHYxA.js +76 -0
  59. package/dist/RewardTypes-Cfq9FeIl.js +328 -0
  60. package/dist/RewardTypes-DYaUn77A.d.ts +34 -0
  61. package/dist/SentientOutpost-B2KZUJ7H.js +65 -0
  62. package/dist/SentientOutpost-DmlClvel.d.ts +47 -0
  63. package/dist/Simaris-B9Mvso2q.js +35 -0
  64. package/dist/Simaris-Bc-jNhED.d.ts +37 -0
  65. package/dist/Sortie-DPv-7SQ-.d.ts +60 -0
  66. package/dist/Sortie-DcoAnEaJ.js +73 -0
  67. package/dist/SortieVariant-BFkYiBho.d.ts +49 -0
  68. package/dist/SortieVariant-eWuI1uh9.js +51 -0
  69. package/dist/SteelPathOffering-DyAzr3P9.js +85 -0
  70. package/dist/SteelPathOffering-OHNTCFo5.d.ts +38 -0
  71. package/dist/SyndicateJob-BK7OMLmv.js +141 -0
  72. package/dist/SyndicateJob-DOtXWjRF.d.ts +76 -0
  73. package/dist/SyndicateMission-5PZIEM8P.js +66 -0
  74. package/dist/SyndicateMission-DmGG5lGy.d.ts +58 -0
  75. package/dist/Tmp-DkQq1arD.js +21 -0
  76. package/dist/VallisCycle-BX8yyKx3.js +76 -0
  77. package/dist/VallisCycle-BXcmzqqG.d.ts +31 -0
  78. package/dist/VoidTrader-CbLMfEVj.js +77 -0
  79. package/dist/VoidTrader-CihLWgSV.d.ts +74 -0
  80. package/dist/VoidTraderItem-BzeD-S6-.js +38 -0
  81. package/dist/VoidTraderItem-CkYAKAEn.d.ts +43 -0
  82. package/dist/VoidTraderSchedule-C-K8Zdfk.js +14 -0
  83. package/dist/VoidTraderSchedule-DKDtu-9d.d.ts +16 -0
  84. package/dist/WeeklyChallenge-C6sc4j7i.d.ts +20 -0
  85. package/dist/WeeklyChallenge-MzUEZAjv.js +21 -0
  86. package/dist/WorldEvent-BS9QHG_f.d.ts +205 -0
  87. package/dist/WorldEvent-nis9w9cn.js +213 -0
  88. package/dist/WorldState-DNSPrZR_.d.ts +257 -0
  89. package/dist/WorldState-uppX0Xt1.js +330 -0
  90. package/dist/WorldstateObject-BSTYuZwm.js +54 -0
  91. package/dist/WorldstateObject-wfRTeGpm.d.ts +48 -0
  92. package/dist/ZarimanCycle-BJ84QUFg.js +81 -0
  93. package/dist/ZarimanCycle-CjNQXhVO.d.ts +45 -0
  94. package/dist/lib/Tmp.d.ts +24 -0
  95. package/dist/lib/Tmp.js +6 -0
  96. package/dist/lib/WorldState.d.ts +47 -0
  97. package/dist/lib/WorldState.js +49 -0
  98. package/dist/lib/models/Alert.d.ts +8 -0
  99. package/dist/lib/models/Alert.js +9 -0
  100. package/dist/lib/models/Archidemea.d.ts +2 -0
  101. package/dist/lib/models/Archidemea.js +3 -0
  102. package/dist/lib/models/Calendar.d.ts +3 -0
  103. package/dist/lib/models/Calendar.js +4 -0
  104. package/dist/lib/models/CambionCycle.d.ts +4 -0
  105. package/dist/lib/models/CambionCycle.js +4 -0
  106. package/dist/lib/models/CetusCycle.d.ts +3 -0
  107. package/dist/lib/models/CetusCycle.js +4 -0
  108. package/dist/lib/models/ChallengeInstance.d.ts +4 -0
  109. package/dist/lib/models/ChallengeInstance.js +3 -0
  110. package/dist/lib/models/ConclaveChallenge.d.ts +5 -0
  111. package/dist/lib/models/ConclaveChallenge.js +4 -0
  112. package/dist/lib/models/ConstructionProgress.d.ts +3 -0
  113. package/dist/lib/models/ConstructionProgress.js +4 -0
  114. package/dist/lib/models/DailyDeal.d.ts +5 -0
  115. package/dist/lib/models/DailyDeal.js +4 -0
  116. package/dist/lib/models/DarkSector.d.ts +9 -0
  117. package/dist/lib/models/DarkSector.js +10 -0
  118. package/dist/lib/models/DarkSectorBattle.d.ts +3 -0
  119. package/dist/lib/models/DarkSectorBattle.js +3 -0
  120. package/dist/lib/models/DuviriCycle.d.ts +4 -0
  121. package/dist/lib/models/DuviriCycle.js +4 -0
  122. package/dist/lib/models/EarthCycle.d.ts +3 -0
  123. package/dist/lib/models/EarthCycle.js +4 -0
  124. package/dist/lib/models/Fissure.d.ts +5 -0
  125. package/dist/lib/models/Fissure.js +4 -0
  126. package/dist/lib/models/FlashSale.d.ts +5 -0
  127. package/dist/lib/models/FlashSale.js +4 -0
  128. package/dist/lib/models/GlobalUpgrade.d.ts +5 -0
  129. package/dist/lib/models/GlobalUpgrade.js +4 -0
  130. package/dist/lib/models/Invasion.d.ts +7 -0
  131. package/dist/lib/models/Invasion.js +8 -0
  132. package/dist/lib/models/Kinepage.d.ts +2 -0
  133. package/dist/lib/models/Kinepage.js +3 -0
  134. package/dist/lib/models/Kuva.d.ts +22 -0
  135. package/dist/lib/models/Kuva.js +3 -0
  136. package/dist/lib/models/MidrathCycle.d.ts +3 -0
  137. package/dist/lib/models/MidrathCycle.js +4 -0
  138. package/dist/lib/models/Mission.d.ts +6 -0
  139. package/dist/lib/models/Mission.js +7 -0
  140. package/dist/lib/models/News.d.ts +3 -0
  141. package/dist/lib/models/News.js +5 -0
  142. package/dist/lib/models/Nightwave.d.ts +4 -0
  143. package/dist/lib/models/Nightwave.js +5 -0
  144. package/dist/lib/models/NightwaveChallenge.d.ts +3 -0
  145. package/dist/lib/models/NightwaveChallenge.js +4 -0
  146. package/dist/lib/models/PersistentEnemy.d.ts +3 -0
  147. package/dist/lib/models/PersistentEnemy.js +4 -0
  148. package/dist/lib/models/Reward.d.ts +5 -0
  149. package/dist/lib/models/Reward.js +6 -0
  150. package/dist/lib/models/SentientOutpost.d.ts +4 -0
  151. package/dist/lib/models/SentientOutpost.js +3 -0
  152. package/dist/lib/models/Simaris.d.ts +4 -0
  153. package/dist/lib/models/Simaris.js +3 -0
  154. package/dist/lib/models/Sortie.d.ts +9 -0
  155. package/dist/lib/models/Sortie.js +10 -0
  156. package/dist/lib/models/SortieVariant.d.ts +4 -0
  157. package/dist/lib/models/SortieVariant.js +3 -0
  158. package/dist/lib/models/SteelPathOffering.d.ts +2 -0
  159. package/dist/lib/models/SteelPathOffering.js +3 -0
  160. package/dist/lib/models/SyndicateJob.d.ts +5 -0
  161. package/dist/lib/models/SyndicateJob.js +4 -0
  162. package/dist/lib/models/SyndicateMission.d.ts +6 -0
  163. package/dist/lib/models/SyndicateMission.js +5 -0
  164. package/dist/lib/models/VallisCycle.d.ts +3 -0
  165. package/dist/lib/models/VallisCycle.js +4 -0
  166. package/dist/lib/models/VoidTrader.d.ts +7 -0
  167. package/dist/lib/models/VoidTrader.js +6 -0
  168. package/dist/lib/models/VoidTraderItem.d.ts +4 -0
  169. package/dist/lib/models/VoidTraderItem.js +3 -0
  170. package/dist/lib/models/VoidTraderSchedule.d.ts +4 -0
  171. package/dist/lib/models/VoidTraderSchedule.js +3 -0
  172. package/dist/lib/models/WeeklyChallenge.d.ts +6 -0
  173. package/dist/lib/models/WeeklyChallenge.js +5 -0
  174. package/dist/lib/models/WorldEvent.d.ts +8 -0
  175. package/dist/lib/models/WorldEvent.js +9 -0
  176. package/dist/lib/models/WorldstateObject.d.ts +2 -0
  177. package/dist/lib/models/WorldstateObject.js +3 -0
  178. package/dist/lib/models/ZarimanCycle.d.ts +3 -0
  179. package/dist/lib/models/ZarimanCycle.js +4 -0
  180. package/dist/lib/supporting/Dependency.d.ts +3 -0
  181. package/dist/lib/supporting/Dependency.js +1 -0
  182. package/dist/lib/supporting/DuviriChoice.d.ts +3 -0
  183. package/dist/lib/supporting/DuviriChoice.js +3 -0
  184. package/dist/lib/supporting/ExternalMission.d.ts +2 -0
  185. package/dist/lib/supporting/ExternalMission.js +1 -0
  186. package/dist/lib/supporting/ImgCdn.d.ts +6 -0
  187. package/dist/lib/supporting/ImgCdn.js +3 -0
  188. package/dist/lib/supporting/KuvaLogEntry.d.ts +2 -0
  189. package/dist/lib/supporting/KuvaLogEntry.js +1 -0
  190. package/dist/lib/supporting/RewardData.d.ts +11 -0
  191. package/dist/lib/supporting/RewardData.js +3 -0
  192. package/dist/lib/supporting/RewardTypes.d.ts +2 -0
  193. package/dist/lib/supporting/RewardTypes.js +5 -0
  194. package/dist/main.d.ts +47 -0
  195. package/dist/main.js +49 -0
  196. package/dist/resources/.gitkeep +1 -0
  197. package/dist/resources/alt_helmet_thumb.png +0 -0
  198. package/dist/resources/aura_thumb.png +0 -0
  199. package/dist/resources/clantech_thmb.png +0 -0
  200. package/dist/resources/endo_thumb.png +0 -0
  201. package/dist/resources/exilus_thumb.png +0 -0
  202. package/dist/resources/forma_thumb.png +0 -0
  203. package/dist/resources/glaive_thumb.png +0 -0
  204. package/dist/resources/mutalist_thumb.png +0 -0
  205. package/dist/resources/nightmare_thumb.png +0 -0
  206. package/dist/resources/nitain_thumb.png +0 -0
  207. package/dist/resources/potato_thumb.png +0 -0
  208. package/dist/resources/resource_thumb.png +0 -0
  209. package/dist/resources/vauban_thumb.png +0 -0
  210. package/dist/resources/weapon_skin_thumb.png +0 -0
  211. package/package.json +9 -11
  212. package/lib/WorldState.js +0 -404
  213. package/lib/models/Alert.js +0 -90
  214. package/lib/models/Calendar.js +0 -74
  215. package/lib/models/CambionCycle.js +0 -32
  216. package/lib/models/CetusCycle.js +0 -126
  217. package/lib/models/ChallengeInstance.js +0 -57
  218. package/lib/models/ConclaveChallenge.js +0 -154
  219. package/lib/models/ConstructionProgress.js +0 -31
  220. package/lib/models/DailyDeal.js +0 -103
  221. package/lib/models/DarkSector.js +0 -154
  222. package/lib/models/DarkSectorBattle.js +0 -56
  223. package/lib/models/DeepArchidemea.js +0 -33
  224. package/lib/models/DuviriCycle.js +0 -65
  225. package/lib/models/EarthCycle.js +0 -119
  226. package/lib/models/Fissure.js +0 -136
  227. package/lib/models/FlashSale.js +0 -123
  228. package/lib/models/GlobalUpgrade.js +0 -122
  229. package/lib/models/Invasion.js +0 -183
  230. package/lib/models/Kinepage.js +0 -11
  231. package/lib/models/Kuva.js +0 -122
  232. package/lib/models/MidrathCycle.js +0 -94
  233. package/lib/models/Mission.js +0 -179
  234. package/lib/models/News.js +0 -174
  235. package/lib/models/Nightwave.js +0 -91
  236. package/lib/models/NightwaveChallenge.js +0 -63
  237. package/lib/models/PersistentEnemy.js +0 -100
  238. package/lib/models/Reward.js +0 -111
  239. package/lib/models/SentientOutpost.js +0 -68
  240. package/lib/models/Simaris.js +0 -47
  241. package/lib/models/Sortie.js +0 -143
  242. package/lib/models/SortieVariant.js +0 -57
  243. package/lib/models/SteelPathOffering.js +0 -99
  244. package/lib/models/SyndicateJob.js +0 -185
  245. package/lib/models/SyndicateMission.js +0 -111
  246. package/lib/models/VallisCycle.js +0 -125
  247. package/lib/models/VoidTrader.js +0 -134
  248. package/lib/models/VoidTraderItem.js +0 -24
  249. package/lib/models/VoidTraderSchedule.js +0 -8
  250. package/lib/models/WeeklyChallenge.js +0 -27
  251. package/lib/models/WorldEvent.js +0 -326
  252. package/lib/models/WorldstateObject.js +0 -106
  253. package/lib/models/ZarimanCycle.js +0 -124
  254. package/lib/supporting/Dependency.js +0 -6
  255. package/lib/supporting/DuviriChoice.js +0 -16
  256. package/lib/supporting/ExternalMission.js +0 -13
  257. package/lib/supporting/ImgCdn.js +0 -9
  258. package/lib/supporting/MarkdownSettings.js +0 -30
  259. package/lib/supporting/RewardData.js +0 -77
  260. package/lib/supporting/RewardTypes.js +0 -327
  261. package/main.js +0 -4
  262. package/types/lib/WorldState.d.ts +0 -199
  263. package/types/lib/models/Alert.d.ts +0 -53
  264. package/types/lib/models/Calendar.d.ts +0 -16
  265. package/types/lib/models/CambionCycle.d.ts +0 -20
  266. package/types/lib/models/CetusCycle.d.ts +0 -47
  267. package/types/lib/models/ChallengeInstance.d.ts +0 -42
  268. package/types/lib/models/ConclaveChallenge.d.ts +0 -90
  269. package/types/lib/models/ConstructionProgress.d.ts +0 -14
  270. package/types/lib/models/DailyDeal.d.ts +0 -78
  271. package/types/lib/models/DarkSector.d.ts +0 -121
  272. package/types/lib/models/DarkSectorBattle.d.ts +0 -44
  273. package/types/lib/models/DeepArchidemea.d.ts +0 -8
  274. package/types/lib/models/DuviriCycle.d.ts +0 -21
  275. package/types/lib/models/EarthCycle.d.ts +0 -64
  276. package/types/lib/models/Fissure.d.ts +0 -83
  277. package/types/lib/models/FlashSale.d.ts +0 -86
  278. package/types/lib/models/GlobalUpgrade.d.ts +0 -86
  279. package/types/lib/models/Invasion.d.ts +0 -124
  280. package/types/lib/models/Kinepage.d.ts +0 -6
  281. package/types/lib/models/Kuva.d.ts +0 -60
  282. package/types/lib/models/MidrathCycle.d.ts +0 -39
  283. package/types/lib/models/Mission.d.ts +0 -136
  284. package/types/lib/models/News.d.ts +0 -104
  285. package/types/lib/models/Nightwave.d.ts +0 -53
  286. package/types/lib/models/NightwaveChallenge.d.ts +0 -45
  287. package/types/lib/models/PersistentEnemy.d.ts +0 -70
  288. package/types/lib/models/Reward.d.ts +0 -95
  289. package/types/lib/models/SentientOutpost.d.ts +0 -54
  290. package/types/lib/models/Simaris.d.ts +0 -33
  291. package/types/lib/models/Sortie.d.ts +0 -72
  292. package/types/lib/models/SortieVariant.d.ts +0 -43
  293. package/types/lib/models/SteelPathOffering.d.ts +0 -19
  294. package/types/lib/models/SyndicateJob.d.ts +0 -72
  295. package/types/lib/models/SyndicateMission.d.ts +0 -56
  296. package/types/lib/models/VallisCycle.d.ts +0 -53
  297. package/types/lib/models/VoidTrader.d.ts +0 -45
  298. package/types/lib/models/VoidTraderItem.d.ts +0 -25
  299. package/types/lib/models/VoidTraderSchedule.d.ts +0 -7
  300. package/types/lib/models/WeeklyChallenge.d.ts +0 -12
  301. package/types/lib/models/WorldEvent.d.ts +0 -216
  302. package/types/lib/models/WorldstateObject.d.ts +0 -120
  303. package/types/lib/models/ZarimanCycle.d.ts +0 -42
  304. package/types/lib/supporting/Dependency.d.ts +0 -7
  305. package/types/lib/supporting/DuviriChoice.d.ts +0 -9
  306. package/types/lib/supporting/ExternalMission.d.ts +0 -48
  307. package/types/lib/supporting/ImgCdn.d.ts +0 -3
  308. package/types/lib/supporting/MarkdownSettings.d.ts +0 -30
  309. package/types/lib/supporting/RewardData.d.ts +0 -9
  310. package/types/lib/supporting/RewardTypes.d.ts +0 -8
  311. package/types/main.d.ts +0 -3
@@ -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
- }
@@ -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
- }
@@ -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
- }
@@ -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
- }