UNPKG

lavva.exalushome.extalife

Version:

Library implementing communication and abstraction layers for ExtaLife API in ExalusHome system

2 lines 31.8 kB
(()=>{"use strict";var e,r,t,i={2476:(e,r,t)=>{t.r(r),t.d(r,{FirmwareService:()=>c,FirmwareVersion:()=>d});var i=t(1061),n=t(4756),a=t(9595),o=t(6823),s=t(6030);class c{constructor(){this._connection=null,this._connection=i.j.Get(a.G.ServiceName)}GetServiceName(){return c.ServiceName}GetFirmwareVersionAsync(e){return r=this,t=void 0,a=function*(){var r;const t=yield null===(r=this._connection)||void 0===r?void 0:r.SendAndWaitForResponseAsync(new u(e.Guid),35e3,!1);if(null==t)return new o.ZR(s.m.UnknownError,"Failed to retrieve firmware version - unknow error.");switch(t.Status){case n.nW.OK:if(null!=t.Data){const e=new d;return e.Major=t.Data.Major,e.Minor=t.Data.Minor,e.Revision=t.Data.Revision,e.Build=t.Data.Build,e}break;case n.nW.Error:return new o.ZR(s.m.UnknownError,"Failed to retrieve firmware version - unknow error.")}return new o.ZR(s.m.OtherError,`Failed to retrieve firmware version, response error: ${t.Status} data: ${t.Data}`)},new((i=void 0)||(i=Promise))((function(e,n){function o(e){try{c(a.next(e))}catch(e){n(e)}}function s(e){try{c(a.throw(e))}catch(e){n(e)}}function c(r){var t;r.done?e(r.value):(t=r.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,s)}c((a=a.apply(r,t||[])).next())}));var r,t,i,a}}c.ServiceName="FirmwareService";class d{constructor(){this.Revision=0,this.Build=0,this.Minor=0,this.Major=0}ToString(){return`${this.Major}.${this.Minor}.${this.Build}.${this.Revision}`}}class u extends n.CP{constructor(e){super(),this.Resource="/extalife/device/firmware/version/complete",this.Method=n.IT.Get,this.Data=e}}},6030:(e,r,t)=>{t.d(r,{u:()=>x,m:()=>_});var i,n=t(1061),a=t(161),o=t(4268),s=t(2990),c=t(4824),d=t(4756),u=t(9595),l=t(6053),v=t(6823),p=t(6881),f=t(8883),g=t(9054),h=t(4637),S=t(2824),m=function(e,r,t,i){return new(t||(t=Promise))((function(n,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var r;e.done?n(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(o,s)}c((i=i.apply(e,r||[])).next())}))};class w{constructor(e,r){this._apiVersion=e.APIVersion,this._extenstionVersion=e.ExtensionVersion,this._protocolExtGuid=e.ExtensionGuid,this._runtimeInfo=r,this._logger=n.j.Get(o.g.ServiceName),this._connection=n.j.Get(u.G.ServiceName),this._devices=n.j.Get(f.N7.ServiceName),this._updateProvider=n.j.Get(c.OA.ServiceName)}get ProtocolGuid(){return x.ExtaLifeProtocolGuid}get ExtensionGuid(){return this._protocolExtGuid}get AvailableApiVersion(){return this._apiVersion}get AvailableExtensionVersion(){return this._extenstionVersion}get ProviderType(){return l.cp.Device}GetUpdateProviderName(){return`${w.ProviderName}_${this._apiVersion}_${this._extenstionVersion}`}GetAvailableUpdateAsync(e){return m(this,void 0,void 0,(function*(){var r,t,i,a;try{if(e.ProtocolGuid!=x.ExtaLifeProtocolGuid)return this._logger.Debug(`Cannot get available updates! Device ${e.Name} does not support the ExtaLife protocol.`),new v.ZR(p.rQ.UnsupportedDevice,`Cannot get available updates! Device ${e.Name} does not support the ExtaLife protocol.`);if(parseFloat(this._apiVersion)<2)return this._logger.Debug(`Cannot get available updates! Unsupported API version: ${this._apiVersion}`),new v.ZR(p.rQ.UnsupportedApiVersion,`Cannot get available updates! Unsupported API version: ${this._apiVersion}`);if(!(parseFloat(this._apiVersion)<3))return this._logger.Warning(`Cannot get available updates! Unsupported API version: ${this._apiVersion}`),new v.ZR(p.rQ.UnsupportedApiVersion,`Cannot get available updates! Unsupported API version: ${this._apiVersion}`);{const o=yield this.GetFirmwareVersionAsync(e);if(null!=o.Type)return this._logger.Debug(`Cannot get available updates! Error: ${o.Type}`),o;let s=n.j.Get(g.K.ServiceName),c=yield s.GetControllerUpdateBranchAsync(),d="lavva";document.location.hostname.endsWith("tr7.pl")&&(d="portos");const u=`https://exalus-updates.tr7.pl/firmware/${d}/${c}/${e.ModelGuid}/update.json`;let f=o,S=`${f.Major}.${f.Minor}.${f.Revision}.${f.Build}`;try{this._logger.Debug(`Checking for firmware update, device: ${e.ModelGuid} name: ${e.Name} firmware ver.: ${JSON.stringify(f)} ver: ${S} \n url: ${u} protocol: ${document.location.protocol}`);const n=yield fetch(u);let c,d=new l.u_;switch(n.status){case 200:if(null==n.body)return this._logger.Warning("Cannot get updates! Response body is null."),new v.ZR(p.rQ.CannotGetUpdates,"Cannot get updates! Response body is null.");c=yield n.json(),this._logger.Debug(`Recived update data: ${JSON.stringify(c)}`);break;case 404:return this._logger.Debug(`Updates not found, device ${e.Name} is already up-to-date.`),new v.ZR(p.rQ.DeviceIsUpToDate,`Updates not found, device ${e.Name} is already up-to-date.`);default:return this._logger.Debug(`Cannot get updates! Response status code does not indicate success. Status: ${n.status}`),new v.ZR(p.rQ.CannotGetUpdates,`Response status code does not indicate success. Status: ${n.status}`)}if(null!=c){c.DownloadUri.startsWith("/")&&(c.DownloadUri=`https://exalus-updates.tr7.pl${c.DownloadUri}`);let n=c.RequiredMinimumControllerSoftwareVersion,u=`${n.Major}.${n.Minor}.${n.Revision}.${n.Build}`,f=yield s.CheckControllerVersionAsync();if(this._logger.Debug(`Checking for controller software version. Required: ${u}`),f instanceof v.ZR)return new v.ZR(p.rQ.CannotGetUpdates,`Failed to get controller software version. Error: ${JSON.stringify(f)}`);{let e=f.first((e=>e.Type==h.kD.SoftwareUpdate));if(null==e)return this._logger.Debug("Cannot get controller software version. Controller software version not found."),new v.ZR(p.rQ.CannotGetUpdates,"Failed to get controller software version. Error: Controller software version not found.");this._logger.Debug(`Current controller software version: ${e.Version}`);let r=new D,t=e.Version.split(".");if(r.Major=parseInt(t[0]),r.Minor=parseInt(t[1]),r.Revision=parseInt(t[2]),r.Build=parseInt(t[3]),r.Revision<n.Revision||r.Revision==n.Revision&&r.Build<=n.Build)return this._logger.Debug(`Cannot get update! Required minimum controller software version is higher than current. Required: ${u} Current: ${e.Version}`),new v.ZR(p.rQ.CannotGetUpdates,`Cannot get update! Required minimum controller software version is higher than current. Required: ${u} Current: ${e.Version}`)}let g=`${o.Major}.${o.Minor}.${o.Revision}.${o.Build}`,S=`${c.Version.Major}.${c.Version.Minor}.${c.Version.Revision}.${c.Version.Build}`;return g==S?(this._logger.Debug(`Device ${e.Name} is already up-to-date. Version: ${g}`),new v.ZR(p.rQ.DeviceIsUpToDate,`Device ${e.Name} is already up-to-date. Version: ${g}`)):(d.CurrentResourceVersion=g,d.Update=new l.UT,d.Update.UpdateGuid=c.UpdateGuid,d.Update.Channel=c.Branch,d.Update.Version=S,d.Update.DownloadUri=c.DownloadUri,d.Update.Name=null!==(t=null!==(r=c.Name["en-US"])&&void 0!==r?r:c.Name["pl-PL"])&&void 0!==t?t:"Unknown",d.Update.Description=null!==(a=null!==(i=c.Description["en-US"])&&void 0!==i?i:c.Description["pl-PL"])&&void 0!==a?a:"Unknown",d.Update.ResourceGuid=e.Guid,d.UpdatedResourceName=e.Name,d.UpdateDescription=new Map(Object.entries(c.Description)),d)}return this._logger.Warning(`Cannot get Update Data from response. Response status: ${n.status}`),new v.ZR(p.rQ.CannotGetUpdates,`Cannot get Update Data from response. Status: ${n.status}`)}catch(e){return this._logger.Warning(`Cannot get available updates! Error: ${e}`),new v.ZR(p.rQ.CannotGetUpdates,`Request failed. Error: ${e}`)}}}catch(e){return this._logger.Warning(`Cannot get available updates! Error: ${e}`),new v.ZR(p.rQ.CannotGetUpdates,`Cannot get available updates! Error: ${e}`)}}))}CheckUpdateBulkAsync(e){return m(this,void 0,void 0,(function*(){const r=yield n.j.Get(f.N7.ServiceName).GetDevicesAsync(),t=r.where((e=>e.ProtocolGuid==x.ExtaLifeProtocolGuid)).count(),i=yield this._connection.SendAndWaitForResponseAsync(new b(e),1500*t,!1);return null==i||null==i.Status?new v.ZR(p.rQ.CannotGetUpdates,"Cannot check updates! Response does not contain data."):i.Status!=d.nW.OK?new v.ZR(p.rQ.CannotGetUpdates,`Cannot check updates! Controler responded with status ${i.Status}.`):null==i.Data?new v.ZR(p.rQ.CannotGetUpdates,"Cannot check updates! Response does not contain data."):i.Data.map((e=>{var t,i,n;e.FirmwareUpdate.Name=new Map(Object.entries(e.FirmwareUpdate.Name));const a=new l.u_;return a.CurrentResourceVersion=e.CurrentVersion,a.UpdatedResourceName=null!==(t=r.first((r=>r.Guid==e.DeviceGuid)).Name)&&void 0!==t?t:"Unknown",a.UpdateDescription=new Map(Object.entries(e.FirmwareUpdate.Description)),a.Update=new l.UT,a.Update.Channel=e.FirmwareUpdate.Branch,a.Update.DownloadUri=e.FirmwareUpdate.DownloadUri,a.Update.CurrentVersion=e.CurrentVersion,a.Update.Version=e.NewVersion,a.Update.Name=null!==(n=null!==(i=e.FirmwareUpdate.Name.get("en-US"))&&void 0!==i?i:e.FirmwareUpdate.Name.get("pl-PL"))&&void 0!==n?n:"Unknown",a.Update.ResourceGuid=e.DeviceGuid,a.Update.UpdateGuid=e.FirmwareUpdate.UpdateGuid,a}))}))}GetSoftwareVersionAsync(e){return m(this,void 0,void 0,(function*(){if(e.ProtocolGuid!=x.ExtaLifeProtocolGuid)return new v.ZR(p.rQ.UnsupportedDevice,`Cannot get available updates! Device ${e.Name} does not support the ExtaLife protocol.`);const r=yield this.GetFirmwareVersionAsync(e);return null!=r.Type?r:`${r.Major}.${r.Minor}.${r.Revision}.${r.Build}`}))}GetFirmwareVersionAsync(e){return m(this,void 0,void 0,(function*(){var r;const t=yield null===(r=this._connection)||void 0===r?void 0:r.SendAndWaitForResponseAsync(new R(e.Guid),12e3,!1);if(null==t||null==t.Status)return new v.ZR(p.rQ.CannotGetFirmwareVersion,"Cannot get firmware version! Response does not contain data.");if(t.Status!=d.nW.OK)return new v.ZR(p.rQ.CannotGetFirmwareVersion,`Cannot get firmware version! Controler responded with status ${t.Status}.`);if(null==t.Data)return new v.ZR(p.rQ.CannotGetFirmwareVersion,"Cannot get firmware version! Response does not contain data.");const i=new D;return i.Major=t.Data.Major,i.Minor=t.Data.Minor,i.Revision=t.Data.Revision,i.Build=t.Data.Build,i}))}InstallUpdateAsync(e,r,t){return m(this,arguments,void 0,(function*(e,r,t,n=!1){var a,o,s;if(null!=t)return new v.ZR(p.rQ.UpdateActionsNotSupported,`Update service for given resource: ${e.UpdatedResourceName} does not support custom update actions.`);if(parseFloat(this._apiVersion)<2)return new v.ZR(p.rQ.UnsupportedApiVersion,`Cannot install update! Unsupported API version: ${this._apiVersion}`);if(!(parseFloat(this._apiVersion)<3))return new v.ZR(p.rQ.UnsupportedApiVersion,`Cannot install update! Unsupported API version: ${this._apiVersion}`);{if(null!=(yield this._devices.GetDevicesAsync()).find((e=>"952ddc14-76c4-4f47-b0bc-5d106c1f9b02"==e.ModelGuid))&&!n)return new v.ZR(p.rQ.RetransmitterFound,"Cannot install update! Retransmitter found! Use force option to install update if you are sure what you are doing.");var c=(yield this._updateProvider.GetUpdatesProvidersByProtocolAsync(x.ExtaLifeProtocolGuid,l.cp.Controller)).firstOrDefault();if("IMX6UL"===(null===(a=(yield this._updateProvider.GetHardwareInfoAsync()).GetAvailableHardware.find((e=>"/proc"===e.DevicePath)))||void 0===a?void 0:a.DisplayName)&&parseFloat(null!==(o=yield null==c?void 0:c.GetCurrentRadioVersionAsync())&&void 0!==o?o:"1.0")<1.4)return new v.ZR(p.rQ.ProtocolRadioUnsupported,`Cannot install update! Unsupported API version: ${this._apiVersion}`);const t=new y(e.Update.ResourceGuid,e.Update.DownloadUri);try{return yield null===(s=this._connection)||void 0===s?void 0:s.SendAndHandleResponseAsync(new U(t),6e4,(t=>{var n,a;const o=new p.jK;switch(o.UpdatedResourceName=new Map([["pl-PL",e.UpdatedResourceName],["en-US",e.UpdatedResourceName]]),t.Status){case d.nW.MultiDataResponseStart:o.Status=p.Y0.PreparingForUpgrade;break;case d.nW.MultiDataResponse:if(null==t.Data)return void this._logger.Warning(w.ProviderName,`Recived update response without data! URI: ${e.Update.DownloadUri}`);switch(o.Percentage=t.Data.CurrentProgress,o.PercentageTotal=o.Percentage,null===(n=t.Data)||void 0===n?void 0:n.FirmwareUpgradeStatus){case i.Error:o.Status=p.Y0.InstallationError;break;case i.OK:100==o.Percentage?o.Status=p.Y0.Upgraded:o.Status=p.Y0.OK;break;case i.PreparingForUpgrade:o.Status=p.Y0.PreparingForUpgrade;break;case i.Upgraded:o.Status=p.Y0.Upgraded;break;default:o.Status=p.Y0.Upgrading}break;case d.nW.MultiDataResponseStop:100==(null===(a=t.Data)||void 0===a?void 0:a.CurrentProgress)?o.Status=p.Y0.Upgraded:o.Status=p.Y0.Error}this._logger.Debug(w.ProviderName,`Recived update progress response, percentage: ${o.Percentage}, status: ${o.Status}, resource name: ${e.UpdatedResourceName}`),r(o)}),!1),d.nW.OK}catch(e){return new v.ZR(p.rQ.CannotProcessUpdate,`Cannot process update, error: ${e}`)}}}))}InstalUpdateBulkAsync(e,r,t){return m(this,void 0,void 0,(function*(){return new Promise(((t,a)=>m(this,void 0,void 0,(function*(){try{yield this._connection.SendAndHandleResponseAsync(new C(e),6e4,(e=>{var o,s,c,u;const l=new p.jK;switch(e.Status){case d.nW.MultiDataResponseStart:return;case d.nW.MultiDataResponse:{const r=e.Data,t=n.j.Get(f.N7.ServiceName).GetDevice(null!==(o=null==r?void 0:r.DeviceGuid)&&void 0!==o?o:"");switch(l.UpdatedResourceName=new Map([["pl-PL",(null==t?void 0:t.Name)?t.Name:"n/a"],["en-US",(null==t?void 0:t.Name)?t.Name:"n/a"]]),null==r?void 0:r.Status){case i.Error:l.Status=p.Y0.InstallationError;break;case i.OK:l.Status=p.Y0.OK;break;case i.PreparingForUpgrade:case i.UnpairingRetransmitters:l.Status=p.Y0.PreparingForUpgrade;break;case i.Upgraded:l.Status=p.Y0.Upgraded;break;case i.DownloadingFirmware:l.Status=p.Y0.DownloadingPackage;break;case i.Upgrading:l.Status=p.Y0.Upgrading;break;case i.CheckingVersionsOfUpdatedDevices:case i.PairingRetransmitters:l.Status=p.Y0.Reloading}l.Percentage=null!==(s=null==r?void 0:r.DeviceUpdatePercentage)&&void 0!==s?s:0,l.PercentageTotal=null==r?void 0:r.TotalUpdatePercentage,l.AvailableUpdates=null!==(c=null==r?void 0:r.DevicesToUpdate)&&void 0!==c?c:0,l.UpdateNumber=null!==(u=null==r?void 0:r.CurrentDeviceUpdate)&&void 0!==u?u:0,this._logger.Debug(w.ProviderName,`Recived update progress response, percentage: ${l.Percentage}, status: ${l.Status}, resource name: ${null==t?void 0:t.Name}`);break}case d.nW.MultiDataResponseStop:{const r=e.Data,i=new p.Hf;return i.BulkUpdateStatus=r.BulkUpdateStatus,i.DevicesUpdateResults=(0,S.ku)(r.DevicesUpdateResults),void t(i)}case d.nW.Error:return void a(new v.ZR(p.rQ.CannotFindDevice,"Cannot process update, recived error response."));default:return void a(new v.ZR(p.rQ.CannotProcessUpdate,`Cannot process update, recived unsupported response status: ${e.Status}.`))}r(l)}),!0)}catch(e){a(new v.ZR(p.rQ.CannotProcessUpdate,`Cannot process update, error: ${e}`))}}))))}))}}w.ProviderName="ExtaLifeDeviceUpdateProvider";class b extends d.CP{constructor(e){super(),this.Resource="/extalife/device/firmware/upgrade/check",this.Method=d.IT.Put,this.Data=e}}class R extends d.CP{constructor(e){super(),this.Resource="/extalife/device/firmware/version/complete",this.Method=d.IT.Get,this.Data=e}}class U extends d.CP{constructor(e){super(),this.Resource="/extalife/device/firmware/upgrade",this.Method=d.IT.Put,this.Data=e}}class C extends d.CP{constructor(e){super(),this.Resource="/extalife/device/firmware/upgrade/bulk",this.Method=d.IT.Put,this.Data=e}}class D{constructor(){this.Revision=0,this.Build=0,this.Minor=0,this.Major=0}}class y{constructor(e,r){this.DeviceGuid=e,this.Uri=r}}!function(e){e[e.Error=-1]="Error",e[e.OK=0]="OK",e[e.Upgrading=1]="Upgrading",e[e.PreparingForUpgrade=2]="PreparingForUpgrade",e[e.Upgraded=3]="Upgraded",e[e.DownloadingFirmware=4]="DownloadingFirmware",e[e.UnpairingRetransmitters=5]="UnpairingRetransmitters",e[e.PairingRetransmitters=6]="PairingRetransmitters",e[e.CheckingVersionsOfUpdatedDevices=7]="CheckingVersionsOfUpdatedDevices"}(i||(i={})),t(2476);var P=function(e,r,t,i){return new(t||(t=Promise))((function(n,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var r;e.done?n(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(o,s)}c((i=i.apply(e,r||[])).next())}))};class G{constructor(e,r){this._apiVersion=e.APIVersion,this._extenstionVersion=e.ExtensionVersion,this._protocolExtGuid=e.ExtensionGuid,this._runtimeInfo=r,this._logger=n.j.Get(o.g.ServiceName),this._connection=n.j.Get(u.G.ServiceName)}get AvailableExtensionVersion(){return this._extenstionVersion}get AvailableApiVersion(){return this._apiVersion}get ExtensionGuid(){return this._protocolExtGuid}get ProtocolGuid(){return x.ExtaLifeProtocolGuid}get ProviderType(){return l.cp.Controller}GetUpdateProviderName(){return`${G.ProviderName}_${this._apiVersion}_${this._extenstionVersion}`}GetAvailableRadioUpdateAsync(){return P(this,void 0,void 0,(function*(){var e,r,t;if(this._logger.Debug(G.ProviderName,"Checking for 868MHz radio firmware upgrade..."),null===(e=(yield n.j.Get(c.OA.ServiceName).GetHardwareInfoAsync()).GetAvailableHardware.first((e=>"/proc"==e.DevicePath)))||void 0===e?void 0:e.DisplayName.contains("AM3352"))return new v.ZR(p.rQ.UnsupportedDevice,"Cannot get available updates! This ExtaLife module does not support updates.");if(parseFloat(this._extenstionVersion)<1.210505113)return new v.ZR(p.rQ.UnsupportedExtensionVersion,`Cannot get available updates! ExtaLife 868MHz extension is too old for upgrade. Version: ${this._extenstionVersion}`);const i=yield null===(r=this._connection)||void 0===r?void 0:r.SendAndWaitForResponseAsync(new $,8e3,!1);let a=1;null!=i&&null!=i.Data&&(null===(t=i.Data)||void 0===t?void 0:t.Item1)&&(a=parseFloat(`${i.Data.Item2.Major}.${i.Data.Item2.Minor}`)),this._logger.Debug(G.ProviderName,`ExtaLife 868MHz radio firmware version: ${a}`);var o=`https://updates.tr7.pl/firmware/${this._runtimeInfo.UpdateChannel}/${a}/${x.ExtaLifeRadioModuleDeviceGuid}`;try{this._logger.Debug(`Looking for update at: ${o}/${a}/update.json`);let e,r=yield fetch(`${o}/${a}/update.json`),t=new l.u_;if(200===r.status)null!=r.body&&(e=yield r.json());else switch(this._logger.Debug(`Looking for update at: ${o}/update.json`),r=yield fetch(`${o}/update.json`),r.status){case 200:null!=r.body&&(e=yield r.json());break;case 404:return new v.ZR(p.rQ.DeviceIsUpToDate,"Updates not found, radio ExtaLife 868MHz is already up-to-date.");default:return new v.ZR(p.rQ.CannotGetUpdates,`Response status code does not indicate success. Status: ${r.status}`)}if(null!=e)return t.CurrentResourceVersion=a.toString(),t.UpdatedResourceName="Radio ExtaLife 868 MHz",t.Update=e,t;throw new Error(`Cannot get Update Data from response. Status: ${r.status}`)}catch(e){return new v.ZR(p.rQ.CannotGetUpdates,`Cannot get available updates! ${e}`)}}))}GetCurrentRadioVersionAsync(){return P(this,void 0,void 0,(function*(){var e,r;const t=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new $,8e3,!1);return null!=t&&null!=t.Data&&(null===(r=t.Data)||void 0===r?void 0:r.Item1)?`${t.Data.Item2.Major}.${t.Data.Item2.Minor}`:"n/a"}))}InstallRadioUpdateAsync(e,r,t){return P(this,void 0,void 0,(function*(){var i,a;if(null!=t)return new v.ZR(p.rQ.UpdateActionsNotSupported,`Update service for given resource: ${e.UpdatedResourceName} does not support custom update actions.`);if(null===(i=(yield n.j.Get(c.OA.ServiceName).GetHardwareInfoAsync()).GetAvailableHardware.first((e=>"/proc"==e.DevicePath)))||void 0===i?void 0:i.DisplayName.contains("AM3352"))return new v.ZR(p.rQ.UnsupportedDevice,"Cannot get available updates! This ExtaLife module does not support updates.");const o=new p.jK;o.UpdatedResourceName=new Map([["pl-PL",e.UpdatedResourceName],["en-US",e.UpdatedResourceName]]);try{yield null===(a=this._connection)||void 0===a?void 0:a.SendAndHandleResponseAsync(new N(e.Update.DownloadUri),3e4,(t=>{switch(t.Status){case d.nW.MultiDataResponseStart:o.Status=p.Y0.PreparingForUpgrade;break;case d.nW.MultiDataResponse:if(null==t.Data)return void this._logger.Warning(G.ProviderName,`Recived update response without data! URI: ${e.Update.DownloadUri}`);o.Percentage=t.Data,o.Status=p.Y0.Upgrading;break;case d.nW.MultiDataResponseStop:t.Data?(o.Percentage=100,o.Status=p.Y0.Upgraded):o.Status=p.Y0.InstallationError}this._logger.Debug(G.ProviderName,`Recived update progress response, percentage: ${o.Percentage}, status: ${o.Status}, resource name: ${e.UpdatedResourceName}`),r(o)}),!1)}catch(e){return o.Percentage=0,o.Status=p.Y0.Error,r(o),new v.ZR(p.rQ.CannotProcessUpdate,`Cannot process update, error: ${e}`)}return d.nW.OK}))}}G.ProviderName="ExtaLifeControllerUpdateProvider";class $ extends d.CP{constructor(){super(),this.Resource="/extalife/radio/firmware/version",this.Method=d.IT.Get}}class N extends d.CP{constructor(e){super(),this.Resource="/extafree2/radio/upgrade",this.Method=d.IT.Put,this.Data=e}}var _,A=function(e,r,t,i){return new(t||(t=Promise))((function(n,a){function o(e){try{c(i.next(e))}catch(e){a(e)}}function s(e){try{c(i.throw(e))}catch(e){a(e)}}function c(e){var r;e.done?n(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(o,s)}c((i=i.apply(e,r||[])).next())}))};class x{constructor(){this._services=new Map,this._servicesToDeviceMap=new Map([["becbb229-1637-4b0f-a9f0-d43fa38ef76b",["Rck21ConfigService","FirmwareService","DiagnosticService"]],["98d309e4-0986-4dd8-bcb6-fa31541c82be",["Rcz21ConfigService","FirmwareService","DiagnosticService"]],["d7f88fcb-19f7-469b-b489-a239762023e5",["Rcm21ConfigService","FirmwareService","DiagnosticService"]],["42015ac8-4a84-47b2-855d-795ee8edc06f",["ZfBidiConfigService","RemotesService","FirmwareService","DiagnosticService"]],["4688be64-c07c-4508-8e7a-b49bc4bbc78e",["Rcr21ConfigService","FirmwareService","DiagnosticService"]],["84c1bb42-1a27-46bb-ae1e-14a790e96a53",["SsrConfigService","RemotesService","FirmwareService","DiagnosticService"]],["e7e6b193-0144-4550-93f0-9050bbbaf91d",["SsrConfigService","RemotesService","FirmwareService","DiagnosticService"]],["d57de594-768b-4745-97bd-56b70b8be253",["Srp22ConfigService","RemotesService","FirmwareService","DiagnosticService"]],["d1b4cfc7-e92c-47d1-9c7c-9c9dd3351832",["Srp30ConfigService","RemotesService","FirmwareService","DiagnosticService"]],["f48eab61-047a-4241-a1e6-aee89062cd69",["WszfBidiConfigService","FirmwareService","DiagnosticService"]],["db54c107-b406-4c99-8cfa-0455c9089d44",["Rdp21ConfigService","RemotesService","FirmwareService","DiagnosticService"]],["e3fbfa59-2e57-465d-a46c-44b5ce30e475",["RopConfigService","RemotesService","FirmwareService","DiagnosticService"]],["2520103f-5622-4015-be85-e6dea8640829",["RopConfigService","RemotesService","FirmwareService","DiagnosticService"]],["d4638681-2fac-4f3c-a520-281573e431fa",["RopConfigService","RemotesService","FirmwareService","DiagnosticService"]],["1f599666-be23-49c1-b42d-17a8db54e11a",["RomConfigService","RemotesService","FirmwareService","DiagnosticService"]],["554f0414-df02-4525-94e9-47f36015c5d6",["RomConfigService","RemotesService","FirmwareService","DiagnosticService"]],["f4cc5043-2198-47df-9361-4cd130ed0323",["Rog21ConfigService","RemotesService","FirmwareService","DiagnosticService"]],["7b794533-a040-4637-90d2-17b410a16efa",["Rob21ConfigService","RemotesService","FirmwareService","DiagnosticService"]],["824560d9-f83c-4ff6-99b7-0187bfda5d4e",["SbrConfigService","RemotesService","FirmwareService","DiagnosticService"]],["13538389-988f-4327-93d3-518e757c8cc9",["Slr22ConfigService","FirmwareService","DiagnosticService"]],["813d930e-4220-4a5f-b348-b0f731a07e5f",["Slr21ConfigService","RemotesService","FirmwareService","DiagnosticService"]],["88708796-2bda-4716-8cb5-57df74e40476",["Sln22ConfigService","FirmwareService","DiagnosticService"]],["5c039414-e5b2-428a-bfcf-874f68f0063f",["Sln21ConfigService","RemotesService","FirmwareService","DiagnosticService"]],["952ddc14-76c4-4f47-b0bc-5d106c1f9b02",["DiagnosticService"]]])}static Init(){a.h.Instance.RegisterService(new x),n.j.Get(o.g.ServiceName).Debug("Initialized ExtaLifeService"),x.RegisterUpdateProvidersAsync()}GetServiceName(){return x.ServiceName}GetDeviceServiceByServiceTypeAsync(e){return A(this,void 0,void 0,(function*(){return this.getServiceAsync(e)}))}GetDeviceServiceAsync(e,r){return A(this,void 0,void 0,(function*(){let t=yield this.GetAllDeviceServicesAsync(e);return null!==t?t.firstOrDefault((e=>e.GetServiceName()===r)):null}))}GetAllDeviceServicesAsync(e){return A(this,void 0,void 0,(function*(){if(null!==e.ModelGuid){const r=this._servicesToDeviceMap.get(e.ModelGuid);if(null==r)return[];const t=[];for(const e of r){const r=yield this.getServiceAsync(e);null!=r&&t.push(r)}return t}return[]}))}IsDeviceServiceSupportedAsync(e,r){return A(this,void 0,void 0,(function*(){return null!==(yield this.GetDeviceServiceAsync(e,r))}))}static RegisterUpdateProvidersAsync(){return A(this,void 0,void 0,(function*(){const e=yield n.j.Get(c.OA.ServiceName),r=(yield n.j.Get(s.Wn.ServiceName).GetExtensionsInfoAsync(x.ExtaLifeExtensionGuid)).first(),t=yield e.GetSoftwareRuntimeInfoAsync();null!=r?(n.j.Get(o.g.ServiceName).Debug(x.ServiceName,"Registering ExtaLife update providers."),null==e||e.RegisterUpdatesProvider(new w(r,t)),null==e||e.RegisterUpdatesProvider(new G(r,t))):n.j.Get(o.g.ServiceName).Warning(x.ServiceName,"ExtaLife update provider not registered - controller does not support ExtaLife extension.")}))}getServiceAsync(e){return A(this,void 0,void 0,(function*(){const r=this._services.get(e);if(null!=r)return r;{let r;switch(e){case"Rck21ConfigService":r=new((yield t.e(656).then(t.bind(t,3656))).Rck21ConfigService);break;case"Rcz21ConfigService":r=new((yield t.e(673).then(t.bind(t,2673))).Rcz21ConfigService);break;case"Rcm21ConfigService":r=new((yield t.e(788).then(t.bind(t,788))).Rcm21ConfigService);break;case"Rcr21ConfigService":r=new((yield t.e(513).then(t.bind(t,2513))).Rcr21ConfigService);break;case"ZfBidiConfigService":r=new((yield t.e(671).then(t.bind(t,5671))).ZfBidiConfigService);break;case"SsrConfigService":r=new((yield Promise.all([t.e(933),t.e(939)]).then(t.bind(t,939))).SsrConfigService);break;case"Srp22ConfigService":r=new((yield Promise.all([t.e(933),t.e(910)]).then(t.bind(t,8910))).Srp22ConfigService);break;case"Srp30ConfigService":r=new((yield Promise.all([t.e(933),t.e(19)]).then(t.bind(t,9019))).Srp30ConfigService);break;case"WszfBidiConfigService":r=new((yield t.e(64).then(t.bind(t,5064))).WszfBidiConfigService);break;case"RopConfigService":r=new((yield Promise.all([t.e(946),t.e(723)]).then(t.bind(t,5723))).RopConfigService);break;case"RomConfigService":r=new((yield Promise.all([t.e(946),t.e(51)]).then(t.bind(t,8051))).RomConfigService);break;case"Rdp21ConfigService":r=new((yield Promise.all([t.e(946),t.e(119)]).then(t.bind(t,9119))).Rdp21ConfigService);break;case"Rog21ConfigService":r=new((yield Promise.all([t.e(946),t.e(551)]).then(t.bind(t,5551))).Rog21ConfigService);break;case"Rob21ConfigService":r=new((yield t.e(859).then(t.bind(t,1859))).Rob21ConfigService);break;case"Slr22ConfigService":r=new((yield Promise.all([t.e(946),t.e(425)]).then(t.bind(t,8425))).Slr22ConfigService);break;case"Slr21ConfigService":r=new((yield Promise.all([t.e(946),t.e(194)]).then(t.bind(t,8194))).Slr21ConfigService);break;case"Sln21ConfigService":r=new((yield Promise.all([t.e(946),t.e(662)]).then(t.bind(t,662))).Sln21ConfigService);break;case"Sln22ConfigService":r=new((yield Promise.all([t.e(946),t.e(125)]).then(t.bind(t,8125))).Sln22ConfigService);break;case"SbrConfigService":r=new((yield t.e(484).then(t.bind(t,8484))).SbrConfigService);break;case"FirmwareService":r=new((yield Promise.resolve().then(t.bind(t,2476))).FirmwareService);break;case"DiagnosticService":r=new((yield t.e(756).then(t.bind(t,7756))).DiagnosticService);break;case"RemotesService":r=new((yield t.e(255).then(t.bind(t,2255))).RemotesService);break;default:return n.j.Get(o.g.ServiceName).Error(x.ServiceName,`Cannot load service, unsupported service name: ${e}`),null}return null==r?(n.j.Get(o.g.ServiceName).Error(x.ServiceName,`Cannot load service, not found implementation, service name: ${e}`),null):(this._services.set(e,r),r)}}))}}x.ServiceName="ExtaLifeService",x.ExtaLifeExtensionGuid="4fd5c965-3f4f-4970-a381-23bf23490627",x.ExtaLifeProtocolGuid="1fca7e8a-a2dc-4883-bd94-4e9b2012f685",x.ExtaLifeRadioModuleDeviceGuid="a931c79a-63d7-4342-8777-0cc0c57334e2",function(e){e.Success="Success",e.ResourceIsNotAvailable="ResourceIsNotAvailable",e.UnknownError="UnknownError",e.OtherError="OtherError",e.InvalidChannelNumber="InvalidChannelNumber",e.DeviceNotResponding="DeviceNotResponding",e.NoData="NoData"}(_||(_={}))}},n={};function a(e){var r=n[e];if(void 0!==r)return r.exports;var t=n[e]={exports:{}};return i[e](t,t.exports,a),t.exports}a.m=i,e=[],a.O=(r,t,i,n)=>{if(!t){var o=1/0;for(u=0;u<e.length;u++){for(var[t,i,n]=e[u],s=!0,c=0;c<t.length;c++)(!1&n||o>=n)&&Object.keys(a.O).every((e=>a.O[e](t[c])))?t.splice(c--,1):(s=!1,n<o&&(o=n));if(s){e.splice(u--,1);var d=i();void 0!==d&&(r=d)}}return r}n=n||0;for(var u=e.length;u>0&&e[u-1][2]>n;u--)e[u]=e[u-1];e[u]=[t,i,n]},a.d=(e,r)=>{for(var t in r)a.o(r,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((r,t)=>(a.f[t](e,r),r)),[])),a.u=e=>e+"-exalushome-extalife.bundle.js",a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r={},t="lavva.exalushome.extalife:",a.l=(e,i,n,o)=>{if(r[e])r[e].push(i);else{var s,c;if(void 0!==n)for(var d=document.getElementsByTagName("script"),u=0;u<d.length;u++){var l=d[u];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==t+n){s=l;break}}s||(c=!0,(s=document.createElement("script")).charset="utf-8",s.timeout=120,a.nc&&s.setAttribute("nonce",a.nc),s.setAttribute("data-webpack",t+n),s.src=e),r[e]=[i];var v=(t,i)=>{s.onerror=s.onload=null,clearTimeout(p);var n=r[e];if(delete r[e],s.parentNode&&s.parentNode.removeChild(s),n&&n.forEach((e=>e(i))),t)return t(i)},p=setTimeout(v.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=v.bind(null,s.onerror),s.onload=v.bind(null,s.onload),c&&document.head.appendChild(s)}},a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var r=a.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var i=t.length-1;i>-1&&(!e||!/^http(s?):/.test(e));)e=t[i--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})(),(()=>{var e={792:0};a.f.j=(r,t)=>{var i=a.o(e,r)?e[r]:void 0;if(0!==i)if(i)t.push(i[2]);else{var n=new Promise(((t,n)=>i=e[r]=[t,n]));t.push(i[2]=n);var o=a.p+a.u(r),s=new Error;a.l(o,(t=>{if(a.o(e,r)&&(0!==(i=e[r])&&(e[r]=void 0),i)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;s.message="Loading chunk "+r+" failed.\n("+n+": "+o+")",s.name="ChunkLoadError",s.type=n,s.request=o,i[1](s)}}),"chunk-"+r,r)}},a.O.j=r=>0===e[r];var r=(r,t)=>{var i,n,[o,s,c]=t,d=0;if(o.some((r=>0!==e[r]))){for(i in s)a.o(s,i)&&(a.m[i]=s[i]);if(c)var u=c(a)}for(r&&r(t);d<o.length;d++)n=o[d],a.o(e,n)&&e[n]&&e[n][0](),e[n]=0;return a.O(u)},t=self.webpackChunklavva_exalushome_extalife=self.webpackChunklavva_exalushome_extalife||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})();var o=a.O(void 0,[61],(()=>a(6030)));o=a.O(o)})(); //# sourceMappingURL=main-exalushome-extalife.bundle.js.map