homebridge-config-ui-x 5.7.0 → 5.7.1-alpha.1

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 (158) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/app.module.js +2 -0
  3. package/dist/app.module.js.map +1 -1
  4. package/dist/core/auth/auth.controller.d.ts +5 -0
  5. package/dist/core/auth/auth.controller.js +13 -0
  6. package/dist/core/auth/auth.controller.js.map +1 -1
  7. package/dist/core/auth/auth.service.d.ts +1 -0
  8. package/dist/core/auth/auth.service.js +24 -0
  9. package/dist/core/auth/auth.service.js.map +1 -1
  10. package/dist/core/config/config.interfaces.d.ts +14 -3
  11. package/dist/core/config/config.service.d.ts +6 -0
  12. package/dist/core/config/config.service.js +6 -0
  13. package/dist/core/config/config.service.js.map +1 -1
  14. package/dist/core/config/config.startup.js +12 -0
  15. package/dist/core/config/config.startup.js.map +1 -1
  16. package/dist/core/homebridge-ipc/homebridge-ipc.service.js +8 -0
  17. package/dist/core/homebridge-ipc/homebridge-ipc.service.js.map +1 -1
  18. package/dist/core/spa/spa-html.service.d.ts +5 -0
  19. package/dist/core/spa/spa-html.service.js +38 -0
  20. package/dist/core/spa/spa-html.service.js.map +1 -0
  21. package/dist/core/spa/spa.filter.d.ts +3 -0
  22. package/dist/core/spa/spa.filter.js +21 -2
  23. package/dist/core/spa/spa.filter.js.map +1 -1
  24. package/dist/globalDefaults.js +3 -0
  25. package/dist/globalDefaults.js.map +1 -1
  26. package/dist/main.js +61 -3
  27. package/dist/main.js.map +1 -1
  28. package/dist/modules/child-bridges/child-bridges.controller.d.ts +35 -0
  29. package/dist/modules/child-bridges/child-bridges.controller.js +284 -0
  30. package/dist/modules/child-bridges/child-bridges.controller.js.map +1 -0
  31. package/dist/modules/child-bridges/child-bridges.gateway.d.ts +14 -1
  32. package/dist/modules/child-bridges/child-bridges.gateway.js +67 -1
  33. package/dist/modules/child-bridges/child-bridges.gateway.js.map +1 -1
  34. package/dist/modules/child-bridges/child-bridges.interfaces.d.ts +45 -0
  35. package/dist/modules/child-bridges/child-bridges.interfaces.js +3 -0
  36. package/dist/modules/child-bridges/child-bridges.interfaces.js.map +1 -0
  37. package/dist/modules/child-bridges/child-bridges.module.js +8 -0
  38. package/dist/modules/child-bridges/child-bridges.module.js.map +1 -1
  39. package/dist/modules/child-bridges/child-bridges.service.d.ts +40 -8
  40. package/dist/modules/child-bridges/child-bridges.service.js +345 -10
  41. package/dist/modules/child-bridges/child-bridges.service.js.map +1 -1
  42. package/dist/modules/config-editor/config-editor.service.js +7 -0
  43. package/dist/modules/config-editor/config-editor.service.js.map +1 -1
  44. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js +1 -1
  45. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js.map +1 -1
  46. package/dist/modules/matter-bridges/matter-bridges.gateway.d.ts +22 -0
  47. package/dist/modules/matter-bridges/matter-bridges.gateway.js +170 -0
  48. package/dist/modules/matter-bridges/matter-bridges.gateway.js.map +1 -0
  49. package/dist/modules/matter-bridges/matter-bridges.interfaces.d.ts +59 -0
  50. package/dist/modules/matter-bridges/matter-bridges.interfaces.js +10 -0
  51. package/dist/modules/matter-bridges/matter-bridges.interfaces.js.map +1 -0
  52. package/dist/modules/matter-bridges/matter-bridges.module.d.ts +2 -0
  53. package/dist/modules/matter-bridges/matter-bridges.module.js +37 -0
  54. package/dist/modules/matter-bridges/matter-bridges.module.js.map +1 -0
  55. package/dist/modules/matter-bridges/matter-bridges.service.d.ts +31 -0
  56. package/dist/modules/matter-bridges/matter-bridges.service.js +146 -0
  57. package/dist/modules/matter-bridges/matter-bridges.service.js.map +1 -0
  58. package/dist/modules/plugins/plugins.service.js +33 -0
  59. package/dist/modules/plugins/plugins.service.js.map +1 -1
  60. package/dist/modules/server/server.controller.d.ts +9 -6
  61. package/dist/modules/server/server.controller.js +33 -2
  62. package/dist/modules/server/server.controller.js.map +1 -1
  63. package/dist/modules/server/server.module.js +1 -1
  64. package/dist/modules/server/server.module.js.map +1 -1
  65. package/dist/modules/status/status.controller.d.ts +1 -1
  66. package/dist/modules/status/status.controller.js +3 -1
  67. package/dist/modules/status/status.controller.js.map +1 -1
  68. package/package.json +3 -2
  69. package/public/assets/hap.svg +6 -0
  70. package/public/assets/matter.svg +8 -0
  71. package/public/{chunk-RI7NDYXE.js → chunk-3EEMCOXX.js} +1 -1
  72. package/public/{chunk-NSQLP4XQ.js → chunk-3SPYAVYC.js} +1 -1
  73. package/public/{chunk-ME745R23.js → chunk-45MRBWTN.js} +1 -1
  74. package/public/{chunk-UOWHL3JS.js → chunk-4THME2AO.js} +1 -1
  75. package/public/{chunk-52HVORSV.js → chunk-5B4RGP7P.js} +1 -1
  76. package/public/chunk-5NHNQSBY.js +1 -0
  77. package/public/{chunk-FNES7NAZ.js → chunk-65BC6OEY.js} +1 -1
  78. package/public/{chunk-KCDVFJER.js → chunk-6UJVBU6Q.js} +1 -1
  79. package/public/{chunk-EACBJMOR.js → chunk-6XONIZJH.js} +1 -1
  80. package/public/chunk-6YMQTAOF.js +19 -0
  81. package/public/{chunk-BYQX2GRS.js → chunk-7GRKHAP7.js} +1 -1
  82. package/public/{chunk-7WOXKKE2.js → chunk-7UFFCHMH.js} +1 -1
  83. package/public/chunk-APXVBISC.js +49 -0
  84. package/public/{chunk-WSKDHSB5.js → chunk-BEUIEMBU.js} +1 -1
  85. package/public/{chunk-WXRQQ5BD.js → chunk-BV3UDQFS.js} +1 -1
  86. package/public/{chunk-R4FPIAYB.js → chunk-C6PVSB3L.js} +1 -1
  87. package/public/{chunk-WBIGPPVT.js → chunk-CEOXBLCW.js} +4 -4
  88. package/public/chunk-CEPCEO3W.js +1 -0
  89. package/public/{chunk-ANSL3J73.js → chunk-CTZDKMFO.js} +1 -1
  90. package/public/chunk-DCOG5S65.js +1 -0
  91. package/public/{chunk-DPCPSYPY.js → chunk-DIZQSD54.js} +1 -1
  92. package/public/chunk-DOUSYB6L.js +1 -0
  93. package/public/{chunk-RV2XRE2D.js → chunk-DWGESJFL.js} +1 -1
  94. package/public/{chunk-AKAZC37X.js → chunk-ECLVDJ5G.js} +1 -1
  95. package/public/{chunk-ILQ7SL7D.js → chunk-EL6RIMGW.js} +2 -2
  96. package/public/{chunk-ARXKMFEX.js → chunk-EO2OFTYL.js} +1 -1
  97. package/public/{chunk-FG3G2643.js → chunk-ERP7Y7CZ.js} +1 -1
  98. package/public/{chunk-KM452HFG.js → chunk-ES2W3HQE.js} +1 -1
  99. package/public/{chunk-V7LEKJVQ.js → chunk-F6BJ5XZH.js} +1 -1
  100. package/public/{chunk-VEV7AY3U.js → chunk-GPG64N53.js} +1 -1
  101. package/public/{chunk-DLCW3FCF.js → chunk-HSE662OB.js} +1 -1
  102. package/public/chunk-IU2R7ORW.js +1 -0
  103. package/public/{chunk-TAQAYILQ.js → chunk-JNGSK3ZR.js} +1 -1
  104. package/public/{chunk-SJJTZODI.js → chunk-JR3E32OK.js} +1 -1
  105. package/public/chunk-K3CI5ZO2.js +1 -0
  106. package/public/{chunk-ALRENZKI.js → chunk-KPR57544.js} +1 -1
  107. package/public/chunk-L74KRCJX.js +1 -0
  108. package/public/{chunk-F4ZBFEVD.js → chunk-LIZOYLJA.js} +1 -1
  109. package/public/{chunk-6XQFII2E.js → chunk-LPC6ZQZT.js} +1 -1
  110. package/public/{chunk-XUR2KE5E.js → chunk-M6BP6HSJ.js} +1 -1
  111. package/public/{chunk-NGSNZWF2.js → chunk-MD6P4NXL.js} +1 -1
  112. package/public/{chunk-LI3GXABA.js → chunk-OAZVGJPO.js} +1 -1
  113. package/public/{chunk-BSXL4VI2.js → chunk-OHIFXMDK.js} +1 -1
  114. package/public/chunk-OR5TLS5G.js +1 -0
  115. package/public/{chunk-M3XBSZDS.js → chunk-Q62OVHKR.js} +1 -1
  116. package/public/{chunk-5GPAOI75.js → chunk-QZCKU4E6.js} +1 -1
  117. package/public/{chunk-I3CM52HA.js → chunk-RX2M2DUA.js} +1 -1
  118. package/public/{chunk-66FBS25N.js → chunk-S3ACQCZH.js} +1 -1
  119. package/public/{chunk-NO6P5533.js → chunk-S3PEAO7D.js} +1 -1
  120. package/public/{chunk-TSJSYPRO.js → chunk-S6YTOEAT.js} +1 -1
  121. package/public/{chunk-AK5OP2BS.js → chunk-SGO34VYC.js} +1 -1
  122. package/public/{chunk-DJ6PGGNV.js → chunk-SO2Y7JSS.js} +1 -1
  123. package/public/chunk-SPH2NNMZ.js +4 -0
  124. package/public/{chunk-QOZ5D7SF.js → chunk-SXS3TPZP.js} +1 -1
  125. package/public/{chunk-JPRQZUJ4.js → chunk-TTXUZ63M.js} +1 -1
  126. package/public/{chunk-N45RSOWT.js → chunk-TXXOGRVJ.js} +1 -1
  127. package/public/{chunk-DQZAZG2F.js → chunk-U6DDIXEG.js} +1 -1
  128. package/public/chunk-UTUB67Y5.js +1 -0
  129. package/public/{chunk-ZQRDEGPP.js → chunk-UXTKBDMZ.js} +1 -1
  130. package/public/chunk-V5XBUXNN.js +1 -0
  131. package/public/chunk-VQGLVRRI.js +1 -0
  132. package/public/{chunk-UG5ZE6JE.js → chunk-WCZ6FM7L.js} +1 -1
  133. package/public/{chunk-P4SNIDEK.js → chunk-WTQ5JBLR.js} +1 -1
  134. package/public/{chunk-LVANZD6P.js → chunk-XEJOPOUU.js} +1 -1
  135. package/public/{chunk-2HHIHTIF.js → chunk-XG7WXUZ2.js} +1 -1
  136. package/public/chunk-Z2GZQLTV.js +16 -0
  137. package/public/{chunk-A2TKBIDM.js → chunk-ZU4Z7GGL.js} +1 -1
  138. package/public/index.html +2 -2
  139. package/public/main-JRFJSFGM.js +1 -0
  140. package/public/media/hap-24356SU3.svg +6 -0
  141. package/public/media/matter-P563JGDL.svg +8 -0
  142. package/public/{styles-BYCPUTDK.css → styles-AQTMFMEL.css} +1 -1
  143. package/public/chunk-EB6MB2VJ.js +0 -1
  144. package/public/chunk-EFVV2S7X.js +0 -1
  145. package/public/chunk-FS5CQPMN.js +0 -1
  146. package/public/chunk-H5PLA5CN.js +0 -1
  147. package/public/chunk-I4JRMIU7.js +0 -1
  148. package/public/chunk-IZZICZHP.js +0 -1
  149. package/public/chunk-OLVQZBFA.js +0 -1
  150. package/public/chunk-Q7ANBLGJ.js +0 -4
  151. package/public/chunk-RXHQ7R2N.js +0 -1
  152. package/public/chunk-S36VYQXO.js +0 -16
  153. package/public/chunk-TJFT4ETV.js +0 -19
  154. package/public/chunk-VWQULADU.js +0 -1
  155. package/public/chunk-XCHKRI2H.js +0 -1
  156. package/public/chunk-XNQ5LBVZ.js +0 -49
  157. package/public/chunk-XPFXM5HW.js +0 -1
  158. package/public/main-LAB4VW6X.js +0 -1
