homebridge-config-ui-x 5.0.0-beta.95 → 5.0.0-beta.97
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.
- package/CHANGELOG.md +2 -1
- package/dist/core/auth/auth.controller.d.ts +1 -0
- package/dist/core/config/config.service.d.ts +1 -0
- package/dist/core/config/config.service.js +3 -2
- package/dist/core/config/config.service.js.map +1 -1
- package/dist/modules/config-editor/config-editor.service.js +12 -5
- package/dist/modules/config-editor/config-editor.service.js.map +1 -1
- package/dist/modules/plugins/plugins.service.d.ts +3 -0
- package/dist/modules/plugins/plugins.service.js +79 -58
- package/dist/modules/plugins/plugins.service.js.map +1 -1
- package/package.json +5 -5
- package/public/3rdpartylicenses.txt +1 -1
- package/public/{chunk-6HG5ZIJZ.js → chunk-2ELWFZJD.js} +1 -1
- package/public/{chunk-2UZ3DGCS.js → chunk-2UFQASZ2.js} +1 -1
- package/public/{chunk-BH42U3ZP.js → chunk-34Z4PFYT.js} +1 -1
- package/public/{chunk-ZX2LNDUS.js → chunk-37YJS55J.js} +1 -1
- package/public/{chunk-Y4WIDXYT.js → chunk-3CWHRW37.js} +1 -1
- package/public/{chunk-RT5TDUQE.js → chunk-3MANUCZ3.js} +2 -2
- package/public/{chunk-VPJJADMG.js → chunk-3PFJ22NU.js} +1 -1
- package/public/{chunk-VDQDNW2M.js → chunk-5MSVIB5Z.js} +1 -1
- package/public/{chunk-GILKOZTS.js → chunk-65T4ZTCQ.js} +1 -1
- package/public/{chunk-BTXDB6FJ.js → chunk-6B3NCX43.js} +1 -1
- package/public/chunk-76GF4H3H.js +1 -0
- package/public/{chunk-LAHDNKWT.js → chunk-7I2GRFZH.js} +1 -1
- package/public/{chunk-X7T4IRJQ.js → chunk-7PNHYHV7.js} +1 -1
- package/public/{chunk-NFLLA6MY.js → chunk-7RPS7DSH.js} +1 -1
- package/public/{chunk-C4N6SRIO.js → chunk-B6CA2R3V.js} +1 -1
- package/public/{chunk-IG2AKHQK.js → chunk-CB25GBQF.js} +1 -1
- package/public/{chunk-DYVNP6KC.js → chunk-CWVLT2G3.js} +1 -1
- package/public/chunk-D44OX2UG.js +1 -0
- package/public/chunk-D5GUVPO6.js +1 -0
- package/public/{chunk-RKKSDIKY.js → chunk-DJN4Y4T7.js} +1 -1
- package/public/chunk-F6VSLJSN.js +1 -0
- package/public/{chunk-PF2DX5BY.js → chunk-FRVXZABY.js} +1 -1
- package/public/chunk-FSGH2SG6.js +1 -0
- package/public/chunk-GM4SW7UF.js +1 -0
- package/public/{chunk-WHFX5U2E.js → chunk-HLL5NPXC.js} +1 -1
- package/public/chunk-J6FYKY2Q.js +1 -0
- package/public/chunk-JAJTI6OX.js +1 -0
- package/public/chunk-KQHO4BZC.js +1 -0
- package/public/chunk-L5SAR2D4.js +1 -0
- package/public/{chunk-25Y6DNFE.js → chunk-LDEYVTVG.js} +1 -1
- package/public/{chunk-NRSO52TO.js → chunk-M2PFTDZV.js} +1 -1
- package/public/chunk-MJJQBCJZ.js +1 -0
- package/public/{chunk-3PGSDB3F.js → chunk-MO3AYLTY.js} +1 -1
- package/public/{chunk-RASVDVL7.js → chunk-MVU3JOFU.js} +1 -1
- package/public/{chunk-L7N3V5L5.js → chunk-NHXIP62E.js} +1 -1
- package/public/{chunk-4VL6LSWS.js → chunk-NI44TNVQ.js} +1 -1
- package/public/{chunk-66IATR6I.js → chunk-NNOAVRPY.js} +1 -1
- package/public/{chunk-KVY747PD.js → chunk-NS5INH2I.js} +1 -1
- package/public/chunk-OIJBS35T.js +8 -0
- package/public/{chunk-4AOC5OOU.js → chunk-PYQ7DHWH.js} +1 -1
- package/public/{chunk-4GPJON4A.js → chunk-Q5OQYAFD.js} +1 -1
- package/public/chunk-RN72DBK5.js +1 -0
- package/public/{chunk-LGUBF6H5.js → chunk-S7F5CHVZ.js} +1 -1
- package/public/{chunk-WZYUZEIG.js → chunk-SHVZFIGH.js} +1 -1
- package/public/{chunk-CAEZJZWV.js → chunk-VNXOE76Y.js} +1 -1
- package/public/{chunk-JOQTNEBB.js → chunk-VW232OBB.js} +1 -1
- package/public/{chunk-AADWU4HY.js → chunk-WCCTXH5R.js} +1 -1
- package/public/{chunk-KSN3PYKT.js → chunk-WDR6ZPZD.js} +1 -1
- package/public/{chunk-YEIHNXW4.js → chunk-WEGBSZKG.js} +1 -1
- package/public/{chunk-WGJ4IJNG.js → chunk-WJZJQTJJ.js} +16 -16
- package/public/{chunk-SFSUUULY.js → chunk-WV32N7CI.js} +1 -1
- package/public/{chunk-KQCD4CTA.js → chunk-XKDCB6F6.js} +1 -1
- package/public/{chunk-3HAWNNNX.js → chunk-YNQX6Z3S.js} +1 -1
- package/public/chunk-YWZLAJA6.js +6 -0
- package/public/{chunk-QJFBY7G5.js → chunk-ZCFZH3JS.js} +1 -1
- package/public/{chunk-HB3XUFAS.js → chunk-ZDKUQJ66.js} +1 -1
- package/public/chunk-ZNXQSYNW.js +1 -0
- package/public/chunk-ZZUYZV5X.js +1 -0
- package/public/index.html +1 -1
- package/public/main-4ZF4AH4D.js +1 -0
- package/public/chunk-2R3QL3ND.js +0 -1
- package/public/chunk-BHKS5UNJ.js +0 -1
- package/public/chunk-DQAZQVOH.js +0 -8
- package/public/chunk-GY5AGPN3.js +0 -1
- package/public/chunk-H5LHT57Z.js +0 -1
- package/public/chunk-H6URVYLZ.js +0 -1
- package/public/chunk-JXWRC3ZV.js +0 -1
- package/public/chunk-KOUG2ZEC.js +0 -6
- package/public/chunk-MMW64Q7X.js +0 -1
- package/public/chunk-NEYQJU3Y.js +0 -1
- package/public/chunk-NPV2N36R.js +0 -1
- package/public/chunk-OEYJ6IMP.js +0 -1
- package/public/chunk-OO6HBGG6.js +0 -1
- package/public/chunk-PIHI6FF5.js +0 -1
- package/public/chunk-VNEK3UBP.js +0 -1
- package/public/chunk-XGTBNVAX.js +0 -1
- package/public/main-JQMN52UF.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as l,b as a,c as u,d as C,e as g,f as M,g as R}from"./chunk-
|
|
1
|
+
import{a as l,b as a,c as u,d as C,e as g,f as M,g as R}from"./chunk-D44OX2UG.js";import{a as c}from"./chunk-2ELWFZJD.js";import{a as d}from"./chunk-SHVZFIGH.js";import"./chunk-GPMWD6WO.js";import"./chunk-VBT67TSB.js";import{q as s}from"./chunk-2EMPNH2X.js";import{A as p,z as n}from"./chunk-EJ3RNOUF.js";import{g as m}from"./chunk-ZOLUFCSO.js";import"./chunk-WEGBSZKG.js";import"./chunk-YNQX6Z3S.js";import"./chunk-JAJTI6OX.js";import"./chunk-5MSVIB5Z.js";import"./chunk-FDPTBVVC.js";import{c as f}from"./chunk-GOW5VSYJ.js";import{ha as t,kd as i,mb as e}from"./chunk-NR37MAXW.js";var S=[{path:"",loadComponent:()=>import("./chunk-LDEYVTVG.js").then(o=>o.SettingsComponent),canActivate:[c]}],A=(()=>{class o{static \u0275fac=function(r){return new(r||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[m.forChild(S),m]})}return o})();var P=(()=>{class o{static \u0275fac=function(r){return new(r||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[i,n,p,f,s,A,R,l,C,u,d,g,a,M]})}return o})();export{P as SettingsModule};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{g as i}from"./chunk-ZOLUFCSO.js";import"./chunk-FDPTBVVC.js";import{ha as t,kd as l,mb as e}from"./chunk-NR37MAXW.js";var d=[{path:"",redirectTo:"/",pathMatch:"full"},{path:"docker",loadChildren:()=>import("./chunk-
|
|
1
|
+
import{g as i}from"./chunk-ZOLUFCSO.js";import"./chunk-FDPTBVVC.js";import{ha as t,kd as l,mb as e}from"./chunk-NR37MAXW.js";var d=[{path:"",redirectTo:"/",pathMatch:"full"},{path:"docker",loadChildren:()=>import("./chunk-NHXIP62E.js").then(o=>o.DockerModule)},{path:"linux",loadChildren:()=>import("./chunk-6B3NCX43.js").then(o=>o.LinuxModule)},{path:"terminal",loadChildren:()=>import("./chunk-3CWHRW37.js").then(o=>o.TerminalModule)}],n=(()=>{class o{static \u0275fac=function(r){return new(r||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[i.forChild(d),i]})}return o})();var s=(()=>{class o{static \u0275fac=function(r){return new(r||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[l,n]})}return o})();export{s as PlatformToolsModule};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as _,b as D}from"./chunk-
|
|
1
|
+
import{a as _,b as D}from"./chunk-JAJTI6OX.js";import{m as c,n as S}from"./chunk-5MSVIB5Z.js";import{f as x}from"./chunk-FDPTBVVC.js";import{C as v,g as O,ga as h,h as a,ha as E,ja as y,ka as l,la as f,mb as I,r as p,va as j,w as d,x as T,z as w}from"./chunk-NR37MAXW.js";var g=new y("JWT_OPTIONS"),m=(()=>{class r{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+/=",o="";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 i=0,s,n,b=0;n=e.charAt(b++);~n&&(s=i%4?s*64+n:n,i++%4)?o+=String.fromCharCode(255&s>>(-2*i&6)):0)n=t.indexOf(n);return o}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 o=this.urlBase64Decode(t[1]);if(!o)throw new Error("Cannot decode the token.");return JSON.parse(o)}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 o=new Date(0);return o.setUTCSeconds(t.exp),o}isTokenExpired(e=this.tokenGetter(),t){return e instanceof Promise?e.then(o=>this._isTokenExpired(o,t)):this._isTokenExpired(e,t)}_isTokenExpired(e,t){if(!e||e==="")return!0;let o=this.getTokenExpirationDate(e);return t=t||0,o===null?!1:!(o.valueOf()>new Date().valueOf()+t*1e3)}getAuthScheme(e,t){return typeof e=="function"?e(t):e}}return r.\u0275fac=function(e){return new(e||r)(l(g))},r.\u0275prov=h({token:r,factory:r.\u0275fac}),r})(),$=r=>r instanceof Promise?v(()=>r):p(r),R=(()=>{class r{constructor(e,t,o){this.jwtHelper=t,this.document=o,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 o=`${t.hostname}${t.port&&!this.standardPorts.includes(t.port)?":"+t.port:""}`;return this.allowedDomains.findIndex(i=>typeof i=="string"?i===o:i instanceof RegExp?i.test(o):!1)>-1}isDisallowedRoute(e){let t=new URL(e.url,this.document.location.origin);return this.disallowedRoutes.findIndex(o=>{if(typeof o=="string"){let i=new URL(o,this.document.location.origin);return i.hostname===t.hostname&&i.pathname===t.pathname}return o instanceof RegExp?o.test(e.url):!1})>-1}handleInterception(e,t,o){let i=this.jwtHelper.getAuthScheme(this.authScheme,t);if(!e&&this.throwNoTokenError)throw new Error("Could not get token from tokenGetter function.");let s=p(!1);return this.skipWhenExpired&&(s=e?$(this.jwtHelper.isTokenExpired(e)):p(!0)),e?s.pipe(T(n=>n&&this.skipWhenExpired?t.clone():t.clone({setHeaders:{[this.headerName]:`${i}${e}`}})),w(n=>o.handle(n))):o.handle(t)}intercept(e,t){if(!this.isAllowedDomain(e)||this.isDisallowedRoute(e))return t.handle(e);let o=this.tokenGetter(e);return $(o).pipe(w(i=>this.handleInterception(i,e,t)))}}return r.\u0275fac=function(e){return new(e||r)(l(g),l(m),l(j))},r.\u0275prov=h({token:r,factory:r.\u0275fac}),r})(),F=(()=>{class r{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:r,providers:[{provide:x,useClass:R,multi:!0},e.jwtOptionsProvider||{provide:g,useValue:e.config},m]}}}return r.\u0275fac=function(e){return new(e||r)(l(r,12))},r.\u0275mod=I({type:r}),r.\u0275inj=E({}),r})();var k=O(_(),1);var q=(()=>{class r{$api=f(S);$jwtHelper=f(m);$settings=f(D);token;user={};logoutTimer;constructor(){this.loadToken()}login(e){return a(this,null,function*(){let t=yield d(this.$api.post("/auth/login",e));if(!this.validateToken(t.access_token))throw new Error("Invalid username or password.");window.localStorage.setItem(c.jwt.tokenKey,t.access_token),yield this.$settings.getAppSettings()})}noauth(){return a(this,null,function*(){let e=yield d(this.$api.post("/auth/noauth",{}));if(this.validateToken(e.access_token))window.localStorage.setItem(c.jwt.tokenKey,e.access_token),yield this.$settings.getAppSettings();else throw new Error("Invalid username or password.")})}logout(){this.user=null,this.token=null,window.localStorage.removeItem(c.jwt.tokenKey),window.location.reload()}loadToken(){return a(this,null,function*(){this.$settings.settingsLoaded||(yield d(this.$settings.onSettingsLoaded));let e=window.localStorage.getItem(c.jwt.tokenKey);e&&this.validateToken(e)})}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(c.jwt.tokenKey),this.token=null,!1}}checkToken(){return a(this,null,function*(){try{return yield d(this.$api.get("/auth/check"))}catch(e){e.status===401&&(console.error("Current token is not valid"),this.logout())}})}setLogoutTimer(){if(clearTimeout(this.logoutTimer),!this.$jwtHelper.isTokenExpired(this.token,this.$settings.serverTimeOffset)){let t=(0,k.default)(this.$jwtHelper.getTokenExpirationDate(this.token)).diff((0,k.default)().add(this.$settings.serverTimeOffset,"s"),"millisecond");t<=2147483647&&(this.logoutTimer=setTimeout(()=>a(this,null,function*(){this.$settings.formAuth===!1?(yield this.noauth(),window.location.reload()):this.logout()}),t))}}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)}static \u0275fac=function(t){return new(t||r)};static \u0275prov=h({token:r,factory:r.\u0275fac})}return r})();export{m as a,F as b,q as c};
|