nhl-api-ts 0.2.0 → 0.3.0

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.
Files changed (51) hide show
  1. package/README.md +81 -9
  2. package/dist/api/draft.d.mts +61 -0
  3. package/dist/api/draft.mjs +68 -0
  4. package/dist/api/edge.d.mts +221 -24
  5. package/dist/api/edge.mjs +276 -27
  6. package/dist/api/game-center.d.mts +63 -15
  7. package/dist/api/game-center.mjs +67 -8
  8. package/dist/api/helpers.d.mts +6 -6
  9. package/dist/api/helpers.mjs +6 -6
  10. package/dist/api/misc.d.mts +120 -6
  11. package/dist/api/misc.mjs +162 -7
  12. package/dist/api/players.d.mts +59 -7
  13. package/dist/api/players.mjs +85 -4
  14. package/dist/api/query/cayenne.d.mts +4 -0
  15. package/dist/api/query/cayenne.mjs +13 -0
  16. package/dist/api/query/sorting/sorting-options.d.mts +8 -0
  17. package/dist/api/query/sorting/sorting-options.mjs +30 -0
  18. package/dist/api/schedule.d.mts +36 -23
  19. package/dist/api/schedule.mjs +40 -16
  20. package/dist/api/standings.d.mts +3 -3
  21. package/dist/api/standings.mjs +4 -4
  22. package/dist/api/stats.d.mts +105 -16
  23. package/dist/api/stats.mjs +145 -41
  24. package/dist/api/teams.d.mts +48 -8
  25. package/dist/api/teams.mjs +59 -7
  26. package/dist/cli/colors.d.mts +2 -2
  27. package/dist/cli/colors.mjs +6 -2
  28. package/dist/cli/commands.mjs +521 -46
  29. package/dist/cli/run.mjs +7 -5
  30. package/dist/http-client.d.mts +2 -1
  31. package/dist/http-client.mjs +10 -3
  32. package/dist/index.d.mts +8 -2
  33. package/dist/index.mjs +3 -0
  34. package/dist/nhl-client.d.mts +70 -15
  35. package/dist/nhl-client.mjs +40 -17
  36. package/dist/types/common.d.mts +0 -1
  37. package/dist/types/draft.d.mts +97 -0
  38. package/dist/types/draft.mjs +1 -0
  39. package/dist/types/edge.d.mts +301 -5
  40. package/dist/types/game-center.d.mts +277 -119
  41. package/dist/types/index.d.mts +1 -0
  42. package/dist/types/misc.d.mts +101 -0
  43. package/dist/types/misc.mjs +0 -1
  44. package/dist/types/players.d.mts +23 -2
  45. package/dist/types/schedule.d.mts +50 -62
  46. package/dist/types/standings.d.mts +1 -2
  47. package/dist/types/stats.d.mts +313 -111
  48. package/dist/types/teams.d.mts +29 -1
  49. package/dist/utils.d.mts +1 -1
  50. package/dist/utils.mjs +3 -1
  51. package/package.json +7 -28
