define(["exports","./events.js","./../common/servicelocator.js","./../common/querystring.js"],function(_exports,_events,_servicelocator,_querystring){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;function isLocalId(str){return str&&str.startsWith("local")}function isNotLocalId(id){return!isLocalId(id)}function replaceAll(originalString,strReplace,strWith){strReplace=new RegExp(strReplace,"ig");return originalString.replace(strReplace,strWith)}function getFetchPromise(instance,request,signal){var err,fetchRequest,boundAbort,abortController;return signal&&signal.aborted?Promise.reject(((err=new Error("AbortError")).name="AbortError",err)):(err=request.headers||{},"json"===request.dataType&&(err.accept="application/json"),fetchRequest={headers:err,method:request.type,credentials:"same-origin"},request.timeout&&(boundAbort=(abortController=new AbortController).abort.bind(abortController),signal&&signal.addEventListener("abort",boundAbort),setTimeout(boundAbort,request.timeout),signal=abortController.signal),signal&&(fetchRequest.signal=signal),boundAbort=request.contentType,request.data&&("string"==typeof request.data?fetchRequest.body=request.data:(fetchRequest.body=_querystring.default.paramsToString(request.data),boundAbort=boundAbort||"application/x-www-form-urlencoded; charset=UTF-8")),abortController=request.url,"application/json"===boundAbort&&(boundAbort="text/plain",abortController=abortController+(abortController.includes("?")?"&":"?")+"reqformat=json"),boundAbort&&(err["Content-Type"]=boundAbort),fetch(abortController,fetchRequest))}function _onNetworkChanged(instance,resetAddress){resetAddress&&(instance.connected=!1,(resetAddress=getAddresses(instance.serverInfo())).length)&&(instance._serverAddress=resetAddress[0].url),instance._endPointInfo=null}function getAddresses(serverInfo){var address,addresses=[],addressesStrings=[];return!serverInfo.ManualAddress||!(address=serverInfo.ManualAddress).includes("://127.0.0.1")&&!address.toLowerCase().includes("://localhost")||addressesStrings.includes(serverInfo.ManualAddress.toLowerCase())||(addresses.push({url:serverInfo.ManualAddress}),addressesStrings.push(addresses[addresses.length-1].url.toLowerCase())),serverInfo.LocalAddress&&!addressesStrings.includes(serverInfo.LocalAddress.toLowerCase())&&(addresses.push({url:serverInfo.LocalAddress}),addressesStrings.push(addresses[addresses.length-1].url.toLowerCase())),serverInfo.ManualAddress&&!addressesStrings.includes(serverInfo.ManualAddress.toLowerCase())&&(addresses.push({url:serverInfo.ManualAddress}),addressesStrings.push(addresses[addresses.length-1].url.toLowerCase())),serverInfo.RemoteAddress&&!addressesStrings.includes(serverInfo.RemoteAddress.toLowerCase())&&(addresses.push({url:serverInfo.RemoteAddress}),addressesStrings.push(addresses[addresses.length-1].url.toLowerCase())),console.log("getAddresses: ".concat(addressesStrings.join("|"))),addresses}function setTimeoutPromise(timeout){return new Promise(function(resolve){setTimeout(resolve,timeout)})}function tryReconnectInternal(instance,signal){var addresses=getAddresses(instance.serverInfo());if(!addresses.length)return Promise.reject();if(1===addresses.length)return Promise.resolve(addresses[0].url);for(var abortController=new AbortController,boundAbort=abortController.abort.bind(abortController),promises=(signal&&signal.addEventListener("abort",boundAbort),signal=abortController.signal,[]),i=0,length=addresses.length;iquery.Limit&&(users.length=query.Limit),{Items:users,TotalRecordCount:totalRecordCount}})}},{key:"getPublicUsers",value:function(){return this.getPublicUsersQueryResult({}).then(function(result){return result.Items})}},{key:"getUsersQueryResult",value:function(query,signal){return this.getJSON(this.getUrl("Users/Query",query),signal).then(function(result){return setUsersProperties(result.Items),result})}},{key:"getUsers",value:function(query,signal){return this.getUsersQueryResult(query,signal).then(function(result){return result.Items})}},{key:"getUserPrefixes",value:function(query,signal){return this.getJSON(this.getUrl("Users/Prefixes",query),signal)}},{key:"getApiKeys",value:function(query,signal){var instance=this;return this.getJSON(this.getUrl("Auth/Keys",query),signal).then(function(result){return function(instance,response){for(var serverId=instance.serverId(),i=0,length=response.Items.length;iquery.Limit&&(trailers.length=query.Limit),Promise.resolve({Items:trailers,TotalRecordCount:localTrailers})})}},{key:"getGameSystems",value:function(){var options={},userId=this.getCurrentUserId(),userId=(userId&&(options.userId=userId),this.getUrl("Games/SystemSummaries",options));return this.getJSON(userId)}},{key:"getAdditionalVideoParts",value:function(userId,itemId){var options;if(itemId)return isLocalId(itemId)?Promise.resolve([]):(options={},userId&&(options.userId=userId),userId=this.getUrl("Videos/".concat(itemId,"/AdditionalParts"),options),this.getJSON(userId));throw new Error("null itemId")}},{key:"getThemeMedia",value:function(itemId,options){itemId=this.getUrl("Items/".concat(itemId,"/ThemeMedia"),options);return this.getJSON(itemId)}},{key:"getAudioStreamUrl",value:function(_ref6,_ref7,directPlayContainers,maxBitrate,maxAudioSampleRate,maxAudioBitDepth,startPosition,enableRemoteMedia){var _ref6=_ref6.Id,Container=_ref7.Container,Protocol=_ref7.Protocol,_ref7=_ref7.AudioCodec,_ref6="Audio/".concat(_ref6,"/universal");return startingPlaySession++,this.getUrl(_ref6,{UserId:this.getCurrentUserId(),DeviceId:this.deviceId(),MaxStreamingBitrate:maxBitrate,Container:directPlayContainers,TranscodingContainer:Container||null,TranscodingProtocol:Protocol||null,AudioCodec:_ref7,MaxAudioSampleRate:maxAudioSampleRate,MaxAudioBitDepth:maxAudioBitDepth,api_key:this.accessToken(),PlaySessionId:startingPlaySession,StartTimeTicks:startPosition||0,EnableRedirection:!0,EnableRemoteMedia:enableRemoteMedia})}},{key:"getAudioStreamUrls",value:function(items,transcodingProfile,directPlayContainers,maxBitrate,maxAudioSampleRate,maxAudioBitDepth,startPosition,enableRemoteMedia){for(var streamUrls=[],i=0,length=items.length;i=infos.length?Promise.resolve():(info=infos[index],console.log("sending wakeonlan to ".concat(info.MacAddress)),_servicelocator.wakeOnLan.send(info).then(goNext,goNext));function goNext(){return sendNextWakeOnLan(infos,index+1)}}(getCachedWakeOnLanInfo(this),0)}},{key:"getAddToPlaylistInfo",value:function(userId,id,addIds){return this.isMinServerVersion("4.8.0.30")?(id=this.getUrl("Playlists/"+id+"/AddToPlaylistInfo",{Ids:addIds,userId:userId}),this.getJSON(id)):Promise.resolve({ContainsDuplicates:!1,ItemCount:addIds.length})}},{key:"addToList",value:function(userId,type,id,addIds,skipDuplicates){id=this.getUrl(("BoxSet"===type||"Collection"===type?"Collections":"Playlists")+"/"+id+"/Items",{Ids:addIds,userId:userId,SkipDuplicates:"Playlist"===type?skipDuplicates:null}),userId="Playlist"===type&&this.isMinServerVersion("4.8.0.30")?"json":null;return this.ajax({type:"POST",url:id,dataType:userId}).then(function(result){return null==(result=result||{}).ItemAddedCount&&(result.ItemAddedCount=addIds.length),Promise.resolve(result)})}},{key:"createList",value:function(userId,type,name,addIds){type=this.getUrl("BoxSet"===type||"Collection"===type?"Collections":"Playlists",{Name:name,Ids:addIds,userId:userId});return this.ajax({type:"POST",url:type,dataType:"json"}).then(function(result){return null==(result=result||{}).ItemAddedCount&&(result.ItemAddedCount=(addIds||[]).length),Promise.resolve(result)})}},{key:"setSystemInfo",value:function(_ref8){_ref8=_ref8.Version;this._serverVersion=_ref8}},{key:"serverVersion",value:function(){return this._serverVersion}},{key:"isMinServerVersion",value:function(version){var serverVersion=this.serverVersion();return!!serverVersion&&0<=function(a,b){a=a.split("."),b=b.split(".");for(var i=0,length=Math.max(a.length,b.length);i