Socket
Socket
Sign inDemoInstall

graphql-spotify

Package Overview
Dependencies
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

graphql-spotify - npm Package Compare versions

Comparing version 0.4.2 to 0.4.3

.travis.yml

2

package.json
{
"name": "graphql-spotify",
"version": "0.4.2",
"version": "0.4.3",
"description": "GraphQL Schema And Resolvers For Spotify Web API",

@@ -5,0 +5,0 @@ "main": "dist/lib.js",

@@ -8,3 +8,4 @@ import {

PlaylistLoader, PlaylistTracksLoader, AlbumsLoader, UserLoader, ArtistsLoader,
AudioFeaturesLoader, SavedContainsLoader, TracksLoader, CategoriesLoader, RecommendationsLoader
AudioFeaturesLoader, SavedContainsLoader, TracksLoader, CategoriesLoader, RecommendationsLoader,
CategoryPlaylistLoader, CategoryLoader
} = makeLoaders(token);

@@ -38,2 +39,6 @@

},
category: async (obj, args) => {
const res = await CategoryLoader.load(args.id)
return res
},
recommendations: async (obj, args) => {

@@ -65,3 +70,5 @@ return await RecommendationsLoader.load(args.parameters)

// otherwise always fetch all of the tracks
let currentOffset = items.length;
// when resolving a full playlist there are already items
let allItems = items || []
let currentOffset = allItems.length
let fetches = []

@@ -73,3 +80,2 @@ while (currentOffset < total ) {

const fetchResults = await Promise.all(fetches);
let allItems = items
fetchResults.forEach((result) => {

@@ -136,2 +142,8 @@ allItems = allItems.concat(result.items)

},
Category: {
playlists: async(category, args) => {
const { playlists } = await CategoryPlaylistLoader.load({ id: category.id, queryParams: args })
return playlists
}
},
Item: {

@@ -138,0 +150,0 @@ __resolveType(object, context, info){

@@ -10,2 +10,7 @@ const Category = `

name: String
"""
Get a list of Spotify playlists tagged with a particular category
limit: Default: 20. Minimum: 1. Maximum: 50
"""
playlists(country: String, limit: Int, offset: Int): Paging
}

@@ -12,0 +17,0 @@ `

@@ -6,2 +6,3 @@ const RootQuery = `

Returns the most recent 50 tracks played by a user
Required Scope: **user-read-recently-played**
"""

@@ -29,5 +30,12 @@ recentlyPlayed: [PlayHistory]

"""
categories(limit: Int, offset: Int): Paging
categories(limit: Int, offset: Int, country: String, locale: String): Paging
"""
Get a single category used to tag items in Spotify (on, for example, the Spotify player’s “Browse” tab)
https://beta.developer.spotify.com/documentation/web-api/reference/browse/get-category/
"""
category(id: String!): Category
"""
Save one or more tracks to the current user’s ‘Your Music’ library
Required Scope: **user-library-modify**
"""
recommendations(parameters: RecommendationParameters): RecommendationsResponse

@@ -34,0 +42,0 @@

@@ -20,2 +20,3 @@ const Track = `

saved in the user's library
Required Scope: **user-library-read**
"""

@@ -22,0 +23,0 @@ saved: Boolean

@@ -49,2 +49,12 @@ import 'isomorphic-fetch'

export async function getCategoryPlaylists(token, id, queryParams = {})
{
let res = await fetch(`https://api.spotify.com/v1/browse/categories/${id}/playlists?${serializeToURLParameters(queryParams)}`, {
method: 'GET',
headers: makeHeaders(token)
});
res = await res.json();
return res;
}
export async function getRecommendations(token, queryParams)

@@ -70,2 +80,12 @@ {

export async function getCategory(token, id)
{
let res = await fetch(`https://api.spotify.com/v1/browse/categories/${id}`, {
method: 'GET',
headers: makeHeaders(token)
});
res = await res.json();
return res;
}
export async function getRecentlyPlayed(token) {

@@ -151,17 +171,2 @@ const url = "https://api.spotify.com/v1/me/player/recently-played?limit=50"

export function makeLoaders(token) {
return {
UserLoader : makeUserLoader(token),
PlaylistLoader : makePlaylistLoader(token),
PlaylistTracksLoader: makePlaylistTracksLoader(token),
AlbumsLoader: makeAlbumsLoader(token),
ArtistsLoader: makeArtistsLoader(token),
TracksLoader: makeTracksLoader(token),
SavedContainsLoader: makeSavedContainsLoader(token),
AudioFeaturesLoader: makeAudioFeaturesLoader(token),
CategoriesLoader : makeCategoriesLoader(token),
RecommendationsLoader: makeRecommendationsLoader(token)
}
}
export function makeUserLoader(token) {

@@ -239,2 +244,16 @@ const batchLoadFn = async ([key]) => {

export function makeCategoryLoader(token) {
const batchLoadFn = async ([key]) => {
const category = await getCategory(token, key)
return [category]
}
return new Dataloader(batchLoadFn, { batch: false })
}
export function makeCategoriesPlaylistsLoader(token) {
const batchLoadFn = async ([{ id, queryParams }]) => {
return [await getCategoryPlaylists(token, id, queryParams)]
}
return new Dataloader(batchLoadFn, { batch: false, cacheKeyFn: cacheKeyFnForQueryKeys })
}
export function makeRecommendationsLoader(token) {

@@ -245,2 +264,19 @@ const batchLoadFn = async ([key]) => {

return new Dataloader(batchLoadFn, { batch: false, cacheKeyFn: cacheKeyFnForQueryKeys })
}
export function makeLoaders(token) {
return {
UserLoader : makeUserLoader(token),
PlaylistLoader : makePlaylistLoader(token),
PlaylistTracksLoader: makePlaylistTracksLoader(token),
AlbumsLoader: makeAlbumsLoader(token),
ArtistsLoader: makeArtistsLoader(token),
TracksLoader: makeTracksLoader(token),
SavedContainsLoader: makeSavedContainsLoader(token),
AudioFeaturesLoader: makeAudioFeaturesLoader(token),
CategoriesLoader : makeCategoriesLoader(token),
RecommendationsLoader: makeRecommendationsLoader(token),
CategoryPlaylistLoader: makeCategoriesPlaylistsLoader(token),
CategoryLoader: makeCategoryLoader(token)
}
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc