@time2win/t2w 1.4.10 → 1.4.12

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/index.js CHANGED
@@ -1,380 +1,386 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
- return new (P || (P = Promise))(function (resolve, reject) {
16
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
- step((generator = generator.apply(thisArg, _arguments || [])).next());
20
- });
21
- };
22
- var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
- function verb(n) { return function (v) { return step([n, v]); }; }
26
- function step(op) {
27
- if (f) throw new TypeError("Generator is already executing.");
28
- while (_) try {
29
- 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;
30
- if (y = 0, t) op = [op[0] & 2, t.value];
31
- switch (op[0]) {
32
- case 0: case 1: t = op; break;
33
- case 4: _.label++; return { value: op[1], done: false };
34
- case 5: _.label++; y = op[1]; op = [0]; continue;
35
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
- default:
37
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
- if (t[2]) _.ops.pop();
42
- _.trys.pop(); continue;
43
- }
44
- op = body.call(thisArg, _);
45
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
- }
48
- };
49
- Object.defineProperty(exports, "__esModule", { value: true });
50
- var Time2WinAPI = /** @class */ (function () {
51
- function Time2WinAPI(apiKey) {
52
- this.apiUrl = 'https://time2win.at/api/1.1/{{route}}';
53
- this.apiKey = apiKey;
54
- this.pageSize = 250;
55
- }
56
- Time2WinAPI.prototype.getEventData = function (eventId, dataExtra) {
57
- return __awaiter(this, void 0, void 0, function () {
58
- var _this = this;
59
- return __generator(this, function (_a) {
60
- return [2 /*return*/, new Promise(function (resolve, reject) {
61
- var queryParams = { 'data_extra': (dataExtra === null || dataExtra === void 0 ? void 0 : dataExtra.join(',')) || '', 'page_size': _this.pageSize };
62
- fetch(_this.getUrl("event/".concat(eventId, "/eventdata"), queryParams))
63
- .then(function (response) { return __awaiter(_this, void 0, void 0, function () {
64
- var body;
65
- return __generator(this, function (_a) {
66
- switch (_a.label) {
67
- case 0: return [4 /*yield*/, response.json()];
68
- case 1:
69
- body = _a.sent();
70
- if (response.status === 403) {
71
- reject(body);
72
- return [2 /*return*/];
73
- }
74
- // Convert strings to dates
75
- body.races = body.races.map(function (r) {
76
- return __assign(__assign({}, r), { starttime: new Date(r.starttime) });
77
- });
78
- body.registration_start = new Date("".concat(body.registration_start, "Z"));
79
- body.registration_end = new Date("".concat(body.registration_end, "Z"));
80
- resolve(body);
81
- return [2 /*return*/];
82
- }
83
- });
84
- }); })
85
- .catch(function (reason) { return reject(reason); });
86
- })];
87
- });
88
- });
89
- };
90
- Time2WinAPI.prototype.getTeamResult = function (eventId, raceId, dataExtra, teamType, page) {
91
- if (page === void 0) { page = 1; }
92
- return __awaiter(this, void 0, void 0, function () {
93
- var _this = this;
94
- return __generator(this, function (_a) {
95
- return [2 /*return*/, new Promise(function (resolve, reject) {
96
- var queryParams = {
97
- 'race_id': raceId,
98
- 'data_extra': (dataExtra === null || dataExtra === void 0 ? void 0 : dataExtra.join(',')) || '',
99
- page: page,
100
- 'team_type': teamType || '',
101
- 'page_size': _this.pageSize
102
- };
103
- fetch(_this.getUrl("results/".concat(eventId, "/teams"), queryParams))
104
- .then(function (response) { return __awaiter(_this, void 0, void 0, function () {
105
- var body, _a, _b, _c;
106
- var _d;
107
- var _this = this;
108
- return __generator(this, function (_e) {
109
- switch (_e.label) {
110
- case 0: return [4 /*yield*/, response.json()];
111
- case 1:
112
- body = _e.sent();
113
- if (response.status === 403) {
114
- reject(body);
115
- return [2 /*return*/];
116
- }
117
- if (!(body.page < body.page_total)) return [3 /*break*/, 3];
118
- _b = (_a = (_d = body.list).push).apply;
119
- _c = [_d];
120
- return [4 /*yield*/, this.getTeamResult(eventId, raceId, dataExtra, teamType, body.page + 1)];
121
- case 2:
122
- _b.apply(_a, _c.concat([(_e.sent()).list]));
123
- body.page = Math.ceil(body.list.length / body.page_size);
124
- resolve(body);
125
- _e.label = 3;
126
- case 3:
127
- body.list = body.list.map(function (p) {
128
- return __assign(__assign({}, p), { racenumNumeric: _this.getNumericBib(p.racenum) });
129
- });
130
- resolve(body);
131
- return [2 /*return*/];
132
- }
133
- });
134
- }); })
135
- .catch(function (reason) { return reject(reason); });
136
- })];
137
- });
138
- });
139
- };
140
- Time2WinAPI.prototype.getTeamsWithMembers = function (eventId, raceId, dataExtra, page) {
141
- if (page === void 0) { page = 1; }
142
- return __awaiter(this, void 0, void 0, function () {
143
- var _this = this;
144
- return __generator(this, function (_a) {
145
- return [2 /*return*/, new Promise(function (resolve, reject) {
146
- var queryParams = {
147
- 'race_id': raceId || '',
148
- 'data_extra': (dataExtra === null || dataExtra === void 0 ? void 0 : dataExtra.join(',')) || '',
149
- 'page_size': _this.pageSize,
150
- page: page
151
- };
152
- fetch(_this.getUrl("participants/".concat(eventId, "/teams"), queryParams))
153
- .then(function (response) { return __awaiter(_this, void 0, void 0, function () {
154
- var body, _a, _b, _c;
155
- var _d;
156
- var _this = this;
157
- return __generator(this, function (_e) {
158
- switch (_e.label) {
159
- case 0: return [4 /*yield*/, response.json()];
160
- case 1:
161
- body = _e.sent();
162
- if (response.status === 403) {
163
- reject(body);
164
- return [2 /*return*/];
165
- }
166
- if (!body.page_more) return [3 /*break*/, 3];
167
- _b = (_a = (_d = body.list).push).apply;
168
- _c = [_d];
169
- return [4 /*yield*/, this.getTeamsWithMembers(eventId, raceId, dataExtra, body.page + 1)];
170
- case 2:
171
- _b.apply(_a, _c.concat([(_e.sent()).list]));
172
- body.page_more = false;
173
- body.page = Math.ceil(body.list.length / body.page_size);
174
- resolve(body);
175
- _e.label = 3;
176
- case 3:
177
- body.list = body.list.map(function (p) {
178
- var _a;
179
- return __assign(__assign({}, p), { racenumNumeric: _this.getNumericBib(p.racenum), members: ((_a = p.members) === null || _a === void 0 ? void 0 : _a.map(function (m) {
180
- return __assign(__assign({}, m), { racenumNumeric: _this.getNumericBib(m.racenum) });
181
- })) || [] });
182
- });
183
- resolve(body);
184
- return [2 /*return*/];
185
- }
186
- });
187
- }); })
188
- .catch(function (reason) { return reject(reason); });
189
- })];
190
- });
191
- });
192
- };
193
- Time2WinAPI.prototype.getIndividualResults = function (eventId, raceId, dataExtra, gender, page) {
194
- if (page === void 0) { page = 1; }
195
- return __awaiter(this, void 0, void 0, function () {
196
- var _this = this;
197
- return __generator(this, function (_a) {
198
- return [2 /*return*/, new Promise(function (resolve, reject) {
199
- var queryParams = {
200
- 'race_id': raceId,
201
- 'data_extra': (dataExtra === null || dataExtra === void 0 ? void 0 : dataExtra.join(',')) || '',
202
- page: page,
203
- 'gender': gender || '',
204
- 'page_size': _this.pageSize
205
- };
206
- fetch(_this.getUrl("results/".concat(eventId, "/individuals"), queryParams))
207
- .then(function (response) { return __awaiter(_this, void 0, void 0, function () {
208
- var body, _a, _b, _c;
209
- var _d;
210
- var _this = this;
211
- return __generator(this, function (_e) {
212
- switch (_e.label) {
213
- case 0: return [4 /*yield*/, response.json()];
214
- case 1:
215
- body = _e.sent();
216
- if (response.status === 403) {
217
- reject(body);
218
- return [2 /*return*/];
219
- }
220
- if (!(body.page < body.page_total)) return [3 /*break*/, 3];
221
- _b = (_a = (_d = body.list).push).apply;
222
- _c = [_d];
223
- return [4 /*yield*/, this.getIndividualResults(eventId, raceId, dataExtra, gender, body.page + 1)];
224
- case 2:
225
- _b.apply(_a, _c.concat([(_e.sent()).list]));
226
- body.page = Math.ceil(body.list.length / body.page_size);
227
- resolve(body);
228
- _e.label = 3;
229
- case 3:
230
- body.list = body.list.map(function (p) {
231
- return __assign(__assign({}, p), { birthdate: p.birthdate ? new Date(p.birthdate) : null, racenumNumeric: _this.getNumericBib(p.racenum) });
232
- });
233
- resolve(body);
234
- return [2 /*return*/];
235
- }
236
- });
237
- }); })
238
- .catch(function (reason) { return reject(reason); });
239
- })];
240
- });
241
- });
242
- };
243
- Time2WinAPI.prototype.getParticipantInfos = function (eventId, raceId, dataExtra, gender, page) {
244
- if (page === void 0) { page = 1; }
245
- return __awaiter(this, void 0, void 0, function () {
246
- var _this = this;
247
- return __generator(this, function (_a) {
248
- return [2 /*return*/, new Promise(function (resolve, reject) {
249
- var queryParams = {
250
- 'race_id': raceId || '',
251
- 'data_extra': (dataExtra === null || dataExtra === void 0 ? void 0 : dataExtra.join(',')) || '',
252
- gender: gender || '',
253
- page: page,
254
- 'page_size': _this.pageSize
255
- };
256
- fetch(_this.getUrl("/participants/".concat(eventId, "/individuals"), queryParams))
257
- .then(function (response) { return __awaiter(_this, void 0, void 0, function () {
258
- var body, race, _a, _b, _c;
259
- var _d;
260
- var _this = this;
261
- return __generator(this, function (_e) {
262
- switch (_e.label) {
263
- case 0: return [4 /*yield*/, response.json()];
264
- case 1:
265
- body = _e.sent();
266
- if (response.status === 403) {
267
- reject(body);
268
- return [2 /*return*/];
269
- }
270
- return [4 /*yield*/, this.getEventData(eventId)];
271
- case 2:
272
- race = (_e.sent()).races.find(function (r) { return r.race_id === raceId; });
273
- if (!body.page_more) return [3 /*break*/, 4];
274
- _b = (_a = (_d = body.list).push).apply;
275
- _c = [_d];
276
- return [4 /*yield*/, this.getParticipantInfos(eventId, raceId, dataExtra, gender, body.page + 1)];
277
- case 3:
278
- _b.apply(_a, _c.concat([(_e.sent()).list]));
279
- body.page_more = false;
280
- body.page = Math.ceil(body.list.length / body.page_size);
281
- resolve(body);
282
- _e.label = 4;
283
- case 4:
284
- body.list = body.list.map(function (p) {
285
- return __assign(__assign({}, p), { birthdate: p.birthdate ? new Date(p.birthdate) : null, age: p.birthdate && race ? _this.calculateAge(new Date(p.birthdate), race.starttime) : null, year: p.birthdate ? new Date(p.birthdate).getFullYear() : null, order_date: p.order_date ? new Date(p.order_date) : null, racenumNumeric: _this.getNumericBib(p.racenum) });
286
- });
287
- resolve(body);
288
- return [2 /*return*/];
289
- }
290
- });
291
- }); })
292
- .catch(function (reason) { return reject(reason); });
293
- })];
294
- });
295
- });
296
- };
297
- /*
298
- * if no params are given, the events in the next seven days are returned
299
- * */
300
- Time2WinAPI.prototype.getUpcomingEvents = function (from, to, page) {
301
- if (from === void 0) { from = new Date(); }
302
- if (page === void 0) { page = 1; }
303
- return __awaiter(this, void 0, void 0, function () {
304
- var _this = this;
305
- return __generator(this, function (_a) {
306
- if (!to) {
307
- to = new Date();
308
- to.setDate(to.getDate() + 7);
309
- }
310
- return [2 /*return*/, new Promise(function (resolve, reject) {
311
- fetch(_this.getUrl("/events/list?from=".concat(_this.formatDate(from), "&to=").concat(_this.formatDate(to), "&page=").concat(page)))
312
- .then(function (response) { return __awaiter(_this, void 0, void 0, function () {
313
- var body, _a, _b, _c;
314
- var _d;
315
- return __generator(this, function (_e) {
316
- switch (_e.label) {
317
- case 0: return [4 /*yield*/, response.json()];
318
- case 1:
319
- body = _e.sent();
320
- if (response.status === 403) {
321
- reject(body);
322
- return [2 /*return*/];
323
- }
324
- if (!body.page_more) return [3 /*break*/, 3];
325
- _b = (_a = (_d = body.events).push).apply;
326
- _c = [_d];
327
- return [4 /*yield*/, this.getUpcomingEvents(from, to, body.page + 1)];
328
- case 2:
329
- _b.apply(_a, _c.concat([(_e.sent()).events]));
330
- body.page_more = false;
331
- body.page = Math.ceil(body.events.length / body.page_size);
332
- resolve(body);
333
- _e.label = 3;
334
- case 3:
335
- resolve(body);
336
- return [2 /*return*/];
337
- }
338
- });
339
- }); })
340
- .catch(function (reason) { return reject(reason); });
341
- })];
342
- });
343
- });
344
- };
345
- Time2WinAPI.prototype.getUrl = function (route, queryParams) {
346
- var url = this.apiUrl.replace('{{route}}', route);
347
- if (url.endsWith('/')) {
348
- url = url.slice(0, -1);
349
- }
350
- url += url.includes('?') ? "&apikey=".concat(this.apiKey) : "?apikey=".concat(this.apiKey);
351
- if (queryParams) {
352
- for (var key in queryParams) {
353
- url += "&".concat(key, "=").concat(queryParams[key]);
354
- }
355
- }
356
- return url;
357
- };
358
- Time2WinAPI.prototype.calculateAge = function (birthday, raceDate) {
359
- return Math.abs(new Date(raceDate.getTime() - birthday.getTime()).getUTCFullYear() - 1970);
360
- };
361
- Time2WinAPI.prototype.formatDate = function (date) {
362
- return date.toISOString().split('T')[0];
363
- };
364
- Time2WinAPI.prototype.getNumericBib = function (bib) {
365
- if (!bib)
366
- return null;
367
- if (bib.includes('-')) {
368
- var parts = bib.split('-');
369
- if (parts.length === 2) {
370
- bib = bib.split('-')[0];
371
- }
372
- else if (parts.length === 3) {
373
- bib = bib.split('-')[1];
374
- }
375
- }
376
- return Number((bib.match(/[0-9]/g) || []).join(''));
377
- };
378
- return Time2WinAPI;
379
- }());
380
- exports.default = Time2WinAPI;
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (_) try {
29
+ 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;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ var Time2WinAPI = /** @class */ (function () {
51
+ function Time2WinAPI(apiKey) {
52
+ this.apiUrl = 'https://time2win.at/api/1.1/{{route}}';
53
+ this.apiKey = apiKey;
54
+ this.pageSize = 250;
55
+ }
56
+ Time2WinAPI.prototype.getEventData = function (eventId, dataExtra) {
57
+ return __awaiter(this, void 0, void 0, function () {
58
+ var _this = this;
59
+ return __generator(this, function (_a) {
60
+ return [2 /*return*/, new Promise(function (resolve, reject) {
61
+ var queryParams = { 'data_extra': (dataExtra === null || dataExtra === void 0 ? void 0 : dataExtra.join(',')) || '', 'page_size': _this.pageSize };
62
+ fetch(_this.getUrl("event/".concat(eventId, "/eventdata"), queryParams))
63
+ .then(function (response) { return __awaiter(_this, void 0, void 0, function () {
64
+ var body;
65
+ return __generator(this, function (_a) {
66
+ switch (_a.label) {
67
+ case 0: return [4 /*yield*/, response.json()];
68
+ case 1:
69
+ body = _a.sent();
70
+ if (response.status === 403) {
71
+ reject(body);
72
+ return [2 /*return*/];
73
+ }
74
+ // Convert strings to dates
75
+ body.races = body.races.map(function (r) {
76
+ return __assign(__assign({}, r), { starttime: new Date(r.starttime) });
77
+ });
78
+ body.registration_start = new Date("".concat(body.registration_start, "Z"));
79
+ body.registration_end = new Date("".concat(body.registration_end, "Z"));
80
+ resolve(body);
81
+ return [2 /*return*/];
82
+ }
83
+ });
84
+ }); })
85
+ .catch(function (reason) { return reject(reason); });
86
+ })];
87
+ });
88
+ });
89
+ };
90
+ Time2WinAPI.prototype.getTeamResult = function (eventId, raceId, dataExtra, teamType, page) {
91
+ if (page === void 0) { page = 1; }
92
+ return __awaiter(this, void 0, void 0, function () {
93
+ var _this = this;
94
+ return __generator(this, function (_a) {
95
+ return [2 /*return*/, new Promise(function (resolve, reject) {
96
+ var queryParams = {
97
+ 'race_id': raceId,
98
+ 'data_extra': (dataExtra === null || dataExtra === void 0 ? void 0 : dataExtra.join(',')) || '',
99
+ page: page,
100
+ 'team_type': teamType || '',
101
+ 'page_size': _this.pageSize
102
+ };
103
+ fetch(_this.getUrl("results/".concat(eventId, "/teams"), queryParams))
104
+ .then(function (response) { return __awaiter(_this, void 0, void 0, function () {
105
+ var body, _a, _b, _c;
106
+ var _d;
107
+ var _this = this;
108
+ return __generator(this, function (_e) {
109
+ switch (_e.label) {
110
+ case 0: return [4 /*yield*/, response.json()];
111
+ case 1:
112
+ body = _e.sent();
113
+ if (response.status === 403) {
114
+ reject(body);
115
+ return [2 /*return*/];
116
+ }
117
+ if (!(body.page < body.page_total)) return [3 /*break*/, 3];
118
+ _b = (_a = (_d = body.list).push).apply;
119
+ _c = [_d];
120
+ return [4 /*yield*/, this.getTeamResult(eventId, raceId, dataExtra, teamType, body.page + 1)];
121
+ case 2:
122
+ _b.apply(_a, _c.concat([(_e.sent()).list]));
123
+ body.page = Math.ceil(body.list.length / body.page_size);
124
+ resolve(body);
125
+ _e.label = 3;
126
+ case 3:
127
+ body.list = body.list.map(function (p) {
128
+ return __assign(__assign({}, p), { racenumNumeric: _this.getNumericBib(p.racenum) });
129
+ });
130
+ resolve(body);
131
+ return [2 /*return*/];
132
+ }
133
+ });
134
+ }); })
135
+ .catch(function (reason) { return reject(reason); });
136
+ })];
137
+ });
138
+ });
139
+ };
140
+ Time2WinAPI.prototype.getTeamsWithMembers = function (eventId, raceId, dataExtra, page) {
141
+ if (page === void 0) { page = 1; }
142
+ return __awaiter(this, void 0, void 0, function () {
143
+ var _this = this;
144
+ return __generator(this, function (_a) {
145
+ return [2 /*return*/, new Promise(function (resolve, reject) {
146
+ var queryParams = {
147
+ 'race_id': raceId || '',
148
+ 'data_extra': (dataExtra === null || dataExtra === void 0 ? void 0 : dataExtra.join(',')) || '',
149
+ 'page_size': _this.pageSize,
150
+ page: page
151
+ };
152
+ fetch(_this.getUrl("participants/".concat(eventId, "/teams"), queryParams))
153
+ .then(function (response) { return __awaiter(_this, void 0, void 0, function () {
154
+ var body, _a, _b, _c;
155
+ var _d;
156
+ var _this = this;
157
+ return __generator(this, function (_e) {
158
+ switch (_e.label) {
159
+ case 0: return [4 /*yield*/, response.json()];
160
+ case 1:
161
+ body = _e.sent();
162
+ if (response.status === 403) {
163
+ reject(body);
164
+ return [2 /*return*/];
165
+ }
166
+ if (!body.page_more) return [3 /*break*/, 3];
167
+ _b = (_a = (_d = body.list).push).apply;
168
+ _c = [_d];
169
+ return [4 /*yield*/, this.getTeamsWithMembers(eventId, raceId, dataExtra, body.page + 1)];
170
+ case 2:
171
+ _b.apply(_a, _c.concat([(_e.sent()).list]));
172
+ body.page_more = false;
173
+ body.page = Math.ceil(body.list.length / body.page_size);
174
+ resolve(body);
175
+ _e.label = 3;
176
+ case 3:
177
+ body.list = body.list.map(function (p) {
178
+ var _a;
179
+ return __assign(__assign({}, p), { racenumNumeric: _this.getNumericBib(p.racenum), members: ((_a = p.members) === null || _a === void 0 ? void 0 : _a.map(function (m) {
180
+ return __assign(__assign({}, m), { racenumNumeric: _this.getNumericBib(m.racenum) });
181
+ })) || [] });
182
+ });
183
+ resolve(body);
184
+ return [2 /*return*/];
185
+ }
186
+ });
187
+ }); })
188
+ .catch(function (reason) { return reject(reason); });
189
+ })];
190
+ });
191
+ });
192
+ };
193
+ Time2WinAPI.prototype.getIndividualResults = function (eventId, raceId, dataExtra, gender, page) {
194
+ if (page === void 0) { page = 1; }
195
+ return __awaiter(this, void 0, void 0, function () {
196
+ var _this = this;
197
+ return __generator(this, function (_a) {
198
+ return [2 /*return*/, new Promise(function (resolve, reject) {
199
+ var queryParams = {
200
+ 'race_id': raceId,
201
+ 'data_extra': (dataExtra === null || dataExtra === void 0 ? void 0 : dataExtra.join(',')) || '',
202
+ page: page,
203
+ 'gender': gender || '',
204
+ 'page_size': _this.pageSize
205
+ };
206
+ fetch(_this.getUrl("results/".concat(eventId, "/individuals"), queryParams))
207
+ .then(function (response) { return __awaiter(_this, void 0, void 0, function () {
208
+ var body, _a, _b, _c;
209
+ var _d;
210
+ var _this = this;
211
+ return __generator(this, function (_e) {
212
+ switch (_e.label) {
213
+ case 0: return [4 /*yield*/, response.json()];
214
+ case 1:
215
+ body = _e.sent();
216
+ if (response.status === 403) {
217
+ reject(body);
218
+ return [2 /*return*/];
219
+ }
220
+ if (!(body.page < body.page_total)) return [3 /*break*/, 3];
221
+ _b = (_a = (_d = body.list).push).apply;
222
+ _c = [_d];
223
+ return [4 /*yield*/, this.getIndividualResults(eventId, raceId, dataExtra, gender, body.page + 1)];
224
+ case 2:
225
+ _b.apply(_a, _c.concat([(_e.sent()).list]));
226
+ body.page = Math.ceil(body.list.length / body.page_size);
227
+ resolve(body);
228
+ _e.label = 3;
229
+ case 3:
230
+ body.list = body.list.map(function (p) {
231
+ return __assign(__assign({}, p), { birthdate: p.birthdate ? new Date(p.birthdate) : null, racenumNumeric: _this.getNumericBib(p.racenum) });
232
+ });
233
+ resolve(body);
234
+ return [2 /*return*/];
235
+ }
236
+ });
237
+ }); })
238
+ .catch(function (reason) { return reject(reason); });
239
+ })];
240
+ });
241
+ });
242
+ };
243
+ Time2WinAPI.prototype.getParticipantInfos = function (eventId, raceId, dataExtra, gender, page) {
244
+ if (page === void 0) { page = 1; }
245
+ return __awaiter(this, void 0, void 0, function () {
246
+ var _this = this;
247
+ return __generator(this, function (_a) {
248
+ return [2 /*return*/, new Promise(function (resolve, reject) {
249
+ var queryParams = {
250
+ 'race_id': raceId || '',
251
+ 'data_extra': (dataExtra === null || dataExtra === void 0 ? void 0 : dataExtra.join(',')) || '',
252
+ gender: gender || '',
253
+ page: page,
254
+ 'page_size': _this.pageSize
255
+ };
256
+ fetch(_this.getUrl("/participants/".concat(eventId, "/individuals"), queryParams))
257
+ .then(function (response) { return __awaiter(_this, void 0, void 0, function () {
258
+ var body, race_1, race, _a, _b, _c;
259
+ var _d;
260
+ var _this = this;
261
+ return __generator(this, function (_e) {
262
+ switch (_e.label) {
263
+ case 0: return [4 /*yield*/, response.json()];
264
+ case 1:
265
+ body = _e.sent();
266
+ if (response.status === 403) {
267
+ reject(body);
268
+ return [2 /*return*/];
269
+ }
270
+ if (!!raceId) return [3 /*break*/, 3];
271
+ return [4 /*yield*/, this.getEventData(eventId)];
272
+ case 2:
273
+ race_1 = (_e.sent()).races.find(function (r) { return r.race_id === raceId; });
274
+ _e.label = 3;
275
+ case 3:
276
+ race = null;
277
+ if (!body.page_more) return [3 /*break*/, 5];
278
+ _b = (_a = (_d = body.list).push).apply;
279
+ _c = [_d];
280
+ return [4 /*yield*/, this.getParticipantInfos(eventId, raceId, dataExtra, gender, body.page + 1)];
281
+ case 4:
282
+ _b.apply(_a, _c.concat([(_e.sent()).list]));
283
+ body.page_more = false;
284
+ body.page = Math.ceil(body.list.length / body.page_size);
285
+ resolve(body);
286
+ _e.label = 5;
287
+ case 5:
288
+ body.list = body.list.map(function (p) {
289
+ return __assign(__assign({}, p), { birthdate: p.birthdate ? new Date(p.birthdate) : null,
290
+ // age: p.birthdate && race ? this.calculateAge(new Date(p.birthdate), race.starttime) : null,
291
+ year: p.birthdate ? new Date(p.birthdate).getFullYear() : null, order_date: p.order_date ? new Date(p.order_date) : null, racenumNumeric: _this.getNumericBib(p.racenum) });
292
+ });
293
+ resolve(body);
294
+ return [2 /*return*/];
295
+ }
296
+ });
297
+ }); })
298
+ .catch(function (reason) { return reject(reason); });
299
+ })];
300
+ });
301
+ });
302
+ };
303
+ /*
304
+ * if no params are given, the events in the next seven days are returned
305
+ * */
306
+ Time2WinAPI.prototype.getUpcomingEvents = function (from, to, page) {
307
+ if (from === void 0) { from = new Date(); }
308
+ if (page === void 0) { page = 1; }
309
+ return __awaiter(this, void 0, void 0, function () {
310
+ var _this = this;
311
+ return __generator(this, function (_a) {
312
+ if (!to) {
313
+ to = new Date();
314
+ to.setDate(to.getDate() + 7);
315
+ }
316
+ return [2 /*return*/, new Promise(function (resolve, reject) {
317
+ fetch(_this.getUrl("/events/list?from=".concat(_this.formatDate(from), "&to=").concat(_this.formatDate(to), "&page=").concat(page)))
318
+ .then(function (response) { return __awaiter(_this, void 0, void 0, function () {
319
+ var body, _a, _b, _c;
320
+ var _d;
321
+ return __generator(this, function (_e) {
322
+ switch (_e.label) {
323
+ case 0: return [4 /*yield*/, response.json()];
324
+ case 1:
325
+ body = _e.sent();
326
+ if (response.status === 403) {
327
+ reject(body);
328
+ return [2 /*return*/];
329
+ }
330
+ if (!body.page_more) return [3 /*break*/, 3];
331
+ _b = (_a = (_d = body.events).push).apply;
332
+ _c = [_d];
333
+ return [4 /*yield*/, this.getUpcomingEvents(from, to, body.page + 1)];
334
+ case 2:
335
+ _b.apply(_a, _c.concat([(_e.sent()).events]));
336
+ body.page_more = false;
337
+ body.page = Math.ceil(body.events.length / body.page_size);
338
+ resolve(body);
339
+ _e.label = 3;
340
+ case 3:
341
+ resolve(body);
342
+ return [2 /*return*/];
343
+ }
344
+ });
345
+ }); })
346
+ .catch(function (reason) { return reject(reason); });
347
+ })];
348
+ });
349
+ });
350
+ };
351
+ Time2WinAPI.prototype.getUrl = function (route, queryParams) {
352
+ var url = this.apiUrl.replace('{{route}}', route);
353
+ if (url.endsWith('/')) {
354
+ url = url.slice(0, -1);
355
+ }
356
+ url += url.includes('?') ? "&apikey=".concat(this.apiKey) : "?apikey=".concat(this.apiKey);
357
+ if (queryParams) {
358
+ for (var key in queryParams) {
359
+ url += "&".concat(key, "=").concat(queryParams[key]);
360
+ }
361
+ }
362
+ return url;
363
+ };
364
+ Time2WinAPI.prototype.calculateAge = function (birthday, raceDate) {
365
+ return Math.abs(new Date(raceDate.getTime() - birthday.getTime()).getUTCFullYear() - 1970);
366
+ };
367
+ Time2WinAPI.prototype.formatDate = function (date) {
368
+ return date.toISOString().split('T')[0];
369
+ };
370
+ Time2WinAPI.prototype.getNumericBib = function (bib) {
371
+ if (!bib)
372
+ return null;
373
+ if (bib.includes('-')) {
374
+ var parts = bib.split('-');
375
+ if (parts.length === 2) {
376
+ bib = bib.split('-')[0];
377
+ }
378
+ else if (parts.length === 3) {
379
+ bib = bib.split('-')[1];
380
+ }
381
+ }
382
+ return Number((bib.match(/[0-9]/g) || []).join(''));
383
+ };
384
+ return Time2WinAPI;
385
+ }());
386
+ exports.default = Time2WinAPI;