javascript-ampache 1.1.10 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/README.md +16 -6
  2. package/dist/index.js +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/index.m.js +1 -1
  5. package/dist/index.m.js.map +1 -1
  6. package/dist/index.modern.mjs +1 -1
  7. package/dist/index.modern.mjs.map +1 -1
  8. package/dist/index.umd.js +1 -1
  9. package/dist/index.umd.js.map +1 -1
  10. package/package.json +8 -7
  11. package/src/albums.js +106 -0
  12. package/src/artists.js +105 -0
  13. package/src/auth.js +142 -0
  14. package/src/base.js +145 -0
  15. package/src/bookmarks.js +106 -0
  16. package/src/catalogs.js +133 -0
  17. package/src/genres.js +57 -0
  18. package/src/index.js +30 -0
  19. package/src/labels.js +53 -0
  20. package/src/licenses.js +47 -0
  21. package/src/live-streams.js +97 -0
  22. package/src/playlists.js +241 -0
  23. package/src/podcasts.js +230 -0
  24. package/src/preferences.js +114 -0
  25. package/src/shares.js +99 -0
  26. package/src/shouts.js +24 -0
  27. package/src/songs.js +273 -0
  28. package/src/system.js +510 -0
  29. package/src/users.js +224 -0
  30. package/src/{utils.ts → utils.js} +16 -16
  31. package/src/videos.js +84 -0
  32. package/dist/albums/index.d.ts +0 -64
  33. package/dist/albums/types.d.ts +0 -37
  34. package/dist/artists/index.d.ts +0 -64
  35. package/dist/artists/types.d.ts +0 -35
  36. package/dist/auth/index.d.ts +0 -56
  37. package/dist/auth/types.d.ts +0 -32
  38. package/dist/base.d.ts +0 -47
  39. package/dist/bookmarks/index.d.ts +0 -91
  40. package/dist/bookmarks/types.d.ts +0 -13
  41. package/dist/catalogs/index.d.ts +0 -87
  42. package/dist/catalogs/types.d.ts +0 -19
  43. package/dist/genres/index.d.ts +0 -28
  44. package/dist/genres/types.d.ts +0 -22
  45. package/dist/index.d.ts +0 -24
  46. package/dist/labels/index.d.ts +0 -32
  47. package/dist/labels/types.d.ts +0 -18
  48. package/dist/licenses/index.d.ts +0 -32
  49. package/dist/licenses/types.d.ts +0 -12
  50. package/dist/live-streams/index.d.ts +0 -80
  51. package/dist/live-streams/types.d.ts +0 -14
  52. package/dist/playlists/index.d.ts +0 -204
  53. package/dist/playlists/types.d.ts +0 -26
  54. package/dist/podcasts/index.d.ts +0 -121
  55. package/dist/podcasts/types.d.ts +0 -79
  56. package/dist/preferences/index.d.ts +0 -80
  57. package/dist/preferences/types.d.ts +0 -18
  58. package/dist/shares/index.d.ts +0 -69
  59. package/dist/shares/types.d.ts +0 -23
  60. package/dist/shouts/index.d.ts +0 -17
  61. package/dist/shouts/types.d.ts +0 -10
  62. package/dist/songs/index.d.ts +0 -143
  63. package/dist/songs/types.d.ts +0 -73
  64. package/dist/system/index.d.ts +0 -407
  65. package/dist/system/types.d.ts +0 -24
  66. package/dist/users/index.d.ts +0 -190
  67. package/dist/users/types.d.ts +0 -34
  68. package/dist/utils.d.ts +0 -4
  69. package/dist/videos/index.d.ts +0 -33
  70. package/dist/videos/types.d.ts +0 -38
  71. package/src/albums/index.ts +0 -88
  72. package/src/albums/types.ts +0 -40
  73. package/src/artists/index.ts +0 -88
  74. package/src/artists/types.ts +0 -38
  75. package/src/auth/index.ts +0 -118
  76. package/src/auth/types.ts +0 -32
  77. package/src/base.ts +0 -133
  78. package/src/bookmarks/index.ts +0 -116
  79. package/src/bookmarks/types.ts +0 -15
  80. package/src/catalogs/index.ts +0 -130
  81. package/src/catalogs/types.ts +0 -27
  82. package/src/genres/index.ts +0 -39
  83. package/src/genres/types.ts +0 -25
  84. package/src/index.ts +0 -63
  85. package/src/labels/index.ts +0 -43
  86. package/src/labels/types.ts +0 -20
  87. package/src/licenses/index.ts +0 -43
  88. package/src/licenses/types.ts +0 -14
  89. package/src/live-streams/index.ts +0 -104
  90. package/src/live-streams/types.ts +0 -16
  91. package/src/playlists/index.ts +0 -280
  92. package/src/playlists/types.ts +0 -29
  93. package/src/podcasts/index.ts +0 -174
  94. package/src/podcasts/types.ts +0 -85
  95. package/src/preferences/index.ts +0 -114
  96. package/src/preferences/types.ts +0 -20
  97. package/src/shares/index.ts +0 -100
  98. package/src/shares/types.ts +0 -25
  99. package/src/shouts/index.ts +0 -18
  100. package/src/shouts/types.ts +0 -11
  101. package/src/songs/index.ts +0 -221
  102. package/src/songs/types.ts +0 -77
  103. package/src/system/index.ts +0 -845
  104. package/src/system/types.ts +0 -42
  105. package/src/users/index.ts +0 -227
  106. package/src/users/types.ts +0 -38
  107. package/src/videos/index.ts +0 -49
  108. package/src/videos/types.ts +0 -42
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # javascript-ampache
2
2
 
3
- A JS client for the Ampache API written in Typescript.
3
+ A JS client for the Ampache API.
4
4
 
5
5
  ## Installation
6
6
 
@@ -39,12 +39,22 @@ let results = API.advancedSearch({
39
39
  });
40
40
  ```
41
41
 
42
- ## Build
42
+ ### Bearer token
43
43
 
44
- ```bash
45
- npm run build
44
+ You can send the session key in the `Authorization: Bearer` header instead of the `auth` query parameter by passing `useBearerToken: true` when creating the client:
45
+
46
+ ```js
47
+ const API = new AmpacheAPI({
48
+ url: "http://pathToYourAmpacheServer",
49
+ sessionKey: yourSessionAuthKey,
50
+ useBearerToken: true,
51
+ });
46
52
  ```
47
53
 
48
- ### Special thanks
54
+ When using this from a browser, the Ampache server must allow the `Authorization` header (e.g. via `Access-Control-Allow-Headers`).
55
+
56
+ ## Build
49
57
 
