spotify-uri
Advanced tools
Comparing version
@@ -18,3 +18,3 @@ declare enum SpotifyTypes { | ||
uri: string; | ||
constructor(uri: string, id: string); | ||
constructor(uri: string, id: string, type: SpotifyTypes); | ||
static is(v: any): v is SpotifyUri; | ||
@@ -21,0 +21,0 @@ toURI(): string; |
@@ -40,5 +40,2 @@ "use strict"; | ||
// src/parse.ts | ||
var import_url = require("url"); | ||
// src/util.ts | ||
@@ -57,6 +54,6 @@ function decode(str) { | ||
uri; | ||
constructor(uri, id) { | ||
constructor(uri, id, type) { | ||
this.uri = uri; | ||
this.id = id; | ||
this.type = this.constructor.name.toLowerCase(); | ||
this.type = type; | ||
} | ||
@@ -90,3 +87,3 @@ static is(v) { | ||
constructor(uri, artist, album, track, seconds) { | ||
super(uri, ""); | ||
super(uri, "", "local" /* Local */); | ||
this.artist = artist; | ||
@@ -101,6 +98,10 @@ this.album = album; | ||
toURI() { | ||
return `spotify:${this.type}:${encode(this.artist)}:${encode(this.album)}:${encode(this.track)}:${this.seconds}`; | ||
return `spotify:${this.type}:${encode(this.artist)}:${encode( | ||
this.album | ||
)}:${encode(this.track)}:${this.seconds}`; | ||
} | ||
toURL() { | ||
return `/${this.type}/${encode(this.artist)}/${encode(this.album)}/${encode(this.track)}/${this.seconds}`; | ||
return `/${this.type}/${encode(this.artist)}/${encode(this.album)}/${encode( | ||
this.track | ||
)}/${this.seconds}`; | ||
} | ||
@@ -123,3 +124,3 @@ }; | ||
constructor(uri, id, user) { | ||
super(uri, id); | ||
super(uri, id, "playlist" /* Playlist */); | ||
if (typeof user === "string") { | ||
@@ -200,7 +201,9 @@ this.user = user; | ||
const uri = SpotifyUri.is(input) ? input.uri : input; | ||
const { protocol, hostname, pathname = "/", searchParams } = new import_url.URL(uri); | ||
const { protocol, hostname, pathname = "/", searchParams } = new URL(uri); | ||
if (hostname === "embed.spotify.com") { | ||
const parsedQs = Object.fromEntries(searchParams); | ||
if (typeof parsedQs.uri !== "string") { | ||
throw new Error("Parsed query string was not valid: " + searchParams.toString()); | ||
throw new Error( | ||
"Parsed query string was not valid: " + searchParams.toString() | ||
); | ||
} | ||
@@ -228,3 +231,3 @@ return parse(parsedQs.uri); | ||
if (spotifyType === "search" /* Search */) { | ||
return new Search(uri, decode(parts.slice(2).join(":"))); | ||
return new Search(uri, decode(parts.slice(2).join(":")), spotifyType); | ||
} | ||
@@ -250,18 +253,18 @@ if (len >= 3 && spotifyType === "local" /* Local */) { | ||
if (len === 3 && spotifyType === "user" /* User */) { | ||
return new User(uri, decode(parts[2])); | ||
return new User(uri, decode(parts[2]), spotifyType); | ||
} | ||
if (spotifyType === "artist" /* Artist */) { | ||
return new Artist(uri, parts[2]); | ||
return new Artist(uri, parts[2], spotifyType); | ||
} | ||
if (spotifyType === "album" /* Album */) { | ||
return new Album(uri, parts[2]); | ||
return new Album(uri, parts[2], spotifyType); | ||
} | ||
if (spotifyType === "track" /* Track */) { | ||
return new Track(uri, parts[2]); | ||
return new Track(uri, parts[2], spotifyType); | ||
} | ||
if (spotifyType === "episode" /* Episode */) { | ||
return new Episode(uri, parts[2]); | ||
return new Episode(uri, parts[2], spotifyType); | ||
} | ||
if (spotifyType === "show" /* Show */) { | ||
return new Show(uri, parts[2]); | ||
return new Show(uri, parts[2], spotifyType); | ||
} | ||
@@ -268,0 +271,0 @@ throw new TypeError(`Could not determine type for: ${uri}`); |
@@ -5,4 +5,10 @@ { | ||
"homepage": "https://github.com/TooTallNate/spotify-uri#readme", | ||
"version": "4.0.1", | ||
"version": "4.1.0", | ||
"types": "./dist/index.d.ts", | ||
"main": "./dist/index.js", | ||
"exports": { | ||
"import": "./dist/index.mjs", | ||
"require": "./dist/index.js", | ||
"types": "./dist/index.d.ts" | ||
}, | ||
"module": "./dist/index.mjs", | ||
@@ -24,2 +30,18 @@ "author": { | ||
{ | ||
"name": "PawsOfDestruction", | ||
"email": "74069208+PawsOfDestruction@users.noreply.github.com" | ||
}, | ||
{ | ||
"name": "Enzo Ferey", | ||
"email": "hello@enzoferey.com" | ||
}, | ||
{ | ||
"name": "Jacob Morrison", | ||
"email": "jake.morrison24@gmail.com" | ||
}, | ||
{ | ||
"name": "Lioness100", | ||
"email": "jchickmm2@gmail.com" | ||
}, | ||
{ | ||
"name": "Karl Sander", | ||
@@ -29,6 +51,2 @@ "email": "kall@kall.ws" | ||
{ | ||
"name": "Shem Magnezi", | ||
"email": "smagnezi8@gmail.com" | ||
}, | ||
{ | ||
"name": "Marwan Zibaoui", | ||
@@ -40,2 +58,6 @@ "email": "marwan.zibaoui@gmail.com" | ||
"email": "omiraculous@gmail.com" | ||
}, | ||
{ | ||
"name": "Shem Magnezi", | ||
"email": "smagnezi8@gmail.com" | ||
} | ||
@@ -79,8 +101,2 @@ ], | ||
"license": "MIT", | ||
"exports": { | ||
"import": "./dist/index.mjs", | ||
"require": "./dist/index.js", | ||
"types": "./dist/index.d.ts" | ||
}, | ||
"types": "./dist/index.d.ts", | ||
"scripts": { | ||
@@ -87,0 +103,0 @@ "build": "tsup src/index.ts --format esm,cjs --dts", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
25732
2.4%610
1.33%0
-100%