npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

jkeveren-spotify-api

v0.3.1

Published

Promise based Spotify API wrapper that automatically refreshes access tokens

Downloads

21

Readme

jkeveren-spotify-api

npm install jkeveren-spotify-api

  • TypeScript (Still works with regular JS)
  • Promise based
  • 0 Dependencies
  • Automatically refreshes tokens
  • Coming soon: Handles rate limit

Usage/Reference

SpotifyClient

Reference

Development

Both unit and integration (requires configuration) tests can be run using npm test.

Unit tests

Unit tests can be run using npm run test/unit.

Integration tests

Integration tests communicate with Spotify's API so requires some configuration. Once configured, integration tests can be run using npm run test/integration.

Configuration

  1. Create a Spotify app in the developer dashboard.
    • Add recirect URL http://localhost:<port> where <port> is the same as REDIRECT_SERVER_PORT in the .env file that you will create in the next step.
    • Keeping the app in developmnent mode is recommended as it allows any scopes to be requested.
    • If your app is in development mode, give your Spotify account access in the "USERS AND ACCESS" section in the app's Spotify dashboard.
  2. Create a .env file inside the test-integration directory. Copy and modify following variables:
# Port for the redirect server to listen on
# The integration suite starts a temporary server for Spotify to redirect to.
# This is the port that it listens on
REDIRECT_SERVER_PORT=8000

# Base URLs for auth and API.
# Documneted in Spotify's API docs:
# Auth: https://developer.spotify.com/documentation/general/guides/authorization/
# API: https://developer.spotify.com/documentation/web-api/reference/#/
# Typical values are as follows:
AUTH_BASE_URL=https://accounts.spotify.com
API_BASE_URL=https://api.spotify.com/v1

# Client credentials
# Copy these from you're spotify app in the Spotify developer dashboard:
# https://developer.spotify.com/dashboard
CLIENT_ID=999b871166be415590457fc76f5898b4
CLIENT_SECRET=c2df8bfbbd8044b2b87899fe451615f6

TODO

  • Make sure names are sensible
  • document everything
  • document usage
  • JSDoc everything else
  • test requesting and uploading non-string objects like images
  • verify that spotify app needs to be in dev mode and that you need to add your account to the app's "users and access" section of the app's dashboard
  • handle rate limits. (per user request queue?)
  • add user constructor
  • add integration test for state
  • add tests for SpotifyRequestError properties
  • handle getUser with no scopes
  • maker spotify user more constructable