Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.1.0] - 2024-12-01
Changed
- IMPORTANT: Changed default include separator from comma (
,
) to semicolon (;
) to match SportMonks API requirements for multiple includes - Updated all unit tests to use semicolon separator for multiple includes
- Improved TypeScript types by replacing
any
with proper types in type helpers and validators
Added
- Input validation for PlayersResource:
- ID validation in
byId()
andbyCountry()
methods - Search query validation with minimum length check
- ID validation in
- Type helper utilities in
src/utils/type-helpers.ts
:hasInclude()
- Type guard to check if an include existshasData()
- Type guard for responses with dataisPaginatedResponse()
- Type guard for paginated responsesisSingleResponse()
- Type guard for single responsesWithRequired<T, K>
- Type helper to make optional properties required- Pre-defined types like
TeamWithCountry
,FixtureWithTeams
, etc.
- Documentation for type helpers (
docs/TYPE_HELPERS.md
) - ESLint configuration for test files (
tsconfig.eslint.json
) - Global REPL command accessible via
npx sportmonks-repl
when installed via npm
Fixed
- Integration test failures:
- Updated players test to use Denmark (ID: 320) instead of Brazil for European Plan compatibility
- Updated fixtures pagination test to use dates with more fixtures (2025-03-30)
- Skipped latest fixtures test due to subscription limitations
- ESLint configuration to properly lint test files
- Prettier formatting in type helpers and test files
- Test coverage improved to 97.7%
Developer Notes
- The include separator change maintains backwards compatibility for single includes
- Multiple includes now require semicolon separation (e.g.,
include: 'country;venue'
) - Field selectors within includes still use commas (e.g.,
include: 'team:name,short_code'
)
[1.0.2] - 2025-05-31
Added
- Interactive REPL (Read-Eval-Print Loop) for testing and exploring the API
- Simple REPL with direct resource access (
npm run repl
) - Advanced REPL with additional features (
npm run repl:advanced
) - Helper functions:
pp()
,data()
,examples()
,resources()
- Command history persistence
- No need to type
client.
prefix - direct access to resources
- Simple REPL with direct resource access (
Fixed
- Fixed
fixtures
resource documentation (removed non-existentlive()
method) - Clarified that live matches are accessed via
livescores.inplay()
Changed
- Moved REPL tools from
scripts/
totools/
directory for better organization
[1.0.1] - 2025-05-31
Changed
- Updated all dev dependencies to latest stable versions
- Migrated from ESLint v8 to v9 with new flat config format
- Updated husky to v9 simplified format
- Fixed CI/CD workflow issues (updated upload-artifact to v4)
Fixed
- Removed all deprecation warnings
- Fixed unused variable ESLint errors
Removed
- Deprecated
@types/dotenv
package (dotenv now includes its own types)
[1.0.0] - 2025-05-31
Added
- Initial release of SportMonks TypeScript SDK
- Full TypeScript support with comprehensive type definitions
- Support for 10 resources with 56 endpoints:
- Leagues (8 endpoints): all, byId, byCountry, search, live, byDate, byTeam, currentByTeam
- Teams (5 endpoints): all, byId, byCountry, bySeason, search
- Players (5 endpoints): all, byId, byCountry, search, latest
- Fixtures (13 endpoints): all, byId, byIds, byDate, byDateRange, byTeamAndDateRange, byTeamAndSeason, headToHead, search, byLivescores, byFixtureMulti, latest, byTvStation
- Standings (5 endpoints): all, bySeasonId, byRoundId, bySeasonIdCorrected, liveByLeagueId
- Livescores (3 endpoints): all, inplay, latest
- Transfers (6 endpoints): all, byId, latest, byDateRange, byPlayerId, byTeamId
- Coaches (5 endpoints): all, byId, byCountryId, byTeamId, search
- Referees (5 endpoints): all, byId, byCountryId, bySeasonId, search
- Venues (4 endpoints): all, byId, bySeasonId, search
- Method chaining for intuitive query building
- Automatic retry logic with exponential backoff
- Real-time polling utilities for livescores and transfers
- Input validation for dates, IDs, and search queries
- Rate limit information in responses
- Comprehensive error handling with detailed messages
- Support for includes, filters, pagination, and sorting
- Custom include separator support (for transfers endpoint)
- Enhanced support for SportMonks’ advanced query syntax
includeFields()
method for field selection on includeswithIncludes()
method for complex include configurations- Support for multiple filter values using arrays
SportMonksSyntaxBuilder
utility for programmatic query building- Full TypeScript types for SportMonks syntax patterns
- Comprehensive test coverage improvements (97.62% coverage)
Features
- Type Safety: Strong TypeScript types for all entities and API responses
- Method Chaining: Fluent API design for building complex queries
- Error Handling: Detailed error messages with context
- Retry Logic: Automatic retries with exponential backoff for failed requests
- Polling Utilities: Built-in support for real-time data updates
- Validation: Input validation for common parameters
- Flexible Configuration: Customizable timeout, base URL, and include separator
Testing
- Comprehensive test suite with 330+ tests
- Unit tests for all resources and utilities
- Integration tests with real API (when API key provided)
- 97.62% code coverage
Documentation
- Complete README with installation and usage instructions
- JSDoc comments on all public methods
- Examples for all major use cases
- Migration guide for future versions