nhl-api-ts 0.2.1 → 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 (40) hide show
  1. package/README.md +72 -5
  2. package/dist/api/draft.d.mts +61 -0
  3. package/dist/api/draft.mjs +68 -0
  4. package/dist/api/edge.d.mts +198 -1
  5. package/dist/api/edge.mjs +207 -4
  6. package/dist/api/game-center.d.mts +49 -1
  7. package/dist/api/game-center.mjs +47 -0
  8. package/dist/api/misc.d.mts +115 -1
  9. package/dist/api/misc.mjs +147 -2
  10. package/dist/api/players.d.mts +55 -3
  11. package/dist/api/players.mjs +80 -3
  12. package/dist/api/query/cayenne.d.mts +4 -0
  13. package/dist/api/query/cayenne.mjs +13 -0
  14. package/dist/api/query/sorting/sorting-options.d.mts +8 -0
  15. package/dist/api/query/sorting/sorting-options.mjs +30 -0
  16. package/dist/api/schedule.d.mts +19 -6
  17. package/dist/api/schedule.mjs +17 -5
  18. package/dist/api/stats.d.mts +95 -6
  19. package/dist/api/stats.mjs +130 -30
  20. package/dist/api/teams.d.mts +43 -3
  21. package/dist/api/teams.mjs +51 -3
  22. package/dist/cli/commands.mjs +487 -22
  23. package/dist/http-client.d.mts +2 -1
  24. package/dist/http-client.mjs +8 -1
  25. package/dist/index.d.mts +8 -2
  26. package/dist/index.mjs +3 -0
  27. package/dist/nhl-client.d.mts +69 -14
  28. package/dist/nhl-client.mjs +33 -12
  29. package/dist/types/draft.d.mts +97 -0
  30. package/dist/types/draft.mjs +1 -0
  31. package/dist/types/edge.d.mts +299 -3
  32. package/dist/types/game-center.d.mts +223 -8
  33. package/dist/types/index.d.mts +1 -0
  34. package/dist/types/misc.d.mts +101 -0
  35. package/dist/types/misc.mjs +0 -1
  36. package/dist/types/players.d.mts +22 -0
  37. package/dist/types/schedule.d.mts +16 -0
  38. package/dist/types/stats.d.mts +207 -1
  39. package/dist/types/teams.d.mts +29 -1
  40. package/package.json +1 -1
@@ -1,4 +1,6 @@
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
5
  /** Goalies only */
4
6
  gaa?: number;
@@ -59,6 +61,60 @@ export interface CareerTotalsRegularSeason {
59
61
  avgToi?: string;
60
62
  faceoffWinningPctg?: number;
61
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
+ }
62
118
  export interface ClubStatsSeason {
63
119
  season: number;
64
120
  gameTypes: GameType[];
@@ -102,6 +158,44 @@ export interface GameLogEntry {
102
158
  shorthandedGoals?: number;
103
159
  shorthandedPoints?: number;
104
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
+ }
105
199
  export interface GoalieAdvancedRow {
106
200
  completeGamePct: number;
107
201
  completeGames: number;
@@ -1080,3 +1174,115 @@ export interface GoalieReportRows {
1080
1174
  shootout: GoalieShootoutRow;
1081
1175
  startedVsRelieved: GoalieStartedVsRelievedRow;
1082
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
+ }
@@ -1,4 +1,5 @@
1
- import type { LocalizedString, PositionCode, ShootsCatches } from '#src/types/common.mjs';
1
+ import type { LocalizedString, OpenUnion, PositionCode, ShootsCatches } from '#src/types/common.mjs';
2
+ import type { ScoreboardDate } from '#src/types/game-center.mjs';
2
3
  export interface Franchise {
3
4
  id: number;
4
5
  fullName: string;
@@ -27,3 +28,30 @@ export interface RosterPlayer {
27
28
  birthCountry: string;
28
29
  birthStateProvince?: LocalizedString;
29
30
  }
31
+ /** One team of the stats API (`en/team`), past or present. */
32
+ export interface StatsTeam {
33
+ id: number;
34
+ /** `null` for the placeholder teams (TBD, NHL) */
35
+ franchiseId: number | null;
36
+ fullName: string;
37
+ leagueId: number;
38
+ rawTricode: string;
39
+ triCode: string;
40
+ }
41
+ export interface StatsTeamLogo {
42
+ id: number;
43
+ background: OpenUnion<'light' | 'dark' | 'alt' | 'black'>;
44
+ endSeason: number;
45
+ secureUrl: string;
46
+ startSeason: number;
47
+ teamId: number;
48
+ url: string;
49
+ }
50
+ export interface TeamScoreboard {
51
+ focusedDate: string;
52
+ focusedDateCount: number;
53
+ clubTimeZone: string;
54
+ clubUTCOffset: string;
55
+ clubScheduleLink: string;
56
+ gamesByDate: ScoreboardDate[];
57
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nhl-api-ts",
3
- "version": "0.2.1",
3
+ "version": "0.3.0",
4
4
  "description": "TypeScript SDK and CLI for the NHL API and NHL EDGE stats.",
5
5
  "keywords": [
6
6
  "nhl",