NEWS


fastRhockey 1.0.0

Deprecations & fixes

CI: NHL loader + xG tests, and two fixes

Documentation: @return column tables for all working functions

nhl_schedule() gains a game_type parameter

pwhl_schedule() defaults to combined regular season + playoffs

pwhl_player_game_log() and pwhl_streaks() default to combined types

PWHL parity: 3 new NHL loaders + datasets

Three new season-level NHL loaders that bring NHL coverage in line with PWHL. Each is backed by a new release tag on sportsdataverse/sportsdataverse-data and powered by new extractors in fastRhockey-nhl-raw/R/scrape_nhl_raw.R and fastRhockey-nhl-data/R/nhl_data_creation.R.

| function | release tag | rows per game | |--------------------------------|-------------------------|------------------------------| | load_nhl_officials() | nhl_officials | one per official (refs+lins) | | load_nhl_shots_by_period() | nhl_shots_by_period | one per team per period | | load_nhl_shootout() | nhl_shootout | one per shootout attempt |

nhl_schedule() data-availability flags

nhl_schedule() gained an include_data_flags = FALSE parameter. When TRUE, the live schedule is left-joined against the cached nhl_games_in_data_repo index from the data repo and gains 16 logical columns (PBP, team_box, player_box, skater_box, goalie_box, game_info, game_rosters, scoring, penalties, scratches, linescore, three_stars, shifts, officials, shots_by_period, shootout) telling you which pre-compiled datasets cover each game. The schedule files in fastRhockey-nhl-raw/nhl/schedules/ and the master schedule on the data repo carry these same flags.

Richer per-game JSON in fastRhockey-nhl-raw

scrape_nhl_raw.R now writes four additional top-level keys into both nhl/json/raw/{game_id}.json and nhl/json/final/{game_id}.json:

Refactor: NHL loaders consolidated into R/nhl_loaders.R

All NHL season-level loaders and the shared .nhl_release_loader() helper now live in R/nhl_loaders.R, mirroring the PWHL convention (R/pwhl_loaders.R). The empty R/nhl_pbp.R file was removed since it never contained an actual nhl_pbp() scraper — only loaders. Public signatures and return types are unchanged.

New NHL Edge Analytics (33 functions)

Wraps the NHL Edge advanced-metrics endpoints under https://api-web.nhle.com/v1/edge/.... Every wrapper accepts an optional season argument (4-digit end year, e.g., 2025) — when omitted, the /now form is used to fetch the current season. All wrappers share an internal .nhl_edge_api() helper in R/helpers_nhl_edge.R.

| family | functions | |---------|-----------| | Skater | nhl_edge_skater_detail(), nhl_edge_skater_landing(), nhl_edge_skater_comparison(), nhl_edge_skater_shot_location_detail(), nhl_edge_skater_shot_location_top_10(), nhl_edge_skater_shot_speed_detail(), nhl_edge_skater_shot_speed_top_10(), nhl_edge_skater_skating_speed_detail(), nhl_edge_skater_speed_top_10(), nhl_edge_skater_skating_distance_detail(), nhl_edge_skater_distance_top_10(), nhl_edge_skater_zone_time(), nhl_edge_skater_zone_time_top_10(), nhl_cat_edge_skater_detail() | | Goalie | nhl_edge_goalie_detail(), nhl_edge_goalie_landing(), nhl_edge_goalie_comparison(), nhl_edge_goalie_5v5_detail(), nhl_edge_goalie_5v5_top_10(), nhl_edge_goalie_save_percentage_detail(), nhl_edge_goalie_edge_save_pctg_top_10(), nhl_edge_goalie_shot_location_detail(), nhl_edge_goalie_shot_location_top_10(), nhl_cat_edge_goalie_detail() | | Team | nhl_edge_team_detail(), nhl_edge_team_landing(), nhl_edge_team_shot_location_detail(), nhl_edge_team_shot_location_top_10(), nhl_edge_team_shot_speed_detail(), nhl_edge_team_skating_speed_detail(), nhl_edge_team_skating_speed_top_10(), nhl_edge_team_skating_distance_detail(), nhl_edge_team_skating_distance_top_10(), nhl_edge_team_zone_time_details(), nhl_edge_team_zone_time_top_10() |

New NHL Records API integration (25 functions)

