@time2win/t2w 1.4.21 → 1.4.23
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/CHANGELOG.md +8 -0
- package/index.d.ts +2 -0
- package/index.js +126 -107
- package/models.d.ts +2 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## 1.4.23 - 2025-05-22
|
|
9
|
+
### Added
|
|
10
|
+
field ```gender``` to team types
|
|
11
|
+
|
|
12
|
+
## 1.4.22 - 2025-04-09
|
|
13
|
+
### Added
|
|
14
|
+
wrapper methods for ```getParticipantInfos()``` and ```getIndividualResults()``` which are called by the user, internally the fetch methods will be called (prevents to call getEventData multiple times)
|
|
15
|
+
|
|
8
16
|
## 1.4.21 - 2025-03-13
|
|
9
17
|
### Modified
|
|
10
18
|
```paceBrutto``` ```paceNetto``` ```speedBrutto``` ```speedNetto``` properties to support laps
|
package/index.d.ts
CHANGED
|
@@ -13,6 +13,8 @@ export default class Time2WinAPI {
|
|
|
13
13
|
* if no params are given, the events in the next seven days are returned
|
|
14
14
|
* */
|
|
15
15
|
getUpcomingEvents(from?: Date, to?: Date, page?: number): Promise<T2WEventResponse>;
|
|
16
|
+
private fetchIndividualResults;
|
|
17
|
+
private fetchParticipantInfos;
|
|
16
18
|
private getUrl;
|
|
17
19
|
private calculateAge;
|
|
18
20
|
private formatDate;
|
package/index.js
CHANGED
|
@@ -126,7 +126,7 @@ var Time2WinAPI = /** @class */ (function () {
|
|
|
126
126
|
_e.label = 3;
|
|
127
127
|
case 3:
|
|
128
128
|
body.list = body.list.map(function (p) {
|
|
129
|
-
return __assign(__assign({}, p), { racenumNumeric: _this.getNumericBib(p.racenum) });
|
|
129
|
+
return __assign(__assign({}, p), { racenumNumeric: _this.getNumericBib(p.racenum), gender: p.team_type });
|
|
130
130
|
});
|
|
131
131
|
resolve(body);
|
|
132
132
|
return [2 /*return*/];
|
|
@@ -177,7 +177,7 @@ var Time2WinAPI = /** @class */ (function () {
|
|
|
177
177
|
case 3:
|
|
178
178
|
body.list = body.list.map(function (p) {
|
|
179
179
|
var _a;
|
|
180
|
-
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({}, p), { racenumNumeric: _this.getNumericBib(p.racenum), gender: p.team_type, members: ((_a = p.members) === null || _a === void 0 ? void 0 : _a.map(function (m) {
|
|
181
181
|
return __assign(__assign({}, m), { racenumNumeric: _this.getNumericBib(m.racenum) });
|
|
182
182
|
})) || [] });
|
|
183
183
|
});
|
|
@@ -194,117 +194,28 @@ var Time2WinAPI = /** @class */ (function () {
|
|
|
194
194
|
Time2WinAPI.prototype.getIndividualResults = function (eventId, raceId, dataExtra, gender, page) {
|
|
195
195
|
if (page === void 0) { page = 1; }
|
|
196
196
|
return __awaiter(this, void 0, void 0, function () {
|
|
197
|
-
var
|
|
198
|
-
return __generator(this, function (
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
'page_size': _this.pageSize
|
|
206
|
-
};
|
|
207
|
-
fetch(_this.getUrl("results/".concat(eventId, "/individuals"), queryParams))
|
|
208
|
-
.then(function (response) { return __awaiter(_this, void 0, void 0, function () {
|
|
209
|
-
var body, event, _a, _b, _c;
|
|
210
|
-
var _d;
|
|
211
|
-
var _this = this;
|
|
212
|
-
var _e;
|
|
213
|
-
return __generator(this, function (_f) {
|
|
214
|
-
switch (_f.label) {
|
|
215
|
-
case 0: return [4 /*yield*/, response.json()];
|
|
216
|
-
case 1:
|
|
217
|
-
body = _f.sent();
|
|
218
|
-
if (response.status === 403) {
|
|
219
|
-
reject(body);
|
|
220
|
-
return [2 /*return*/];
|
|
221
|
-
}
|
|
222
|
-
return [4 /*yield*/, this.getEventData(eventId, ['splits'])];
|
|
223
|
-
case 2:
|
|
224
|
-
event = _f.sent();
|
|
225
|
-
if (!(body.page < body.page_total)) return [3 /*break*/, 4];
|
|
226
|
-
_b = (_a = (_d = body.list).push).apply;
|
|
227
|
-
_c = [_d];
|
|
228
|
-
return [4 /*yield*/, this.getIndividualResults(eventId, raceId, dataExtra, gender, body.page + 1)];
|
|
229
|
-
case 3:
|
|
230
|
-
_b.apply(_a, _c.concat([(_f.sent()).list]));
|
|
231
|
-
body.page = Math.ceil(body.list.length / body.page_size);
|
|
232
|
-
resolve(body);
|
|
233
|
-
_f.label = 4;
|
|
234
|
-
case 4:
|
|
235
|
-
body.list = (_e = body.list) === null || _e === void 0 ? void 0 : _e.map(function (p) {
|
|
236
|
-
return __assign(__assign({}, p), { birthdate: p.birthdate ? new Date(p.birthdate) : null, racenumNumeric: _this.getNumericBib(p.racenum), speedNetto: _this.calculateSpeed(p, event, 'speed', 'netto') + ' km/h', speedBrutto: _this.calculateSpeed(p, event, 'speed', 'brutto') + ' km/h', paceNetto: _this.calculateSpeed(p, event, 'pace', 'netto') + ' min/km', paceBrutto: _this.calculateSpeed(p, event, 'pace', 'brutto') + ' min/km' });
|
|
237
|
-
});
|
|
238
|
-
resolve(body);
|
|
239
|
-
return [2 /*return*/];
|
|
240
|
-
}
|
|
241
|
-
});
|
|
242
|
-
}); })
|
|
243
|
-
.catch(function (reason) { return reject(reason); });
|
|
244
|
-
})];
|
|
197
|
+
var _a;
|
|
198
|
+
return __generator(this, function (_b) {
|
|
199
|
+
switch (_b.label) {
|
|
200
|
+
case 0:
|
|
201
|
+
_a = this.fetchIndividualResults;
|
|
202
|
+
return [4 /*yield*/, this.getEventData(eventId, ['splits'])];
|
|
203
|
+
case 1: return [2 /*return*/, _a.apply(this, [_b.sent(), raceId, dataExtra, gender, page])];
|
|
204
|
+
}
|
|
245
205
|
});
|
|
246
206
|
});
|
|
247
207
|
};
|
|
248
208
|
Time2WinAPI.prototype.getParticipantInfos = function (eventId, raceId, dataExtra, gender, page) {
|
|
249
209
|
if (page === void 0) { page = 1; }
|
|
250
210
|
return __awaiter(this, void 0, void 0, function () {
|
|
251
|
-
var
|
|
252
|
-
return __generator(this, function (
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
return
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
queryParams = {
|
|
260
|
-
'race_id': raceId || '',
|
|
261
|
-
'data_extra': (dataExtra === null || dataExtra === void 0 ? void 0 : dataExtra.join(',')) || '',
|
|
262
|
-
gender: gender || '',
|
|
263
|
-
page: page,
|
|
264
|
-
'page_size': this.pageSize
|
|
265
|
-
};
|
|
266
|
-
return [4 /*yield*/, this.getEventData(eventId)];
|
|
267
|
-
case 1:
|
|
268
|
-
races = (_a.sent()).races;
|
|
269
|
-
fetch(this.getUrl("/participants/".concat(eventId, "/individuals"), queryParams))
|
|
270
|
-
.then(function (response) { return __awaiter(_this, void 0, void 0, function () {
|
|
271
|
-
var body, _a, _b, _c;
|
|
272
|
-
var _d;
|
|
273
|
-
var _this = this;
|
|
274
|
-
return __generator(this, function (_e) {
|
|
275
|
-
switch (_e.label) {
|
|
276
|
-
case 0: return [4 /*yield*/, response.json()];
|
|
277
|
-
case 1:
|
|
278
|
-
body = _e.sent();
|
|
279
|
-
if (response.status === 403) {
|
|
280
|
-
reject(body);
|
|
281
|
-
return [2 /*return*/];
|
|
282
|
-
}
|
|
283
|
-
if (!body.page_more) return [3 /*break*/, 3];
|
|
284
|
-
_b = (_a = (_d = body.list).push).apply;
|
|
285
|
-
_c = [_d];
|
|
286
|
-
return [4 /*yield*/, this.getParticipantInfos(eventId, raceId, dataExtra, gender, body.page + 1)];
|
|
287
|
-
case 2:
|
|
288
|
-
_b.apply(_a, _c.concat([(_e.sent()).list]));
|
|
289
|
-
body.page_more = false;
|
|
290
|
-
body.page = Math.ceil(body.list.length / body.page_size);
|
|
291
|
-
resolve(body);
|
|
292
|
-
_e.label = 3;
|
|
293
|
-
case 3:
|
|
294
|
-
body.list = body.list.map(function (p) {
|
|
295
|
-
var race = races.find(function (r) { return r.race_id === p.race_id; });
|
|
296
|
-
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) });
|
|
297
|
-
});
|
|
298
|
-
resolve(body);
|
|
299
|
-
return [2 /*return*/];
|
|
300
|
-
}
|
|
301
|
-
});
|
|
302
|
-
}); })
|
|
303
|
-
.catch(function (reason) { return reject(reason); });
|
|
304
|
-
return [2 /*return*/];
|
|
305
|
-
}
|
|
306
|
-
});
|
|
307
|
-
}); })];
|
|
211
|
+
var _a;
|
|
212
|
+
return __generator(this, function (_b) {
|
|
213
|
+
switch (_b.label) {
|
|
214
|
+
case 0:
|
|
215
|
+
_a = this.fetchParticipantInfos;
|
|
216
|
+
return [4 /*yield*/, this.getEventData(eventId)];
|
|
217
|
+
case 1: return [2 /*return*/, _a.apply(this, [_b.sent(), raceId, dataExtra, gender, page])];
|
|
218
|
+
}
|
|
308
219
|
});
|
|
309
220
|
});
|
|
310
221
|
};
|
|
@@ -356,6 +267,114 @@ var Time2WinAPI = /** @class */ (function () {
|
|
|
356
267
|
});
|
|
357
268
|
});
|
|
358
269
|
};
|
|
270
|
+
Time2WinAPI.prototype.fetchIndividualResults = function (event, raceId, dataExtra, gender, page) {
|
|
271
|
+
if (page === void 0) { page = 1; }
|
|
272
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
273
|
+
var _this = this;
|
|
274
|
+
return __generator(this, function (_a) {
|
|
275
|
+
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
276
|
+
var queryParams = {
|
|
277
|
+
'race_id': raceId,
|
|
278
|
+
'data_extra': (dataExtra === null || dataExtra === void 0 ? void 0 : dataExtra.join(',')) || '',
|
|
279
|
+
page: page,
|
|
280
|
+
'gender': gender || '',
|
|
281
|
+
'page_size': _this.pageSize
|
|
282
|
+
};
|
|
283
|
+
fetch(_this.getUrl("results/".concat(event.event_id, "/individuals"), queryParams))
|
|
284
|
+
.then(function (response) { return __awaiter(_this, void 0, void 0, function () {
|
|
285
|
+
var body, _a, _b, _c;
|
|
286
|
+
var _d;
|
|
287
|
+
var _this = this;
|
|
288
|
+
var _e;
|
|
289
|
+
return __generator(this, function (_f) {
|
|
290
|
+
switch (_f.label) {
|
|
291
|
+
case 0: return [4 /*yield*/, response.json()];
|
|
292
|
+
case 1:
|
|
293
|
+
body = _f.sent();
|
|
294
|
+
if (response.status === 403) {
|
|
295
|
+
reject(body);
|
|
296
|
+
return [2 /*return*/];
|
|
297
|
+
}
|
|
298
|
+
if (!(body.page < body.page_total)) return [3 /*break*/, 3];
|
|
299
|
+
_b = (_a = (_d = body.list).push).apply;
|
|
300
|
+
_c = [_d];
|
|
301
|
+
return [4 /*yield*/, this.fetchIndividualResults(event, raceId, dataExtra, gender, body.page + 1)];
|
|
302
|
+
case 2:
|
|
303
|
+
_b.apply(_a, _c.concat([(_f.sent()).list]));
|
|
304
|
+
body.page = Math.ceil(body.list.length / body.page_size);
|
|
305
|
+
resolve(body);
|
|
306
|
+
_f.label = 3;
|
|
307
|
+
case 3:
|
|
308
|
+
body.list = (_e = body.list) === null || _e === void 0 ? void 0 : _e.map(function (p) {
|
|
309
|
+
return __assign(__assign({}, p), { birthdate: p.birthdate ? new Date(p.birthdate) : null, racenumNumeric: _this.getNumericBib(p.racenum), speedNetto: _this.calculateSpeed(p, event, 'speed', 'netto') + ' km/h', speedBrutto: _this.calculateSpeed(p, event, 'speed', 'brutto') + ' km/h', paceNetto: _this.calculateSpeed(p, event, 'pace', 'netto') + ' min/km', paceBrutto: _this.calculateSpeed(p, event, 'pace', 'brutto') + ' min/km' });
|
|
310
|
+
});
|
|
311
|
+
resolve(body);
|
|
312
|
+
return [2 /*return*/];
|
|
313
|
+
}
|
|
314
|
+
});
|
|
315
|
+
}); })
|
|
316
|
+
.catch(function (reason) { return reject(reason); });
|
|
317
|
+
})];
|
|
318
|
+
});
|
|
319
|
+
});
|
|
320
|
+
};
|
|
321
|
+
Time2WinAPI.prototype.fetchParticipantInfos = function (event, raceId, dataExtra, gender, page) {
|
|
322
|
+
if (page === void 0) { page = 1; }
|
|
323
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
324
|
+
var _this = this;
|
|
325
|
+
return __generator(this, function (_a) {
|
|
326
|
+
return [2 /*return*/, new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
327
|
+
var queryParams;
|
|
328
|
+
var _this = this;
|
|
329
|
+
return __generator(this, function (_a) {
|
|
330
|
+
queryParams = {
|
|
331
|
+
'race_id': raceId || '',
|
|
332
|
+
'data_extra': (dataExtra === null || dataExtra === void 0 ? void 0 : dataExtra.join(',')) || '',
|
|
333
|
+
gender: gender || '',
|
|
334
|
+
page: page,
|
|
335
|
+
'page_size': this.pageSize
|
|
336
|
+
};
|
|
337
|
+
fetch(this.getUrl("/participants/".concat(event.event_id, "/individuals"), queryParams))
|
|
338
|
+
.then(function (response) { return __awaiter(_this, void 0, void 0, function () {
|
|
339
|
+
var body, _a, _b, _c;
|
|
340
|
+
var _d;
|
|
341
|
+
var _this = this;
|
|
342
|
+
return __generator(this, function (_e) {
|
|
343
|
+
switch (_e.label) {
|
|
344
|
+
case 0: return [4 /*yield*/, response.json()];
|
|
345
|
+
case 1:
|
|
346
|
+
body = _e.sent();
|
|
347
|
+
if (response.status === 403) {
|
|
348
|
+
reject(body);
|
|
349
|
+
return [2 /*return*/];
|
|
350
|
+
}
|
|
351
|
+
if (!body.page_more) return [3 /*break*/, 3];
|
|
352
|
+
_b = (_a = (_d = body.list).push).apply;
|
|
353
|
+
_c = [_d];
|
|
354
|
+
return [4 /*yield*/, this.fetchParticipantInfos(event, raceId, dataExtra, gender, body.page + 1)];
|
|
355
|
+
case 2:
|
|
356
|
+
_b.apply(_a, _c.concat([(_e.sent()).list]));
|
|
357
|
+
body.page_more = false;
|
|
358
|
+
body.page = Math.ceil(body.list.length / body.page_size);
|
|
359
|
+
resolve(body);
|
|
360
|
+
_e.label = 3;
|
|
361
|
+
case 3:
|
|
362
|
+
body.list = body.list.map(function (p) {
|
|
363
|
+
var race = event.races.find(function (r) { return r.race_id === p.race_id; });
|
|
364
|
+
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) });
|
|
365
|
+
});
|
|
366
|
+
resolve(body);
|
|
367
|
+
return [2 /*return*/];
|
|
368
|
+
}
|
|
369
|
+
});
|
|
370
|
+
}); })
|
|
371
|
+
.catch(function (reason) { return reject(reason); });
|
|
372
|
+
return [2 /*return*/];
|
|
373
|
+
});
|
|
374
|
+
}); })];
|
|
375
|
+
});
|
|
376
|
+
});
|
|
377
|
+
};
|
|
359
378
|
Time2WinAPI.prototype.getUrl = function (route, queryParams) {
|
|
360
379
|
var url = this.apiUrl.replace('{{route}}', route);
|
|
361
380
|
if (url.endsWith('/')) {
|
package/models.d.ts
CHANGED
|
@@ -98,6 +98,7 @@ export interface T2WTeamResultSplit {
|
|
|
98
98
|
export interface T2WTeamResult {
|
|
99
99
|
id: number;
|
|
100
100
|
team_type: gender;
|
|
101
|
+
gender: gender;
|
|
101
102
|
name_team: string;
|
|
102
103
|
organization: string | null;
|
|
103
104
|
race_id: number;
|
|
@@ -146,6 +147,7 @@ export interface T2WTeam {
|
|
|
146
147
|
name_team: string;
|
|
147
148
|
organization: string | null;
|
|
148
149
|
team_type: gender;
|
|
150
|
+
gender: gender;
|
|
149
151
|
attr_1: string | null;
|
|
150
152
|
attr_2: string | null;
|
|
151
153
|
members: T2WTeamMember[];
|