@@ -0,0 +1 @@
1
+ import{b as D}from"./chunk-V5XBUXNN.js";import{p as h,q as S}from"./chunk-K3CI5ZO2.js";import{C as T,Xa as E,bd as j,ea as d,fa as y,h as a,ha as v,ia as l,ja as p,r as f,ta as I,w as c,x as k,z as w}from"./chunk-CEOXBLCW.js";var g=new v("JWT_OPTIONS"),m=(()=>{class o{constructor(e=null){this.tokenGetter=e&&e.tokenGetter||function(){}}urlBase64Decode(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:{t+="==";break}case 3:{t+="=";break}default:throw new Error("Illegal base64url string!")}return this.b64DecodeUnicode(t)}b64decode(e){let t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",i="";if(e=String(e).replace(/=+$/,""),e.length%4===1)throw new Error("'atob' failed: The string to be decoded is not correctly encoded.");for(let r=0,s,n,x=0;n=e.charAt(x++);~n&&(s=r%4?s*64+n:n,r++%4)?i+=String.fromCharCode(255&s>>(-2*r&6)):0)n=t.indexOf(n);return i}b64DecodeUnicode(e){return decodeURIComponent(Array.prototype.map.call(this.b64decode(e),t=>"%"+("00"+t.charCodeAt(0).toString(16)).slice(-2)).join(""))}decodeToken(e=this.tokenGetter()){return e instanceof Promise?e.then(t=>this._decodeToken(t)):this._decodeToken(e)}_decodeToken(e){if(!e||e==="")return null;let t=e.split(".");if(t.length!==3)throw new Error("The inspected token doesn't appear to be a JWT. Check to make sure it has three parts and see https://jwt.io for more.");let i=this.urlBase64Decode(t[1]);if(!i)throw new Error("Cannot decode the token.");return JSON.parse(i)}getTokenExpirationDate(e=this.tokenGetter()){return e instanceof Promise?e.then(t=>this._getTokenExpirationDate(t)):this._getTokenExpirationDate(e)}_getTokenExpirationDate(e){let t;if(t=this.decodeToken(e),!t||!t.hasOwnProperty("exp"))return null;let i=new Date(0);return i.setUTCSeconds(t.exp),i}isTokenExpired(e=this.tokenGetter(),t){return e instanceof Promise?e.then(i=>this._isTokenExpired(i,t)):this._isTokenExpired(e,t)}_isTokenExpired(e,t){if(!e||e==="")return!0;let i=this.getTokenExpirationDate(e);return t=t||0,i===null?!1:!(i.valueOf()>new Date().valueOf()+t*1e3)}getAuthScheme(e,t){return typeof e=="function"?e(t):e}}return o.\u0275fac=function(e){return new(e||o)(l(g))},o.\u0275prov=d({token:o,factory:o.\u0275fac}),o})(),$=o=>o instanceof Promise?T(()=>o):f(o),b=(()=>{class o{constructor(e,t,i){this.jwtHelper=t,this.document=i,this.standardPorts=["80","443"],this.tokenGetter=e.tokenGetter,this.headerName=e.headerName||"Authorization",this.authScheme=e.authScheme||e.authScheme===""?e.authScheme:"Bearer ",this.allowedDomains=e.allowedDomains||[],this.disallowedRoutes=e.disallowedRoutes||[],this.throwNoTokenError=e.throwNoTokenError||!1,this.skipWhenExpired=e.skipWhenExpired}isAllowedDomain(e){let t=new URL(e.url,this.document.location.origin);if(t.host===this.document.location.host)return!0;let i=`${t.hostname}${t.port&&!this.standardPorts.includes(t.port)?":"+t.port:""}`;return this.allowedDomains.findIndex(r=>typeof r=="string"?r===i:r instanceof RegExp?r.test(i):!1)>-1}isDisallowedRoute(e){let t=new URL(e.url,this.document.location.origin);return this.disallowedRoutes.findIndex(i=>{if(typeof i=="string"){let r=new URL(i,this.document.location.origin);return r.hostname===t.hostname&&r.pathname===t.pathname}return i instanceof RegExp?i.test(e.url):!1})>-1}handleInterception(e,t,i){let r=this.jwtHelper.getAuthScheme(this.authScheme,t);if(!e&&this.throwNoTokenError)throw new Error("Could not get token from tokenGetter function.");let s=f(!1);return this.skipWhenExpired&&(s=e?$(this.jwtHelper.isTokenExpired(e)):f(!0)),e?s.pipe(k(n=>n&&this.skipWhenExpired?t.clone():t.clone({setHeaders:{[this.headerName]:`${r}${e}`}})),w(n=>i.handle(n))):i.handle(t)}intercept(e,t){if(!this.isAllowedDomain(e)||this.isDisallowedRoute(e))return t.handle(e);let i=this.tokenGetter(e);return $(i).pipe(w(r=>this.handleInterception(r,e,t)))}}return o.\u0275fac=function(e){return new(e||o)(l(g),l(m),l(I))},o.\u0275prov=d({token:o,factory:o.\u0275fac}),o})(),U=(()=>{class o{constructor(e){if(e)throw new Error("JwtModule is already loaded. It should only be imported in your application's main module.")}static forRoot(e){return{ngModule:o,providers:[{provide:j,useClass:b,multi:!0},e.jwtOptionsProvider||{provide:g,useValue:e.config},m]}}}return o.\u0275fac=function(e){return new(e||o)(l(o,12))},o.\u0275mod=E({type:o}),o.\u0275inj=y({}),o})();var X=(()=>{class o{$api=p(S);$jwtHelper=p(m);$settings=p(D);token;user={};logoutTimer;lastRefreshTime=Date.now();isRefreshing=!1;constructor(){this.loadToken()}login(e){return a(this,null,function*(){let t=yield c(this.$api.post("/auth/login",e));if(!this.validateToken(t.access_token))throw new Error("Invalid username or password.");window.localStorage.setItem(h.jwt.tokenKey,t.access_token),yield this.$settings.getAppSettings()})}noauth(){return a(this,null,function*(){let e=yield c(this.$api.post("/auth/noauth",{}));if(this.validateToken(e.access_token))window.localStorage.setItem(h.jwt.tokenKey,e.access_token),yield this.$settings.getAppSettings();else throw new Error("Invalid username or password.")})}logout(){this.user=null,this.token=null,clearTimeout(this.logoutTimer),window.localStorage.removeItem(h.jwt.tokenKey),window.location.reload()}loadToken(){return a(this,null,function*(){this.$settings.settingsLoaded||(yield c(this.$settings.onSettingsLoaded));let e=window.localStorage.getItem(h.jwt.tokenKey);e&&this.validateToken(e)})}checkToken(){return a(this,null,function*(){try{return yield c(this.$api.get("/auth/check"))}catch(e){e.status===401&&(console.error("Current token is not valid"),this.logout())}})}isLoggedIn(){return this.$settings.env.instanceId!==this.user.instanceId?(console.error("Token does not match instance"),!1):this.user&&this.token&&!this.$jwtHelper.isTokenExpired(this.token,this.$settings.serverTimeOffset)}validateToken(e){try{return this.$jwtHelper.isTokenExpired(e,this.$settings.serverTimeOffset)&&this.logout(),this.user=this.$jwtHelper.decodeToken(e),this.token=e,this.setLogoutTimer(),!0}catch{return window.localStorage.removeItem(h.jwt.tokenKey),this.token=null,!1}}setLogoutTimer(){if(clearTimeout(this.logoutTimer),!this.$jwtHelper.isTokenExpired(this.token,this.$settings.serverTimeOffset)){let e=this.$settings.sessionTimeout*1e3;e<=2147483647&&(this.logoutTimer=setTimeout(()=>a(this,null,function*(){this.$settings.formAuth===!1?(yield this.noauth(),window.location.reload()):this.logout()}),e))}}checkAndRefreshIfNeeded(){return a(this,null,function*(){if(!this.$settings.formAuth||!this.$settings.sessionTimeoutInactivityBased||!this.token||!this.isLoggedIn()||this.isRefreshing)return;let t=Date.now()-this.lastRefreshTime,r=this.$settings.sessionTimeout*1e3*.7;if(t>r)try{yield this.refreshSession()}catch(s){console.error("Failed to refresh session:",s)}})}refreshSession(){return a(this,null,function*(){if(!this.isRefreshing){this.isRefreshing=!0;try{let e=yield c(this.$api.post("/auth/refresh",{}));e.access_token&&(this.token=e.access_token,window.localStorage.setItem(h.jwt.tokenKey,e.access_token),this.lastRefreshTime=Date.now(),this.setLogoutTimer())}finally{this.isRefreshing=!1}}})}static \u0275fac=function(t){return new(t||o)};static \u0275prov=d({token:o,factory:o.\u0275fac})}return o})();export{U as a,X as b};
@@ -1 +1 @@
1
- import{g as r}from"./chunk-FG3G2643.js";import{Xa as e,fa as t}from"./chunk-WBIGPPVT.js";var m=[{path:"",loadComponent:()=>import("./chunk-JPRQZUJ4.js").then(o=>o.PowerOptionsComponent)}],n=(()=>{class o{static \u0275fac=function(i){return new(i||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[r.forChild(m),r]})}return o})();var d=(()=>{class o{static \u0275fac=function(i){return new(i||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[n]})}return o})();export{d as PowerOptionsModule};
1
+ import{g as r}from"./chunk-ERP7Y7CZ.js";import{Xa as e,fa as t}from"./chunk-CEOXBLCW.js";var m=[{path:"",loadComponent:()=>import("./chunk-TTXUZ63M.js").then(o=>o.PowerOptionsComponent)}],n=(()=>{class o{static \u0275fac=function(i){return new(i||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[r.forChild(m),r]})}return o})();var d=(()=>{class o{static \u0275fac=function(i){return new(i||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[n]})}return o})();export{d as PowerOptionsModule};