@buzzr/dfs-provider-sportradar
v5.0.0
Published
Optional Sportradar-shaped stat provider contract for @buzzr/dfs-engine.
Readme
@buzzr/dfs-provider-sportradar
Map Sportradar basketball statlines into @buzzr/dfs-engine without bending the engine to a vendor format. You bring the Sportradar fetch (auth, rate limits, caching); this package converts Sportradar's snake_case numeric statline shape (three_points_made, scheduled, …) into the engine's canonical PlayerGameLogEntryShape and registers it all as a typed StatProvider.
This package does no network I/O itself. The loader you provide is the only code that touches Sportradar.
Install
npm install @buzzr/dfs-provider-sportradar @buzzr/dfs-engine30-second quick start
import { createDfsEngine } from '@buzzr/dfs-engine';
import { createSportradarStatProvider } from '@buzzr/dfs-provider-sportradar';
const sportradar = createSportradarStatProvider({
getGameLog: async ({ playerId, gameDate }) => {
// Your fetch. Return Sportradar-shaped statlines as-is:
return fetchSportradarBoxscore(playerId, gameDate);
// [{ scheduled, minutes, points, rebounds, assists, three_points_made, ... }]
},
});
const engine = createDfsEngine({ statProviders: [sportradar] });
const result = await engine.settleEntry(entry, { statProviderId: 'sportradar' });Rows are converted with sportradarRowToGameLog before they reach the engine, and the engine still validates them at the provider boundary — malformed data surfaces as invalid_provider_data instead of a silent mis-grade.
API
| Export | Purpose |
| -------------------------------- | ------------------------------------------------------------------------------ |
| createSportradarStatProvider() | Build a StatProvider (id 'sportradar' by default) from your statline loader |
| sportradarRowToGameLog() | Convert one SportradarBasketballStatLine into a PlayerGameLogEntryShape |
| SportradarBasketballStatLine | Type: Sportradar's basketball statline shape (snake_case, numeric fields) |
| SportradarStatProviderOptions | Type: { id?, getGameLog } options bag |
| SportradarGameLogLoaderInput | Type: unpacked leg context handed to your loader (player, game, entry, leg) |
When to use this vs siblings
| You want to… | Reach for |
| ------------------------------------------- | --------------------------------------------------------------------------------------- |
| Feed Sportradar stats into the engine | this package |
| Feed ESPN-shaped stats into the engine | @buzzr/dfs-provider-espn |
| A deterministic provider for tests | @buzzr/dfs-testkit |
| A custom provider for any other data source | defineStatProvider in @buzzr/dfs-engine |
Links
License
MIT
