@eso-status/forum-message 2.0.0-dev.2 → 2.0.0-dev.21
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/README.md +10 -10
- package/lib/connector.js +57 -17
- package/lib/formatter/date.formatter.d.ts +6 -7
- package/lib/formatter/date.formatter.js +33 -13
- package/lib/identifier/slug.identifier.js +111 -84
- package/lib/identifier/slug.match.js +2 -0
- package/lib/identifier/status.identifier.d.ts +7 -2
- package/lib/identifier/status.identifier.js +58 -34
- package/lib/index.js +4 -0
- package/lib/raw.d.ts +3 -3
- package/lib/raw.js +21 -4
- package/lib/type/remoteIssuesRawStatus.type.d.ts +4 -0
- package/lib/type/remoteIssuesRawStatus.type.js +3 -0
- package/lib/type/remotePlannedRawStatus.type.d.ts +1 -1
- package/lib/type/remoteRawSlug.type.d.ts +3 -1
- package/lib/type/remoteRawStatus.type.d.ts +2 -1
- package/lib/type/remoteServerPcEuRawSlug.type.d.ts +1 -1
- package/lib/type/remoteServerPcNaRawSlug.type.d.ts +1 -1
- package/lib/type/remoteServerPsEuRawSlug.type.d.ts +1 -1
- package/lib/type/remoteServerPsNaRawSlug.type.d.ts +1 -1
- package/lib/type/remoteServerXboxEuRawSlug.type.d.ts +1 -1
- package/lib/type/remoteServerXboxNaRawSlug.type.d.ts +1 -1
- package/lib/type/remoteUpRawStatus.type.d.ts +1 -1
- package/package.json +35 -26
package/README.md
CHANGED
|
@@ -53,7 +53,7 @@ const esoStatusRawDataList: EsoStatusRawData[] = await ForumMessage.getData(Foru
|
|
|
53
53
|
status: 'planned',
|
|
54
54
|
rawSlug: 'PC/Mac: NA and EU megaservers for',
|
|
55
55
|
rawDate: 'September 3, 4:00AM EDT (8:00 UTC) – 9:00AM EDT (13:00 UTC)',
|
|
56
|
-
dates: [
|
|
56
|
+
dates: [ '2024-09-03T08:00:00Z', '2024-09-03T13:00:00Z' ]
|
|
57
57
|
},
|
|
58
58
|
{
|
|
59
59
|
source: 'https://forums.elderscrollsonline.com',
|
|
@@ -65,7 +65,7 @@ const esoStatusRawDataList: EsoStatusRawData[] = await ForumMessage.getData(Foru
|
|
|
65
65
|
status: 'planned',
|
|
66
66
|
rawSlug: 'PC/Mac: NA and EU megaservers for',
|
|
67
67
|
rawDate: 'September 3, 4:00AM EDT (8:00 UTC) – 9:00AM EDT (13:00 UTC)',
|
|
68
|
-
dates: [
|
|
68
|
+
dates: [ '2024-09-03T08:00:00Z', '2024-09-03T13:00:00Z' ]
|
|
69
69
|
},
|
|
70
70
|
{
|
|
71
71
|
source: 'https://forums.elderscrollsonline.com',
|
|
@@ -77,7 +77,7 @@ const esoStatusRawDataList: EsoStatusRawData[] = await ForumMessage.getData(Foru
|
|
|
77
77
|
status: 'planned',
|
|
78
78
|
rawSlug: 'Xbox: NA and EU megaservers for',
|
|
79
79
|
rawDate: 'September 4, 6:00AM EDT (10:00 UTC) - 12:00PM EDT (16:00 UTC)',
|
|
80
|
-
dates: [
|
|
80
|
+
dates: [ '2024-09-04T10:00:00Z', '2024-09-04T16:00:00Z' ]
|
|
81
81
|
},
|
|
82
82
|
{
|
|
83
83
|
source: 'https://forums.elderscrollsonline.com',
|
|
@@ -89,7 +89,7 @@ const esoStatusRawDataList: EsoStatusRawData[] = await ForumMessage.getData(Foru
|
|
|
89
89
|
status: 'planned',
|
|
90
90
|
rawSlug: 'Xbox: NA and EU megaservers for',
|
|
91
91
|
rawDate: 'September 4, 6:00AM EDT (10:00 UTC) - 12:00PM EDT (16:00 UTC)',
|
|
92
|
-
dates: [
|
|
92
|
+
dates: [ '2024-09-04T10:00:00Z', '2024-09-04T16:00:00Z' ]
|
|
93
93
|
},
|
|
94
94
|
{
|
|
95
95
|
source: 'https://forums.elderscrollsonline.com',
|
|
@@ -101,7 +101,7 @@ const esoStatusRawDataList: EsoStatusRawData[] = await ForumMessage.getData(Foru
|
|
|
101
101
|
status: 'planned',
|
|
102
102
|
rawSlug: 'PlayStation®: NA and EU megaservers for',
|
|
103
103
|
rawDate: 'September 4, 6:00AM EDT (10:00 UTC) - 12:00PM EDT (16:00 UTC)',
|
|
104
|
-
dates: [
|
|
104
|
+
dates: [ '2024-09-04T10:00:00Z', '2024-09-04T16:00:00Z' ]
|
|
105
105
|
},
|
|
106
106
|
{
|
|
107
107
|
source: 'https://forums.elderscrollsonline.com',
|
|
@@ -113,7 +113,7 @@ const esoStatusRawDataList: EsoStatusRawData[] = await ForumMessage.getData(Foru
|
|
|
113
113
|
status: 'planned',
|
|
114
114
|
rawSlug: 'PlayStation®: NA and EU megaservers for',
|
|
115
115
|
rawDate: 'September 4, 6:00AM EDT (10:00 UTC) - 12:00PM EDT (16:00 UTC)',
|
|
116
|
-
dates: [
|
|
116
|
+
dates: [ '2024-09-04T10:00:00Z', '2024-09-04T16:00:00Z' ]
|
|
117
117
|
},
|
|
118
118
|
{
|
|
119
119
|
source: 'https://forums.elderscrollsonline.com',
|
|
@@ -125,7 +125,7 @@ const esoStatusRawDataList: EsoStatusRawData[] = await ForumMessage.getData(Foru
|
|
|
125
125
|
status: 'planned',
|
|
126
126
|
rawSlug: 'ESO Store and Account System for',
|
|
127
127
|
rawDate: 'September 4, 10:00AM EDT (14:00 UTC) - 12:00PM EDT (16:00 UTC)',
|
|
128
|
-
dates: [
|
|
128
|
+
dates: [ '2024-09-04T14:00:00Z', '2024-09-04T16:00:00Z' ]
|
|
129
129
|
},
|
|
130
130
|
{
|
|
131
131
|
source: 'https://forums.elderscrollsonline.com',
|
|
@@ -137,7 +137,7 @@ const esoStatusRawDataList: EsoStatusRawData[] = await ForumMessage.getData(Foru
|
|
|
137
137
|
status: 'planned',
|
|
138
138
|
rawSlug: 'ESO Store and Account System for',
|
|
139
139
|
rawDate: 'September 4, 10:00AM EDT (14:00 UTC) - 12:00PM EDT (16:00 UTC)',
|
|
140
|
-
dates: [
|
|
140
|
+
dates: [ '2024-09-04T14:00:00Z', '2024-09-04T16:00:00Z' ]
|
|
141
141
|
},
|
|
142
142
|
{
|
|
143
143
|
source: 'https://forums.elderscrollsonline.com/en/categories/pts',
|
|
@@ -148,9 +148,9 @@ const esoStatusRawDataList: EsoStatusRawData[] = await ForumMessage.getData(Foru
|
|
|
148
148
|
zone: 'pts',
|
|
149
149
|
status: 'planned',
|
|
150
150
|
rawSlug: 'PTS',
|
|
151
|
-
rawDate: 'Thursday at 9:00AM EDT (13:00 UTC)
|
|
151
|
+
rawDate: 'Thursday at 9:00AM EDT (13:00 UTC)',
|
|
152
152
|
rawStatus: 'We will be performing maintenance',
|
|
153
|
-
dates: [
|
|
153
|
+
dates: [ '2024-09-05T13:00:00Z' ]
|
|
154
154
|
}
|
|
155
155
|
]
|
|
156
156
|
```
|
package/lib/connector.js
CHANGED
|
@@ -6,6 +6,16 @@ const raw_1 = require("./raw");
|
|
|
6
6
|
* Class for retrieving information from announcements
|
|
7
7
|
*/
|
|
8
8
|
class Connector {
|
|
9
|
+
url;
|
|
10
|
+
remoteContent;
|
|
11
|
+
/**
|
|
12
|
+
* List of raw data from announcements
|
|
13
|
+
*/
|
|
14
|
+
raw = [];
|
|
15
|
+
/**
|
|
16
|
+
* List of information from announcements
|
|
17
|
+
*/
|
|
18
|
+
rawEsoStatus = [];
|
|
9
19
|
/**
|
|
10
20
|
* @param url URL used as the source to retrieve announcements
|
|
11
21
|
* @param remoteContent Content of the source retrieved via URL
|
|
@@ -13,14 +23,6 @@ class Connector {
|
|
|
13
23
|
constructor(url, remoteContent) {
|
|
14
24
|
this.url = url;
|
|
15
25
|
this.remoteContent = remoteContent;
|
|
16
|
-
/**
|
|
17
|
-
* List of raw data from announcements
|
|
18
|
-
*/
|
|
19
|
-
this.raw = [];
|
|
20
|
-
/**
|
|
21
|
-
* List of information from announcements
|
|
22
|
-
*/
|
|
23
|
-
this.rawEsoStatus = [];
|
|
24
26
|
this.getMessages();
|
|
25
27
|
this.replace();
|
|
26
28
|
this.split();
|
|
@@ -41,16 +43,16 @@ class Connector {
|
|
|
41
43
|
*/
|
|
42
44
|
static async getRemoteContent(url) {
|
|
43
45
|
const response = await axios_1.default.get(url);
|
|
44
|
-
return response
|
|
45
|
-
? String(response?.data)
|
|
46
|
-
: '';
|
|
46
|
+
return response.status === 200 && !!response.data ? response.data : '';
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
49
49
|
* Method for retrieving raw announcements for all announcement levels
|
|
50
50
|
* @private
|
|
51
51
|
*/
|
|
52
52
|
getMessages() {
|
|
53
|
-
['
|
|
53
|
+
['AlertMessage', 'WarningMessage'].forEach((type) => {
|
|
54
|
+
this.getMessagesByType(type);
|
|
55
|
+
});
|
|
54
56
|
}
|
|
55
57
|
/**
|
|
56
58
|
* Method for retrieving raw announcements based on the announcement level
|
|
@@ -71,10 +73,42 @@ class Connector {
|
|
|
71
73
|
* @private
|
|
72
74
|
*/
|
|
73
75
|
replace() {
|
|
74
|
-
|
|
76
|
+
const list = [];
|
|
77
|
+
this.raw.forEach((raw) => {
|
|
78
|
+
raw.split('<br').forEach((line) => {
|
|
79
|
+
const split = line.split('/>');
|
|
80
|
+
list.push(split.join(''));
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
this.raw = list.map((raw) => {
|
|
75
84
|
let initialRaw = raw;
|
|
76
|
-
initialRaw = initialRaw.replace(
|
|
77
|
-
|
|
85
|
+
initialRaw = initialRaw.replace(' 。', '');
|
|
86
|
+
initialRaw = initialRaw.replaceAll('\n', '');
|
|
87
|
+
initialRaw = initialRaw.replaceAll('<br/>\n', '<br>');
|
|
88
|
+
initialRaw = initialRaw.replace(' Thank you for your patience!', '');
|
|
89
|
+
initialRaw = initialRaw.replace(' Thank you for your patience.', '');
|
|
90
|
+
initialRaw = initialRaw.replace(' We will update as new information becomes available.', '');
|
|
91
|
+
initialRaw = initialRaw.replace(' If you continue to experience difficulties at login, please restart your client. Thank you for your patience!', '');
|
|
92
|
+
initialRaw = initialRaw.replace(' ', ' ');
|
|
93
|
+
if (initialRaw.includes('\t')) {
|
|
94
|
+
const split = initialRaw.split('\t');
|
|
95
|
+
if (split[0] === ' ') {
|
|
96
|
+
return split[1];
|
|
97
|
+
}
|
|
98
|
+
if (split[0].includes('•')) {
|
|
99
|
+
return `• ${split[1]}`;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (initialRaw.endsWith(' ')) {
|
|
103
|
+
initialRaw = initialRaw.substring(0, initialRaw.length - 1);
|
|
104
|
+
}
|
|
105
|
+
if (initialRaw.includes('. Please check here for status updates: <a href')) {
|
|
106
|
+
return initialRaw.split(' Please check here for status updates: <a href')[0];
|
|
107
|
+
}
|
|
108
|
+
if (initialRaw.includes(' <a href')) {
|
|
109
|
+
return initialRaw.split(' <a href')[0];
|
|
110
|
+
}
|
|
111
|
+
return initialRaw;
|
|
78
112
|
});
|
|
79
113
|
}
|
|
80
114
|
/**
|
|
@@ -96,8 +130,12 @@ class Connector {
|
|
|
96
130
|
filter() {
|
|
97
131
|
this.raw = this.raw.filter((raw) => {
|
|
98
132
|
return (!raw.includes('Maintenance for the week of ') &&
|
|
133
|
+
!raw.includes('Mantenimiento de la semana del ') &&
|
|
99
134
|
!raw.includes('• PC/Mac: No maintenance – ') &&
|
|
100
|
-
raw
|
|
135
|
+
!raw.includes('hora peninsular') &&
|
|
136
|
+
raw !== '' &&
|
|
137
|
+
!raw.startsWith('<') &&
|
|
138
|
+
!raw.endsWith('>'));
|
|
101
139
|
});
|
|
102
140
|
}
|
|
103
141
|
/**
|
|
@@ -105,7 +143,9 @@ class Connector {
|
|
|
105
143
|
* @private
|
|
106
144
|
*/
|
|
107
145
|
fetch() {
|
|
108
|
-
this.raw.forEach((raw) =>
|
|
146
|
+
this.raw.forEach((raw) => {
|
|
147
|
+
this.fetchEach(raw);
|
|
148
|
+
});
|
|
109
149
|
}
|
|
110
150
|
/**
|
|
111
151
|
* Method for retrieving the information contained in an announcement
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Moment } from 'moment';
|
|
2
1
|
/**
|
|
3
2
|
* Class for identifying and formatting the date contained in an announcement
|
|
4
3
|
*/
|
|
@@ -9,9 +8,9 @@ export default class DateFormatter {
|
|
|
9
8
|
*/
|
|
10
9
|
rawDate: string;
|
|
11
10
|
/**
|
|
12
|
-
* List of dates formatted correctly contained in the announcement
|
|
11
|
+
* List of dates formatted correctly contained in the announcement (ISO 8601)
|
|
13
12
|
*/
|
|
14
|
-
dates:
|
|
13
|
+
dates: string[];
|
|
15
14
|
/**
|
|
16
15
|
* @param raw Raw data of the announcement
|
|
17
16
|
*/
|
|
@@ -34,7 +33,7 @@ export default class DateFormatter {
|
|
|
34
33
|
*/
|
|
35
34
|
private getRawSpecialDate;
|
|
36
35
|
/**
|
|
37
|
-
* Method for generating the list of correctly formatted dates for case #1
|
|
36
|
+
* Method for generating the list of correctly formatted dates for case #1 (ISO 8601)
|
|
38
37
|
* @private
|
|
39
38
|
*/
|
|
40
39
|
private formatClassic;
|
|
@@ -69,7 +68,7 @@ export default class DateFormatter {
|
|
|
69
68
|
*/
|
|
70
69
|
private getRawClassicMinute2;
|
|
71
70
|
/**
|
|
72
|
-
* Method for generating the correctly formatted date in case #2
|
|
71
|
+
* Method for generating the correctly formatted date in case #2 (ISO 8601)
|
|
73
72
|
* @private
|
|
74
73
|
*/
|
|
75
74
|
private formatSpecial;
|
|
@@ -85,7 +84,7 @@ export default class DateFormatter {
|
|
|
85
84
|
*/
|
|
86
85
|
private getRawSpecialMinute;
|
|
87
86
|
/**
|
|
88
|
-
* Method for formatting a date correctly
|
|
87
|
+
* Method for formatting a date correctly (ISO 8601)
|
|
89
88
|
* @param year
|
|
90
89
|
* @param month
|
|
91
90
|
* @param day
|
|
@@ -93,5 +92,5 @@ export default class DateFormatter {
|
|
|
93
92
|
* @param minute
|
|
94
93
|
* @private
|
|
95
94
|
*/
|
|
96
|
-
private static
|
|
95
|
+
private static generateDate;
|
|
97
96
|
}
|
|
@@ -5,6 +5,15 @@ const moment = require("moment");
|
|
|
5
5
|
* Class for identifying and formatting the date contained in an announcement
|
|
6
6
|
*/
|
|
7
7
|
class DateFormatter {
|
|
8
|
+
raw;
|
|
9
|
+
/**
|
|
10
|
+
* Raw date data contained in the announcement
|
|
11
|
+
*/
|
|
12
|
+
rawDate;
|
|
13
|
+
/**
|
|
14
|
+
* List of dates formatted correctly contained in the announcement (ISO 8601)
|
|
15
|
+
*/
|
|
16
|
+
dates;
|
|
8
17
|
/**
|
|
9
18
|
* @param raw Raw data of the announcement
|
|
10
19
|
*/
|
|
@@ -48,16 +57,16 @@ class DateFormatter {
|
|
|
48
57
|
*/
|
|
49
58
|
getRawSpecialDate() {
|
|
50
59
|
const split = this.raw.split('on the PTS on ');
|
|
51
|
-
return split.length === 2 ? split[1] : '';
|
|
60
|
+
return split.length === 2 ? split[1].split('.')[0] : '';
|
|
52
61
|
}
|
|
53
62
|
/**
|
|
54
|
-
* Method for generating the list of correctly formatted dates for case #1
|
|
63
|
+
* Method for generating the list of correctly formatted dates for case #1 (ISO 8601)
|
|
55
64
|
* @private
|
|
56
65
|
*/
|
|
57
66
|
formatClassic() {
|
|
58
67
|
return [
|
|
59
|
-
DateFormatter.
|
|
60
|
-
DateFormatter.
|
|
68
|
+
DateFormatter.generateDate(moment().get('years'), moment().month(this.getRawClassicMouth()).get('months'), this.getRawClassicDay(), this.getRawHour(), this.getRawClassicMinute1()),
|
|
69
|
+
DateFormatter.generateDate(moment().get('years'), moment().month(this.getRawClassicMouth()).get('months'), this.getRawClassicDay(), this.getRawClassicHour2(), this.getRawClassicMinute2()),
|
|
61
70
|
];
|
|
62
71
|
}
|
|
63
72
|
/**
|
|
@@ -79,37 +88,47 @@ class DateFormatter {
|
|
|
79
88
|
* @private
|
|
80
89
|
*/
|
|
81
90
|
getRawHour() {
|
|
82
|
-
return Number(this.rawDate
|
|
91
|
+
return Number(this.rawDate
|
|
92
|
+
.split(' UTC')[0]
|
|
93
|
+
.split(' ')
|
|
94
|
+
.pop()
|
|
95
|
+
.split(':')[0]
|
|
96
|
+
.replace('(', ''));
|
|
83
97
|
}
|
|
84
98
|
/**
|
|
85
99
|
* Method for retrieving the minute number of the start time for case #1
|
|
86
100
|
* @private
|
|
87
101
|
*/
|
|
88
102
|
getRawClassicMinute1() {
|
|
89
|
-
return Number(this.rawDate.split('
|
|
103
|
+
return Number(this.rawDate.split(' UTC')[0].split(':').pop());
|
|
90
104
|
}
|
|
91
105
|
/**
|
|
92
106
|
* Method for retrieving the end hour number in case #1
|
|
93
107
|
* @private
|
|
94
108
|
*/
|
|
95
109
|
getRawClassicHour2() {
|
|
96
|
-
return Number(this.rawDate
|
|
110
|
+
return Number(this.rawDate
|
|
111
|
+
.split(' UTC')[1]
|
|
112
|
+
.split(' ')
|
|
113
|
+
.pop()
|
|
114
|
+
.split(':')[0]
|
|
115
|
+
.replace('(', ''));
|
|
97
116
|
}
|
|
98
117
|
/**
|
|
99
118
|
* Method for retrieving the minute number of the end time in case #1
|
|
100
119
|
* @private
|
|
101
120
|
*/
|
|
102
121
|
getRawClassicMinute2() {
|
|
103
|
-
return Number(this.rawDate.split('
|
|
122
|
+
return Number(this.rawDate.split(' UTC')[1].split(':').pop());
|
|
104
123
|
}
|
|
105
124
|
/**
|
|
106
|
-
* Method for generating the correctly formatted date in case #2
|
|
125
|
+
* Method for generating the correctly formatted date in case #2 (ISO 8601)
|
|
107
126
|
* @private
|
|
108
127
|
*/
|
|
109
128
|
formatSpecial() {
|
|
110
129
|
const date = this.getSpecialDate();
|
|
111
130
|
return [
|
|
112
|
-
DateFormatter.
|
|
131
|
+
DateFormatter.generateDate(date.get('years'), date.get('months'), date.get('dates'), this.getRawHour(), this.getRawSpecialMinute()),
|
|
113
132
|
];
|
|
114
133
|
}
|
|
115
134
|
/**
|
|
@@ -136,7 +155,7 @@ class DateFormatter {
|
|
|
136
155
|
return Number(this.rawDate.split(':')[2].split(' ')[0]);
|
|
137
156
|
}
|
|
138
157
|
/**
|
|
139
|
-
* Method for formatting a date correctly
|
|
158
|
+
* Method for formatting a date correctly (ISO 8601)
|
|
140
159
|
* @param year
|
|
141
160
|
* @param month
|
|
142
161
|
* @param day
|
|
@@ -144,7 +163,7 @@ class DateFormatter {
|
|
|
144
163
|
* @param minute
|
|
145
164
|
* @private
|
|
146
165
|
*/
|
|
147
|
-
static
|
|
166
|
+
static generateDate(year, month, day, hour, minute) {
|
|
148
167
|
return moment()
|
|
149
168
|
.utc()
|
|
150
169
|
.set('years', year)
|
|
@@ -154,7 +173,8 @@ class DateFormatter {
|
|
|
154
173
|
.set('minutes', minute)
|
|
155
174
|
.set('seconds', 0)
|
|
156
175
|
.set('milliseconds', 0)
|
|
157
|
-
.utcOffset(0)
|
|
176
|
+
.utcOffset(0)
|
|
177
|
+
.toISOString();
|
|
158
178
|
}
|
|
159
179
|
}
|
|
160
180
|
exports.default = DateFormatter;
|
|
@@ -6,95 +6,121 @@ const slug_match_1 = require("./slug.match");
|
|
|
6
6
|
* Class for identifying the list of slugs contained in an announcement
|
|
7
7
|
*/
|
|
8
8
|
class SlugIdentifier {
|
|
9
|
+
raw;
|
|
10
|
+
/**
|
|
11
|
+
* List of slug information found in the announcement
|
|
12
|
+
*/
|
|
13
|
+
slugMatches;
|
|
14
|
+
/**
|
|
15
|
+
* List of slugs to check for presence in the announcement
|
|
16
|
+
* @private
|
|
17
|
+
*/
|
|
18
|
+
slugList = [
|
|
19
|
+
types_1.ServerPcEuSlug,
|
|
20
|
+
types_1.ServerPcNaSlug,
|
|
21
|
+
types_1.ServerPcPtsSlug,
|
|
22
|
+
types_1.ServerPsEuSlug,
|
|
23
|
+
types_1.ServerPsNaSlug,
|
|
24
|
+
types_1.ServerXboxEuSlug,
|
|
25
|
+
types_1.ServerXboxNaSlug,
|
|
26
|
+
types_1.ServiceStoreEsoSlug,
|
|
27
|
+
types_1.ServiceSystemAccountSlug,
|
|
28
|
+
types_1.ServiceWebSiteSlug,
|
|
29
|
+
];
|
|
30
|
+
/**
|
|
31
|
+
* List of indicators proving that the announcement pertains to the slug server_pc_eu
|
|
32
|
+
* @private
|
|
33
|
+
*/
|
|
34
|
+
ServerPcEuMatchesList = [
|
|
35
|
+
'PC/Mac: EU megaserver for',
|
|
36
|
+
'PC/Mac: NA and EU megaservers for',
|
|
37
|
+
'] EU megaservers for',
|
|
38
|
+
'• EU megaservers for',
|
|
39
|
+
];
|
|
40
|
+
/**
|
|
41
|
+
* List of indicators proving that the announcement pertains to the slug server_pc_na
|
|
42
|
+
* @private
|
|
43
|
+
*/
|
|
44
|
+
ServerPcNaMatchesList = [
|
|
45
|
+
'PC/Mac: NA megaserver for',
|
|
46
|
+
'PC/Mac: NA and EU megaservers for',
|
|
47
|
+
'] NA megaservers for',
|
|
48
|
+
'• NA megaservers for',
|
|
49
|
+
'North American PC/Mac megaserver',
|
|
50
|
+
];
|
|
51
|
+
/**
|
|
52
|
+
* List of indicators proving that the announcement pertains to the slug server_pc_pts
|
|
53
|
+
* @private
|
|
54
|
+
*/
|
|
55
|
+
ServerPcPtsMatchesList = ['PTS'];
|
|
56
|
+
/**
|
|
57
|
+
* List of indicators proving that the announcement pertains to the slug server_ps_eu
|
|
58
|
+
* @private
|
|
59
|
+
*/
|
|
60
|
+
ServerPsEuMatchesList = [
|
|
61
|
+
'PlayStation®: NA and EU megaservers for',
|
|
62
|
+
'The PlayStation™ Network',
|
|
63
|
+
'] EU megaservers for',
|
|
64
|
+
'• EU megaservers for',
|
|
65
|
+
];
|
|
66
|
+
/**
|
|
67
|
+
* List of indicators proving that the announcement pertains to the slug server_ps_na
|
|
68
|
+
* @private
|
|
69
|
+
*/
|
|
70
|
+
ServerPsNaMatchesList = [
|
|
71
|
+
'PlayStation®: NA and EU megaservers for',
|
|
72
|
+
'The PlayStation™ Network',
|
|
73
|
+
'] NA megaservers for',
|
|
74
|
+
'• NA megaservers for',
|
|
75
|
+
'North American PlayStation® megaserver',
|
|
76
|
+
];
|
|
77
|
+
/**
|
|
78
|
+
* List of indicators proving that the announcement pertains to the slug server_xbox_eu
|
|
79
|
+
* @private
|
|
80
|
+
*/
|
|
81
|
+
ServerXboxEuMatchesList = [
|
|
82
|
+
'Xbox: NA and EU megaservers for',
|
|
83
|
+
'Xbox: EU megaserver for',
|
|
84
|
+
'] EU megaservers for',
|
|
85
|
+
'• EU megaservers for',
|
|
86
|
+
'Xbox Live™',
|
|
87
|
+
];
|
|
88
|
+
/**
|
|
89
|
+
* List of indicators proving that the announcement pertains to the slug server_xbox_na
|
|
90
|
+
* @private
|
|
91
|
+
*/
|
|
92
|
+
ServerXboxNaMatchesList = [
|
|
93
|
+
'Xbox: NA and EU megaservers for',
|
|
94
|
+
'] NA megaservers for',
|
|
95
|
+
'• NA megaservers for',
|
|
96
|
+
'Xbox Live™',
|
|
97
|
+
];
|
|
98
|
+
/**
|
|
99
|
+
* List of indicators proving that the announcement pertains to the slug service_store_eso
|
|
100
|
+
* @private
|
|
101
|
+
*/
|
|
102
|
+
ServiceStoreEsoMatchesList = ['ESO Store and Account System for'];
|
|
103
|
+
/**
|
|
104
|
+
* List of indicators proving that the announcement pertains to the slug service_system_account
|
|
105
|
+
* @private
|
|
106
|
+
*/
|
|
107
|
+
ServiceSystemAccountMatchesList = ['ESO Store and Account System for'];
|
|
108
|
+
/**
|
|
109
|
+
* List of indicators proving that the announcement pertains to the slug service_web_site
|
|
110
|
+
* @private
|
|
111
|
+
*/
|
|
112
|
+
ServiceWebSiteMatchesList = [
|
|
113
|
+
'ESO Website for',
|
|
114
|
+
];
|
|
9
115
|
/**
|
|
10
116
|
* @param raw Raw data of the announcement
|
|
11
117
|
*/
|
|
12
118
|
constructor(raw) {
|
|
13
119
|
this.raw = raw;
|
|
14
|
-
/**
|
|
15
|
-
* List of slugs to check for presence in the announcement
|
|
16
|
-
* @private
|
|
17
|
-
*/
|
|
18
|
-
this.slugList = [
|
|
19
|
-
types_1.ServerPcEuSlug,
|
|
20
|
-
types_1.ServerPcNaSlug,
|
|
21
|
-
types_1.ServerPcPtsSlug,
|
|
22
|
-
types_1.ServerPsEuSlug,
|
|
23
|
-
types_1.ServerPsNaSlug,
|
|
24
|
-
types_1.ServerXboxEuSlug,
|
|
25
|
-
types_1.ServerXboxNaSlug,
|
|
26
|
-
types_1.ServiceStoreEsoSlug,
|
|
27
|
-
types_1.ServiceSystemAccountSlug,
|
|
28
|
-
types_1.ServiceWebSiteSlug,
|
|
29
|
-
];
|
|
30
|
-
/**
|
|
31
|
-
* List of indicators proving that the announcement pertains to the slug server_pc_eu
|
|
32
|
-
* @private
|
|
33
|
-
*/
|
|
34
|
-
this.ServerPcEuMatchesList = [
|
|
35
|
-
'PC/Mac: EU megaserver for',
|
|
36
|
-
'PC/Mac: NA and EU megaservers for',
|
|
37
|
-
];
|
|
38
|
-
/**
|
|
39
|
-
* List of indicators proving that the announcement pertains to the slug server_pc_na
|
|
40
|
-
* @private
|
|
41
|
-
*/
|
|
42
|
-
this.ServerPcNaMatchesList = [
|
|
43
|
-
'PC/Mac: NA megaserver for',
|
|
44
|
-
'PC/Mac: NA and EU megaservers for',
|
|
45
|
-
];
|
|
46
|
-
/**
|
|
47
|
-
* List of indicators proving that the announcement pertains to the slug server_pc_pts
|
|
48
|
-
* @private
|
|
49
|
-
*/
|
|
50
|
-
this.ServerPcPtsMatchesList = ['PTS'];
|
|
51
|
-
/**
|
|
52
|
-
* List of indicators proving that the announcement pertains to the slug server_ps_eu
|
|
53
|
-
* @private
|
|
54
|
-
*/
|
|
55
|
-
this.ServerPsEuMatchesList = [
|
|
56
|
-
'PlayStation®: NA and EU megaservers for',
|
|
57
|
-
];
|
|
58
|
-
/**
|
|
59
|
-
* List of indicators proving that the announcement pertains to the slug server_ps_na
|
|
60
|
-
* @private
|
|
61
|
-
*/
|
|
62
|
-
this.ServerPsNaMatchesList = [
|
|
63
|
-
'PlayStation®: NA and EU megaservers for',
|
|
64
|
-
];
|
|
65
|
-
/**
|
|
66
|
-
* List of indicators proving that the announcement pertains to the slug server_xbox_eu
|
|
67
|
-
* @private
|
|
68
|
-
*/
|
|
69
|
-
this.ServerXboxEuMatchesList = [
|
|
70
|
-
'Xbox: NA and EU megaservers for',
|
|
71
|
-
];
|
|
72
|
-
/**
|
|
73
|
-
* List of indicators proving that the announcement pertains to the slug server_xbox_na
|
|
74
|
-
* @private
|
|
75
|
-
*/
|
|
76
|
-
this.ServerXboxNaMatchesList = [
|
|
77
|
-
'Xbox: NA and EU megaservers for',
|
|
78
|
-
];
|
|
79
|
-
/**
|
|
80
|
-
* List of indicators proving that the announcement pertains to the slug service_store_eso
|
|
81
|
-
* @private
|
|
82
|
-
*/
|
|
83
|
-
this.ServiceStoreEsoMatchesList = ['ESO Store and Account System for'];
|
|
84
|
-
/**
|
|
85
|
-
* List of indicators proving that the announcement pertains to the slug service_system_account
|
|
86
|
-
* @private
|
|
87
|
-
*/
|
|
88
|
-
this.ServiceSystemAccountMatchesList = ['ESO Store and Account System for'];
|
|
89
|
-
/**
|
|
90
|
-
* List of indicators proving that the announcement pertains to the slug service_web_site
|
|
91
|
-
* @private
|
|
92
|
-
*/
|
|
93
|
-
this.ServiceWebSiteMatchesList = [
|
|
94
|
-
'ESO Website for',
|
|
95
|
-
];
|
|
96
120
|
this.slugMatches = [];
|
|
97
|
-
this.slugList.forEach((slug) =>
|
|
121
|
+
this.slugList.forEach((slug) => {
|
|
122
|
+
this.identify(slug);
|
|
123
|
+
});
|
|
98
124
|
}
|
|
99
125
|
/**
|
|
100
126
|
* Method for retrieving the list of indicators for a slug to test
|
|
@@ -102,7 +128,8 @@ class SlugIdentifier {
|
|
|
102
128
|
* @private
|
|
103
129
|
*/
|
|
104
130
|
getMatchList(slug) {
|
|
105
|
-
|
|
131
|
+
const key = SlugIdentifier.getMatchListName(slug);
|
|
132
|
+
return this[key];
|
|
106
133
|
}
|
|
107
134
|
/**
|
|
108
135
|
* Method for retrieving the name of the list of indicators for a slug to test
|
|
@@ -4,6 +4,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
* Class for retrieving information about a slug found in an announcement
|
|
5
5
|
*/
|
|
6
6
|
class SlugMatch {
|
|
7
|
+
rawSlug;
|
|
8
|
+
slug;
|
|
7
9
|
/**
|
|
8
10
|
* @param rawSlug Data used to identify the presence of the slug in the announcement
|
|
9
11
|
* @param slug Slug found in the announcement
|
|
@@ -8,11 +8,11 @@ export default class StatusIdentifier {
|
|
|
8
8
|
/**
|
|
9
9
|
* Data used to identify the presence of the status in the announcement
|
|
10
10
|
*/
|
|
11
|
-
rawStatus: RemoteRawStatus;
|
|
11
|
+
rawStatus: RemoteRawStatus | null;
|
|
12
12
|
/**
|
|
13
13
|
* Status found in the announcement
|
|
14
14
|
*/
|
|
15
|
-
status: Status;
|
|
15
|
+
status: Status | null;
|
|
16
16
|
/**
|
|
17
17
|
* List of statuses to check for presence in the announcement
|
|
18
18
|
* @private
|
|
@@ -33,6 +33,11 @@ export default class StatusIdentifier {
|
|
|
33
33
|
* @private
|
|
34
34
|
*/
|
|
35
35
|
private readonly plannedMatchesList;
|
|
36
|
+
/**
|
|
37
|
+
* List of indicators proving that the announcement pertains to the status issues
|
|
38
|
+
* @private
|
|
39
|
+
*/
|
|
40
|
+
private readonly issuesMatchesList;
|
|
36
41
|
/**
|
|
37
42
|
* @param raw Raw data of the announcement
|
|
38
43
|
*/
|
|
@@ -5,42 +5,68 @@ const types_1 = require("@eso-status/types");
|
|
|
5
5
|
* Class for identifying the status contained in an announcement
|
|
6
6
|
*/
|
|
7
7
|
class StatusIdentifier {
|
|
8
|
+
raw;
|
|
9
|
+
/**
|
|
10
|
+
* Data used to identify the presence of the status in the announcement
|
|
11
|
+
*/
|
|
12
|
+
rawStatus;
|
|
13
|
+
/**
|
|
14
|
+
* Status found in the announcement
|
|
15
|
+
*/
|
|
16
|
+
status;
|
|
17
|
+
/**
|
|
18
|
+
* List of statuses to check for presence in the announcement
|
|
19
|
+
* @private
|
|
20
|
+
*/
|
|
21
|
+
statusList = [
|
|
22
|
+
types_1.UpStatus,
|
|
23
|
+
types_1.DownStatus,
|
|
24
|
+
types_1.PlannedStatus,
|
|
25
|
+
types_1.IssuesStatus,
|
|
26
|
+
];
|
|
27
|
+
/**
|
|
28
|
+
* List of indicators proving that the announcement pertains to the status up
|
|
29
|
+
* @private
|
|
30
|
+
*/
|
|
31
|
+
upMatchesList = [
|
|
32
|
+
'[COMPLETE]',
|
|
33
|
+
'now available',
|
|
34
|
+
'complete',
|
|
35
|
+
'been resolved',
|
|
36
|
+
];
|
|
37
|
+
/**
|
|
38
|
+
* List of indicators proving that the announcement pertains to the status down
|
|
39
|
+
* @private
|
|
40
|
+
*/
|
|
41
|
+
downMatchesList = [
|
|
42
|
+
'[EXTENDED]',
|
|
43
|
+
'[IN PROGRESS]',
|
|
44
|
+
'unavailable',
|
|
45
|
+
];
|
|
46
|
+
/**
|
|
47
|
+
* List of indicators proving that the announcement pertains to the status planned
|
|
48
|
+
* @private
|
|
49
|
+
*/
|
|
50
|
+
plannedMatchesList = [
|
|
51
|
+
'We will be performing maintenance',
|
|
52
|
+
'will be taken offline for maintenance',
|
|
53
|
+
];
|
|
54
|
+
/**
|
|
55
|
+
* List of indicators proving that the announcement pertains to the status issues
|
|
56
|
+
* @private
|
|
57
|
+
*/
|
|
58
|
+
issuesMatchesList = [
|
|
59
|
+
'is currently experiencing a service interruption',
|
|
60
|
+
'currently investigating',
|
|
61
|
+
];
|
|
8
62
|
/**
|
|
9
63
|
* @param raw Raw data of the announcement
|
|
10
64
|
*/
|
|
11
65
|
constructor(raw) {
|
|
12
66
|
this.raw = raw;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
*/
|
|
17
|
-
this.statusList = [types_1.UpStatus, types_1.DownStatus, types_1.PlannedStatus];
|
|
18
|
-
/**
|
|
19
|
-
* List of indicators proving that the announcement pertains to the status up
|
|
20
|
-
* @private
|
|
21
|
-
*/
|
|
22
|
-
this.upMatchesList = [
|
|
23
|
-
'[COMPLETE]',
|
|
24
|
-
'now available',
|
|
25
|
-
'complete',
|
|
26
|
-
];
|
|
27
|
-
/**
|
|
28
|
-
* List of indicators proving that the announcement pertains to the status down
|
|
29
|
-
* @private
|
|
30
|
-
*/
|
|
31
|
-
this.downMatchesList = [
|
|
32
|
-
'[EXTENDED]',
|
|
33
|
-
'[IN PROGRESS]',
|
|
34
|
-
'unavailable',
|
|
35
|
-
];
|
|
36
|
-
/**
|
|
37
|
-
* List of indicators proving that the announcement pertains to the status planned
|
|
38
|
-
* @private
|
|
39
|
-
*/
|
|
40
|
-
this.plannedMatchesList = [
|
|
41
|
-
'We will be performing maintenance',
|
|
42
|
-
];
|
|
43
|
-
this.statusList.forEach((status) => this.identify(status));
|
|
67
|
+
this.statusList.forEach((status) => {
|
|
68
|
+
this.identify(status);
|
|
69
|
+
});
|
|
44
70
|
this.default();
|
|
45
71
|
}
|
|
46
72
|
/**
|
|
@@ -77,9 +103,7 @@ class StatusIdentifier {
|
|
|
77
103
|
* @private
|
|
78
104
|
*/
|
|
79
105
|
default() {
|
|
80
|
-
|
|
81
|
-
this.status = types_1.PlannedStatus;
|
|
82
|
-
}
|
|
106
|
+
this.status ??= types_1.PlannedStatus;
|
|
83
107
|
}
|
|
84
108
|
}
|
|
85
109
|
exports.default = StatusIdentifier;
|
package/lib/index.js
CHANGED
|
@@ -5,6 +5,8 @@ const connector_1 = require("./connector");
|
|
|
5
5
|
/**
|
|
6
6
|
* Class for retrieving announcement information
|
|
7
7
|
*/
|
|
8
|
+
/* eslint-disable @typescript-eslint/no-extraneous-class */
|
|
9
|
+
/* eslint-disable @typescript-eslint/unified-signatures */
|
|
8
10
|
class ForumMessage {
|
|
9
11
|
/**
|
|
10
12
|
* Method for retrieving announcement information
|
|
@@ -16,4 +18,6 @@ class ForumMessage {
|
|
|
16
18
|
}
|
|
17
19
|
}
|
|
18
20
|
exports.default = ForumMessage;
|
|
21
|
+
/* eslint-enable @typescript-eslint/no-extraneous-class */
|
|
22
|
+
/* eslint-enable @typescript-eslint/unified-signatures */
|
|
19
23
|
//# sourceMappingURL=index.js.map
|
package/lib/raw.d.ts
CHANGED
|
@@ -4,8 +4,8 @@ import { EsoStatusRawData } from './interface/esoStatusRawData.interface';
|
|
|
4
4
|
* Class containing announcement information
|
|
5
5
|
*/
|
|
6
6
|
export default class Raw {
|
|
7
|
-
private url;
|
|
8
|
-
private raw;
|
|
7
|
+
private readonly url;
|
|
8
|
+
private readonly raw;
|
|
9
9
|
/**
|
|
10
10
|
* Status identification class
|
|
11
11
|
* @private
|
|
@@ -20,7 +20,7 @@ export default class Raw {
|
|
|
20
20
|
* Class for identifying the list of slugs
|
|
21
21
|
* @private
|
|
22
22
|
*/
|
|
23
|
-
private slugsIdentifier;
|
|
23
|
+
private readonly slugsIdentifier;
|
|
24
24
|
/**
|
|
25
25
|
* List of information about slugs found in the announcement
|
|
26
26
|
*/
|
package/lib/raw.js
CHANGED
|
@@ -7,6 +7,27 @@ const slug_identifier_1 = require("./identifier/slug.identifier");
|
|
|
7
7
|
* Class containing announcement information
|
|
8
8
|
*/
|
|
9
9
|
class Raw {
|
|
10
|
+
url;
|
|
11
|
+
raw;
|
|
12
|
+
/**
|
|
13
|
+
* Status identification class
|
|
14
|
+
* @private
|
|
15
|
+
*/
|
|
16
|
+
statusIdentifier;
|
|
17
|
+
/**
|
|
18
|
+
* Class for identifying and formatting the date(s)
|
|
19
|
+
* @private
|
|
20
|
+
*/
|
|
21
|
+
dateFormatter;
|
|
22
|
+
/**
|
|
23
|
+
* Class for identifying the list of slugs
|
|
24
|
+
* @private
|
|
25
|
+
*/
|
|
26
|
+
slugsIdentifier;
|
|
27
|
+
/**
|
|
28
|
+
* List of information about slugs found in the announcement
|
|
29
|
+
*/
|
|
30
|
+
matches = [];
|
|
10
31
|
/**
|
|
11
32
|
* @param url URL used as the source to retrieve announcements
|
|
12
33
|
* @param raw Raw data of the announcement
|
|
@@ -14,10 +35,6 @@ class Raw {
|
|
|
14
35
|
constructor(url, raw) {
|
|
15
36
|
this.url = url;
|
|
16
37
|
this.raw = raw;
|
|
17
|
-
/**
|
|
18
|
-
* List of information about slugs found in the announcement
|
|
19
|
-
*/
|
|
20
|
-
this.matches = [];
|
|
21
38
|
this.statusIdentifier = new status_identifier_1.default(this.raw);
|
|
22
39
|
this.dateFormatter = new date_formatter_1.default(this.raw);
|
|
23
40
|
this.slugsIdentifier = new slug_identifier_1.default(this.raw);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Different statuses of announcements indicating that the announcement refers to a service/server that will be undergoing maintenance soon
|
|
3
3
|
*/
|
|
4
|
-
export type RemotePlannedRawStatus = 'We will be performing maintenance';
|
|
4
|
+
export type RemotePlannedRawStatus = 'We will be performing maintenance' | 'will be taken offline for maintenance';
|
|
@@ -5,7 +5,9 @@ import { RemoteServerPsEuRawSlug } from './remoteServerPsEuRawSlug.type';
|
|
|
5
5
|
import { RemoteServerXboxEuRawSlug } from './remoteServerXboxEuRawSlug.type';
|
|
6
6
|
import { RemoteServiceStoreEsoRawSlug } from './remoteServiceStoreEsoRawSlug.type';
|
|
7
7
|
import { RemoteServiceWebSiteRawSlug } from './remoteServiceWebSiteRawSlug.type';
|
|
8
|
+
import { RemoteServerXboxNaRawSlug } from './remoteServerXboxNaRawSlug.type';
|
|
9
|
+
import { RemoteServerPsNaRawSlug } from './remoteServerPsNaRawSlug.type';
|
|
8
10
|
/**
|
|
9
11
|
* Different slugs of announcements
|
|
10
12
|
*/
|
|
11
|
-
export type RemoteRawSlug = RemoteServerPcEuRawSlug | RemoteServerPcNaRawSlug | RemoteServerPcPtsRawSlug | RemoteServerPsEuRawSlug | RemoteServerXboxEuRawSlug | RemoteServiceStoreEsoRawSlug | RemoteServiceWebSiteRawSlug;
|
|
13
|
+
export type RemoteRawSlug = RemoteServerPcEuRawSlug | RemoteServerPcNaRawSlug | RemoteServerPcPtsRawSlug | RemoteServerPsEuRawSlug | RemoteServerPsNaRawSlug | RemoteServerXboxEuRawSlug | RemoteServerXboxNaRawSlug | RemoteServiceStoreEsoRawSlug | RemoteServiceWebSiteRawSlug;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { RemoteUpRawStatus } from './remoteUpRawStatus.type';
|
|
2
2
|
import { RemoteDownRawStatus } from './remoteDownRawStatus.type';
|
|
3
3
|
import { RemotePlannedRawStatus } from './remotePlannedRawStatus.type';
|
|
4
|
+
import { RemoteIssuesRawStatus } from './remoteIssuesRawStatus.type';
|
|
4
5
|
/**
|
|
5
6
|
* Different statuses of announcements
|
|
6
7
|
*/
|
|
7
|
-
export type RemoteRawStatus = RemoteUpRawStatus | RemoteDownRawStatus | RemotePlannedRawStatus;
|
|
8
|
+
export type RemoteRawStatus = RemoteUpRawStatus | RemoteDownRawStatus | RemotePlannedRawStatus | RemoteIssuesRawStatus;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Different slugs of announcements concerning the European PC/Mac Megaserver
|
|
3
3
|
*/
|
|
4
|
-
export type RemoteServerPcEuRawSlug = 'PC/Mac: EU megaserver for' | 'PC/Mac: NA and EU megaservers for';
|
|
4
|
+
export type RemoteServerPcEuRawSlug = 'PC/Mac: EU megaserver for' | 'PC/Mac: NA and EU megaservers for' | '] EU megaservers for' | '• EU megaservers for';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Different slugs of announcements concerning the North American PC/Mac Megaserver
|
|
3
3
|
*/
|
|
4
|
-
export type RemoteServerPcNaRawSlug = 'PC/Mac: NA megaserver for' | 'PC/Mac: NA and EU megaservers for';
|
|
4
|
+
export type RemoteServerPcNaRawSlug = 'PC/Mac: NA megaserver for' | 'PC/Mac: NA and EU megaservers for' | '] NA megaservers for' | '• NA megaservers for' | 'North American PC/Mac megaserver';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Different slugs of announcements concerning the European PlayStation® Megaserver
|
|
3
3
|
*/
|
|
4
|
-
export type RemoteServerPsEuRawSlug = 'PlayStation®: NA and EU megaservers for';
|
|
4
|
+
export type RemoteServerPsEuRawSlug = 'PlayStation®: NA and EU megaservers for' | 'The PlayStation™ Network' | '] EU megaservers for' | '• EU megaservers for';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Different slugs of announcements concerning the North American PlayStation® Megaserver
|
|
3
3
|
*/
|
|
4
|
-
export type RemoteServerPsNaRawSlug = 'PlayStation®: NA and EU megaservers for';
|
|
4
|
+
export type RemoteServerPsNaRawSlug = 'PlayStation®: NA and EU megaservers for' | 'The PlayStation™ Network' | '] NA megaservers for' | '• NA megaservers for' | 'North American PlayStation® megaserver';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Different slugs of announcements concerning the European Xbox Megaserver
|
|
3
3
|
*/
|
|
4
|
-
export type RemoteServerXboxEuRawSlug = 'Xbox: NA and EU megaservers for';
|
|
4
|
+
export type RemoteServerXboxEuRawSlug = 'Xbox: NA and EU megaservers for' | 'Xbox: EU megaserver for' | '] EU megaservers for' | '• EU megaservers for' | 'Xbox Live™';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Different slugs of announcements concerning the North American Xbox Megaserver
|
|
3
3
|
*/
|
|
4
|
-
export type RemoteServerXboxNaRawSlug = 'Xbox: NA and EU megaservers for';
|
|
4
|
+
export type RemoteServerXboxNaRawSlug = 'Xbox: NA and EU megaservers for' | '] NA megaservers for' | '• NA megaservers for' | 'Xbox Live™';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Different statuses of announcements indicating that the announcement refers to an accessible service/server
|
|
3
3
|
*/
|
|
4
|
-
export type RemoteUpRawStatus = '[COMPLETE]' | 'now available' | 'complete';
|
|
4
|
+
export type RemoteUpRawStatus = '[COMPLETE]' | 'now available' | 'complete' | 'been resolved';
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eso-status/forum-message",
|
|
3
|
-
"version": "2.0.0-dev.
|
|
3
|
+
"version": "2.0.0-dev.21",
|
|
4
4
|
"description": "Library for retrieving and formatting data, available at https://forums.elderscrollsonline.com or https://forums.elderscrollsonline.com/en/categories/pts",
|
|
5
|
-
"author": "@dov118 <contact
|
|
5
|
+
"author": "@dov118 <contact.dov118.dev@gmail.com> (https://dov118.dev)",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"engineStrict": true,
|
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
"lib/type/messageType.type.js",
|
|
20
20
|
"lib/type/remoteDownRawStatus.type.d.ts",
|
|
21
21
|
"lib/type/remoteDownRawStatus.type.js",
|
|
22
|
+
"lib/type/remoteIssuesRawStatus.type.d.ts",
|
|
23
|
+
"lib/type/remoteIssuesRawStatus.type.js",
|
|
22
24
|
"lib/type/remotePlannedRawStatus.type.d.ts",
|
|
23
25
|
"lib/type/remotePlannedRawStatus.type.js",
|
|
24
26
|
"lib/type/remoteRawSlug.type.d.ts",
|
|
@@ -63,7 +65,7 @@
|
|
|
63
65
|
"README.md"
|
|
64
66
|
],
|
|
65
67
|
"engines": {
|
|
66
|
-
"node": "^
|
|
68
|
+
"node": "^20.19.0 || ^22.13.0 || >=24"
|
|
67
69
|
},
|
|
68
70
|
"bugs": {
|
|
69
71
|
"url": "https://github.com/eso-status/forum-message/issues"
|
|
@@ -80,32 +82,42 @@
|
|
|
80
82
|
"build": "rm -R -f lib/* && tsc --project tsconfig.build.json",
|
|
81
83
|
"dev": "npm run build && node .",
|
|
82
84
|
"watch": "nodemon --exec npm run dev",
|
|
83
|
-
"test": "npm run build && jest --runInBand
|
|
84
|
-
"test:watch": "jest --runInBand --watch
|
|
85
|
-
"test:cov": "jest --runInBand --coverage
|
|
85
|
+
"test": "npm run build && jest --runInBand",
|
|
86
|
+
"test:watch": "jest --runInBand --watch",
|
|
87
|
+
"test:cov": "jest --runInBand --coverage",
|
|
86
88
|
"prepare": "husky"
|
|
87
89
|
},
|
|
88
90
|
"dependencies": {
|
|
89
|
-
"@eso-status/types": "2.0.0-dev.
|
|
90
|
-
"axios": "1.
|
|
91
|
+
"@eso-status/types": "2.0.0-dev.17",
|
|
92
|
+
"axios": "1.13.6",
|
|
91
93
|
"moment": "2.30.1"
|
|
92
94
|
},
|
|
95
|
+
"lint-staged": {
|
|
96
|
+
"*.ts": [
|
|
97
|
+
"eslint --fix",
|
|
98
|
+
"prettier --write"
|
|
99
|
+
],
|
|
100
|
+
"*.{json,md,yml,yaml}": [
|
|
101
|
+
"prettier --write"
|
|
102
|
+
]
|
|
103
|
+
},
|
|
93
104
|
"devDependencies": {
|
|
94
|
-
"@
|
|
95
|
-
"
|
|
96
|
-
"eslint
|
|
97
|
-
"eslint-config-
|
|
98
|
-
"eslint-
|
|
99
|
-
"eslint-plugin-
|
|
100
|
-
"eslint-plugin-
|
|
101
|
-
"
|
|
102
|
-
"
|
|
103
|
-
"
|
|
104
|
-
"
|
|
105
|
-
"nodemon": "3.1.
|
|
106
|
-
"prettier": "3.
|
|
107
|
-
"ts-jest": "29.
|
|
108
|
-
"typescript": "5.
|
|
105
|
+
"@eslint/js": "10.0.1",
|
|
106
|
+
"@types/jest": "30.0.0",
|
|
107
|
+
"eslint": "10.0.3",
|
|
108
|
+
"eslint-config-prettier": "10.1.8",
|
|
109
|
+
"eslint-plugin-jest": "29.15.0",
|
|
110
|
+
"eslint-plugin-sonarjs": "4.0.2",
|
|
111
|
+
"eslint-plugin-unused-imports": "4.4.1",
|
|
112
|
+
"globals": "17.4.0",
|
|
113
|
+
"husky": "9.1.7",
|
|
114
|
+
"jest": "30.3.0",
|
|
115
|
+
"lint-staged": "16.3.3",
|
|
116
|
+
"nodemon": "3.1.14",
|
|
117
|
+
"prettier": "3.8.1",
|
|
118
|
+
"ts-jest": "29.4.6",
|
|
119
|
+
"typescript": "5.9.3",
|
|
120
|
+
"typescript-eslint": "8.57.0"
|
|
109
121
|
},
|
|
110
122
|
"jest": {
|
|
111
123
|
"moduleFileExtensions": [
|
|
@@ -123,9 +135,6 @@
|
|
|
123
135
|
],
|
|
124
136
|
"coverageDirectory": "./coverage",
|
|
125
137
|
"testEnvironment": "node",
|
|
126
|
-
"setupFiles": [
|
|
127
|
-
"dotenv/config"
|
|
128
|
-
],
|
|
129
138
|
"moduleDirectories": [
|
|
130
139
|
"node_modules",
|
|
131
140
|
"src"
|