@@ -1,17 +1,19 @@
1
- import type { GameType, LocalizedString, PositionCode, ShootsCatches } from '#src/types/common.mjs';
1
+ import type { GameType, LocalizedString, OpenUnion, PositionCode, ShootsCatches } from '#src/types/common.mjs';
2
+ import type { StatsPlayer } from '#src/types/players.mjs';
3
+ import type { StatsTeamLogo } from '#src/types/teams.mjs';
2
4
  export interface AwardSeason {
3
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
5
+ /** Goalies only */
4
6
  gaa?: number;
5
7
  gameTypeId: GameType;
6
8
  gamesPlayed: number;
7
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
9
+ /** Goalies only */
8
10
  losses?: number;
9
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
11
+ /** Goalies only */
10
12
  otLosses?: number;
11
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
13
+ /** Goalies only */
12
14
  savePctg?: number;
13
15
  seasonId: number;
14
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
16
+ /** Goalies only */
15
17
  wins?: number;
16
18
  assists?: number;
17
19
  goals?: number;
@@ -24,27 +26,27 @@ export interface AwardSeason {
24
26
  export interface CareerTotalsRegularSeason {
25
27
  assists: number;
26
28
  gamesPlayed: number;
27
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
29
+ /** Goalies only */
28
30
  gamesStarted?: number;
29
31
  goals: number;
30
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
32
+ /** Goalies only */
31
33
  goalsAgainst?: number;
32
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
34
+ /** Goalies only */
33
35
  goalsAgainstAvg?: number;
34
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
36
+ /** Goalies only */
35
37
  losses?: number;
36
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
38
+ /** Goalies only */
37
39
  otLosses?: number;
38
40
  pim: number;
39
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
41
+ /** Goalies only */
40
42
  savePctg?: number;
41
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
43
+ /** Goalies only */
42
44
  shotsAgainst?: number;
43
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
45
+ /** Goalies only */
44
46
  shutouts?: number;
45
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
47
+ /** Goalies only */
46
48
  timeOnIce?: string;
47
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
49
+ /** Goalies only */
48
50
  wins?: number;
49
51
  gameWinningGoals?: number;
50
52
  otGoals?: number;
@@ -56,11 +58,63 @@ export interface CareerTotalsRegularSeason {
56
58
  shorthandedGoals?: number;
57
59
  shorthandedPoints?: number;
58
60
  shots?: number;
59
- /** Low sample count */
60
61
  avgToi?: string;
61
- /** Low sample count */
62
62
  faceoffWinningPctg?: number;
63
63
  }
64
+ export interface ClubStats {
65
+ /** Season in YYYYYYYY format, as a string */
66
+ season: string;
67
+ gameType: GameType;
68
+ /** Empty when the team has no games of this type (e.g. missed the playoffs) */
69
+ skaters: ClubStatsSkater[];
70
+ goalies: ClubStatsGoalie[];
71
+ }
72
+ export interface ClubStatsSkater {
73
+ playerId: number;
74
+ headshot: string;
75
+ firstName: LocalizedString;
76
+ lastName: LocalizedString;
77
+ positionCode: PositionCode;
78
+ gamesPlayed: number;
79
+ goals: number;
80
+ assists: number;
81
+ points: number;
82
+ plusMinus: number;
83
+ penaltyMinutes: number;
84
+ powerPlayGoals: number;
85
+ shorthandedGoals: number;
86
+ gameWinningGoals: number;
87
+ overtimeGoals: number;
88
+ shots: number;
89
+ shootingPctg: number;
90
+ avgTimeOnIcePerGame: number;
91
+ avgShiftsPerGame: number;
92
+ faceoffWinPctg: number;
93
+ }
94
+ export interface ClubStatsGoalie {
95
+ playerId: number;
96
+ headshot: string;
97
+ firstName: LocalizedString;
98
+ lastName: LocalizedString;
99
+ gamesPlayed: number;
100
+ gamesStarted: number;
101
+ wins: number;
102
+ losses: number;
103
+ /** Only in seasons that had ties (before 2005-06) */
104
+ ties?: number;
105
+ goalsAgainstAverage: number;
106
+ savePercentage: number;
107
+ shotsAgainst: number;
108
+ saves: number;
109
+ goalsAgainst: number;
110
+ shutouts: number;
111
+ goals: number;
112
+ assists: number;
113
+ points: number;
114
+ penaltyMinutes?: number;
115
+ timeOnIce: number;
116
+ overtimeLosses?: number;
117
+ }
64
118
  export interface ClubStatsSeason {
65
119
  season: number;
66
120
  gameTypes: GameType[];
@@ -78,17 +132,17 @@ export interface GameLogEntry {
78
132
  assists: number;
79
133
  commonName: LocalizedString;
80
134
  opponentCommonName: LocalizedString;
81
- /** Absent when player=skater,gameType=2; player=skater,gameType=3; player=veteran,gameType=2; player=veteran,gameType=3. Low sample count */
135
+ /** Goalies only */
82
136
  gamesStarted?: number;
83
- /** Absent when player=skater,gameType=2; player=skater,gameType=3; player=veteran,gameType=2; player=veteran,gameType=3. Low sample count */
137
+ /** Goalies only */
84
138
  decision?: string;
85
- /** Absent when player=skater,gameType=2; player=skater,gameType=3; player=veteran,gameType=2; player=veteran,gameType=3. Low sample count */
139
+ /** Goalies only */
86
140
  shotsAgainst?: number;
87
- /** Absent when player=skater,gameType=2; player=skater,gameType=3; player=veteran,gameType=2; player=veteran,gameType=3. Low sample count */
141
+ /** Goalies only */
88
142
  goalsAgainst?: number;
89
- /** Absent when player=skater,gameType=2; player=skater,gameType=3; player=veteran,gameType=2; player=veteran,gameType=3. Low sample count */
143
+ /** Goalies only */
90
144
  savePctg?: number;
91
- /** Absent when player=skater,gameType=2; player=skater,gameType=3; player=veteran,gameType=2; player=veteran,gameType=3. Low sample count */
145
+ /** Goalies only */
92
146
  shutouts?: number;
93
147
  pim: number;
94
148
  toi: string;
@@ -104,6 +158,44 @@ export interface GameLogEntry {
104
158
  shorthandedGoals?: number;
105
159
  shorthandedPoints?: number;
106
160
  }
161
+ /** `categories` values accepted by `stats.skaterStatsLeaders`. */
162
+ export type SkaterLeaderCategory = 'goals' | 'assists' | 'points' | 'plusMinus' | 'penaltyMins' | 'goalsPp' | 'goalsSh' | 'faceoffLeaders' | 'toi';
163
+ /** `categories` values accepted by `stats.goalieStatsLeaders`. */
164
+ export type GoalieLeaderCategory = 'wins' | 'shutouts' | 'savePctg' | 'goalsAgainstAverage';
165
+ /** One row of a web stats-leaders category. */
166
+ export interface StatsLeader {
167
+ id: number;
168
+ firstName: LocalizedString;
169
+ lastName: LocalizedString;
170
+ /** Absent for some players without a current number */
171
+ sweaterNumber?: number;
172
+ headshot: string;
173
+ teamAbbrev: string;
174
+ teamName: LocalizedString;
175
+ teamLogo: string;
176
+ position: PositionCode;
177
+ value: number;
178
+ }
179
+ /** Skater leaders keyed by category. A category is absent when `categories` leaves it out. */
180
+ export interface SkaterStatsLeaders {
181
+ goals?: StatsLeader[];
182
+ assists?: StatsLeader[];
183
+ points?: StatsLeader[];
184
+ plusMinus?: StatsLeader[];
185
+ penaltyMins?: StatsLeader[];
186
+ goalsPp?: StatsLeader[];
187
+ goalsSh?: StatsLeader[];
188
+ faceoffLeaders?: StatsLeader[];
189
+ /** `value` is average time on ice per game, in seconds */
190
+ toi?: StatsLeader[];
191
+ }
192
+ /** Goalie leaders keyed by category. A category is absent when `categories` leaves it out. */
193
+ export interface GoalieStatsLeaders {
194
+ wins?: StatsLeader[];
195
+ shutouts?: StatsLeader[];
196
+ savePctg?: StatsLeader[];
197
+ goalsAgainstAverage?: StatsLeader[];
198
+ }
107
199
  export interface GoalieAdvancedRow {
108
200
  completeGamePct: number;
109
201
  completeGames: number;
@@ -122,11 +214,11 @@ export interface GoalieAdvancedRow {
122
214
  regulationLosses: number;
123
215
  regulationWins: number;
124
216
  savePct: number;
125
- /** Absent when statsType=advanced,aggregate=true. Low sample count */
217
+ /** Absent when `aggregate: true` */
126
218
  seasonId?: number;
127
219
  shootsCatches: ShootsCatches;
128
220
  shotsAgainstPer60: number;
129
- /** Absent when statsType=advanced,aggregate=true. Low sample count */
221
+ /** Absent when `aggregate: true` */
130
222
  teamAbbrevs?: string;
131
223
  timeOnIce: number;
132
224
  }
@@ -135,7 +227,7 @@ export interface GoalieBiosRow {
135
227
  birthCountryCode: string;
136
228
  birthDate: string;
137
229
  birthStateProvinceCode: string | null;
138
- /** Absent when statsType=bios,aggregate=true. Low sample count */
230
+ /** Absent when `aggregate: true` */
139
231
  currentTeamAbbrev?: string | null;
140
232
  draftOverall: number | null;
141
233
  draftRound: number | null;
@@ -175,10 +267,10 @@ export interface GoalieDaysRestRow {
175
267
  savePctDaysRest2: number;
176
268
  savePctDaysRest3: number;
177
269
  savePctDaysRest4Plus: number;
178
- /** Absent when statsType=daysrest,aggregate=true. Low sample count */
270
+ /** Absent when `aggregate: true` */
179
271
  seasonId?: number;
180
272
  shootsCatches: ShootsCatches;
181
- /** Absent when statsType=daysrest,aggregate=true. Low sample count */
273
+ /** Absent when `aggregate: true` */
182
274
  teamAbbrevs?: string;
183
275
  ties: number | null;
184
276
  wins: number;
@@ -195,11 +287,11 @@ export interface GoaliePenaltyShotsRow {
195
287
  playerId: number;
196
288
  savePct: number;
197
289
  saves: number;
198
- /** Absent when statsType=penaltyShots,aggregate=true. Low sample count */
290
+ /** Absent when `aggregate: true` */
199
291
  seasonId?: number;
200
292
  shootsCatches: ShootsCatches;
201
293
  shotsAgainst: number;
202
- /** Absent when statsType=penaltyShots,aggregate=true. Low sample count */
294
+ /** Absent when `aggregate: true` */
203
295
  teamAbbrevs?: string;
204
296
  }
205
297
  export interface GoalieSavesByStrengthRow {
@@ -221,7 +313,7 @@ export interface GoalieSavesByStrengthRow {
221
313
  ppShotsAgainst: number;
222
314
  savePct: number;
223
315
  saves: number;
224
- /** Absent when statsType=savesByStrength,aggregate=true. Low sample count */
316
+ /** Absent when `aggregate: true` */
225
317
  seasonId?: number;
226
318
  shGoalsAgainst: number;
227
319
  shSavePct: number;
@@ -229,7 +321,7 @@ export interface GoalieSavesByStrengthRow {
229
321
  shShotsAgainst: number;
230
322
  shootsCatches: ShootsCatches;
231
323
  shotsAgainst: number;
232
- /** Absent when statsType=savesByStrength,aggregate=true. Low sample count */
324
+ /** Absent when `aggregate: true` */
233
325
  teamAbbrevs?: string;
234
326
  ties: number | null;
235
327
  wins: number;
@@ -246,7 +338,7 @@ export interface GoalieShootoutRow {
246
338
  goalieFullName: string;
247
339
  lastName: string;
248
340
  playerId: number;
249
- /** Absent when statsType=shootout,aggregate=true. Low sample count */
341
+ /** Absent when `aggregate: true` */
250
342
  seasonId?: number;
251
343
  shootoutGoalsAgainst: number;
252
344
  shootoutLosses: number;
@@ -255,7 +347,7 @@ export interface GoalieShootoutRow {
255
347
  shootoutShotsAgainst: number;
256
348
  shootoutWins: number;
257
349
  shootsCatches: ShootsCatches;
258
- /** Absent when statsType=shootout,aggregate=true. Low sample count */
350
+ /** Absent when `aggregate: true` */
259
351
  teamAbbrevs?: string;
260
352
  }
261
353
  export interface GoalieStartedVsRelievedRow {
@@ -284,10 +376,10 @@ export interface GoalieStartedVsRelievedRow {
284
376
  otLosses: number;
285
377
  playerId: number;
286
378
  savePct: number;
287
- /** Absent when statsType=startedVsRelieved,aggregate=true. Low sample count */
379
+ /** Absent when `aggregate: true` */
288
380
  seasonId?: number;
289
381
  shootsCatches: ShootsCatches;
290
- /** Absent when statsType=startedVsRelieved,aggregate=true. Low sample count */
382
+ /** Absent when `aggregate: true` */
291
383
  teamAbbrevs?: string;
292
384
  ties: number | null;
293
385
  wins: number;
@@ -308,12 +400,12 @@ export interface GoalieSummaryRow {
308
400
  points: number;
309
401
  savePct: number;
310
402
  saves: number;
311
- /** Absent when statsType=summary,aggregate=true. Low sample count */
403
+ /** Absent when `aggregate: true` */
312
404
  seasonId?: number;
313
405
  shootsCatches: ShootsCatches;
314
406
  shotsAgainst: number;
315
407
  shutouts: number;
316
- /** Absent when statsType=summary,aggregate=true. Low sample count */
408
+ /** Absent when `aggregate: true` */
317
409
  teamAbbrevs?: string;
318
410
  ties: number | null;
319
411
  timeOnIce: number;
@@ -322,20 +414,20 @@ export interface GoalieSummaryRow {
322
414
  export interface PlayerLanding {
323
415
  playerId: number;
324
416
  isActive: boolean;
325
- /** Absent when player=retired */
417
+ /** Absent for inactive players (`isActive: false`) */
326
418
  currentTeamId?: number;
327
- /** Absent when player=retired */
419
+ /** Absent for inactive players (`isActive: false`) */
328
420
  currentTeamAbbrev?: string;
329
- /** Absent when player=retired */
421
+ /** Absent for inactive players (`isActive: false`) */
330
422
  fullTeamName?: LocalizedString;
331
- /** Absent when player=retired */
423
+ /** Absent for inactive players (`isActive: false`) */
332
424
  teamCommonName?: LocalizedString;
333
- /** Absent when player=retired */
425
+ /** Absent for inactive players (`isActive: false`) */
334
426
  teamPlaceNameWithPreposition?: LocalizedString;
335
427
  firstName: LocalizedString;
336
428
  lastName: LocalizedString;
337
429
  badges: PlayerLandingBadge[];
338
- /** Absent when player=retired */
430
+ /** Absent for inactive players (`isActive: false`) */
339
431
  teamLogo?: string;
340
432
  sweaterNumber: number;
341
433
  position: string;
@@ -347,7 +439,7 @@ export interface PlayerLanding {
347
439
  weightInKilograms: number;
348
440
  birthDate: string;
349
441
  birthCity: LocalizedString;
350
- /** Absent when player=retired; player=veteran. Low sample count */
442
+ /** Only for players born in the USA or Canada */
351
443
  birthStateProvince?: LocalizedString;
352
444
  birthCountry: string;
353
445
  shootsCatches: ShootsCatches;
@@ -363,7 +455,7 @@ export interface PlayerLanding {
363
455
  last5Games: PlayerLandingLast5Game[];
364
456
  seasonTotals: PlayerLandingSeasonTotal[];
365
457
  awards: PlayerLandingAward[];
366
- /** Absent when player=retired */
458
+ /** Absent for inactive players (`isActive: false`) */
367
459
  currentTeamRoster?: PlayerLandingCurrentTeamRoster[];
368
460
  }
369
461
  export interface PlayerLandingAward {
@@ -396,22 +488,22 @@ export interface PlayerLandingFeaturedStats {
396
488
  regularSeason: FeaturedRegularSeason;
397
489
  }
398
490
  export interface PlayerLandingLast5Game {
399
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
491
+ /** Goalies only */
400
492
  decision?: string;
401
493
  gameDate: string;
402
494
  gameId: number;
403
495
  gameTypeId: GameType;
404
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
496
+ /** Goalies only */
405
497
  gamesStarted?: number;
406
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
498
+ /** Goalies only */
407
499
  goalsAgainst?: number;
408
500
  homeRoadFlag: string;
409
501
  opponentAbbrev: string;
410
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
502
+ /** Goalies only */
411
503
  penaltyMins?: number;
412
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
504
+ /** Goalies only */
413
505
  savePctg?: number;
414
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
506
+ /** Goalies only */
415
507
  shotsAgainst?: number;
416
508
  teamAbbrev: string;
417
509
  toi: string;
@@ -428,32 +520,32 @@ export interface PlayerLandingLast5Game {
428
520
  export interface PlayerLandingSeasonTotal {
429
521
  gameTypeId: GameType;
430
522
  gamesPlayed: number;
431
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
523
+ /** Goalies only */
432
524
  goalsAgainstAvg?: number;
433
525
  leagueAbbrev: string;
434
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
526
+ /** Goalies only */
435
527
  savePctg?: number;
436
528
  season: number;
437
529
  sequence: number;
438
530
  teamName: LocalizedString;
439
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
531
+ /** Goalies only */
440
532
  goalsAgainst?: number;
441
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
533
+ /** Goalies only */
442
534
  losses?: number;
443
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
535
+ /** Goalies only */
444
536
  shutouts?: number;
445
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
537
+ /** Goalies only */
446
538
  ties?: number;
447
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
539
+ /** Goalies only */
448
540
  timeOnIce?: string;
449
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
541
+ /** Goalies only */
450
542
  wins?: number;
451
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
543
+ /** Goalies only */
452
544
  shotsAgainst?: number;
453
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
545
+ /** Goalies only */
454
546
  otLosses?: number;
455
547
  assists?: number;
456
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
548
+ /** Goalies only */
457
549
  gamesStarted?: number;
458
550
  goals?: number;
459
551
  teamCommonName?: LocalizedString;
@@ -474,17 +566,17 @@ export interface PlayerLandingSeasonTotal {
474
566
  }
475
567
  export interface SeasonStatLine {
476
568
  gamesPlayed: number;
477
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
569
+ /** Goalies only */
478
570
  goalsAgainstAvg?: number;
479
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
571
+ /** Goalies only */
480
572
  losses?: number;
481
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
573
+ /** Goalies only */
482
574
  otLosses?: number;
483
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
575
+ /** Goalies only */
484
576
  savePctg?: number;
485
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
577
+ /** Goalies only */
486
578
  shutouts?: number;
487
- /** Absent when player=retired; player=skater; player=veteran. Low sample count */
579
+ /** Goalies only */
488
580
  wins?: number;
489
581
  assists?: number;
490
582
  gameWinningGoals?: number;
@@ -506,9 +598,9 @@ export interface SkaterBiosRow {
506
598
  birthCountryCode: string;
507
599
  birthDate: string;
508
600
  birthStateProvinceCode: string | null;
509
- /** Absent when reportType=bios,aggregate=true. Low sample count */
601
+ /** Absent when `aggregate: true` */
510
602
  currentTeamAbbrev?: string | null;
511
- /** Absent when reportType=bios,aggregate=true. Low sample count */
603
+ /** Absent when `aggregate: true` */
512
604
  currentTeamName?: string | null;
513
605
  draftOverall: number | null;
514
606
  draftRound: number | null;
@@ -543,13 +635,13 @@ export interface SkaterFaceoffPercentagesRow {
543
635
  positionCode: PositionCode;
544
636
  ppFaceoffPct: number;
545
637
  ppFaceoffs: number;
546
- /** Absent when reportType=faceoffpercentages,aggregate=true. Low sample count */
638
+ /** Absent when `aggregate: true` */
547
639
  seasonId?: number;
548
640
  shFaceoffPct: number;
549
641
  shFaceoffs: number;
550
642
  shootsCatches: ShootsCatches;
551
643
  skaterFullName: string;
552
- /** Absent when reportType=faceoffpercentages,aggregate=true. Low sample count */
644
+ /** Absent when `aggregate: true` */
553
645
  teamAbbrevs?: string;
554
646
  timeOnIcePerGame: number;
555
647
  totalFaceoffs: number;
@@ -575,13 +667,13 @@ export interface SkaterFaceoffWinsRow {
575
667
  ppFaceoffs: number;
576
668
  ppFaceoffsLost: number;
577
669
  ppFaceoffsWon: number;
578
- /** Absent when reportType=faceoffwins,aggregate=true. Low sample count */
670
+ /** Absent when `aggregate: true` */
579
671
  seasonId?: number;
580
672
  shFaceoffs: number;
581
673
  shFaceoffsLost: number;
582
674
  shFaceoffsWon: number;
583
675
  skaterFullName: string;
584
- /** Absent when reportType=faceoffwins,aggregate=true. Low sample count */
676
+ /** Absent when `aggregate: true` */
585
677
  teamAbbrevs?: string;
586
678
  totalFaceoffLosses: number;
587
679
  totalFaceoffWins: number;
@@ -603,13 +695,13 @@ export interface SkaterGoalsForAgainstRow {
603
695
  powerPlayGoalFor: number;
604
696
  powerPlayGoalsAgainst: number;
605
697
  powerPlayTimeOnIcePerGame: number;
606
- /** Absent when reportType=goalsForAgainst,aggregate=true. Low sample count */
698
+ /** Absent when `aggregate: true` */
607
699
  seasonId?: number;
608
700
  shortHandedGoalsAgainst: number;
609
701
  shortHandedGoalsFor: number;
610
702
  shortHandedTimeOnIcePerGame: number;
611
703
  skaterFullName: string;
612
- /** Absent when reportType=goalsForAgainst,aggregate=true. Low sample count */
704
+ /** Absent when `aggregate: true` */
613
705
  teamAbbrevs?: string;
614
706
  }
615
707
  export interface SkaterPenaltiesRow {
@@ -634,10 +726,10 @@ export interface SkaterPenaltiesRow {
634
726
  playerId: number;
635
727
  points: number;
636
728
  positionCode: PositionCode;
637
- /** Absent when reportType=penalties,aggregate=true. Low sample count */
729
+ /** Absent when `aggregate: true` */
638
730
  seasonId?: number;
639
731
  skaterFullName: string;
640
- /** Absent when reportType=penalties,aggregate=true. Low sample count */
732
+ /** Absent when `aggregate: true` */
641
733
  teamAbbrevs?: string;
642
734
  timeOnIcePerGame: number;
643
735
  }
@@ -647,7 +739,7 @@ export interface SkaterPenaltyKillRow {
647
739
  playerId: number;
648
740
  positionCode: PositionCode;
649
741
  ppGoalsAgainstPer60: number;
650
- /** Absent when reportType=penaltykill,aggregate=true. Low sample count */
742
+ /** Absent when `aggregate: true` */
651
743
  seasonId?: number;
652
744
  shAssists: number;
653
745
  shGoals: number;
@@ -667,7 +759,7 @@ export interface SkaterPenaltyKillRow {
667
759
  shTimeOnIcePctPerGame: number;
668
760
  shTimeOnIcePerGame: number;
669
761
  skaterFullName: string;
670
- /** Absent when reportType=penaltykill,aggregate=true. Low sample count */
762
+ /** Absent when `aggregate: true` */
671
763
  teamAbbrevs?: string;
672
764
  }
673
765
  export interface SkaterPenaltyShotsRow {
@@ -678,11 +770,11 @@ export interface SkaterPenaltyShotsRow {
678
770
  penaltyShotsGoals: number;
679
771
  playerId: number;
680
772
  positionCode: PositionCode;
681
- /** Absent when reportType=penaltyShots,aggregate=true. Low sample count */
773
+ /** Absent when `aggregate: true` */
682
774
  seasonId?: number;
683
775
  shootsCatches: ShootsCatches;
684
776
  skaterFullName: string;
685
- /** Absent when reportType=penaltyShots,aggregate=true. Low sample count */
777
+ /** Absent when `aggregate: true` */
686
778
  teamAbbrevs?: string;
687
779
  }
688
780
  export interface SkaterPercentagesRow {
@@ -696,14 +788,14 @@ export interface SkaterPercentagesRow {
696
788
  satPercentageClose: number;
697
789
  satPercentageTied: number | null;
698
790
  satRelative: number;
699
- /** Absent when reportType=percentages,aggregate=true. Low sample count */
791
+ /** Absent when `aggregate: true` */
700
792
  seasonId?: number;
701
793
  shootingPct5v5: number;
702
794
  shootsCatches: ShootsCatches;
703
795
  skaterFullName: string;
704
796
  skaterSavePct5v5: number | null;
705
797
  skaterShootingPlusSavePct5v5: number | null;
706
- /** Absent when reportType=percentages,aggregate=true. Low sample count */
798
+ /** Absent when `aggregate: true` */
707
799
  teamAbbrevs?: string;
708
800
  timeOnIcePerGame5v5: number;
709
801
  usatPercentage: number;
@@ -737,10 +829,10 @@ export interface SkaterPowerPlayRow {
737
829
  ppTimeOnIce: number;
738
830
  ppTimeOnIcePctPerGame: number;
739
831
  ppTimeOnIcePerGame: number;
740
- /** Absent when reportType=powerplay,aggregate=true. Low sample count */
832
+ /** Absent when `aggregate: true` */
741
833
  seasonId?: number;
742
834
  skaterFullName: string;
743
- /** Absent when reportType=powerplay,aggregate=true. Low sample count */
835
+ /** Absent when `aggregate: true` */
744
836
  teamAbbrevs?: string;
745
837
  }
746
838
  export interface SkaterPuckPossessionsRow {
@@ -758,11 +850,11 @@ export interface SkaterPuckPossessionsRow {
758
850
  playerId: number;
759
851
  positionCode: PositionCode;
760
852
  satPct: number;
761
- /** Absent when reportType=puckPossessions,aggregate=true. Low sample count */
853
+ /** Absent when `aggregate: true` */
762
854
  seasonId?: number;
763
855
  shootsCatches: ShootsCatches;
764
856
  skaterFullName: string;
765
- /** Absent when reportType=puckPossessions,aggregate=true. Low sample count */
857
+ /** Absent when `aggregate: true` */
766
858
  teamAbbrevs?: string;
767
859
  timeOnIcePerGame5v5: number;
768
860
  usatPct: number;
@@ -790,14 +882,14 @@ export interface SkaterRealtimeRow {
790
882
  otGoals: number;
791
883
  playerId: number;
792
884
  positionCode: PositionCode;
793
- /** Absent when reportType=realtime,aggregate=true. Low sample count */
885
+ /** Absent when `aggregate: true` */
794
886
  seasonId?: number;
795
887
  shootsCatches: ShootsCatches;
796
888
  shotAttemptsBlocked: number;
797
889
  skaterFullName: string;
798
890
  takeaways: number;
799
891
  takeawaysPer60: number;
800
- /** Absent when reportType=realtime,aggregate=true. Low sample count */
892
+ /** Absent when `aggregate: true` */
801
893
  teamAbbrevs?: string;
802
894
  timeOnIcePerGame: number;
803
895
  totalShotAttempts: number;
@@ -820,14 +912,14 @@ export interface SkaterScoringPerGameRow {
820
912
  pointsPerGame: number;
821
913
  positionCode: PositionCode;
822
914
  primaryAssistsPerGame: number;
823
- /** Absent when reportType=scoringpergame,aggregate=true. Low sample count */
915
+ /** Absent when `aggregate: true` */
824
916
  seasonId?: number;
825
917
  secondaryAssistsPerGame: number;
826
918
  shootsCatches: ShootsCatches;
827
919
  shots: number;
828
920
  shotsPerGame: number;
829
921
  skaterFullName: string;
830
- /** Absent when reportType=scoringpergame,aggregate=true. Low sample count */
922
+ /** Absent when `aggregate: true` */
831
923
  teamAbbrevs?: string;
832
924
  timeOnIce: number;
833
925
  timeOnIcePerGame: number;
@@ -852,13 +944,13 @@ export interface SkaterScoringRatesRow {
852
944
  primaryAssistsPer605v5: number;
853
945
  satPct: number;
854
946
  satRelative5v5: number;
855
- /** Absent when reportType=scoringRates,aggregate=true. Low sample count */
947
+ /** Absent when `aggregate: true` */
856
948
  seasonId?: number;
857
949
  secondaryAssists5v5: number;
858
950
  secondaryAssistsPer605v5: number;
859
951
  shootingPct5v5: number;
860
952
  skaterFullName: string;
861
- /** Absent when reportType=scoringRates,aggregate=true. Low sample count */
953
+ /** Absent when `aggregate: true` */
862
954
  teamAbbrevs?: string;
863
955
  timeOnIcePerGame5v5: number;
864
956
  }
@@ -871,7 +963,7 @@ export interface SkaterShootoutRow {
871
963
  lastName: string;
872
964
  playerId: number;
873
965
  positionCode: PositionCode;
874
- /** Absent when reportType=shootout,aggregate=true. Low sample count */
966
+ /** Absent when `aggregate: true` */
875
967
  seasonId?: number;
876
968
  shootoutGameDecidingGoals: number;
877
969
  shootoutGamesPlayed: number;
@@ -880,7 +972,7 @@ export interface SkaterShootoutRow {
880
972
  shootoutShots: number;
881
973
  shootsCatches: ShootsCatches;
882
974
  skaterFullName: string;
883
- /** Absent when reportType=shootout,aggregate=true. Low sample count */
975
+ /** Absent when `aggregate: true` */
884
976
  teamAbbrevs?: string;
885
977
  }
886
978
  export interface SkaterShotTypeRow {
@@ -899,7 +991,7 @@ export interface SkaterShotTypeRow {
899
991
  goalsWrist: number;
900
992
  lastName: string;
901
993
  playerId: number;
902
- /** Absent when reportType=shottype,aggregate=true. Low sample count */
994
+ /** Absent when `aggregate: true` */
903
995
  seasonId?: number;
904
996
  shootingPct: number;
905
997
  shootingPctBackhand: number | null;
@@ -925,7 +1017,7 @@ export interface SkaterShotTypeRow {
925
1017
  shotsOnNetWrapAround: number;
926
1018
  shotsOnNetWrist: number;
927
1019
  skaterFullName: string;
928
- /** Absent when reportType=shottype,aggregate=true. Low sample count */
1020
+ /** Absent when `aggregate: true` */
929
1021
  teamAbbrevs?: string;
930
1022
  }
931
1023
  export interface SkaterSummaryRow {
@@ -946,7 +1038,7 @@ export interface SkaterSummaryRow {
946
1038
  positionCode: PositionCode;
947
1039
  ppGoals: number;
948
1040
  ppPoints: number;
949
- /** Absent when aggregate=true; reportType=summary,aggregate=true. Low sample count */
1041
+ /** Absent when `aggregate: true` */
950
1042
  seasonId?: number;
951
1043
  shGoals: number;
952
1044
  shPoints: number;
@@ -954,7 +1046,7 @@ export interface SkaterSummaryRow {
954
1046
  shootsCatches: ShootsCatches;
955
1047
  shots: number;
956
1048
  skaterFullName: string;
957
- /** Absent when aggregate=true; reportType=summary,aggregate=true. Low sample count */
1049
+ /** Absent when `aggregate: true` */
958
1050
  teamAbbrevs?: string;
959
1051
  timeOnIcePerGame: number;
960
1052
  }
@@ -971,11 +1063,11 @@ export interface SkaterSummaryShootingRow {
971
1063
  satRelative: number;
972
1064
  satTied: number;
973
1065
  satTotal: number;
974
- /** Absent when reportType=summaryshooting,aggregate=true. Low sample count */
1066
+ /** Absent when `aggregate: true` */
975
1067
  seasonId?: number;
976
1068
  shootsCatches: ShootsCatches;
977
1069
  skaterFullName: string;
978
- /** Absent when reportType=summaryshooting,aggregate=true. Low sample count */
1070
+ /** Absent when `aggregate: true` */
979
1071
  teamAbbrevs?: string;
980
1072
  timeOnIcePerGame5v5: number;
981
1073
  usatAgainst: number;
@@ -998,7 +1090,7 @@ export interface SkaterTimeOnIceRow {
998
1090
  positionCode: PositionCode;
999
1091
  ppTimeOnIce: number;
1000
1092
  ppTimeOnIcePerGame: number;
1001
- /** Absent when reportType=timeonice,aggregate=true. Low sample count */
1093
+ /** Absent when `aggregate: true` */
1002
1094
  seasonId?: number;
1003
1095
  shTimeOnIce: number;
1004
1096
  shTimeOnIcePerGame: number;
@@ -1006,7 +1098,7 @@ export interface SkaterTimeOnIceRow {
1006
1098
  shiftsPerGame: number;
1007
1099
  shootsCatches: ShootsCatches;
1008
1100
  skaterFullName: string;
1009
- /** Absent when reportType=timeonice,aggregate=true. Low sample count */
1101
+ /** Absent when `aggregate: true` */
1010
1102
  teamAbbrevs?: string;
1011
1103
  timeOnIce: number;
1012
1104
  timeOnIcePerGame: number;
@@ -1028,22 +1120,20 @@ export interface TeamSummaryRow {
1028
1120
  powerPlayNetPct: number;
1029
1121
  powerPlayPct: number;
1030
1122
  regulationAndOtWins: number;
1031
- /** Absent when isGame=false,aggregate=true; isGame=true,aggregate=true. Low sample count */
1123
+ /** Absent when `aggregate: true` */
1032
1124
  seasonId?: number;
1033
1125
  shotsAgainstPerGame: number;
1034
1126
  shotsForPerGame: number;
1035
- /** Absent when isGame=false,aggregate=true; isGame=true,aggregate=true. Low sample count */
1127
+ /** Absent when `aggregate: true` */
1036
1128
  teamFullName?: string;
1037
- /** Absent when isGame=false,aggregate=true; isGame=true,aggregate=true. Low sample count */
1129
+ /** Absent when `aggregate: true` */
1038
1130
  teamId?: number;
1039
1131
  teamShutouts: number;
1040
1132
  ties: number | null;
1041
1133
  wins: number;
1042
1134
  winsInRegulation: number;
1043
1135
  winsInShootout: number;
1044
- /** Low sample count */
1045
1136
  franchiseId?: number;
1046
- /** Low sample count */
1047
1137
  franchiseName?: string;
1048
1138
  }
1049
1139
  /**
@@ -1084,3 +1174,115 @@ export interface GoalieReportRows {
1084
1174
  shootout: GoalieShootoutRow;
1085
1175
  startedVsRelieved: GoalieStartedVsRelievedRow;
1086
1176
  }
1177
+ /** Team of a stats API leaders row: the `en/team` row plus its logo history. */
1178
+ export interface StatsLeaderTeam {
1179
+ id: number;
1180
+ franchiseId: number;
1181
+ fullName: string;
1182
+ leagueId: number;
1183
+ logos: StatsTeamLogo[];
1184
+ rawTricode: string;
1185
+ triCode: string;
1186
+ }
1187
+ export interface SkaterPointsLeaderRow {
1188
+ player: StatsPlayer;
1189
+ team: StatsLeaderTeam;
1190
+ points: number;
1191
+ }
1192
+ export interface SkaterGoalsLeaderRow {
1193
+ player: StatsPlayer;
1194
+ team: StatsLeaderTeam;
1195
+ goals: number;
1196
+ }
1197
+ export interface SkaterAssistsLeaderRow {
1198
+ player: StatsPlayer;
1199
+ team: StatsLeaderTeam;
1200
+ assists: number;
1201
+ }
1202
+ export interface SkaterGamesPlayedLeaderRow {
1203
+ player: StatsPlayer;
1204
+ team: StatsLeaderTeam;
1205
+ gamesPlayed: number;
1206
+ }
1207
+ export interface GoalieGaaLeaderRow {
1208
+ player: StatsPlayer;
1209
+ team: StatsLeaderTeam;
1210
+ /** `null` in every all-time row (no minimum games), set when filtered to a season */
1211
+ gaa: number | null;
1212
+ }
1213
+ export interface GoalieSavePctgLeaderRow {
1214
+ player: StatsPlayer;
1215
+ team: StatsLeaderTeam;
1216
+ savePctg: number;
1217
+ }
1218
+ export interface GoalieShutoutsLeaderRow {
1219
+ player: StatsPlayer;
1220
+ team: StatsLeaderTeam;
1221
+ shutouts: number;
1222
+ }
1223
+ export interface GoalieTimeOnIceLeaderRow {
1224
+ player: StatsPlayer;
1225
+ team: StatsLeaderTeam;
1226
+ /** Seconds */
1227
+ timeOnIce: number;
1228
+ }
1229
+ export interface GoalieGamesPlayedLeaderRow {
1230
+ player: StatsPlayer;
1231
+ team: StatsLeaderTeam;
1232
+ gamesPlayed: number;
1233
+ }
1234
+ /** Row type of `stats.skaterLeaders` for each `attribute`. */
1235
+ export interface SkaterLeaderRows {
1236
+ points: SkaterPointsLeaderRow;
1237
+ goals: SkaterGoalsLeaderRow;
1238
+ assists: SkaterAssistsLeaderRow;
1239
+ gamesPlayed: SkaterGamesPlayedLeaderRow;
1240
+ }
1241
+ /** Row type of `stats.goalieLeaders` for each `attribute`. */
1242
+ export interface GoalieLeaderRows {
1243
+ gaa: GoalieGaaLeaderRow;
1244
+ savePctg: GoalieSavePctgLeaderRow;
1245
+ shutouts: GoalieShutoutsLeaderRow;
1246
+ timeOnIce: GoalieTimeOnIceLeaderRow;
1247
+ gamesPlayed: GoalieGamesPlayedLeaderRow;
1248
+ }
1249
+ /** A career milestone an active skater is approaching. */
1250
+ export interface SkaterMilestone {
1251
+ id: number;
1252
+ assists: number;
1253
+ currentTeamId: number;
1254
+ firstName: string;
1255
+ gameTypeId: GameType;
1256
+ gamesPlayed: number;
1257
+ goals: number;
1258
+ lastName: string;
1259
+ milestone: OpenUnion<'Assists' | 'Games Played' | 'Goals' | 'Points'>;
1260
+ milestoneAmount: number;
1261
+ playerFullName: string;
1262
+ playerId: number;
1263
+ points: number;
1264
+ teamAbbrev: string;
1265
+ teamCommonName: string;
1266
+ teamFullName: string;
1267
+ teamPlaceName: string;
1268
+ }
1269
+ /** A career milestone an active goalie is approaching. */
1270
+ export interface GoalieMilestone {
1271
+ id: number;
1272
+ currentTeamId: number;
1273
+ firstName: string;
1274
+ gameTypeId: GameType;
1275
+ gamesPlayed: number;
1276
+ lastName: string;
1277
+ milestone: OpenUnion<'Games Played' | 'Minutes Played' | 'Shutouts' | 'Wins'>;
1278
+ milestoneAmount: number;
1279
+ playerFullName: string;
1280
+ playerId: number;
1281
+ so: number;
1282
+ teamAbbrev: string;
1283
+ teamCommonName: string;
1284
+ teamFullName: string;
1285
+ teamPlaceName: string;
1286
+ toiMinutes: number;
1287
+ wins: number;
1288
+ }