50
- https://lyamkin.com/blog/how-to-build-api-client-library-in-js/ & https://github.com/ilyamkin/dev-to-js
58
+ ```bash
59
+ npm run build
60
+ ```
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- function t(t,r){t.prototype=Object.create(r.prototype),t.prototype.constructor=t,e(t,r)}function e(t,r){return e=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},e(t,r)}var r=Object.prototype.hasOwnProperty;function n(t){try{return encodeURIComponent(t)}catch(t){return null}}var s=function(t,e){e=e||"";var s,i,u=[];for(i in"string"!=typeof e&&(e="?"),t)if(r.call(t,i)){if((s=t[i])||null!=s&&!isNaN(s)||(s=""),i=n(i),s=n(s),null===i||null===s)continue;u.push(i+"="+s)}return u.length?e+u.join("&"):""},i={__proto__:null,default:function(t,e){return e=e||{},new Promise(function(r,n){var s=new XMLHttpRequest,i=[],u=[],o={},a=function(){return{ok:2==(s.status/100|0),statusText:s.statusText,status:s.status,url:s.responseURL,text:function(){return Promise.resolve(s.responseText)},json:function(){return Promise.resolve(s.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([s.response]))},clone:a,headers:{keys:function(){return i},entries:function(){return u},get:function(t){return o[t.toLowerCase()]},has:function(t){return t.toLowerCase()in o}}}};for(var c in s.open(e.method||"get",t,!0),s.onload=function(){s.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,function(t,e,r){i.push(e=e.toLowerCase()),u.push([e,r]),o[e]=o[e]?o[e]+","+r:r}),r(a())},s.onerror=n,s.withCredentials="include"==e.credentials,e.headers)s.setRequestHeader(c,e.headers[c]);s.send(e.body||null)})}},u=self.fetch||(self.fetch=i.default||i);const o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a="ARRAYBUFFER not supported by this environment",c="UINT8ARRAY not supported by this environment";function h(t,e,r,n){let s,i,u;const o=e||[0],a=(r=r||0)>>>3,c=-1===n?3:0;for(s=0;s<t.length;s+=1)u=s+a,i=u>>>2,o.length<=i&&o.push(0),o[i]|=t[s]<<8*(c+n*(u%4));return{value:o,binLen:8*t.length+r}}function l(t,e,r){switch(e){case"UTF8":case"UTF16BE":case"UTF16LE":break;default:throw new Error("encoding must be UTF8, UTF16BE, or UTF16LE")}switch(t){case"HEX":return function(t,e,n){return function(t,e,r,n){let s,i,u,o;if(0!=t.length%2)throw new Error("String of HEX type must be in byte increments");const a=e||[0],c=(r=r||0)>>>3,h=-1===n?3:0;for(s=0;s<t.length;s+=2){if(i=parseInt(t.substr(s,2),16),isNaN(i))throw new Error("String of HEX type contains invalid characters");for(o=(s>>>1)+c,u=o>>>2;a.length<=u;)a.push(0);a[u]|=i<<8*(h+n*(o%4))}return{value:a,binLen:4*t.length+r}}(t,e,n,r)};case"TEXT":return function(t,n,s){return function(t,e,r,n,s){let i,u,o,a,c,h,l,f,p=0;const d=r||[0],v=(n=n||0)>>>3;if("UTF8"===e)for(l=-1===s?3:0,o=0;o<t.length;o+=1)for(i=t.charCodeAt(o),u=[],128>i?u.push(i):2048>i?(u.push(192|i>>>6),u.push(128|63&i)):55296>i||57344<=i?u.push(224|i>>>12,128|i>>>6&63,128|63&i):(o+=1,i=65536+((1023&i)<<10|1023&t.charCodeAt(o)),u.push(240|i>>>18,128|i>>>12&63,128|i>>>6&63,128|63&i)),a=0;a<u.length;a+=1){for(h=p+v,c=h>>>2;d.length<=c;)d.push(0);d[c]|=u[a]<<8*(l+s*(h%4)),p+=1}else for(l=-1===s?2:0,f="UTF16LE"===e&&1!==s||"UTF16LE"!==e&&1===s,o=0;o<t.length;o+=1){for(i=t.charCodeAt(o),!0===f&&(a=255&i,i=a<<8|i>>>8),h=p+v,c=h>>>2;d.length<=c;)d.push(0);d[c]|=i<<8*(l+s*(h%4)),p+=2}return{value:d,binLen:8*p+n}}(t,e,n,s,r)};case"B64":return function(t,e,n){return function(t,e,r,n){let s,i,u,a,c,h,l,f=0;const p=e||[0],d=(r=r||0)>>>3,v=-1===n?3:0,g=t.indexOf("=");if(-1===t.search(/^[a-zA-Z0-9=+/]+$/))throw new Error("Invalid character in base-64 string");if(t=t.replace(/=/g,""),-1!==g&&g<t.length)throw new Error("Invalid '=' found in base-64 string");for(i=0;i<t.length;i+=4){for(c=t.substr(i,4),a=0,u=0;u<c.length;u+=1)s=o.indexOf(c.charAt(u)),a|=s<<18-6*u;for(u=0;u<c.length-1;u+=1){for(l=f+d,h=l>>>2;p.length<=h;)p.push(0);p[h]|=(a>>>16-8*u&255)<<8*(v+n*(l%4)),f+=1}}return{value:p,binLen:8*f+r}}(t,e,n,r)};case"BYTES":return function(t,e,n){return function(t,e,r,n){let s,i,u,o;const a=e||[0],c=(r=r||0)>>>3,h=-1===n?3:0;for(i=0;i<t.length;i+=1)s=t.charCodeAt(i),o=i+c,u=o>>>2,a.length<=u&&a.push(0),a[u]|=s<<8*(h+n*(o%4));return{value:a,binLen:8*t.length+r}}(t,e,n,r)};case"ARRAYBUFFER":try{new ArrayBuffer(0)}catch(t){throw new Error(a)}return function(t,e,n){return function(t,e,r,n){return h(new Uint8Array(t),e,r,n)}(t,e,n,r)};case"UINT8ARRAY":try{new Uint8Array(0)}catch(t){throw new Error(c)}return function(t,e,n){return h(t,e,n,r)};default:throw new Error("format must be HEX, TEXT, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY")}}function f(t,e,r,n){switch(t){case"HEX":return function(t){return function(t,e,r,n){const s="0123456789abcdef";let i,u,o="";const a=e/8,c=-1===r?3:0;for(i=0;i<a;i+=1)u=t[i>>>2]>>>8*(c+r*(i%4)),o+=s.charAt(u>>>4&15)+s.charAt(15&u);return n.outputUpper?o.toUpperCase():o}(t,e,r,n)};case"B64":return function(t){return function(t,e,r,n){let s,i,u,a,c,h="";const l=e/8,f=-1===r?3:0;for(s=0;s<l;s+=3)for(a=s+1<l?t[s+1>>>2]:0,c=s+2<l?t[s+2>>>2]:0,u=(t[s>>>2]>>>8*(f+r*(s%4))&255)<<16|(a>>>8*(f+r*((s+1)%4))&255)<<8|c>>>8*(f+r*((s+2)%4))&255,i=0;i<4;i+=1)h+=8*s+6*i<=e?o.charAt(u>>>6*(3-i)&63):n.b64Pad;return h}(t,e,r,n)};case"BYTES":return function(t){return function(t,e,r){let n,s,i="";const u=e/8,o=-1===r?3:0;for(n=0;n<u;n+=1)s=t[n>>>2]>>>8*(o+r*(n%4))&255,i+=String.fromCharCode(s);return i}(t,e,r)};case"ARRAYBUFFER":try{new ArrayBuffer(0)}catch(t){throw new Error(a)}return function(t){return function(t,e,r){let n;const s=e/8,i=new ArrayBuffer(s),u=new Uint8Array(i),o=-1===r?3:0;for(n=0;n<s;n+=1)u[n]=t[n>>>2]>>>8*(o+r*(n%4))&255;return i}(t,e,r)};case"UINT8ARRAY":try{new Uint8Array(0)}catch(t){throw new Error(c)}return function(t){return function(t,e,r){let n;const s=e/8,i=-1===r?3:0,u=new Uint8Array(s);for(n=0;n<s;n+=1)u[n]=t[n>>>2]>>>8*(i+r*(n%4))&255;return u}(t,e,r)};default:throw new Error("format must be HEX, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY")}}const p=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],d=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428],v=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225];function g(t){const e={outputUpper:!1,b64Pad:"=",outputLen:-1},r=t||{},n="Output length must be a multiple of 8";if(e.outputUpper=r.outputUpper||!1,r.b64Pad&&(e.b64Pad=r.b64Pad),r.outputLen){if(r.outputLen%8!=0)throw new Error(n);e.outputLen=r.outputLen}else if(r.shakeLen){if(r.shakeLen%8!=0)throw new Error(n);e.outputLen=r.shakeLen}if("boolean"!=typeof e.outputUpper)throw new Error("Invalid outputUpper formatting option");if("string"!=typeof e.b64Pad)throw new Error("Invalid b64Pad formatting option");return e}class y{constructor(t,e,r){const n=r||{};if(this.t=e,this.i=n.encoding||"UTF8",this.numRounds=n.numRounds||1,isNaN(this.numRounds)||this.numRounds!==parseInt(this.numRounds,10)||1>this.numRounds)throw new Error("numRounds must a integer >= 1");this.o=t,this.h=[],this.u=0,this.l=!1,this.A=0,this.p=!1,this.U=[],this.R=[]}update(t){let e,r=0;const n=this.T>>>5,s=this.F(t,this.h,this.u),i=s.binLen,u=s.value,o=i>>>5;for(e=0;e<o;e+=n)r+this.T<=i&&(this.m=this.g(u.slice(e,e+n),this.m),r+=this.T);return this.A+=r,this.h=u.slice(r>>>5),this.u=i%this.T,this.l=!0,this}getHash(t,e){let r,n,s=this.H;const i=g(e);if(this.B){if(-1===i.outputLen)throw new Error("Output length must be specified in options");s=i.outputLen}const u=f(t,s,this.v,i);if(this.p&&this.C)return u(this.C(i));for(n=this.Y(this.h.slice(),this.u,this.A,this.S(this.m),s),r=1;r<this.numRounds;r+=1)this.B&&s%32!=0&&(n[n.length-1]&=16777215>>>24-s%32),n=this.Y(n,s,0,this.I(this.o),s);return u(n)}setHMACKey(t,e,r){if(!this.L)throw new Error("Variant does not support HMAC");if(this.l)throw new Error("Cannot set MAC key after calling update");const n=l(e,(r||{}).encoding||"UTF8",this.v);this.M(n(t))}M(t){const e=this.T>>>3,r=e/4-1;let n;if(1!==this.numRounds)throw new Error("Cannot set numRounds with MAC");if(this.p)throw new Error("MAC key already set");for(e<t.binLen/8&&(t.value=this.Y(t.value,t.binLen,0,this.I(this.o),this.H));t.value.length<=r;)t.value.push(0);for(n=0;n<=r;n+=1)this.U[n]=909522486^t.value[n],this.R[n]=1549556828^t.value[n];this.m=this.g(this.U,this.m),this.A=this.T,this.p=!0}getHMAC(t,e){const r=g(e);return f(t,this.H,this.v,r)(this.N())}N(){let t;if(!this.p)throw new Error("Cannot call getHMAC without first setting MAC key");const e=this.Y(this.h.slice(),this.u,this.A,this.S(this.m),this.H);return t=this.g(this.R,this.I(this.o)),t=this.Y(e,this.H,this.T,t,this.H),t}}function m(t,e){return t>>>e|t<<32-e}function q(t,e){return t>>>e}function _(t,e,r){return t&e^~t&r}function b(t,e,r){return t&e^t&r^e&r}function w(t){return m(t,2)^m(t,13)^m(t,22)}function A(t,e){const r=(65535&t)+(65535&e);return(65535&(t>>>16)+(e>>>16)+(r>>>16))<<16|65535&r}function E(t,e,r,n){const s=(65535&t)+(65535&e)+(65535&r)+(65535&n);return(65535&(t>>>16)+(e>>>16)+(r>>>16)+(n>>>16)+(s>>>16))<<16|65535&s}function T(t,e,r,n,s){const i=(65535&t)+(65535&e)+(65535&r)+(65535&n)+(65535&s);return(65535&(t>>>16)+(e>>>16)+(r>>>16)+(n>>>16)+(s>>>16)+(i>>>16))<<16|65535&i}function k(t){return m(t,7)^m(t,18)^q(t,3)}function R(t){return m(t,6)^m(t,11)^m(t,25)}function U(t){let e;return e="SHA-224"==t?d.slice():v.slice(),e}function S(t,e){let r,n,s,i,u,o,a,c,h,l,f;const d=[];for(r=e[0],n=e[1],s=e[2],i=e[3],u=e[4],o=e[5],a=e[6],c=e[7],f=0;f<64;f+=1)d[f]=f<16?t[f]:E(m(v=d[f-2],17)^m(v,19)^q(v,10),d[f-7],k(d[f-15]),d[f-16]),h=T(c,R(u),_(u,o,a),p[f],d[f]),l=A(w(r),b(r,n,s)),c=a,a=o,o=u,u=A(i,h),i=s,s=n,n=r,r=A(h,l);var v;return e[0]=A(r,e[0]),e[1]=A(n,e[1]),e[2]=A(s,e[2]),e[3]=A(i,e[3]),e[4]=A(u,e[4]),e[5]=A(o,e[5]),e[6]=A(a,e[6]),e[7]=A(c,e[7]),e}class B extends y{constructor(t,e,r){if("SHA-224"!==t&&"SHA-256"!==t)throw new Error("Chosen SHA variant is not supported");super(t,e,r);const n=r||{};this.C=this.N,this.L=!0,this.v=-1,this.F=l(this.t,this.i,this.v),this.g=S,this.S=function(t){return t.slice()},this.I=U,this.Y=function(e,r,n,s){return function(t,e,r,n,s){let i,u;const o=15+(e+65>>>9<<4),a=e+r;for(;t.length<=o;)t.push(0);for(t[e>>>5]|=128<<24-e%32,t[o]=4294967295&a,t[o-1]=a/4294967296|0,i=0;i<t.length;i+=16)n=S(t.slice(i,i+16),n);return u="SHA-224"===s?[n[0],n[1],n[2],n[3],n[4],n[5],n[6]]:n,u}(e,r,n,s,t)},this.m=U(t),this.T=512,this.H="SHA-224"===t?224:256,this.B=!1,n.hmacKey&&this.M(function(t,e,r,n){const s="hmacKey must include a value and format";if(!e)throw new Error(s);if(void 0===e.value||!e.format)throw new Error(s);return l(e.format,e.encoding||"UTF8",r)(e.value)}(0,n.hmacKey,this.v))}}function C(t,e){var r="javascript-ampache query URL";e.useBearerToken&&(r="(Using Bearer token, auth added for debugging) - "+r,t+="&auth="+e.sessionKey),console.debug(r+" %c"+t,"color: black; font-style: italic; background-color: orange;padding: 2px")}var L,H=/*#__PURE__*/function(){function t(t){this.sessionKey=void 0,this.url=void 0,this.version="6.6.8",this.useBearerToken=void 0,this.debug=void 0,this.sessionKey=t.sessionKey||null,this.url=t.url,this.useBearerToken=t.useBearerToken||!1,this.debug=t.debug||!1}var e=t.prototype;return e.request=function(t){var e=this.url+"/server/json.server.php?action="+t+"&version="+this.version;return this.useBearerToken||(e+="&auth="+this.sessionKey),this.debug&&C(e,this),u(e,{method:"GET",headers:this.useBearerToken?{Authorization:"Bearer "+this.sessionKey}:{}}).then(function(t){if(t.ok)return t.json();throw new Error(t.statusText)})},e.binary=function(t){var e=this.url+"/server/json.server.php?action="+t+"&version="+this.version;return this.useBearerToken||(e+="&auth="+this.sessionKey),this.debug&&C(e,this),u(e,{method:"GET",headers:this.useBearerToken?{Authorization:"Bearer "+this.sessionKey}:{}}).then(function(t){return t.blob()}).then(function(t){return t})},e.setSessionKey=function(t){this.sessionKey=t},e.rawURL=function(t,e){var r=t;r+=s(e,"&");var n=this.url+"/server/json.server.php?action="+r+"&version="+this.version;return this.useBearerToken||(n+="&auth="+this.sessionKey),this.debug&&C(n,this),n},t}(),F=/*#__PURE__*/function(e){function r(){return e.apply(this,arguments)||this}t(r,e);var n=r.prototype;return n.albums=function(t){var e="albums";return e+=s(t,"&"),this.request(e)},n.album=function(t){var e="album";return e+=s(t,"&"),this.request(e)},n.artistAlbums=function(t){var e="artist_albums";return e+=s(t,"&"),this.request(e)},n.genreAlbums=function(t){var e="genre_albums";return e+=s(t,"&"),this.request(e)},r}(H),P=/*#__PURE__*/function(e){function r(){return e.apply(this,arguments)||this}t(r,e);var n=r.prototype;return n.artists=function(t){var e="artists";return e+=s(t,"&"),this.request(e)},n.artist=function(t){var e="artist";return e+=s(t,"&"),this.request(e)},n.genreArtists=function(t){var e="genre_artists";return e+=s(t,"&"),this.request(e)},n.labelArtists=function(t){var e="label_artists";return e+=s(t,"&"),this.request(e)},r}(H),Y=/*#__PURE__*/function(e){function r(){return e.apply(this,arguments)||this}t(r,e);var n=r.prototype;return n.handshake=function(t){var e=this,r=t.auth;t.timestamp||(t.timestamp=Math.floor((new Date).getTime()/1e3)),t.version&&(this.version=t.version),t.user||delete t.timestamp,this.useBearerToken&&delete t.auth;var n=this.url+"/server/json.server.php?action=handshake";return n+=s(t,"&"),this.debug&&C(n,this),u(n,{method:"GET",headers:this.useBearerToken?{Authorization:"Bearer "+r}:{}}).then(function(t){return t.json()}).then(function(t){return t.auth&&(e.sessionKey=t.auth),t})},n.ping=function(t){var e="ping";return e+=s(t,"&"),this.request(e)},n.goodbye=function(t){var e="goodbye";return e+=s(t,"&"),this.request(e)},n.lostPassword=function(t){var e="lost_password";return e+=s(t,"&"),this.request(e)},n.encryptPassword=function(t){var e=r(t.password);return r(t.time+e);function r(t){var e=new B("SHA-256","TEXT",{encoding:"UTF8"});return e.update(t),e.getHash("HEX")}},r}(H),I=/*#__PURE__*/function(e){function r(){return e.apply(this,arguments)||this}t(r,e);var n=r.prototype;return n.bookmark=function(t){var e="bookmark";return e+=s(t,"&"),this.request(e)},n.bookmarks=function(t){var e="bookmarks";return e+=s(t,"&"),this.request(e)},n.getBookmark=function(t){var e="get_bookmark";return e+=s(t,"&"),this.request(e)},n.bookmarkCreate=function(t){var e="bookmark_create";return e+=s(t,"&"),this.request(e)},n.bookmarkEdit=function(t){var e="bookmark_edit";return e+=s(t,"&"),this.request(e)},n.bookmarkDelete=function(t){var e="bookmark_delete";return e+=s(t,"&"),this.request(e)},r}(H),O=/*#__PURE__*/function(e){function r(){return e.apply(this,arguments)||this}t(r,e);var n=r.prototype;return n.catalogs=function(t){var e="catalogs";return e+=s(t,"&"),this.request(e)},n.catalog=function(t){var e="catalog";return e+=s(t,"&"),this.request(e)},n.catalogAction=function(t){var e="catalog_action";return e+=s(t,"&"),this.request(e)},n.catalogFile=function(t){var e="catalog_file";return e+=s(t,"&"),this.request(e)},n.catalogAdd=function(t){var e="catalog_add";return e+=s(t,"&"),this.request(e)},n.catalogDelete=function(t){var e="catalog_delete";return e+=s(t,"&"),this.request(e)},r}(H),j=/*#__PURE__*/function(e){function r(){return e.apply(this,arguments)||this}t(r,e);var n=r.prototype;return n.genres=function(t){var e="genres";return e+=s(t,"&"),this.request(e)},n.genre=function(t){var e="genre";return e+=s(t,"&"),this.request(e)},r}(H),K=/*#__PURE__*/function(e){function r(){return e.apply(this,arguments)||this}t(r,e);var n=r.prototype;return n.labels=function(t){var e="labels";return e+=s(t,"&"),this.request(e)},n.label=function(t){var e="label";return e+=s(t,"&"),this.request(e)},r}(H),N=/*#__PURE__*/function(e){function r(){return e.apply(this,arguments)||this}t(r,e);var n=r.prototype;return n.licenses=function(t){var e="licenses";return e+=s(t,"&"),this.request(e)},n.license=function(t){var e="license";return e+=s(t,"&"),this.request(e)},r}(H),x=/*#__PURE__*/function(e){function r(){return e.apply(this,arguments)||this}t(r,e);var n=r.prototype;return n.liveStreams=function(t){var e="live_streams";return e+=s(t,"&"),this.request(e)},n.liveStream=function(t){var e="live_stream";return e+=s(t,"&"),this.request(e)},n.liveStreamCreate=function(t){var e="live_stream_create";return e+=s(t,"&"),this.request(e)},n.liveStreamEdit=function(t){var e="live_stream_edit";return e+=s(t,"&"),this.request(e)},n.liveStreamDelete=function(t){var e="live_stream_delete";return e+=s(t,"&"),this.request(e)},r}(H),M=/*#__PURE__*/function(e){function r(){return e.apply(this,arguments)||this}t(r,e);var n=r.prototype;return n.playlists=function(t){var e="playlists";return e+=s(t,"&"),this.request(e)},n.smartlists=function(t){var e="playlists";return e+=s(t,"&"),this.request(e).then(function(t){return Array.isArray(t.playlist)&&(t.playlist=t.playlist.filter(function(t){return t.id.toString().startsWith("smart_")})),t})},n.playlist=function(t){var e="playlist";return e+=s(t,"&"),this.request(e)},n.userPlaylists=function(t){var e="user_playlists";return e+=s(t,"&"),this.request(e)},n.userSmartlists=function(t){var e="user_smartlists";return e+=s(t,"&"),this.request(e)},n.playlistCreate=function(t){var e="playlist_create";return e+=s(t,"&"),this.request(e)},n.playlistAdd=function(t){var e="playlist_add";return e+=s(t,"&"),this.request(e)},n.playlistEdit=function(t){var e="playlist_edit";return e+=s(t,"&"),this.request(e)},n.playlistDelete=function(t){var e="playlist_delete";return e+=s(t,"&"),this.request(e)},n.playlistAddSong=function(t){var e="playlist_add_song";return e+=s(t,"&"),this.request(e)},n.playlistRemoveSong=function(t){var e="playlist_remove_song";return e+=s(t,"&"),this.request(e)},n.playlistGenerate=function(t){var e="playlist_generate";return e+=s(t,"&"),this.request(e)},n.playlistHash=function(t){var e="playlist_hash";return e+=s(t,"&"),this.request(e)},r}(H),D=/*#__PURE__*/function(e){function r(){return e.apply(this,arguments)||this}t(r,e);var n=r.prototype;return n.podcasts=function(t){var e="podcasts";return e+=s(t,"&"),this.request(e)},n.podcast=function(t){var e="podcast";return e+=s(t,"&"),this.request(e)},n.podcastCreate=function(t){var e="podcast_create";return e+=s(t,"&"),this.request(e)},n.podcastEdit=function(t){var e="podcast_edit";return e+=s(t,"&"),this.request(e)},n.podcastDelete=function(t){var e="podcast_delete";return e+=s(t,"&"),this.request(e)},n.podcastEpisodes=function(t){var e="podcast_episodes";return e+=s(t,"&"),this.request(e)},n.podcastEpisode=function(t){var e="podcast_episode";return e+=s(t,"&"),this.request(e)},n.podcastEpisodeDelete=function(t){var e="podcast_episode_delete";return e+=s(t,"&"),this.request(e)},n.updatePodcast=function(t){var e="update_podcast";return e+=s(t,"&"),this.request(e)},n.deletedPodcastEpisodes=function(t){var e="deleted_podcast_episodes";return e+=s(t,"&"),this.request(e)},r}(H),X=/*#__PURE__*/function(e){function r(){return e.apply(this,arguments)||this}t(r,e);var n=r.prototype;return n.systemPreferences=function(){return this.request("system_preferences")},n.systemPreference=function(t){var e="system_preference";return e+=s(t,"&"),this.request(e)},n.userPreferences=function(){return this.request("user_preferences")},n.userPreference=function(t){var e="user_preference";return e+=s(t,"&"),this.request(e)},n.preferenceCreate=function(t){var e="preference_create";return e+=s(t,"&"),this.request(e)},n.preferenceEdit=function(t){var e="preference_edit";return e+=s(t,"&"),this.request(e)},n.preferenceDelete=function(t){var e="preference_delete";return e+=s(t,"&"),this.request(e)},r}(H),G=/*#__PURE__*/function(e){function r(){return e.apply(this,arguments)||this}t(r,e);var n=r.prototype;return n.shares=function(t){var e="shares";return e+=s(t,"&"),this.request(e)},n.share=function(t){var e="share";return e+=s(t,"&"),this.request(e)},n.shareCreate=function(t){var e="share_create";return e+=s(t,"&"),this.request(e)},n.shareEdit=function(t){var e="share_edit";return e+=s(t,"&"),this.request(e)},n.shareDelete=function(t){var e="share_delete";return e+=s(t,"&"),this.request(e)},r}(H),z=/*#__PURE__*/function(e){function r(){return e.apply(this,arguments)||this}return t(r,e),r.prototype.last_shouts=function(t){var e="last_shouts";return e+=s(t,"&"),this.request(e)},r}(H),V=/*#__PURE__*/function(e){function r(){return e.apply(this,arguments)||this}t(r,e);var n=r.prototype;return n.songs=function(t){var e="songs";return e+=s(t,"&"),this.request(e)},n.song=function(t){var e="song";return e+=s(t,"&"),this.request(e)},n.artistSongs=function(t){var e="artist_songs";return e+=s(t,"&"),this.request(e)},n.albumSongs=function(t){var e="album_songs";return e+=s(t,"&"),this.request(e)},n.genreSongs=function(t){var e="genre_songs";return e+=s(t,"&"),this.request(e)},n.playlistSongs=function(t){var e="playlist_songs";return e+=s(t,"&"),this.request(e)},n.licenseSongs=function(t){var e="license_songs";return e+=s(t,"&"),this.request(e)},n.songDelete=function(t){var e="song_delete";return e+=s(t,"&"),this.request(e)},n.urlToSong=function(t){var e="url_to_song";return t.url=encodeURIComponent(t.url),e+=s(t,"&"),this.request(e)},n.searchSongs=function(t){var e="search_songs";return e+=s(t,"&"),this.request(e)},n.deletedSongs=function(t){var e="deleted_songs";return e+=s(t,"&"),this.request(e)},r}(H),J=/*#__PURE__*/function(e){function r(){for(var t,r=arguments.length,n=new Array(r),s=0;s<r;s++)n[s]=arguments[s];return(t=e.call.apply(e,[this].concat(n))||this).search=t.advancedSearch,t}t(r,e);var n=r.prototype;return n.systemUpdate=function(){return this.request("system_update")},n.getIndexes=function(t){var e,r="get_indexes";switch(r+=s(t,"&"),t.type){case"song":case"album":case"artist":case"album_artist":case"playlist":case"podcast":case"podcast_episode":case"live_stream":e=this.request(r);break;default:return!1}return e},n.list=function(t){var e="list";return e+=s(t,"&"),this.request(e)},n.index=function(t){var e="index";return e+=s(t,"&"),this.request(e)},n.browse=function(t){var e="browse";return e+=s(t,"&"),this.request(e)},n.getSimilar=function(t){var e,r="get_similar";switch(r+=s(t,"&"),t.type){case"song":case"artist":e=this.request(r);break;default:return!1}return e},n.stats=function(t){var e,r="stats";switch(r+=s(t,"&"),t.type){case"song":case"album":case"artist":case"video":case"playlist":case"podcast":case"podcast_episode":e=this.request(r);break;default:return!1}return e},n.rate=function(t){var e="rate";return e+=s(t,"&"),this.request(e)},n.flag=function(t){var e="flag";return e+=s(t,"&"),this.request(e)},n.recordPlay=function(t){var e="record_play";return e+=s(t,"&"),this.request(e)},n.scrobble=function(t){var e="scrobble";return e+=s(t,"&"),this.request(e)},n.updateFromTags=function(t){var e="update_from_tags";return e+=s(t,"&"),this.request(e)},n.updateArtistInfo=function(t){var e="update_artist_info";return e+=s(t,"&"),this.request(e)},n.updateArt=function(t){var e="update_art";return e+=s(t,"&"),this.request(e)},n.stream=function(t){var e="stream";return e+=s(t,"&"),this.binary(e)},n.download=function(t){var e="download";return e+=s(t,"&"),this.binary(e)},n.getArt=function(t){var e="get_art";return e+=s(t,"&"),this.binary(e)},n.localplay=function(t){var e="localplay";return e+=s(t,"&"),this.request(e)},n.localplaySongs=function(){return this.request("localplay_songs")},n.democratic=function(t){var e="democratic";return e+=s(t,"&"),this.request(e)},n.nowPlaying=function(){return this.request("now_playing")},n.player=function(t){var e="player";return e+=s(t,"&"),this.request(e)},n.advancedSearch=function(t){for(var e,r="advanced_search",n=0;n<t.rules.length;n++){var i=t.rules[n],u=n+1;t["rule_"+u]=i[0],t["rule_"+u+"_operator"]=i[1],t["rule_"+u+"_input"]=i[2],"metadata"===i[0]&&(t["rule_"+u+"_subtype"]=i[3])}switch(delete t.rules,r+=s(t,"&"),t.type){case"song":case"album":case"artist":case"album_artist":case"song_artist":case"label":case"playlist":case"podcast":case"podcast_episode":case"genre":case"user":case"video":e=this.request(r);break;default:return!1}return e},n.searchGroup=function(t){for(var e="search_group",r=0;r<t.rules.length;r++){var n=t.rules[r],i=r+1;t["rule_"+i]=n[0],t["rule_"+i+"_operator"]=n[1],t["rule_"+i+"_input"]=n[2],"metadata"===n[0]&&(t["rule_"+i+"_subtype"]=n[3])}return delete t.rules,e+=s(t,"&"),this.request(e)},r}(H),W=/*#__PURE__*/function(e){function r(){return e.apply(this,arguments)||this}t(r,e);var n=r.prototype;return n.users=function(){return this.request("users")},n.user=function(t){var e="user";return e+=s(t,"&"),this.request(e)},n.userCreate=function(t){var e="user_create";return e+=s(t,"&"),this.request(e)},n.register=function(t){var e="register";return e+=s(t,"&"),this.request(e)},n.userUpdate=function(t){var e="user_update";return e+=s(t,"&"),this.request(e)},n.userEdit=function(t){var e="user_edit";return e+=s(t,"&"),this.request(e)},n.userDelete=function(t){var e="user_delete";return e+=s(t,"&"),this.request(e)},n.followers=function(t){var e="followers";return e+=s(t,"&"),this.request(e)},n.following=function(t){var e="following";return e+=s(t,"&"),this.request(e)},n.toggleFollow=function(t){var e="toggle_follow";return e+=s(t,"&"),this.request(e)},n.timeline=function(t){var e="timeline";return e+=s(t,"&"),this.request(e)},n.friendsTimeline=function(t){var e="friends_timeline";return e+=s(t,"&"),this.request(e)},r}(H),Z=/*#__PURE__*/function(e){function r(){return e.apply(this,arguments)||this}t(r,e);var n=r.prototype;return n.videos=function(t){var e="videos";return e+=s(t,"&"),this.request(e)},n.video=function(t){var e="video";return e+=s(t,"&"),this.request(e)},n.deletedVideos=function(t){var e="deleted_videos";return e+=s(t,"&"),this.request(e)},r}(H),$=/*#__PURE__*/function(e){function r(){return e.apply(this,arguments)||this}return t(r,e),r}(H);L=$,[F,P,Y,I,O,j,K,N,x,M,D,X,G,z,V,J,W,Z].forEach(function(t){Object.getOwnPropertyNames(t.prototype).forEach(function(e){Object.defineProperty(L.prototype,e,Object.getOwnPropertyDescriptor(t.prototype,e))})}),module.exports=$;
1
+ const t={albums(t){return this.call("albums",t)},album(t){return this.call("album",t)},artistAlbums(t){return this.call("artist_albums",t)},genreAlbums(t){return this.call("genre_albums",t)}},e={artists(t){return this.call("artists",t)},artist(t){return this.call("artist",t)},genreArtists(t){return this.call("genre_artists",t)},labelArtists(t){return this.call("label_artists",t)}};var r=Object.prototype.hasOwnProperty;function s(t){try{return encodeURIComponent(t)}catch(t){return null}}var n=function(t,e){e=e||"";var n,i,l=[];for(i in"string"!=typeof e&&(e="?"),t)if(r.call(t,i)){if((n=t[i])||null!=n&&!isNaN(n)||(n=""),i=s(i),n=s(n),null===i||null===n)continue;l.push(i+"="+n)}return l.length?e+l.join("&"):""},i={__proto__:null,default:function(t,e){return e=e||{},new Promise(function(r,s){var n=new XMLHttpRequest,i=[],l=[],a={},o=function(){return{ok:2==(n.status/100|0),statusText:n.statusText,status:n.status,url:n.responseURL,text:function(){return Promise.resolve(n.responseText)},json:function(){return Promise.resolve(n.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([n.response]))},clone:o,headers:{keys:function(){return i},entries:function(){return l},get:function(t){return a[t.toLowerCase()]},has:function(t){return t.toLowerCase()in a}}}};for(var u in n.open(e.method||"get",t,!0),n.onload=function(){n.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,function(t,e,r){i.push(e=e.toLowerCase()),l.push([e,r]),a[e]=a[e]?a[e]+","+r:r}),r(o())},n.onerror=s,n.withCredentials="include"==e.credentials,e.headers)n.setRequestHeader(u,e.headers[u]);n.send(e.body||null)})}},l=self.fetch||(self.fetch=i.default||i);const a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o="ARRAYBUFFER not supported by this environment",u="UINT8ARRAY not supported by this environment";function h(t,e,r,s){let n,i,l;const a=e||[0],o=(r=r||0)>>>3,u=-1===s?3:0;for(n=0;n<t.length;n+=1)l=n+o,i=l>>>2,a.length<=i&&a.push(0),a[i]|=t[n]<<8*(u+s*(l%4));return{value:a,binLen:8*t.length+r}}function c(t,e,r){switch(e){case"UTF8":case"UTF16BE":case"UTF16LE":break;default:throw new Error("encoding must be UTF8, UTF16BE, or UTF16LE")}switch(t){case"HEX":return function(t,e,s){return function(t,e,r,s){let n,i,l,a;if(0!=t.length%2)throw new Error("String of HEX type must be in byte increments");const o=e||[0],u=(r=r||0)>>>3,h=-1===s?3:0;for(n=0;n<t.length;n+=2){if(i=parseInt(t.substr(n,2),16),isNaN(i))throw new Error("String of HEX type contains invalid characters");for(a=(n>>>1)+u,l=a>>>2;o.length<=l;)o.push(0);o[l]|=i<<8*(h+s*(a%4))}return{value:o,binLen:4*t.length+r}}(t,e,s,r)};case"TEXT":return function(t,s,n){return function(t,e,r,s,n){let i,l,a,o,u,h,c,d,p=0;const f=r||[0],g=(s=s||0)>>>3;if("UTF8"===e)for(c=-1===n?3:0,a=0;a<t.length;a+=1)for(i=t.charCodeAt(a),l=[],128>i?l.push(i):2048>i?(l.push(192|i>>>6),l.push(128|63&i)):55296>i||57344<=i?l.push(224|i>>>12,128|i>>>6&63,128|63&i):(a+=1,i=65536+((1023&i)<<10|1023&t.charCodeAt(a)),l.push(240|i>>>18,128|i>>>12&63,128|i>>>6&63,128|63&i)),o=0;o<l.length;o+=1){for(h=p+g,u=h>>>2;f.length<=u;)f.push(0);f[u]|=l[o]<<8*(c+n*(h%4)),p+=1}else for(c=-1===n?2:0,d="UTF16LE"===e&&1!==n||"UTF16LE"!==e&&1===n,a=0;a<t.length;a+=1){for(i=t.charCodeAt(a),!0===d&&(o=255&i,i=o<<8|i>>>8),h=p+g,u=h>>>2;f.length<=u;)f.push(0);f[u]|=i<<8*(c+n*(h%4)),p+=2}return{value:f,binLen:8*p+s}}(t,e,s,n,r)};case"B64":return function(t,e,s){return function(t,e,r,s){let n,i,l,o,u,h,c,d=0;const p=e||[0],f=(r=r||0)>>>3,g=-1===s?3:0,m=t.indexOf("=");if(-1===t.search(/^[a-zA-Z0-9=+/]+$/))throw new Error("Invalid character in base-64 string");if(t=t.replace(/=/g,""),-1!==m&&m<t.length)throw new Error("Invalid '=' found in base-64 string");for(i=0;i<t.length;i+=4){for(u=t.substr(i,4),o=0,l=0;l<u.length;l+=1)n=a.indexOf(u.charAt(l)),o|=n<<18-6*l;for(l=0;l<u.length-1;l+=1){for(c=d+f,h=c>>>2;p.length<=h;)p.push(0);p[h]|=(o>>>16-8*l&255)<<8*(g+s*(c%4)),d+=1}}return{value:p,binLen:8*d+r}}(t,e,s,r)};case"BYTES":return function(t,e,s){return function(t,e,r,s){let n,i,l,a;const o=e||[0],u=(r=r||0)>>>3,h=-1===s?3:0;for(i=0;i<t.length;i+=1)n=t.charCodeAt(i),a=i+u,l=a>>>2,o.length<=l&&o.push(0),o[l]|=n<<8*(h+s*(a%4));return{value:o,binLen:8*t.length+r}}(t,e,s,r)};case"ARRAYBUFFER":try{new ArrayBuffer(0)}catch(t){throw new Error(o)}return function(t,e,s){return function(t,e,r,s){return h(new Uint8Array(t),e,r,s)}(t,e,s,r)};case"UINT8ARRAY":try{new Uint8Array(0)}catch(t){throw new Error(u)}return function(t,e,s){return h(t,e,s,r)};default:throw new Error("format must be HEX, TEXT, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY")}}function d(t,e,r,s){switch(t){case"HEX":return function(t){return function(t,e,r,s){const n="0123456789abcdef";let i,l,a="";const o=e/8,u=-1===r?3:0;for(i=0;i<o;i+=1)l=t[i>>>2]>>>8*(u+r*(i%4)),a+=n.charAt(l>>>4&15)+n.charAt(15&l);return s.outputUpper?a.toUpperCase():a}(t,e,r,s)};case"B64":return function(t){return function(t,e,r,s){let n,i,l,o,u,h="";const c=e/8,d=-1===r?3:0;for(n=0;n<c;n+=3)for(o=n+1<c?t[n+1>>>2]:0,u=n+2<c?t[n+2>>>2]:0,l=(t[n>>>2]>>>8*(d+r*(n%4))&255)<<16|(o>>>8*(d+r*((n+1)%4))&255)<<8|u>>>8*(d+r*((n+2)%4))&255,i=0;i<4;i+=1)h+=8*n+6*i<=e?a.charAt(l>>>6*(3-i)&63):s.b64Pad;return h}(t,e,r,s)};case"BYTES":return function(t){return function(t,e,r){let s,n,i="";const l=e/8,a=-1===r?3:0;for(s=0;s<l;s+=1)n=t[s>>>2]>>>8*(a+r*(s%4))&255,i+=String.fromCharCode(n);return i}(t,e,r)};case"ARRAYBUFFER":try{new ArrayBuffer(0)}catch(t){throw new Error(o)}return function(t){return function(t,e,r){let s;const n=e/8,i=new ArrayBuffer(n),l=new Uint8Array(i),a=-1===r?3:0;for(s=0;s<n;s+=1)l[s]=t[s>>>2]>>>8*(a+r*(s%4))&255;return i}(t,e,r)};case"UINT8ARRAY":try{new Uint8Array(0)}catch(t){throw new Error(u)}return function(t){return function(t,e,r){let s;const n=e/8,i=-1===r?3:0,l=new Uint8Array(n);for(s=0;s<n;s+=1)l[s]=t[s>>>2]>>>8*(i+r*(s%4))&255;return l}(t,e,r)};default:throw new Error("format must be HEX, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY")}}const p=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],f=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428],g=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225];function m(t){const e={outputUpper:!1,b64Pad:"=",outputLen:-1},r=t||{},s="Output length must be a multiple of 8";if(e.outputUpper=r.outputUpper||!1,r.b64Pad&&(e.b64Pad=r.b64Pad),r.outputLen){if(r.outputLen%8!=0)throw new Error(s);e.outputLen=r.outputLen}else if(r.shakeLen){if(r.shakeLen%8!=0)throw new Error(s);e.outputLen=r.shakeLen}if("boolean"!=typeof e.outputUpper)throw new Error("Invalid outputUpper formatting option");if("string"!=typeof e.b64Pad)throw new Error("Invalid b64Pad formatting option");return e}class _{constructor(t,e,r){const s=r||{};if(this.t=e,this.i=s.encoding||"UTF8",this.numRounds=s.numRounds||1,isNaN(this.numRounds)||this.numRounds!==parseInt(this.numRounds,10)||1>this.numRounds)throw new Error("numRounds must a integer >= 1");this.o=t,this.h=[],this.u=0,this.l=!1,this.A=0,this.p=!1,this.U=[],this.R=[]}update(t){let e,r=0;const s=this.T>>>5,n=this.F(t,this.h,this.u),i=n.binLen,l=n.value,a=i>>>5;for(e=0;e<a;e+=s)r+this.T<=i&&(this.m=this.g(l.slice(e,e+s),this.m),r+=this.T);return this.A+=r,this.h=l.slice(r>>>5),this.u=i%this.T,this.l=!0,this}getHash(t,e){let r,s,n=this.H;const i=m(e);if(this.B){if(-1===i.outputLen)throw new Error("Output length must be specified in options");n=i.outputLen}const l=d(t,n,this.v,i);if(this.p&&this.C)return l(this.C(i));for(s=this.Y(this.h.slice(),this.u,this.A,this.S(this.m),n),r=1;r<this.numRounds;r+=1)this.B&&n%32!=0&&(s[s.length-1]&=16777215>>>24-n%32),s=this.Y(s,n,0,this.I(this.o),n);return l(s)}setHMACKey(t,e,r){if(!this.L)throw new Error("Variant does not support HMAC");if(this.l)throw new Error("Cannot set MAC key after calling update");const s=c(e,(r||{}).encoding||"UTF8",this.v);this.M(s(t))}M(t){const e=this.T>>>3,r=e/4-1;let s;if(1!==this.numRounds)throw new Error("Cannot set numRounds with MAC");if(this.p)throw new Error("MAC key already set");for(e<t.binLen/8&&(t.value=this.Y(t.value,t.binLen,0,this.I(this.o),this.H));t.value.length<=r;)t.value.push(0);for(s=0;s<=r;s+=1)this.U[s]=909522486^t.value[s],this.R[s]=1549556828^t.value[s];this.m=this.g(this.U,this.m),this.A=this.T,this.p=!0}getHMAC(t,e){const r=m(e);return d(t,this.H,this.v,r)(this.N())}N(){let t;if(!this.p)throw new Error("Cannot call getHMAC without first setting MAC key");const e=this.Y(this.h.slice(),this.u,this.A,this.S(this.m),this.H);return t=this.g(this.R,this.I(this.o)),t=this.Y(e,this.H,this.T,t,this.H),t}}function y(t,e){return t>>>e|t<<32-e}function b(t,e){return t>>>e}function w(t,e,r){return t&e^~t&r}function v(t,e,r){return t&e^t&r^e&r}function A(t){return y(t,2)^y(t,13)^y(t,22)}function E(t,e){const r=(65535&t)+(65535&e);return(65535&(t>>>16)+(e>>>16)+(r>>>16))<<16|65535&r}function T(t,e,r,s){const n=(65535&t)+(65535&e)+(65535&r)+(65535&s);return(65535&(t>>>16)+(e>>>16)+(r>>>16)+(s>>>16)+(n>>>16))<<16|65535&n}function R(t,e,r,s,n){const i=(65535&t)+(65535&e)+(65535&r)+(65535&s)+(65535&n);return(65535&(t>>>16)+(e>>>16)+(r>>>16)+(s>>>16)+(n>>>16)+(i>>>16))<<16|65535&i}function U(t){return y(t,7)^y(t,18)^b(t,3)}function k(t){return y(t,6)^y(t,11)^y(t,25)}function S(t){let e;return e="SHA-224"==t?f.slice():g.slice(),e}function L(t,e){let r,s,n,i,l,a,o,u,h,c,d;const f=[];for(r=e[0],s=e[1],n=e[2],i=e[3],l=e[4],a=e[5],o=e[6],u=e[7],d=0;d<64;d+=1)f[d]=d<16?t[d]:T(y(g=f[d-2],17)^y(g,19)^b(g,10),f[d-7],U(f[d-15]),f[d-16]),h=R(u,k(l),w(l,a,o),p[d],f[d]),c=E(A(r),v(r,s,n)),u=o,o=a,a=l,l=E(i,h),i=n,n=s,s=r,r=E(h,c);var g;return e[0]=E(r,e[0]),e[1]=E(s,e[1]),e[2]=E(n,e[2]),e[3]=E(i,e[3]),e[4]=E(l,e[4]),e[5]=E(a,e[5]),e[6]=E(o,e[6]),e[7]=E(u,e[7]),e}class B extends _{constructor(t,e,r){if("SHA-224"!==t&&"SHA-256"!==t)throw new Error("Chosen SHA variant is not supported");super(t,e,r);const s=r||{};this.C=this.N,this.L=!0,this.v=-1,this.F=c(this.t,this.i,this.v),this.g=L,this.S=function(t){return t.slice()},this.I=S,this.Y=function(e,r,s,n){return function(t,e,r,s,n){let i,l;const a=15+(e+65>>>9<<4),o=e+r;for(;t.length<=a;)t.push(0);for(t[e>>>5]|=128<<24-e%32,t[a]=4294967295&o,t[a-1]=o/4294967296|0,i=0;i<t.length;i+=16)s=L(t.slice(i,i+16),s);return l="SHA-224"===n?[s[0],s[1],s[2],s[3],s[4],s[5],s[6]]:s,l}(e,r,s,n,t)},this.m=S(t),this.T=512,this.H="SHA-224"===t?224:256,this.B=!1,s.hmacKey&&this.M(function(t,e,r,s){const n="hmacKey must include a value and format";if(!e)throw new Error(n);if(void 0===e.value||!e.format)throw new Error(n);return c(e.format,e.encoding||"UTF8",r)(e.value)}(0,s.hmacKey,this.v))}}function C(t,e){let r="javascript-ampache query URL";e.useBearerToken&&(r="(Using Bearer token, auth added for debugging) - "+r,t+="&auth="+e.sessionKey),console.debug(r+" %c"+t,"color: black; font-style: italic; background-color: orange;padding: 2px")}const H={handshake(t){let e=t.auth;t.timestamp||(t.timestamp=Math.floor((new Date).getTime()/1e3)),t.version&&(this.version=t.version),t.user||delete t.timestamp,this.useBearerToken&&delete t.auth;let r=this.url+"/server/json.server.php?action=handshake";return r+=n(t,"&"),this.debug&&C(r,this),l(r,{method:"GET",headers:this.useBearerToken?{Authorization:"Bearer "+e}:{}}).then(t=>t.json()).then(t=>(t.auth&&(this.sessionKey=t.auth),t))},ping(t){return this.call("ping",t)},goodbye(t){return this.call("goodbye",t)},lostPassword(t){return this.call("lost_password",t)},encryptPassword:t=>function(t,e){let r=s(t);return s(e+r);function s(t){let e=new B("SHA-256","TEXT",{encoding:"UTF8"});return e.update(t),e.getHash("HEX")}}(t.password,t.time)},F={bookmark(t){return this.call("bookmark",t)},bookmarks(t){return this.call("bookmarks",t)},getBookmark(t){return this.call("get_bookmark",t)},bookmarkCreate(t){return this.call("bookmark_create",t)},bookmarkEdit(t){return this.call("bookmark_edit",t)},bookmarkDelete(t){return this.call("bookmark_delete",t)}},P={catalogs(t){return this.call("catalogs",t)},catalog(t){return this.call("catalog",t)},catalogAction(t){return this.call("catalog_action",t)},catalogFile(t){return this.call("catalog_file",t)},catalogFolder(t){return this.call("catalog_folder",t)},catalogAdd(t){return this.call("catalog_add",t)},catalogDelete(t){return this.call("catalog_delete",t)}},x={genres(t){return this.call("genres",t)},genre(t){return this.call("genre",t)}},Y={labels(t){return this.call("labels",t)},label(t){return this.call("label",t)}},I={licenses(t){return this.call("licenses",t)},license(t){return this.call("license",t)}},N={liveStreams(t){return this.call("live_streams",t)},liveStream(t){return this.call("live_stream",t)},liveStreamCreate(t){return this.call("live_stream_create",t)},liveStreamEdit(t){return this.call("live_stream_edit",t)},liveStreamDelete(t){return this.call("live_stream_delete",t)}},M={playlists(t){return this.call("playlists",t)},smartlists(t){return this.call("smartlists",t)},playlist(t){return this.call("playlist",t)},userPlaylists(t){return this.call("user_playlists",t)},userSmartlists(t){return this.call("user_smartlists",t)},playlistCreate(t){return this.call("playlist_create",t)},playlistAdd(t){return this.call("playlist_add",t)},playlistEdit(t){return this.call("playlist_edit",t)},playlistDelete(t){return this.call("playlist_delete",t)},playlistAddSong(t){return this.call("playlist_add_song",t)},playlistRemoveSong(t){return this.call("playlist_remove_song",t)},playlistGenerate(t){return this.call("playlist_generate",t)},playlistHash(t){return this.call("playlist_hash",t)}},K={podcasts(t){return this.call("podcasts",t)},podcast(t){return this.call("podcast",t)},podcastCreate(t){return this.call("podcast_create",t)},podcastEdit(t){return this.call("podcast_edit",t)},podcastDelete(t){return this.call("podcast_delete",t)},podcastEpisodes(t){return this.call("podcast_episodes",t)},podcastEpisode(t){return this.call("podcast_episode",t)},podcastEpisodeDelete(t){return this.call("podcast_episode_delete",t)},updatePodcast(t){return this.call("update_podcast",t)},deletedPodcastEpisodes(t){return this.call("deleted_podcast_episodes",t)}},j={systemPreferences(){return this.call("system_preferences")},systemPreference(t){return this.call("system_preference",t)},userPreferences(){return this.call("user_preferences")},userPreference(t){return this.call("user_preference",t)},preferenceCreate(t){return this.call("preference_create",t)},preferenceEdit(t){return this.call("preference_edit",t)},preferenceDelete(t){return this.call("preference_delete",t)}},q={shares(t){return this.call("shares",t)},share(t){return this.call("share",t)},shareCreate(t){return this.call("share_create",t)},shareEdit(t){return this.call("share_edit",t)},shareDelete(t){return this.call("share_delete",t)}},D={last_shouts(t){return this.call("last_shouts",t)}},X={songs(t){return this.call("songs",t)},song(t){return this.call("song",t)},artistSongs(t){return this.call("artist_songs",t)},albumSongs(t){return this.call("album_songs",t)},genreSongs(t){return this.call("genre_songs",t)},playlistSongs(t){return this.call("playlist_songs",t)},licenseSongs(t){return this.call("license_songs",t)},songDelete(t){return this.call("song_delete",t)},songTags(t){return this.call("song_tags",t)},getLyrics(t){return this.call("get_lyrics",t)},urlToSong(t){let e="url_to_song";const r={...t};return null!=r.url&&(r.url=encodeURIComponent(r.url)),e+=n(r,"&"),this.request(e)},searchSongs(t){return this.call("search_songs",t)},deletedSongs(t){return this.call("deleted_songs",t)}},O=new Set(["song","album","artist","album_artist","song_artist","playlist","podcast","podcast_episode","live_stream","catalog"]),G=new Set(["song","artist"]),z=new Set(["song","album","artist","video","playlist","podcast","podcast_episode"]),V=new Set(["song","album","artist","album_artist","song_artist","label","playlist","podcast","podcast_episode","genre","user","video"]),J={systemUpdate(){return this.call("system_update")},getIndexes(t){if(!O.has(t.type))return!1;const e="get_indexes"+n(t,"&");return this.request(e)},list(t){return this.call("list",t)},index(t){return this.call("index",t)},browse(t){return this.call("browse",t)},getSimilar(t){if(!G.has(t.type))return!1;const e="get_similar"+n(t,"&");return this.request(e)},stats(t){if(!z.has(t.type))return!1;const e="stats"+n(t,"&");return this.request(e)},rate(t){return this.call("rate",t)},flag(t){return this.call("flag",t)},recordPlay(t){return this.call("record_play",t)},scrobble(t){return this.call("scrobble",t)},updateFromTags(t){return this.call("update_from_tags",t)},updateArtistInfo(t){return this.call("update_artist_info",t)},updateArt(t){return this.call("update_art",t)},stream(t){const e="stream"+(null!=t?n(t,"&"):"");return this.binary(e)},download(t){const e="download"+(null!=t?n(t,"&"):"");return this.binary(e)},getArt(t){const e="get_art"+(null!=t?n(t,"&"):"");return this.binary(e)},localplay(t){return this.call("localplay",t)},localplaySongs(){return this.call("localplay_songs")},democratic(t){return this.call("democratic",t)},nowPlaying(){return this.call("now_playing")},player(t){return this.call("player",t)},getExternalMetadata(t){return this.call("get_external_metadata",t)},searchRules(t){return this.call("search_rules",t)},advancedSearch(t){for(let e=0;e<t.rules.length;e++){const r=t.rules[e],s=e+1;t["rule_"+s]=r[0],t["rule_"+s+"_operator"]=r[1],t["rule_"+s+"_input"]=r[2],"metadata"===r[0]&&(t["rule_"+s+"_subtype"]=r[3])}if(delete t.rules,!V.has(t.type))return!1;const e="advanced_search"+n(t,"&");return this.request(e)},search(t){return this.advancedSearch(t)},searchGroup(t){for(let e=0;e<t.rules.length;e++){const r=t.rules[e],s=e+1;t["rule_"+s]=r[0],t["rule_"+s+"_operator"]=r[1],t["rule_"+s+"_input"]=r[2],"metadata"===r[0]&&(t["rule_"+s+"_subtype"]=r[3])}delete t.rules;const e="search_group"+n(t,"&");return this.request(e)}},Z={users(){return this.call("users")},user(t){return this.call("user",t)},userCreate(t){return this.call("user_create",t)},register(t){return this.call("register",t)},userUpdate(t){return this.call("user_update",t)},userEdit(t){return this.call("user_edit",t)},userDelete(t){return this.call("user_delete",t)},followers(t){return this.call("followers",t)},following(t){return this.call("following",t)},toggleFollow(t){return this.call("toggle_follow",t)},timeline(t){return this.call("timeline",t)},friendsTimeline(t){return this.call("friends_timeline",t)}},$={videos(t){return this.call("videos",t)},video(t){return this.call("video",t)},deletedVideos(t){return this.call("deleted_videos",t)}};class Q{constructor(t){this.sessionKey=t.sessionKey||null,this.url=t.url,this.version="6.6.8",this.useBearerToken=t.useBearerToken||!1,this.debug=t.debug||!1}call(t,e){const r=t+(null!=e?n(e,"&"):"");return this.request(r)}_buildURL(t){let e=this.url+"/server/json.server.php?action="+t+"&version="+this.version;return this.useBearerToken||(e+="&auth="+this.sessionKey),this.debug&&C(e,this),e}request(t){const e=this._buildURL(t);return l(e,{method:"GET",headers:this.useBearerToken?{Authorization:"Bearer "+this.sessionKey}:{}}).then(function(t){try{function e(){const e=new Error(t.statusText);throw e.status=t.status,e.body=r,e}if(t.ok)return Promise.resolve(t.json());let r=t.statusText;const s=t.headers.get("content-type"),n=function(t,e){try{var r=t()}catch(t){return}return r&&r.then?r.then(void 0,function(){}):r}(function(){return Promise.resolve(s&&s.includes("application/json")?t.json():t.text()).then(function(t){r=t})});return Promise.resolve(n&&n.then?n.then(e):e())}catch(i){return Promise.reject(i)}})}binary(t){const e=this._buildURL(t);return l(e,{method:"GET",headers:this.useBearerToken?{Authorization:"Bearer "+this.sessionKey}:{}}).then(t=>t.blob())}setSessionKey(t){this.sessionKey=t}rawURL(t,e){const r=t+(null!=e?n(e,"&"):"");return this._buildURL(r)}}class W extends Q{}Object.assign(W.prototype,t,e,H,F,P,x,Y,I,N,M,K,j,q,D,X,J,Z,$),module.exports=W;
2
2
  //# sourceMappingURL=index.js.map