@time2win/t2w 1.4.21 → 1.4.22

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 CHANGED
@@ -5,6 +5,10 @@ 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.22 - 2025-04-09
9
+ ### Added
10
+ 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)
11
+
8
12
  ## 1.4.21 - 2025-03-13
9
13
  ### Modified
10
14
  ```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
@@ -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 _this = this;
198
- return __generator(this, function (_a) {
199
- return [2 /*return*/, new Promise(function (resolve, reject) {
200
- var queryParams = {
201
- 'race_id': raceId,
202
- 'data_extra': (dataExtra === null || dataExtra === void 0 ? void 0 : dataExtra.join(',')) || '',
203
- page: page,
204
- 'gender': gender || '',
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 _this = this;
252
- return __generator(this, function (_a) {
253
- return [2 /*return*/, new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
254
- var queryParams, races;
255
- var _this = this;
256
- return __generator(this, function (_a) {
257
- switch (_a.label) {
258
- case 0:
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@time2win/t2w",
3
- "version": "1.4.21",
3
+ "version": "1.4.22",
4
4
  "description": "providing latest-state models and advanced methods to interact with the T2W API",
5
5
  "keywords": [
6
6
  "time2win",