@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 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 _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/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[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@time2win/t2w",
3
- "version": "1.4.21",
3
+ "version": "1.4.23",
4
4
  "description": "providing latest-state models and advanced methods to interact with the T2W API",
5
5
  "keywords": [
6
6
  "time2win",