First-time integration with https://records.nhl.com/site/api/. All wrappers share an internal .nhl_records_api() helper in R/helpers_nhl_records.R that supports cayenneExp filters, limit/start pagination, and the records-API response shape ({data, total}).

New NHL Stats REST wrappers (13 functions)

Promotes endpoints that were previously only reachable via nhl_stats_misc()'s generic dispatcher into discoverable, dedicated wrappers. Documentation for nhl_stats_misc() was also updated to enumerate every valid endpoint value.

New NHL api-web miscellaneous endpoints (6 functions + 3 in-place updates)

New helper aggregators inspired by nhl-api-py (6 functions)

Convenience wrappers that orchestrate multiple endpoint calls into one tidy data frame:

Endpoint mapping + OpenAPI specs

Bug Fixes / API quirks documented

New NHL Loaders

Ten new season-level loaders that pull pre-compiled NHL datasets from new release tags on sportsdataverse/sportsdataverse-data. All accept a seasons vector (Min: 2011) and return a fastRhockey_data data frame, mirroring the existing load_nhl_*() API:

| function | release tag | rows per game | |----------------------------|------------------------|--------------------------| | load_nhl_skater_box() | nhl_skater_boxscores | one per skater | | load_nhl_goalie_box() | nhl_goalie_boxscores | one per goalie | | load_nhl_game_rosters() | nhl_game_rosters | one per dressed player | | load_nhl_game_info() | nhl_game_info | one | | load_nhl_scoring() | nhl_scoring | one per goal | | load_nhl_penalties() | nhl_penalties | one per penalty | | load_nhl_three_stars() | nhl_three_stars | up to three | | load_nhl_scratches() | nhl_scratches | one per scratched player | | load_nhl_linescore() | nhl_linescore | one | | load_nhl_shifts() | nhl_shifts | one per shift |

The six pre-existing loaders (load_nhl_pbp(), load_nhl_pbp_lite(), load_nhl_player_box(), load_nhl_team_box(), load_nhl_schedule(), load_nhl_rosters()) were refactored to share a single internal worker (.nhl_release_loader()) without changing their public signatures or return types.

New PWHL Loaders

Eleven new season-level loaders that pull pre-compiled PWHL datasets from new release tags on sportsdataverse/sportsdataverse-data. All accept a seasons vector (Min: 2024) and return a fastRhockey_data data frame, mirroring the existing load_pwhl_*() API:

| function | release tag | rows per game | |--------------------------------|----------------------------|----------------------| | load_pwhl_skater_box() | pwhl_skater_boxscores | one per skater | | load_pwhl_goalie_box() | pwhl_goalie_boxscores | one per goalie | | load_pwhl_team_box() | pwhl_team_boxscores | two (home/away) | | load_pwhl_game_info() | pwhl_game_info | one | | load_pwhl_scoring_summary() | pwhl_scoring_summary | one per goal | | load_pwhl_penalty_summary() | pwhl_penalty_summary | one per penalty | | load_pwhl_three_stars() | pwhl_three_stars | up to three | | load_pwhl_officials() | pwhl_officials | one per official | | load_pwhl_shots_by_period() | pwhl_shots_by_period | one per period | | load_pwhl_shootout() | pwhl_shootout | one per attempt | | load_pwhl_game_rosters() | pwhl_game_rosters | one per dressed player|

The four pre-existing loaders (load_pwhl_pbp(), load_pwhl_player_box(), load_pwhl_schedule(), load_pwhl_rosters()) were refactored to share a single internal worker (.pwhl_release_loader()) without changing their public signatures or return types.

Breaking Changes

New PWHL Functions

New NHL Functions

Bug Fixes

Deprecations

Improvements

Documentation & Infrastructure

fastRhockey 0.7.0

PWHL functions added

fastRhockey 0.6.0

fastRhockey 0.5.0

fastRhockey 0.4.2

fastRhockey 0.4.1

fastRhockey 0.4.0 (2022-10-25)

fastRhockey 0.3.1 (2022-08-28)

fastRhockey 0.3.0 (2022-03-25)

fastRhockey 0.2.1

fastRhockey 0.2.0

fastRhockey 0.1.0 (2021-12-10)

fastRhockey 0.0.4

Loader functions for PHF

Player and Team Stats, Leaderboards

fastRhockey 0.0.3

Function naming convention normalization

fastRhockey 0.0.2

fastRhockey 0.0.1