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() and byCountry() methods
    • Search query validation with minimum length check
  • Type helper utilities in src/utils/type-helpers.ts:
    • hasInclude() - Type guard to check if an include exists
    • hasData() - Type guard for responses with data
    • isPaginatedResponse() - Type guard for paginated responses
    • isSingleResponse() - Type guard for single responses
    • WithRequired<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

Fixed

  • Fixed fixtures resource documentation (removed non-existent live() method)
  • Clarified that live matches are accessed via livescores.inplay()

Changed

  • Moved REPL tools from scripts/ to tools/ 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 includes
    • withIncludes() 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