Skip to content

Releases: Exerra/node-musickit-api

3.0.1 - Bun hotfix

Choose a tag to compare

@Exerra Exerra released this 10 Jul 20:40

Version 3.0.0 introduced a bug causing Bun to use an entrypoint not bundled in the package tarball. This version fixes that -- all runtimes now use the compiled ESM.

Full Changelog: 3.0.0...3.0.1

Version 3.0.0 - complete rewrite & storefronts

Choose a tag to compare

@Exerra Exerra released this 10 Jul 20:32

This is a full rewrite of the package. Nothing is shared with v2 - API, types, and internals are all new. Treat this as a new package.

Highlights

  • TypeScript — Full type definitions for all resources and responses
  • Bun — Primary package manager; still compatible with npm/yarn
  • Promise-based — Removed legacy callback support; fully async/await
  • Resource architecturemusicKit.songs, musicKit.albums, musicKit.artists, musicKit.musicVideos, musicKit.storefronts
  • New resource: StorefrontsgetAll() and get() for Apple Music storefronts
  • Response flattening — Clean data objects by default; use raw: true for unprocessed responses
  • JWT authmusicKit.auth() generates + caches developer tokens; testAuth() validates them
  • Error handling — Non-2xx responses return structured errors instead of throwing
  • Search — Typed search() with SearchParams/SearchResult

Migration from v2

The v2 callback-based API is removed. See the README for the new promise-based API pattern.

What's Changed

Full rewrite (PR #15):

  • 958 additions, 2,149 deletions across 70 files
  • Migrate from JavaScript to TypeScript (closes #11)
  • Migrate from npm to Bun as the primary package manager
  • Move from callbacks-first to promises-first (closes #13)
  • Implement MusicKit class with JWT authentication
  • Implement resource-based architecture: SongsResource, AlbumsResource, ArtistsResource, MusicVideosResource
  • Add search() method with typed SearchParams and SearchResult
  • Add testAuth() for token validation (closes #10)
  • Implement response flattening by default with raw opt-out
  • Define full TypeScript interfaces for Album, Song, Artist, MusicVideo, Search, Play, Relationships

Post-rewrite additions:

  • feat: add Storefronts resource (getAll, get)
  • feat: add authentication check to API methods
  • fix: return error response immediately in resource methods
  • fix: handle non-2xx API responses
  • build: migrate to Bun and update npm publication workflow
  • docs: full README rewrite with API documentation and quick start
  • chore: add MIT License file

Full Changelog: 2.1.1...3.0.0

Bugfix && better code

Choose a tag to compare

@Exerra Exerra released this 22 Oct 09:40

This release fixes a major bug in the code (essentially a functions parameter was named "storefront" but I used "country" in the code)
Also adds some code revamps, essentially made a part of the code a module

Personalized routes

Choose a tag to compare

@Exerra Exerra released this 21 Oct 20:19

This release adds various personalized routes.
Documentation: https://musickit.js.org/#/personalized/initialization

Promise support

Choose a tag to compare

@Exerra Exerra released this 22 Sep 13:42

Added promise support!
To use promises, import node-musickit-api as "node-musickit-api/promises"

Missing param handling + more functions

Choose a tag to compare

@Exerra Exerra released this 21 Sep 21:32
ac1f180
1.2.0

Update package.json

Changed README to point to docs

Choose a tag to compare

@Exerra Exerra released this 21 Sep 15:09
1.1.1

Better readme

getSongByISRC()

Choose a tag to compare

@Exerra Exerra released this 21 Sep 14:43

Added a getSongByISRC() function

Initialization README

Choose a tag to compare

@Exerra Exerra released this 21 Sep 09:24

Added Initialization to the README

Initial release

Choose a tag to compare

@Exerra Exerra released this 20 Sep 21:44

This is the initial release of this package!

Features:

  • Searching
  • Getting things by their ID