define(["exports","./events.js","./../common/servicelocator.js","./../common/querystring.js","./../common/qualitydetection.js"],function(_exports,_events,_servicelocator,_querystring,_qualitydetection){var globalize,userSettings;function loadGlobalize(){return globalize?Promise.resolve(globalize):Emby.importModule("./modules/common/globalize.js").then(function(globalizeModule){return globalize=globalizeModule})}function loadUserSettings(){return userSettings?Promise.resolve(userSettings):Emby.importModule("./modules/common/usersettings/usersettings.js").then(function(userSettingsModule){return userSettings=userSettingsModule})}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,timeoutSignal;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&&(timeoutSignal=AbortSignal.timeout(request.timeout),signal=signal?AbortSignal.any([signal,timeoutSignal]):timeoutSignal),signal&&(fetchRequest.signal=signal),timeoutSignal=request.contentType,request.data&&("string"==typeof request.data?fetchRequest.body=request.data:(fetchRequest.body=_querystring.default.paramsToString(request.data),timeoutSignal=timeoutSignal||"application/x-www-form-urlencoded; charset=UTF-8")),signal=request.url,"application/json"===timeoutSignal&&(timeoutSignal="text/plain",signal=signal+(signal.includes("?")?"&":"?")+"reqformat=json"),timeoutSignal&&(err["Content-Type"]=timeoutSignal),fetch(signal,fetchRequest))}function setServerAddress(instance,address){instance._serverAddress=address,_events.default.trigger(instance,"serveraddresschanged",[{apiClient:instance,address:address}])}function onNetworkChanged(instance,resetAddress){resetAddress&&(instance.connected=!1,(resetAddress=getAddresses(instance.serverInfo())).length)&&setServerAddress(instance,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: "+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}})},ApiClient.prototype.getPublicUsers=function(){return this.getPublicUsersQueryResult({}).then(function(result){return result.Items})},ApiClient.prototype.getUsersQueryResult=function(query,signal){var serverId=this.serverId();return this.getJSON(this.getUrl("Users/Query",query),signal).then(function(result){return setUsersProperties(result.Items,serverId),result})},ApiClient.prototype.getUsersForItemAccess=function(query,signal){var serverId=this.serverId();return this.getJSON(this.getUrl("Users/ItemAccess",query),signal).then(function(result){return setUsersProperties(result.Items,serverId),result})},ApiClient.prototype.getUsers=function(query,signal){return this.getUsersQueryResult(query,signal).then(function(result){return result.Items})},ApiClient.prototype.getUserPrefixes=function(query,signal){return this.getJSON(this.getUrl("Users/Prefixes",query),signal)},ApiClient.prototype.getApiKeys=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})})},ApiClient.prototype.getGameSystems=function(){var options={},userId=this.getCurrentUserId(),userId=(userId&&(options.userId=userId),this.getUrl("Games/SystemSummaries",options));return this.getJSON(userId)},ApiClient.prototype.getAdditionalVideoParts=function(userId,itemId,mediaSourceId){var options;if(itemId)return isLocalId(itemId)||isLocalId(mediaSourceId)?Promise.resolve([]):(options={},userId&&(options.userId=userId),mediaSourceId&&(options.mediaSourceId=mediaSourceId),userId=this.getUrl("Videos/"+itemId+"/AdditionalParts",options),this.getJSON(userId));throw new Error("null itemId")},ApiClient.prototype.getThemeMedia=function(itemId,options,signal){return isLocalId(itemId)?Promise.resolve({ThemeVideosResult:{Items:[],TotalRecordCount:0},ThemeSongsResult:{Items:[],TotalRecordCount:0}}):(itemId=this.getUrl("Items/"+itemId+"/ThemeMedia",options),this.getJSON(itemId,signal))},ApiClient.prototype.getAudioStreamUrl=function(_ref5,_ref6,directPlayContainers,maxBitrate,maxAudioSampleRate,maxAudioBitDepth,startPosition,enableRemoteMedia){var _ref5=_ref5.Id,Container=_ref6.Container,Protocol=_ref6.Protocol,_ref6=_ref6.AudioCodec;return startingPlaySession++,this.getUrl("Audio/"+_ref5+"/universal",{UserId:this.getCurrentUserId(),DeviceId:this.deviceId(),MaxStreamingBitrate:maxBitrate,Container:directPlayContainers,TranscodingContainer:Container||null,TranscodingProtocol:Protocol||null,AudioCodec:_ref6,MaxAudioSampleRate:maxAudioSampleRate,MaxAudioBitDepth:maxAudioBitDepth,api_key:this.accessToken(),PlaySessionId:startingPlaySession,StartTimeTicks:startPosition||0,EnableRedirection:!0,EnableRemoteMedia:enableRemoteMedia})},ApiClient.prototype.getAudioStreamUrls=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 "+info.MacAddress),_servicelocator.wakeOnLan.send(info).then(goNext,goNext));function goNext(){return sendNextWakeOnLan(infos,index+1)}}(getCachedWakeOnLanInfo(this),0)},ApiClient.prototype.getAddToPlaylistInfo=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})},ApiClient.prototype.addToList=function(userId,type,id,addIds,skipDuplicates){var url=this.getUrl(("BoxSet"===type||"Collection"===type?"Collections":"Playlists")+"/"+id+"/Items"),dataType="Playlist"===type&&this.isMinServerVersion("4.8.0.30")?"json":null,instance=this;return this.ajax({type:"POST",url:url,dataType:dataType,data:JSON.stringify({Ids:addIds.join(","),userId:userId,SkipDuplicates:"Playlist"===type?skipDuplicates:null}),contentType:"application/json"}).then(function(result){return null==(result=result||{}).ItemAddedCount&&(result.ItemAddedCount=addIds.length),onItemUpdated.call({instance:instance,itemId:id},result)})},ApiClient.prototype.createList=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)})},ApiClient.prototype.setSystemInfo=function(systemInfo){var instance,info;null!=systemInfo.HasImageEnhancers&&(this.hasImageEnhancers=systemInfo.HasImageEnhancers),systemInfo.WakeOnLanInfo&&(instance=this,info=systemInfo.WakeOnLanInfo,instance=instance.serverId(),_servicelocator.appStorage.setItem("server-"+instance+"-wakeonlaninfo",JSON.stringify(info))),this._serverVersion=systemInfo.Version},ApiClient.prototype.serverVersion=function(){return this._serverVersion},ApiClient.prototype.isMinServerVersion=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