@eso-status/forum-message 1.0.13 → 1.0.14

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.
@@ -57,6 +57,11 @@ export default class ForumMessageElement {
57
57
  * @return Moment[] Dates of raw data
58
58
  */
59
59
  static getDate(rawDate: string): Moment[];
60
+ private static getDateWithDayIndex;
61
+ private static getDateWithHours;
62
+ private static getDateWithDayNumber;
63
+ private static getMatchedNumber;
64
+ private static buildUtcDate;
60
65
  /**
61
66
  * Methode used to get type of slug
62
67
  *
@@ -1,12 +1,34 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var moment = require("moment");
6
+ const moment_1 = __importDefault(require("moment"));
7
+ const orderedSlugs = [
8
+ 'server_pc_na',
9
+ 'server_pc_eu',
10
+ 'server_xbox_na',
11
+ 'server_xbox_eu',
12
+ 'server_ps_na',
13
+ 'server_ps_eu',
14
+ 'server_pc_pts',
15
+ 'service_web_site',
16
+ 'service_web_forum',
17
+ 'service_store_crown',
18
+ 'service_store_eso',
19
+ 'service_system_account',
20
+ ];
21
+ const time12h = String.raw `\d{1,2}:\d{1,2}[a-zA-Z]{1,2}`;
22
+ const monthAndDay = String.raw `([a-zA-Z]{3,9}) (\d{1,2}) ?, `;
23
+ const utcTime = String.raw `(\d{1,2}):(\d{1,2}) UTC`;
24
+ const dash = '[–|-]';
25
+ const edtFirstRange = new RegExp(`${monthAndDay}${time12h} E[D|S]T \\(${utcTime}\\) ${dash} ${time12h} E[D|S]T \\(${utcTime}\\)`);
26
+ const utcFirstRange = new RegExp(`${monthAndDay}${utcTime} \\(${time12h} EDT\\) ${dash} ${utcTime} \\(${time12h} EDT\\)`);
4
27
  /**
5
28
  * Class with methode for ForumMessage element
6
29
  */
7
- var ForumMessageElement = /** @class */ (function () {
8
- function ForumMessageElement() {
9
- }
30
+ // eslint-disable-next-line @typescript-eslint/no-extraneous-class -- the published 1.x API exposes static methods, called as is by @eso-status/api 1.x
31
+ class ForumMessageElement {
10
32
  /**
11
33
  * Methode used to get slugs list of raw content
12
34
  *
@@ -16,70 +38,11 @@ var ForumMessageElement = /** @class */ (function () {
16
38
  * @param rawData string Raw data
17
39
  * @return Slug[] List of slug
18
40
  */
19
- ForumMessageElement.getSlug = function (rawData) {
20
- var slugs = [];
21
- if (ForumMessageElement.isType('server', rawData)
22
- && ForumMessageElement.isSupport('pc', rawData)
23
- && ForumMessageElement.isZone('na', rawData)) {
24
- slugs.push('server_pc_na');
25
- }
26
- if (ForumMessageElement.isType('server', rawData)
27
- && ForumMessageElement.isSupport('pc', rawData)
28
- && ForumMessageElement.isZone('eu', rawData)) {
29
- slugs.push('server_pc_eu');
30
- }
31
- if (ForumMessageElement.isType('server', rawData)
32
- && ForumMessageElement.isSupport('xbox', rawData)
33
- && ForumMessageElement.isZone('na', rawData)) {
34
- slugs.push('server_xbox_na');
35
- }
36
- if (ForumMessageElement.isType('server', rawData)
37
- && ForumMessageElement.isSupport('xbox', rawData)
38
- && ForumMessageElement.isZone('eu', rawData)) {
39
- slugs.push('server_xbox_eu');
40
- }
41
- if (ForumMessageElement.isType('server', rawData)
42
- && ForumMessageElement.isSupport('ps', rawData)
43
- && ForumMessageElement.isZone('na', rawData)) {
44
- slugs.push('server_ps_na');
45
- }
46
- if (ForumMessageElement.isType('server', rawData)
47
- && ForumMessageElement.isSupport('ps', rawData)
48
- && ForumMessageElement.isZone('eu', rawData)) {
49
- slugs.push('server_ps_eu');
50
- }
51
- if (ForumMessageElement.isType('server', rawData)
52
- && ForumMessageElement.isSupport('pc', rawData)
53
- && ForumMessageElement.isZone('pts', rawData)) {
54
- slugs.push('server_pc_pts');
55
- }
56
- if (ForumMessageElement.isType('service', rawData)
57
- && ForumMessageElement.isSupport('web', rawData)
58
- && ForumMessageElement.isZone('site', rawData)) {
59
- slugs.push('service_web_site');
60
- }
61
- if (ForumMessageElement.isType('service', rawData)
62
- && ForumMessageElement.isSupport('web', rawData)
63
- && ForumMessageElement.isZone('forum', rawData)) {
64
- slugs.push('service_web_forum');
65
- }
66
- if (ForumMessageElement.isType('service', rawData)
67
- && ForumMessageElement.isSupport('store', rawData)
68
- && ForumMessageElement.isZone('crown', rawData)) {
69
- slugs.push('service_store_crown');
70
- }
71
- if (ForumMessageElement.isType('service', rawData)
72
- && ForumMessageElement.isSupport('store', rawData)
73
- && ForumMessageElement.isZone('eso', rawData)) {
74
- slugs.push('service_store_eso');
75
- }
76
- if (ForumMessageElement.isType('service', rawData)
77
- && ForumMessageElement.isSupport('system', rawData)
78
- && ForumMessageElement.isZone('account', rawData)) {
79
- slugs.push('service_system_account');
80
- }
81
- return slugs;
82
- };
41
+ static getSlug(rawData) {
42
+ return orderedSlugs.filter((slug) => ForumMessageElement.isType(ForumMessageElement.getType(slug), rawData) &&
43
+ ForumMessageElement.isSupport(ForumMessageElement.getSupport(slug), rawData) &&
44
+ ForumMessageElement.isZone(ForumMessageElement.getZone(slug), rawData));
45
+ }
83
46
  /**
84
47
  * Methode used to determinate service type
85
48
  *
@@ -90,24 +53,21 @@ var ForumMessageElement = /** @class */ (function () {
90
53
  * @param rawData string Raw data
91
54
  * @return boolean Check result
92
55
  */
93
- ForumMessageElement.isType = function (type, rawData) {
56
+ static isType(type, rawData) {
94
57
  if (type === 'server') {
95
- return rawData.includes('megaserver')
96
- || rawData.includes('NA megaservers')
97
- || rawData.includes('EU megaservers')
98
- || rawData.includes('the megaservers')
99
- || rawData.includes('PTS')
100
- || rawData.includes('PlayStation')
101
- || rawData.includes('Xbox Live');
102
- }
103
- if (type === 'service') {
104
- return rawData.includes('ESO Store')
105
- || rawData.includes('Account System')
106
- || rawData.includes('account system')
107
- || rawData.includes('ESO Website');
108
- }
109
- return false;
110
- };
58
+ return (rawData.includes('megaserver') ||
59
+ rawData.includes('NA megaservers') ||
60
+ rawData.includes('EU megaservers') ||
61
+ rawData.includes('the megaservers') ||
62
+ rawData.includes('PTS') ||
63
+ rawData.includes('PlayStation') ||
64
+ rawData.includes('Xbox Live'));
65
+ }
66
+ return (rawData.includes('ESO Store') ||
67
+ rawData.includes('Account System') ||
68
+ rawData.includes('account system') ||
69
+ rawData.includes('ESO Website'));
70
+ }
111
71
  /**
112
72
  * Methode used to determinate service support
113
73
  *
@@ -118,40 +78,40 @@ var ForumMessageElement = /** @class */ (function () {
118
78
  * @param rawData string Raw data
119
79
  * @return boolean Check result
120
80
  */
121
- ForumMessageElement.isSupport = function (support, rawData) {
122
- if (support === 'xbox') { // OK
123
- return rawData.includes('Xbox')
124
- || rawData.includes('· NA megaservers')
125
- || rawData.includes('· EU megaservers')
126
- || rawData.includes('the megaservers');
127
- }
128
- if (support === 'ps') { // OK
129
- return rawData.includes('PlayStation')
130
- || rawData.includes('· NA megaservers')
131
- || rawData.includes('· EU megaservers')
132
- || rawData.includes('the megaservers');
133
- }
134
- if (support === 'pc') { // OK
135
- return rawData.includes('PC/Mac')
136
- || rawData.includes('PTS')
137
- || rawData.includes('· NA megaservers')
138
- || rawData.includes('· EU megaservers')
139
- || rawData.includes('the megaservers');
81
+ static isSupport(support, rawData) {
82
+ if (support === 'xbox') {
83
+ // OK
84
+ return (rawData.includes('Xbox') ||
85
+ rawData.includes('· NA megaservers') ||
86
+ rawData.includes('· EU megaservers') ||
87
+ rawData.includes('the megaservers'));
88
+ }
89
+ if (support === 'ps') {
90
+ // OK
91
+ return (rawData.includes('PlayStation') ||
92
+ rawData.includes('· NA megaservers') ||
93
+ rawData.includes('· EU megaservers') ||
94
+ rawData.includes('the megaservers'));
95
+ }
96
+ if (support === 'pc') {
97
+ // OK
98
+ return (rawData.includes('PC/Mac') ||
99
+ rawData.includes('PTS') ||
100
+ rawData.includes('· NA megaservers') ||
101
+ rawData.includes('· EU megaservers') ||
102
+ rawData.includes('the megaservers'));
140
103
  }
141
104
  if (support === 'web') {
142
105
  return rawData.includes('ESO Website');
143
106
  }
144
- if (support === 'store') { // OK
145
- return rawData.includes('Crown Store')
146
- || rawData.includes('ESO Store')
147
- || rawData.includes('ESO store');
107
+ if (support === 'store') {
108
+ // OK
109
+ return (rawData.includes('Crown Store') ||
110
+ rawData.includes('ESO Store') ||
111
+ rawData.includes('ESO store'));
148
112
  }
149
- if (support === 'system') { // OK
150
- return rawData.includes('Account System')
151
- || rawData.includes('account system');
152
- }
153
- return false;
154
- };
113
+ return (rawData.includes('Account System') || rawData.includes('account system'));
114
+ }
155
115
  /**
156
116
  * Methode used to determinate service zone
157
117
  *
@@ -162,22 +122,25 @@ var ForumMessageElement = /** @class */ (function () {
162
122
  * @param rawData string Raw data
163
123
  * @return boolean Check result
164
124
  */
165
- ForumMessageElement.isZone = function (zone, rawData) {
166
- if (zone === 'na') { // OK
167
- return rawData.includes('North American')
168
- || rawData.includes('NA')
169
- || rawData.includes('PlayStation™ Network')
170
- || rawData.includes('Xbox Live')
171
- || rawData.includes('the megaservers');
172
- }
173
- if (zone === 'eu') { // OK
174
- return rawData.includes('European')
175
- || rawData.includes('EU')
176
- || rawData.includes('PlayStation™ Network')
177
- || rawData.includes('Xbox Live')
178
- || rawData.includes('the megaservers');
179
- }
180
- if (zone === 'pts') { // OK
125
+ static isZone(zone, rawData) {
126
+ if (zone === 'na') {
127
+ // OK
128
+ return (rawData.includes('North American') ||
129
+ rawData.includes('NA') ||
130
+ rawData.includes('PlayStation™ Network') ||
131
+ rawData.includes('Xbox Live') ||
132
+ rawData.includes('the megaservers'));
133
+ }
134
+ if (zone === 'eu') {
135
+ // OK
136
+ return (rawData.includes('European') ||
137
+ rawData.includes('EU') ||
138
+ rawData.includes('PlayStation™ Network') ||
139
+ rawData.includes('Xbox Live') ||
140
+ rawData.includes('the megaservers'));
141
+ }
142
+ if (zone === 'pts') {
143
+ // OK
181
144
  return rawData.includes('PTS');
182
145
  }
183
146
  if (zone === 'site') {
@@ -189,16 +152,12 @@ var ForumMessageElement = /** @class */ (function () {
189
152
  if (zone === 'crown') {
190
153
  return false;
191
154
  }
192
- if (zone === 'eso') { // OK
193
- return rawData.includes('ESO Store')
194
- || rawData.includes('ESO store');
195
- }
196
- if (zone === 'account') { // OK
197
- return rawData.includes('Account System')
198
- || rawData.includes('account system');
155
+ if (zone === 'eso') {
156
+ // OK
157
+ return rawData.includes('ESO Store') || rawData.includes('ESO store');
199
158
  }
200
- return false;
201
- };
159
+ return (rawData.includes('Account System') || rawData.includes('account system'));
160
+ }
202
161
  /**
203
162
  * Methode used to get dates of raw date
204
163
  *
@@ -208,89 +167,68 @@ var ForumMessageElement = /** @class */ (function () {
208
167
  * @param rawDate string Raw date
209
168
  * @return Moment[] Dates of raw data
210
169
  */
211
- ForumMessageElement.getDate = function (rawDate) {
212
- var list = [];
170
+ static getDate(rawDate) {
213
171
  if (rawDate === '') {
214
- return list;
172
+ return [];
215
173
  }
216
174
  if (rawDate.includes(' at ') && !rawDate.includes('EDT / ')) {
217
- var dateTime = /([a-zA-Z]{6,9}) at [0-9]{1,2}:[0-9]{1,2}[a-zA-Z]{1,2} EDT \(([0-9]{1,2}):([0-9]{1,2}) UTC\)/.exec(rawDate);
218
- var isoWeekDay = Number(moment().day(dateTime && dateTime.length >= 1 ? String(dateTime[1]) : '').format('d'));
219
- // getDateWithDayIndex
220
- list.push(moment()
221
- .utc()
222
- .set('years', moment().get('years'))
223
- .set('months', (moment().utc().isoWeekday() > isoWeekDay
224
- ? moment()
225
- .utc()
226
- .isoWeekday(isoWeekDay)
227
- .add(7, 'day')
228
- .get('months')
229
- : moment()
230
- .utc()
231
- .isoWeekday(isoWeekDay)
232
- .get('months')))
233
- .set('date', (moment().utc().isoWeekday() > isoWeekDay
234
- ? moment()
235
- .utc()
236
- .isoWeekday(isoWeekDay)
237
- .add(7, 'day')
238
- .get('date')
239
- : moment()
240
- .utc()
241
- .isoWeekday(isoWeekDay)
242
- .get('date')))
243
- .set('hours', dateTime && dateTime.length >= 1 ? Number(dateTime[2]) : 0)
244
- .set('minutes', dateTime && dateTime.length >= 1 ? Number(dateTime[3]) : 0)
245
- .set('seconds', 0)
246
- .set('milliseconds', 0)
247
- .utcOffset(0));
248
- }
249
- else if (rawDate.includes('EDT / ') || rawDate.includes('EST / ')) {
250
- var dateTime = /E[D|S]T \/ ([0-9]{1,2}):([0-9]{1,2}) UTC/.exec(rawDate);
251
- // getDateWithHours
252
- list.push(moment()
253
- .utc()
254
- .set('years', moment().get('years'))
255
- .set('months', Number(((moment().utc().get('hours') > (dateTime && dateTime.length >= 1 ? Number(dateTime[1]) : 0)) || (moment().utc().get('hours') === (dateTime && dateTime.length >= 1 ? Number(dateTime[1]) : 0) && (moment().utc().get('minutes') > (dateTime && dateTime.length >= 1 ? Number(dateTime[2]) : 0))) ? moment().utc().add(1, 'day').get('months') : moment().utc().get('months'))))
256
- .set('date', Number(((moment().utc().get('hours') > (dateTime && dateTime.length >= 1 ? Number(dateTime[1]) : 0)) || (moment().utc().get('hours') === (dateTime && dateTime.length >= 1 ? Number(dateTime[1]) : 0) && (moment().utc().get('minutes') > (dateTime && dateTime.length >= 1 ? Number(dateTime[2]) : 0))) ? moment().utc().add(1, 'day').get('date') : moment().utc().get('date'))))
257
- .set('hours', dateTime && dateTime.length >= 1 ? Number(dateTime[1]) : 0)
258
- .set('minutes', dateTime && dateTime.length >= 1 ? Number(dateTime[2]) : 0)
259
- .set('seconds', 0)
260
- .set('milliseconds', 0)
261
- .utcOffset(0));
175
+ return [ForumMessageElement.getDateWithDayIndex(rawDate)];
262
176
  }
263
- else {
264
- var dateTime = /([a-zA-Z]{3,9}) ([0-9]{1,2})[ ]?, [0-9]{1,2}:[0-9]{1,2}[a-zA-Z]{1,2} E[D|S]T \(([0-9]{1,2}):([0-9]{1,2}) UTC\) [–|-] [0-9]{1,2}:[0-9]{1,2}[a-zA-Z]{1,2} E[D|S]T \(([0-9]{1,2}):([0-9]{1,2}) UTC\)/.exec(rawDate);
265
- if (rawDate.includes('UTC (')) {
266
- dateTime = /([a-zA-Z]{3,9}) ([0-9]{1,2})[ ]?, ([0-9]{1,2}):([0-9]{1,2}) UTC \([0-9]{1,2}:[0-9]{1,2}[a-zA-Z]{1,2} EDT\) [–|-] ([0-9]{1,2}):([0-9]{1,2}) UTC \([0-9]{1,2}:[0-9]{1,2}[a-zA-Z]{1,2} EDT\)/.exec(rawDate);
267
- }
268
- var month = Number(moment().month(dateTime && dateTime.length >= 1 ? String(dateTime[1]) : '').format('M')) - 1;
269
- var day = dateTime && dateTime.length >= 1 ? Number(dateTime[2]) : 0;
270
- // getDateWithDayNumber
271
- list.push(moment()
272
- .utc()
273
- .set('years', moment().get('years'))
274
- .set('months', month)
275
- .set('date', day)
276
- .set('hours', dateTime && dateTime.length >= 1 ? Number(dateTime[3]) : 0)
277
- .set('minutes', dateTime && dateTime.length >= 1 ? Number(dateTime[4]) : 0)
278
- .set('seconds', 0)
279
- .set('milliseconds', 0)
280
- .utcOffset(0));
281
- list.push(moment()
282
- .utc()
283
- .set('years', moment().get('years'))
284
- .set('months', month)
285
- .set('date', day)
286
- .set('hours', dateTime && dateTime.length >= 1 ? Number(dateTime[5]) : 0)
287
- .set('minutes', dateTime && dateTime.length >= 1 ? Number(dateTime[6]) : 0)
288
- .set('seconds', 0)
289
- .set('milliseconds', 0)
290
- .utcOffset(0));
177
+ if (rawDate.includes('EDT / ') || rawDate.includes('EST / ')) {
178
+ return [ForumMessageElement.getDateWithHours(rawDate)];
291
179
  }
292
- return list;
293
- };
180
+ return ForumMessageElement.getDateWithDayNumber(rawDate);
181
+ }
182
+ static getDateWithDayIndex(rawDate) {
183
+ const dateTime = /([a-zA-Z]{6,9}) at \d{1,2}:\d{1,2}[a-zA-Z]{1,2} EDT \((\d{1,2}):(\d{1,2}) UTC\)/.exec(rawDate);
184
+ const isoWeekDay = Number((0, moment_1.default)()
185
+ .day(dateTime && dateTime.length >= 1 ? dateTime[1] : '')
186
+ .format('d'));
187
+ const day = (0, moment_1.default)().utc().isoWeekday() > isoWeekDay
188
+ ? (0, moment_1.default)().utc().isoWeekday(isoWeekDay).add(7, 'day')
189
+ : (0, moment_1.default)().utc().isoWeekday(isoWeekDay);
190
+ return ForumMessageElement.buildUtcDate(day.get('months'), day.get('date'), ForumMessageElement.getMatchedNumber(dateTime, 2), ForumMessageElement.getMatchedNumber(dateTime, 3));
191
+ }
192
+ static getDateWithHours(rawDate) {
193
+ const dateTime = /E[D|S]T \/ (\d{1,2}):(\d{1,2}) UTC/.exec(rawDate);
194
+ const hours = ForumMessageElement.getMatchedNumber(dateTime, 1);
195
+ const minutes = ForumMessageElement.getMatchedNumber(dateTime, 2);
196
+ const isTomorrow = (0, moment_1.default)().utc().get('hours') > hours ||
197
+ ((0, moment_1.default)().utc().get('hours') === hours &&
198
+ (0, moment_1.default)().utc().get('minutes') > minutes);
199
+ const day = isTomorrow
200
+ ? (0, moment_1.default)().utc().add(1, 'day')
201
+ : (0, moment_1.default)().utc();
202
+ return ForumMessageElement.buildUtcDate(day.get('months'), day.get('date'), hours, minutes);
203
+ }
204
+ static getDateWithDayNumber(rawDate) {
205
+ const dateTime = rawDate.includes('UTC (')
206
+ ? utcFirstRange.exec(rawDate)
207
+ : edtFirstRange.exec(rawDate);
208
+ const month = Number((0, moment_1.default)()
209
+ .month(dateTime && dateTime.length >= 1 ? dateTime[1] : '')
210
+ .format('M')) - 1;
211
+ const day = ForumMessageElement.getMatchedNumber(dateTime, 2);
212
+ return [
213
+ ForumMessageElement.buildUtcDate(month, day, ForumMessageElement.getMatchedNumber(dateTime, 3), ForumMessageElement.getMatchedNumber(dateTime, 4)),
214
+ ForumMessageElement.buildUtcDate(month, day, ForumMessageElement.getMatchedNumber(dateTime, 5), ForumMessageElement.getMatchedNumber(dateTime, 6)),
215
+ ];
216
+ }
217
+ static getMatchedNumber(dateTime, index) {
218
+ return dateTime && dateTime.length >= 1 ? Number(dateTime[index]) : 0;
219
+ }
220
+ static buildUtcDate(month, date, hours, minutes) {
221
+ return (0, moment_1.default)()
222
+ .utc()
223
+ .set('years', (0, moment_1.default)().get('years'))
224
+ .set('months', month)
225
+ .set('date', date)
226
+ .set('hours', hours)
227
+ .set('minutes', minutes)
228
+ .set('seconds', 0)
229
+ .set('milliseconds', 0)
230
+ .utcOffset(0);
231
+ }
294
232
  /**
295
233
  * Methode used to get type of slug
296
234
  *
@@ -300,9 +238,9 @@ var ForumMessageElement = /** @class */ (function () {
300
238
  * @param slug Slug Slug
301
239
  * @return Type Type of slug
302
240
  */
303
- ForumMessageElement.getType = function (slug) {
241
+ static getType(slug) {
304
242
  return slug.split('_')[0];
305
- };
243
+ }
306
244
  /**
307
245
  * Methode used to get support of slug
308
246
  *
@@ -312,9 +250,9 @@ var ForumMessageElement = /** @class */ (function () {
312
250
  * @param slug Slug Slug
313
251
  * @return Support Support of slug
314
252
  */
315
- ForumMessageElement.getSupport = function (slug) {
253
+ static getSupport(slug) {
316
254
  return slug.split('_')[1];
317
- };
255
+ }
318
256
  /**
319
257
  * Methode used to get zone of slug
320
258
  *
@@ -324,9 +262,9 @@ var ForumMessageElement = /** @class */ (function () {
324
262
  * @param slug Slug Slug
325
263
  * @return Zone Zone of slug
326
264
  */
327
- ForumMessageElement.getZone = function (slug) {
265
+ static getZone(slug) {
328
266
  return slug.split('_')[2];
329
- };
267
+ }
330
268
  /**
331
269
  * Methode used to get status of raw data
332
270
  *
@@ -336,21 +274,32 @@ var ForumMessageElement = /** @class */ (function () {
336
274
  * @param rawData string Raw data
337
275
  * @return Status Status of raw data
338
276
  */
339
- ForumMessageElement.getStatus = function (rawData) {
340
- if (rawData.includes('unavailable') || rawData.includes('[IN PROGRESS]') || rawData.includes('[EXTENDED]')) {
277
+ static getStatus(rawData) {
278
+ if (rawData.includes('unavailable') ||
279
+ rawData.includes('[IN PROGRESS]') ||
280
+ rawData.includes('[EXTENDED]')) {
341
281
  return 'down';
342
282
  }
343
- if (rawData.includes('[COMPLETE]') || rawData.includes('is now available') || rawData.includes('are now available') || rawData.includes('maintenance is complete') || rawData.includes('resolved at this time') || rawData.includes('has been resolved') || rawData.includes('currently available.')) {
283
+ if (rawData.includes('[COMPLETE]') ||
284
+ rawData.includes('is now available') ||
285
+ rawData.includes('are now available') ||
286
+ rawData.includes('maintenance is complete') ||
287
+ rawData.includes('resolved at this time') ||
288
+ rawData.includes('has been resolved') ||
289
+ rawData.includes('currently available.')) {
344
290
  return 'up';
345
291
  }
346
- if (rawData.includes('currently investigating issues') || rawData.includes('service interruption') || rawData.includes('In response to the ongoing issue') || rawData.includes('Due to a hardware issue')) {
292
+ if (rawData.includes('currently investigating issues') ||
293
+ rawData.includes('service interruption') ||
294
+ rawData.includes('In response to the ongoing issue') ||
295
+ rawData.includes('Due to a hardware issue')) {
347
296
  return 'issues';
348
297
  }
349
298
  if (rawData.includes('UTC')) {
350
299
  return 'planned';
351
300
  }
352
301
  return 'down';
353
- };
302
+ }
354
303
  /**
355
304
  * Methode used to get raw date of raw data
356
305
  *
@@ -360,27 +309,26 @@ var ForumMessageElement = /** @class */ (function () {
360
309
  * @param raw string Raw data
361
310
  * @return string Raw date
362
311
  */
363
- ForumMessageElement.getRawDate = function (raw) {
312
+ static getRawDate(raw) {
364
313
  if (raw.includes('maintenance – ')) {
365
- var split = raw.split('maintenance – ');
314
+ const split = raw.split('maintenance – ');
366
315
  if (split.length === 2) {
367
316
  return split[1];
368
317
  }
369
318
  }
370
319
  if (raw.includes('on the PTS on ')) {
371
- var split = raw.split('on the PTS on ');
320
+ const split = raw.split('on the PTS on ');
372
321
  if (split.length === 2) {
373
322
  return split[1];
374
323
  }
375
324
  }
376
325
  if (raw.includes('for maintenance at')) {
377
- var split = raw.split('for maintenance at ');
326
+ const split = raw.split('for maintenance at ');
378
327
  if (split.length === 2) {
379
328
  return split[1];
380
329
  }
381
330
  }
382
331
  return '';
383
- };
384
- return ForumMessageElement;
385
- }());
332
+ }
333
+ }
386
334
  exports.default = ForumMessageElement;
@@ -1,49 +1,15 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
4
  };
38
5
  Object.defineProperty(exports, "__esModule", { value: true });
39
- var ForumMessageElement_1 = require("../classes/ForumMessageElement");
40
- var axios = require('axios');
6
+ const axios_1 = __importDefault(require("axios"));
7
+ const ForumMessageElement_1 = __importDefault(require("../classes/ForumMessageElement"));
41
8
  /**
42
9
  * Connector used to get data from https://forums.elderscrollsonline.com/ and https://forums.elderscrollsonline.com/en/categories/pts
43
10
  */
44
- var ForumMessageConnector = /** @class */ (function () {
45
- function ForumMessageConnector() {
46
- }
11
+ // eslint-disable-next-line @typescript-eslint/no-extraneous-class -- the published 1.x API exposes static methods, called as is by @eso-status/api 1.x
12
+ class ForumMessageConnector {
47
13
  /**
48
14
  * Methode used to get the list of raw element from remote website
49
15
  *
@@ -54,28 +20,19 @@ var ForumMessageConnector = /** @class */ (function () {
54
20
  *
55
21
  * @return Promise<RawEsoStatus[]> List of raw element from remote website
56
22
  */
57
- ForumMessageConnector.getRemoteContent = function (url) {
58
- return __awaiter(this, void 0, void 0, function () {
59
- var rawRemoteContent, rawWarningMessage, rawAlertMessage, mergedRawMessage, rawMessageSplit, sortedRawMessageList;
60
- return __generator(this, function (_a) {
61
- switch (_a.label) {
62
- case 0: return [4 /*yield*/, ForumMessageConnector.getRawRemoteContent(url)];
63
- case 1:
64
- rawRemoteContent = _a.sent();
65
- rawWarningMessage = ForumMessageConnector.getRawWarningMessage(rawRemoteContent);
66
- rawAlertMessage = ForumMessageConnector.getRawAlertMessage(rawRemoteContent);
67
- mergedRawMessage = ForumMessageConnector.mergeRawMessage(rawWarningMessage, rawAlertMessage);
68
- rawMessageSplit = ForumMessageConnector.splitRawMessage(mergedRawMessage);
69
- sortedRawMessageList = ForumMessageConnector.sortRawMessageList(rawMessageSplit);
70
- return [2 /*return*/, sortedRawMessageList.map(function (item) { return ({
71
- sources: [url],
72
- raw: [item],
73
- slugs: [],
74
- }); })];
75
- }
76
- });
77
- });
78
- };
23
+ static async getRemoteContent(url) {
24
+ const rawRemoteContent = await ForumMessageConnector.getRawRemoteContent(url);
25
+ const rawWarningMessage = ForumMessageConnector.getRawWarningMessage(rawRemoteContent);
26
+ const rawAlertMessage = ForumMessageConnector.getRawAlertMessage(rawRemoteContent);
27
+ const mergedRawMessage = ForumMessageConnector.mergeRawMessage(rawWarningMessage, rawAlertMessage);
28
+ const rawMessageSplit = ForumMessageConnector.splitRawMessage(mergedRawMessage);
29
+ const sortedRawMessageList = ForumMessageConnector.sortRawMessageList(rawMessageSplit);
30
+ return sortedRawMessageList.map((item) => ({
31
+ sources: [url],
32
+ raw: [item],
33
+ slugs: [],
34
+ }));
35
+ }
79
36
  /**
80
37
  * Methode used to get raw content from remote specific url
81
38
  *
@@ -85,19 +42,10 @@ var ForumMessageConnector = /** @class */ (function () {
85
42
  * @param url string Url to use to get list of raw element from remote specific url
86
43
  * @return Promise<string> Raw content from remote specific url
87
44
  */
88
- ForumMessageConnector.getRawRemoteContent = function (url) {
89
- return __awaiter(this, void 0, void 0, function () {
90
- var response;
91
- return __generator(this, function (_a) {
92
- switch (_a.label) {
93
- case 0: return [4 /*yield*/, axios.get(url)];
94
- case 1:
95
- response = _a.sent();
96
- return [2 /*return*/, (response === null || response === void 0 ? void 0 : response.status) === 200 && !(!(response === null || response === void 0 ? void 0 : response.data)) ? String(response === null || response === void 0 ? void 0 : response.data) : ''];
97
- }
98
- });
99
- });
100
- };
45
+ static async getRawRemoteContent(url) {
46
+ const response = await axios_1.default.get(url);
47
+ return response.status === 200 && response.data ? response.data : '';
48
+ }
101
49
  /**
102
50
  * Methode used to get raw warning message from raw content
103
51
  *
@@ -107,18 +55,19 @@ var ForumMessageConnector = /** @class */ (function () {
107
55
  * @param rawRemoteContent string Raw content from remote specific url
108
56
  * @return string Raw warning message from raw content
109
57
  */
110
- ForumMessageConnector.getRawWarningMessage = function (rawRemoteContent) {
111
- return rawRemoteContent.split('<div class="DismissMessage WarningMessage">')
112
- .filter(function (item, index) { return index !== 0; })
113
- .map(function (item) {
114
- var resultRemoveAfter = item.split('</div>');
58
+ static getRawWarningMessage(rawRemoteContent) {
59
+ return rawRemoteContent
60
+ .split('<div class="DismissMessage WarningMessage">')
61
+ .filter((item, index) => index !== 0)
62
+ .map((item) => {
63
+ const resultRemoveAfter = item.split('</div>');
115
64
  if (resultRemoveAfter.length >= 2) {
116
65
  return resultRemoveAfter[0];
117
66
  }
118
67
  return '';
119
68
  })
120
69
  .join('<br />');
121
- };
70
+ }
122
71
  /**
123
72
  * Methode used to get raw alert message from raw content
124
73
  *
@@ -128,18 +77,19 @@ var ForumMessageConnector = /** @class */ (function () {
128
77
  * @param rawRemoteContent string Raw content from remote specific url
129
78
  * @return string Raw alert message from raw content
130
79
  */
131
- ForumMessageConnector.getRawAlertMessage = function (rawRemoteContent) {
132
- return rawRemoteContent.split('<div class="DismissMessage AlertMessage">')
133
- .filter(function (item, index) { return index !== 0; })
134
- .map(function (item) {
135
- var resultRemoveAfter = item.split('</div>');
80
+ static getRawAlertMessage(rawRemoteContent) {
81
+ return rawRemoteContent
82
+ .split('<div class="DismissMessage AlertMessage">')
83
+ .filter((item, index) => index !== 0)
84
+ .map((item) => {
85
+ const resultRemoveAfter = item.split('</div>');
136
86
  if (resultRemoveAfter.length >= 2) {
137
87
  return resultRemoveAfter[0];
138
88
  }
139
89
  return '';
140
90
  })
141
91
  .join('<br />');
142
- };
92
+ }
143
93
  /**
144
94
  * Methode used to get merge off all message
145
95
  *
@@ -149,13 +99,9 @@ var ForumMessageConnector = /** @class */ (function () {
149
99
  * @param rawMessages string[] All message
150
100
  * @return string Merge off all message
151
101
  */
152
- ForumMessageConnector.mergeRawMessage = function () {
153
- var rawMessages = [];
154
- for (var _i = 0; _i < arguments.length; _i++) {
155
- rawMessages[_i] = arguments[_i];
156
- }
102
+ static mergeRawMessage(...rawMessages) {
157
103
  return rawMessages.join('<br />');
158
- };
104
+ }
159
105
  /**
160
106
  * Methode used to split raw content
161
107
  *
@@ -165,13 +111,13 @@ var ForumMessageConnector = /** @class */ (function () {
165
111
  * @param mergedRawMessage string All message merged
166
112
  * @return string[] Split raw content
167
113
  */
168
- ForumMessageConnector.splitRawMessage = function (mergedRawMessage) {
169
- var list = [];
170
- mergedRawMessage.split('<br />').forEach(function (item) {
171
- list.push.apply(list, item.split('<br/>'));
114
+ static splitRawMessage(mergedRawMessage) {
115
+ const list = [];
116
+ mergedRawMessage.split('<br />').forEach((item) => {
117
+ list.push(...item.split('<br/>'));
172
118
  });
173
119
  return list;
174
- };
120
+ }
175
121
  /**
176
122
  * Methode used to sort raw content list
177
123
  *
@@ -181,19 +127,19 @@ var ForumMessageConnector = /** @class */ (function () {
181
127
  * @param rawMessageSplit string Split raw content
182
128
  * @return string[] Sort raw content list
183
129
  */
184
- ForumMessageConnector.sortRawMessageList = function (rawMessageSplit) {
130
+ static sortRawMessageList(rawMessageSplit) {
185
131
  return rawMessageSplit
186
- .filter(function (item) { return item !== ''
187
- && !item.includes('Maintenance for the week')
188
- && !item.includes('No maintenance')
189
- && !item.includes('PC/Mac: No NA megaserver maintenance'); })
190
- .map(function (item) {
191
- var line = item;
132
+ .filter((item) => item !== '' &&
133
+ !item.includes('Maintenance for the week') &&
134
+ !item.includes('No maintenance') &&
135
+ !item.includes('PC/Mac: No NA megaserver maintenance'))
136
+ .map((item) => {
137
+ let line = item;
192
138
  line = line.replace('\n', '');
193
139
  return line;
194
140
  })
195
- .filter(function (item) { return item !== '' && item !== ' '; });
196
- };
141
+ .filter((item) => item !== '' && item !== ' ');
142
+ }
197
143
  /**
198
144
  * Methode used to get slug for raw content list
199
145
  *
@@ -203,13 +149,13 @@ var ForumMessageConnector = /** @class */ (function () {
203
149
  * @param remoteContent RawEsoStatus[] Raw content list without duplicate
204
150
  * @return RawEsoStatus[] Raw content list with slug list
205
151
  */
206
- ForumMessageConnector.getRawContentWithSlug = function (remoteContent) {
207
- return remoteContent.map(function (item) { return ({
152
+ static getRawContentWithSlug(remoteContent) {
153
+ return remoteContent.map((item) => ({
208
154
  sources: item.sources,
209
155
  raw: item.raw,
210
156
  slugs: ForumMessageElement_1.default.getSlug(item.raw[0]),
211
- }); });
212
- };
157
+ }));
158
+ }
213
159
  /**
214
160
  * Methode used to split list by slug
215
161
  *
@@ -219,11 +165,10 @@ var ForumMessageConnector = /** @class */ (function () {
219
165
  * @param slugOfRawContent RawEsoStatus[] Raw content list with slug list
220
166
  * @return RawEsoStatus[] Raw content list foreach slug
221
167
  */
222
- ForumMessageConnector.splitRawContentBySlug = function (slugOfRawContent) {
223
- var list = [];
224
- slugOfRawContent.forEach(function (item) {
225
- var _a;
226
- (_a = item.slugs) === null || _a === void 0 ? void 0 : _a.forEach(function (slug) {
168
+ static splitRawContentBySlug(slugOfRawContent) {
169
+ const list = [];
170
+ slugOfRawContent.forEach((item) => {
171
+ item.slugs?.forEach((slug) => {
227
172
  list.push({
228
173
  sources: item.sources,
229
174
  raw: item.raw,
@@ -232,7 +177,7 @@ var ForumMessageConnector = /** @class */ (function () {
232
177
  });
233
178
  });
234
179
  return list;
235
- };
180
+ }
236
181
  /**
237
182
  * Methode used to get raw date for raw content list
238
183
  *
@@ -242,14 +187,14 @@ var ForumMessageConnector = /** @class */ (function () {
242
187
  * @param rawContentBySlug RawEsoStatus[] Raw content list foreach slug
243
188
  * @return RawEsoStatus[] Raw content list with raw date
244
189
  */
245
- ForumMessageConnector.getRawContentWithRawDate = function (rawContentBySlug) {
246
- return rawContentBySlug.map(function (item) { return ({
190
+ static getRawContentWithRawDate(rawContentBySlug) {
191
+ return rawContentBySlug.map((item) => ({
247
192
  sources: item.sources,
248
193
  raw: item.raw,
249
194
  slugs: item.slugs,
250
195
  rawDate: ForumMessageElement_1.default.getRawDate(item.raw[0]),
251
- }); });
252
- };
196
+ }));
197
+ }
253
198
  /**
254
199
  * Methode used to get data for each raw element
255
200
  *
@@ -259,22 +204,19 @@ var ForumMessageConnector = /** @class */ (function () {
259
204
  * @param rawContentWithRawDate RawEsoStatus[] Raw content list with raw date
260
205
  * @return RawEsoStatus[] Raw content list with data
261
206
  */
262
- ForumMessageConnector.getData = function (rawContentWithRawDate) {
263
- return rawContentWithRawDate.map(function (item) {
264
- var _a;
265
- return ({
266
- sources: item.sources,
267
- raw: item.raw,
268
- slugs: item.slugs,
269
- rawDate: item.rawDate,
270
- dates: ForumMessageElement_1.default.getDate((_a = item.rawDate) !== null && _a !== void 0 ? _a : ''),
271
- type: ForumMessageElement_1.default.getType(item.slugs ? item.slugs[0] : 'undefined'),
272
- support: ForumMessageElement_1.default.getSupport(item.slugs ? item.slugs[0] : 'undefined'),
273
- zone: ForumMessageElement_1.default.getZone(item.slugs ? item.slugs[0] : 'undefined'),
274
- status: ForumMessageElement_1.default.getStatus(item.raw[0]),
275
- });
276
- });
277
- };
207
+ static getData(rawContentWithRawDate) {
208
+ return rawContentWithRawDate.map((item) => ({
209
+ sources: item.sources,
210
+ raw: item.raw,
211
+ slugs: item.slugs,
212
+ rawDate: item.rawDate,
213
+ dates: ForumMessageElement_1.default.getDate(item.rawDate ?? ''),
214
+ type: ForumMessageElement_1.default.getType(item.slugs ? item.slugs[0] : 'undefined'),
215
+ support: ForumMessageElement_1.default.getSupport(item.slugs ? item.slugs[0] : 'undefined'),
216
+ zone: ForumMessageElement_1.default.getZone(item.slugs ? item.slugs[0] : 'undefined'),
217
+ status: ForumMessageElement_1.default.getStatus(item.raw[0]),
218
+ }));
219
+ }
278
220
  /**
279
221
  * Methode used to get data sort by status
280
222
  *
@@ -284,28 +226,32 @@ var ForumMessageConnector = /** @class */ (function () {
284
226
  * @param data RawEsoStatus[] Raw content list with data
285
227
  * @return RawEsoStatus[] Data sorted by status
286
228
  */
287
- ForumMessageConnector.sortData = function (data) {
288
- return data.filter(function (item) {
289
- if (data.filter(function (i) { return JSON.stringify(i.slugs) === JSON.stringify(item.slugs); }).length !== 1) {
290
- if (item.raw.includes('will be taken offline for maintenance') && data.filter(function (i) { return JSON.stringify(i.slugs) === JSON.stringify(item.slugs) && i.raw.includes('is currently unavailable'); }).length !== 0) {
229
+ static sortData(data) {
230
+ return data.filter((item) => {
231
+ if (data.filter((i) => JSON.stringify(i.slugs) === JSON.stringify(item.slugs)).length !== 1) {
232
+ if (item.raw.includes('will be taken offline for maintenance') &&
233
+ data.filter((i) => JSON.stringify(i.slugs) === JSON.stringify(item.slugs) &&
234
+ i.raw.includes('is currently unavailable')).length !== 0) {
291
235
  return false;
292
236
  }
293
- if (item.raw.includes('[IN PROGRESS]') && data.filter(function (i) { return JSON.stringify(i.slugs) === JSON.stringify(item.slugs) && i.raw.includes('[COMPLETE]'); }).length !== 0) {
237
+ if (item.raw.includes('[IN PROGRESS]') &&
238
+ data.filter((i) => JSON.stringify(i.slugs) === JSON.stringify(item.slugs) &&
239
+ i.raw.includes('[COMPLETE]')).length !== 0) {
294
240
  return false;
295
241
  }
296
- if (item.status === 'planned' && data.filter(function (i) { return JSON.stringify(i.slugs) === JSON.stringify(item.slugs) && i.raw.includes('[IN PROGRESS]'); }).length !== 0) {
242
+ if (item.status === 'planned' &&
243
+ data.filter((i) => JSON.stringify(i.slugs) === JSON.stringify(item.slugs) &&
244
+ i.raw.includes('[IN PROGRESS]')).length !== 0) {
297
245
  return false;
298
246
  }
299
- if (item.raw.includes('resolved at this time') && data.filter(function (i) { return JSON.stringify(i.slugs) === JSON.stringify(item.slugs) && i.raw.includes('[IN PROGRESS]'); }).length !== 0) {
247
+ if (item.raw.includes('resolved at this time') &&
248
+ data.filter((i) => JSON.stringify(i.slugs) === JSON.stringify(item.slugs) &&
249
+ i.raw.includes('[IN PROGRESS]')).length !== 0) {
300
250
  return false;
301
251
  }
302
252
  }
303
- if (item.raw.includes('<a')) {
304
- return false;
305
- }
306
- return true;
253
+ return !item.raw.includes('<a');
307
254
  });
308
- };
309
- return ForumMessageConnector;
310
- }());
255
+ }
256
+ }
311
257
  exports.default = ForumMessageConnector;
package/lib/index.d.ts CHANGED
@@ -6,12 +6,12 @@ export declare const ForumMessagePTSURL = "https://forums.elderscrollsonline.com
6
6
  */
7
7
  export declare class ForumMessage {
8
8
  /**
9
- * Methode used to get Forum Message data
10
- *
11
- * @public
12
- * @static
13
- *
14
- * @return Promise<RawEsoStatus[]> Forum Message elements
15
- */
9
+ * Methode used to get Forum Message data
10
+ *
11
+ * @public
12
+ * @static
13
+ *
14
+ * @return Promise<RawEsoStatus[]> Forum Message elements
15
+ */
16
16
  static getData(url?: string): Promise<RawEsoStatus[]>;
17
17
  }
package/lib/index.js CHANGED
@@ -1,77 +1,32 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
4
  };
38
5
  Object.defineProperty(exports, "__esModule", { value: true });
39
6
  exports.ForumMessage = exports.ForumMessagePTSURL = exports.ForumMessageURL = void 0;
40
- var ForumMessageConnector_1 = require("./connectors/ForumMessageConnector");
7
+ const ForumMessageConnector_1 = __importDefault(require("./connectors/ForumMessageConnector"));
41
8
  exports.ForumMessageURL = 'https://forums.elderscrollsonline.com/';
42
9
  exports.ForumMessagePTSURL = 'https://forums.elderscrollsonline.com/en/categories/pts';
43
10
  /**
44
11
  * Class of Forum Message
45
12
  */
46
- var ForumMessage = /** @class */ (function () {
47
- function ForumMessage() {
48
- }
13
+ // eslint-disable-next-line @typescript-eslint/no-extraneous-class -- the published 1.x API exposes static methods, called as is by @eso-status/api 1.x
14
+ class ForumMessage {
49
15
  /**
50
- * Methode used to get Forum Message data
51
- *
52
- * @public
53
- * @static
54
- *
55
- * @return Promise<RawEsoStatus[]> Forum Message elements
56
- */
57
- ForumMessage.getData = function () {
58
- return __awaiter(this, arguments, void 0, function (url) {
59
- var remoteContent, slugOfRawContent, rawContentBySlug, rawContentWithRawDate, data;
60
- if (url === void 0) { url = exports.ForumMessageURL; }
61
- return __generator(this, function (_a) {
62
- switch (_a.label) {
63
- case 0: return [4 /*yield*/, ForumMessageConnector_1.default.getRemoteContent(url)];
64
- case 1:
65
- remoteContent = _a.sent();
66
- slugOfRawContent = ForumMessageConnector_1.default.getRawContentWithSlug(remoteContent);
67
- rawContentBySlug = ForumMessageConnector_1.default.splitRawContentBySlug(slugOfRawContent);
68
- rawContentWithRawDate = ForumMessageConnector_1.default.getRawContentWithRawDate(rawContentBySlug);
69
- data = ForumMessageConnector_1.default.getData(rawContentWithRawDate);
70
- return [2 /*return*/, ForumMessageConnector_1.default.sortData(data)];
71
- }
72
- });
73
- });
74
- };
75
- return ForumMessage;
76
- }());
16
+ * Methode used to get Forum Message data
17
+ *
18
+ * @public
19
+ * @static
20
+ *
21
+ * @return Promise<RawEsoStatus[]> Forum Message elements
22
+ */
23
+ static async getData(url = exports.ForumMessageURL) {
24
+ const remoteContent = await ForumMessageConnector_1.default.getRemoteContent(url);
25
+ const slugOfRawContent = ForumMessageConnector_1.default.getRawContentWithSlug(remoteContent);
26
+ const rawContentBySlug = ForumMessageConnector_1.default.splitRawContentBySlug(slugOfRawContent);
27
+ const rawContentWithRawDate = ForumMessageConnector_1.default.getRawContentWithRawDate(rawContentBySlug);
28
+ const data = ForumMessageConnector_1.default.getData(rawContentWithRawDate);
29
+ return ForumMessageConnector_1.default.sortData(data);
30
+ }
31
+ }
77
32
  exports.ForumMessage = ForumMessage;
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@eso-status/forum-message",
3
- "version": "1.0.13",
3
+ "version": "1.0.14",
4
4
  "description": "Library used to get servers status of The elders scrolls Online game with https://forums.elderscrollsonline.com/ and https://forums.elderscrollsonline.com/en/categories/pts",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
7
+ "format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"",
8
+ "lint": "eslint \"{src,tests}/**/*.ts\"",
9
+ "lint:fix": "eslint \"{src,tests}/**/*.ts\" --fix",
7
10
  "post-install": "cp pre-commit .git/hooks/ && chmod +x .git/hooks/pre-commit && echo 'hook copied'",
8
- "lint": "eslint tests src --ext .ts",
9
- "lint:fix": "eslint tests src --ext .ts --fix",
10
11
  "build": "rm -R -f lib/* && tsc",
11
12
  "test": "jest",
12
13
  "start": "node .",
@@ -33,32 +34,38 @@
33
34
  },
34
35
  "repository": {
35
36
  "type": "git",
36
- "url": "git@github.com:eso-status/forum-message-dev.git"
37
+ "url": "git+https://github.com/eso-status/forum-message.git"
37
38
  },
38
39
  "author": "@dov118 <contact@dov118.dev> (https://dov118.dev)",
39
40
  "license": "MIT",
40
41
  "bugs": {
41
- "url": "https://github.com/eso-status/forum-message-dev/issues"
42
+ "url": "https://github.com/eso-status/forum-message/issues"
42
43
  },
43
- "homepage": "https://github.com/eso-status/forum-message-dev#readme",
44
+ "homepage": "https://github.com/eso-status/forum-message#readme",
44
45
  "devDependencies": {
45
- "@eso-status/types": "1.0.7",
46
- "@types/jest": "29.5.12",
47
- "@types/node": "22.5.1",
48
- "@typescript-eslint/eslint-plugin": "7.18.0",
49
- "@typescript-eslint/parser": "7.18.0",
50
- "@typescript-eslint/typescript-estree": "7.18.0",
51
- "eslint": "8.57.0",
52
- "eslint-config-airbnb-base": "15.0.0",
53
- "eslint-plugin-import": "2.29.1",
54
- "eslint-plugin-jest": "28.8.0",
55
- "jest": "29.7.0",
56
- "nodemon": "3.1.4",
57
- "ts-jest": "29.2.5",
58
- "typescript": "5.5.4"
46
+ "@eslint/js": "10.0.1",
47
+ "@eso-status/types": "1.0.8",
48
+ "@types/jest": "30.0.0",
49
+ "@types/node": "26.6.6",
50
+ "eslint": "10.15.0",
51
+ "eslint-config-prettier": "10.1.8",
52
+ "eslint-plugin-jest": "29.17.0",
53
+ "eslint-plugin-sonarjs": "4.2.2",
54
+ "eslint-plugin-unused-imports": "4.4.1",
55
+ "globals": "17.14.0",
56
+ "jest": "30.5.2",
57
+ "nodemon": "3.1.14",
58
+ "prettier": "3.10.1",
59
+ "ts-jest": "29.4.15",
60
+ "typescript": "6.0.3",
61
+ "typescript-eslint": "8.72.2"
59
62
  },
60
63
  "dependencies": {
61
- "axios": "1.7.5",
62
- "moment": "2.30.1"
64
+ "axios": "1.21.1",
65
+ "moment": "2.31.0"
66
+ },
67
+ "overrides": {
68
+ "glob": "14.0.6",
69
+ "minimatch": "11.0.8"
63
70
  }
64
71
  }