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.
- Dependency Security: Added npm overrides for js-yaml to fix CVE-2025-64718 (prototype pollution vulnerability)
- Updated dependencies via npm update
- Dependency Updates: Updated multiple development dependencies to their latest compatible versions for improved security and performance
- Updated
@types/nodefrom 24.0.13 to 24.6.2 - Updated
@types/jestfrom 30.0.0 (already on latest) - Updated
eslint-config-prettierfrom 10.1.5 to 10.1.8 - Updated
eslint-plugin-importfrom 2.28.0 to 2.32.0 - Updated
eslint-plugin-prettierfrom 5.5.1 to 5.5.4 - Updated
jestfrom 29.5.0 to 30.2.0 (major version update) - Updated
jsdocfrom 4.0.2 to 4.0.4 - Updated
snykfrom 1.1297.3 to 1.1299.1 - Updated
ts-jestfrom 29.1.0 to 29.4.4 - Updated
typescriptfrom 5.0.0 to 5.9.3
- Updated
- Kept
eslintat 8.57.1 (ESLint 9 requires configuration migration) - Kept
node-fetchat 2.7.0 (v3 is ESM-only, incompatible with current CommonJS setup) - Kept
eslint-plugin-promiseat 6.6.0 (v7 has peer dependency conflicts with eslint-config-standard) - All tests passing with 100% test suite coverage
- No security vulnerabilities detected
- Enhanced TypeScript Definitions: Improved type definitions for better IntelliSense and type safety
- Batch Operations Support: Added proper types for batch URL fetching with error handling
- Entity Data Completeness: Added missing properties to EntityData interface (thumbnailWidth, thumbnailHeight, apiProvider, platforms)
- Platform Link Enhancement: Added entityUniqueId property to PlatformLink interface
- Configuration Options: Added metrics configuration option to OdesliOptions interface
- BatchError Interface: Proper error typing for batch operations with specific error categories
- BatchResult Type: Type-safe return type for batch fetch operations
- Enhanced Error Types: Added specific error types (BAD_REQUEST, UNAUTHORIZED, RATE_LIMITED, etc.)
- Version bump for dependency updates and workflow improvements
- Automated Workflows: Enhanced Dependabot auto-merge workflow with version bumping and tagging
- Dependency Updates: Updated development dependencies for security and compatibility
- Improved CI/CD pipeline automation
- Enhanced dependency management workflows
- Code Refactoring: Removed redundant
fetchBatchmethod to improve code maintainability - Documentation Updates: Updated README badges and documentation links
- Build System: Fixed build configuration for better cross-platform compatibility
- Dependencies: Updated development dependencies for improved security
- Version bump for registry publishing and workflow improvements
- Security Vulnerabilities: Fixed security vulnerabilities in dependencies
- Test Dependencies: Added missing
jest-fetch-mockdependency for proper testing - User-Agent Validation: Relaxed user-agent check in tests for better compatibility
- Publishing Workflows: Streamlined publishing workflows for both npm and GitHub Packages
- Updated package-lock.json and package.json for security improvements
- Enhanced build and deployment processes
- Version bump for GitHub Packages release and registry configuration
- Fixed a critical bug where an un-referenced
setIntervalin theMetricsCollectorwould cause Node.js processes to hang and not exit gracefully.
- The
Odesliconstructor now accepts{ metrics: false }as an option to completely disable the metrics collection feature.
- Code Formatting: Applied Prettier formatting for consistent code style
- Linting: Resolved linting and formatting errors for better code quality
- Metrics Stability: Improved metrics collector stability and performance
Note: For a comprehensive overview of all recent API enhancements and features, please see the API Improvements documentation.
- Country Code Validation: Added strict TypeScript validation for country codes using ISO 3166-1 alpha-2 standard
- getCountryOptions() Method: New static method that returns all valid country codes with full country names for UI dropdowns
- Enhanced TypeScript Support: Added
CountryCodeunion type for strict country code validation - Improved Examples: Updated all examples to demonstrate new country code features and comprehensive usage
- Comprehensive Testing: Added extensive tests for country code validation and getCountryOptions method
- Better Documentation: Updated README with TypeScript examples and country code usage patterns
- TypeScript autocomplete now shows only valid country codes
- Full country names available for UI dropdowns via
getCountryOptions() - 249 supported countries with ISO 3166-1 alpha-2 codes
- Enhanced error handling for invalid country codes
- Improved batch fetching with country-specific options
- Added comprehensive test coverage for new country code features
- Updated TypeScript definitions with strict country code validation
- Enhanced examples demonstrating all new features
- Improved documentation with practical usage examples
- Fixed User-Agent format to match expected pattern
- Improved error handling and propagation
- Fixed test failures related to response handling
- ESLint Compatibility: Resolved ESLint structuredClone compatibility issue
- Formatting Issues: Fixed formatting issues causing CI failure
- Workflow Configuration: Updated workflows to use master branch for CI badge
- GitHub Packages Support: Added automated GitHub Packages publishing workflows
- Enhanced Documentation: Updated documentation and policy files
- CI/CD Improvements: Added comprehensive CI/CD pipeline with automated testing and publishing
- Dependencies: Updated and reverted dependencies for better compatibility
- Line Endings: Added .gitattributes for consistent line endings across platforms
- Linting: Fixed lint and formatting issues for CI compliance
- Fixed linter errors caused by Windows line endings
- Improved code formatting and consistency
- GitHub Packages Workflow: Enhanced GitHub Packages workflow with debugging and GITHUB_TOKEN usage
- Package Configuration: Fixed package names configuration for different registries
- Permissions: Added proper permissions to npm publish job
- Manual Trigger Support: Added manual trigger support to publish workflows
- Dedicated Tokens: Implemented dedicated GH_PACKAGES_TOKEN for GitHub Packages publishing
- Workflow Splitting: Split deployment workflows for npm and GitHub Packages
- Documentation Links: Updated API documentation links to correct Odesli API docs
- Unified Fetch API: Single
fetch()method that handles both single URLs and arrays of URLs - Enhanced Parameter Handling: Better validation and processing of request parameters
- Retry Logic: Configurable retry mechanism with exponential backoff
- Custom Headers: Support for custom request headers including User-Agent customization
- Base URL Customization: Ability to override the default API base URL
- Parameter Validation Toggle: Option to enable/disable parameter validation
- Logging Support: Built-in logging with customizable log levels
- Utility Methods: Added
detectPlatform(),extractId(), andgetSupportedPlatforms() - Cache Statistics: Enhanced cache with detailed statistics and hit rate tracking
- Rate Limiter: Advanced rate limiting with multiple strategies (token-bucket, leaky-bucket, sliding-window)
- Metrics Collector: Comprehensive metrics collection for monitoring and analytics
- Plugin System: Extensible plugin architecture with hooks, middleware, and transformers
- Batch Processing: Efficient batch fetching with concurrency control and error handling
- Breaking Change: Replaced individual methods with unified
fetch()API - Enhanced Error Handling: More detailed error messages and better error propagation
- Improved TypeScript Support: Better type definitions and stricter validation
- Better Documentation: Comprehensive examples and API documentation
- Added comprehensive test suite with 100% coverage
- Enhanced error handling and validation
- Improved performance with optimized batch processing
- Better memory management and resource cleanup
- Enhanced logging and debugging capabilities
- Initial release of odesli.js
- Basic API client for Odesli.co (formerly song.link/album.link)
- Support for fetching song and album links across multiple platforms
- TypeScript definitions
- Basic caching mechanism
- Error handling and validation
- Support for API keys and rate limiting
- Documentation and examples
- Cross-platform music link fetching
- Support for Spotify, Apple Music, YouTube Music, and more
- Multi-country support
- Optional API key for higher rate limits
- Lightweight and fast performance
- Comprehensive error handling