homebridge-config-ui-x 4.63.0 → 5.0.0-beta.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 (71) hide show
  1. package/CHANGELOG.md +46 -5
  2. package/config.schema.json +1 -0
  3. package/dist/bin/hb-service.js +1 -7
  4. package/dist/bin/hb-service.js.map +1 -1
  5. package/dist/bin/platforms/darwin.js +23 -35
  6. package/dist/bin/platforms/darwin.js.map +1 -1
  7. package/dist/bin/platforms/linux.js +20 -34
  8. package/dist/bin/platforms/linux.js.map +1 -1
  9. package/dist/core/auth/auth.controller.d.ts +0 -1
  10. package/dist/core/config/config.service.d.ts +0 -2
  11. package/dist/core/config/config.service.js +0 -2
  12. package/dist/core/config/config.service.js.map +1 -1
  13. package/dist/modules/plugins/plugins.service.d.ts +9 -10
  14. package/dist/modules/plugins/plugins.service.js +71 -46
  15. package/dist/modules/plugins/plugins.service.js.map +1 -1
  16. package/dist/modules/status/status.gateway.d.ts +2 -5
  17. package/dist/modules/status/status.gateway.js +2 -28
  18. package/dist/modules/status/status.gateway.js.map +1 -1
  19. package/dist/modules/status/status.service.d.ts +1 -0
  20. package/dist/modules/status/status.service.js +5 -7
  21. package/dist/modules/status/status.service.js.map +1 -1
  22. package/dist/self-check.js +4 -12
  23. package/dist/self-check.js.map +1 -1
  24. package/package.json +4 -9
  25. package/public/chunk-3KSUXL3K.js +20 -0
  26. package/public/{chunk-SXAWP4QF.js → chunk-422JXES4.js} +1 -1
  27. package/public/{chunk-VDTNNTX2.js → chunk-4R6MSI5I.js} +1 -1
  28. package/public/{chunk-4VTTWHHL.js → chunk-5UYN5OWH.js} +1 -1
  29. package/public/{chunk-AU5G3BVJ.js → chunk-6QEO3BTW.js} +1 -1
  30. package/public/{chunk-FHXSXVSD.js → chunk-7564WJJL.js} +1 -1
  31. package/public/{chunk-MD2LKTX2.js → chunk-7R6JSPNH.js} +1 -1
  32. package/public/{chunk-GCBIN3BZ.js → chunk-B6C32ZRK.js} +1 -1
  33. package/public/{chunk-MYOOAGZ7.js → chunk-B6G7GTDI.js} +1 -1
  34. package/public/{chunk-A7KY6MAW.js → chunk-BQLALGZ5.js} +1 -1
  35. package/public/{chunk-TLJQR7GW.js → chunk-BROUJ7PT.js} +1 -1
  36. package/public/{chunk-4OEIPK6B.js → chunk-C4OONTE3.js} +1 -1
  37. package/public/{chunk-HWMIXXWR.js → chunk-DOLYKWZH.js} +1 -1
  38. package/public/{chunk-H3ASY46R.js → chunk-DRWF7R4E.js} +1 -1
  39. package/public/{chunk-YCUV4ZTO.js → chunk-F22FMU37.js} +1 -1
  40. package/public/{chunk-753ABYT7.js → chunk-FBP5C7VG.js} +1 -1
  41. package/public/{chunk-W75IQVVC.js → chunk-FPOZAQLC.js} +1 -1
  42. package/public/{chunk-7QKEKEAJ.js → chunk-GNQUXZMN.js} +1 -1
  43. package/public/chunk-IGUSDGD6.js +8 -0
  44. package/public/{chunk-K343FEZX.js → chunk-JM7QCDMZ.js} +1 -1
  45. package/public/{chunk-7T2EEIVD.js → chunk-K3YXRBTH.js} +1 -1
  46. package/public/{chunk-NG7QY7UH.js → chunk-K6TZNXIW.js} +1 -1
  47. package/public/{chunk-BQVZQ5VX.js → chunk-LS7T2AVU.js} +1 -1
  48. package/public/{chunk-7MWYYMRO.js → chunk-NZPTOWFC.js} +1 -1
  49. package/public/{chunk-5ATXV5LK.js → chunk-RID7V4NP.js} +1 -1
  50. package/public/{chunk-4S2ZV5SB.js → chunk-RIWBPQF3.js} +1 -1
  51. package/public/chunk-S4SOWUAW.js +1 -0
  52. package/public/{chunk-H4GRUHC6.js → chunk-SJTXTMYT.js} +1 -1
  53. package/public/{chunk-GAKIVDIC.js → chunk-T5QVI4H2.js} +1 -1
  54. package/public/{chunk-6TKWYL3O.js → chunk-TBJQ2Y3M.js} +1 -1
  55. package/public/{chunk-46QIUWKL.js → chunk-THFLPY67.js} +1 -1
  56. package/public/{chunk-FQZPJTDM.js → chunk-TS27NWVA.js} +1 -1
  57. package/public/{chunk-AZLQQM4X.js → chunk-VROGSJLF.js} +1 -1
  58. package/public/chunk-VVILZWTF.js +1 -0
  59. package/public/{chunk-L27ILYMM.js → chunk-WCDFKYP6.js} +1 -1
  60. package/public/{chunk-SXBKAANV.js → chunk-WCQIGCXO.js} +1 -1
  61. package/public/chunk-Z47RP4BH.js +1 -0
  62. package/public/{chunk-UFBNFHDQ.js → chunk-ZEONO5N6.js} +1 -1
  63. package/public/index.html +2 -2
  64. package/public/main-VTRWQ63R.js +6 -0
  65. package/public/{styles-KB74XXJT.css → styles-7ETWN6DQ.css} +1 -1
  66. package/public/chunk-3NQEXKA4.js +0 -8
  67. package/public/chunk-643PTHKL.js +0 -17
  68. package/public/chunk-7COUXZR3.js +0 -1
  69. package/public/chunk-DOXG4MVV.js +0 -1
  70. package/public/chunk-NVLTF77N.js +0 -1
  71. package/public/main-OQXSK5YY.js +0 -6
@@ -1 +1 @@
1
- import{a as re}from"./chunk-4VTTWHHL.js";import{f as ae}from"./chunk-SXAWP4QF.js";import{a as se}from"./chunk-UFBNFHDQ.js";import"./chunk-46QIUWKL.js";import"./chunk-FHXSXVSD.js";import"./chunk-FQZPJTDM.js";import"./chunk-MD2LKTX2.js";import"./chunk-K343FEZX.js";import{c as L}from"./chunk-4S2ZV5SB.js";import{N as ne,Q as oe,c as K,d as C,e as J,f as Q,g as X,j as M,m as Y,p as Z,q as ee,y as te,z as ie}from"./chunk-L27ILYMM.js";import{b as U,c as H,k as A,m as q}from"./chunk-7COUXZR3.js";import{a as W,b as G,c as D}from"./chunk-YCUV4ZTO.js";import{$ as B,Ga as z,La as m,Ob as V,Qb as O,Ua as o,Va as l,Wa as f,X as k,Za as I,_b as R,aa as F,ab as b,bb as _,h as s,ha as v,i as y,ia as x,jb as p,kb as u,lb as w,mc as j,sc as N,t as S,ub as P,uc as T,vb as $,wa as n,xa as h,xb as c,yb as d}from"./chunk-3NQEXKA4.js";var E=(e,a)=>({"is-valid":e,"is-invalid":a}),ge=e=>({"button-loading":e});function _e(e,a){if(e&1){let t=I();o(0,"div",3),f(1,"img",4),o(2,"h3",5),p(3),c(4,"translate"),l(),o(5,"button",6),b("click",function(){v(t);let r=_();return x(r.onClickGettingStarted())}),p(6),c(7,"translate"),l(),o(8,"small",7)(9,"a",8),b("click",function(){v(t);let r=_();return x(r.onClickRestoreBackup())}),p(10),c(11,"translate"),l()()()}e&2&&(n(3),u(d(4,3,"setup.welcome_to_homebridge")),n(3),w(" ",d(7,5,"setup.button_get_started")," "),n(4),u(d(11,7,"setup_wizard_message_restore")))}function he(e,a){if(e&1){let t=I();o(0,"div",3),f(1,"img",9),o(2,"h3",5),p(3),c(4,"translate"),l(),o(5,"div",10)(6,"p"),p(7),c(8,"translate"),l(),o(9,"form",11),b("ngSubmit",function(){v(t);let r=_();return x(r.createFirstUser())}),o(10,"div",12),f(11,"i",13)(12,"input",14),o(13,"label",15),p(14),c(15,"translate"),l()(),o(16,"div",12),f(17,"i",16)(18,"input",17),o(19,"label",18),p(20),c(21,"translate"),l()(),o(22,"div",12),f(23,"i",16)(24,"input",19),o(25,"label",20),p(26),c(27,"translate"),l()(),o(28,"div",21)(29,"button",22),p(30),c(31,"translate"),f(32,"i",23),l()()()()()}if(e&2){let t=_();n(3),u(d(4,15,"setup.create_account")),n(4),u(d(8,17,"setup.create_account_reason")),n(2),m("formGroup",t.createUserForm),n(3),m("readonly",t.loading)("ngClass",$(27,E,t.createUserForm.controls.username.dirty&&t.createUserForm.controls.username.valid,t.createUserForm.controls.username.dirty&&t.createUserForm.controls.username.invalid)),n(2),u(d(15,19,"users.label_username")),n(4),m("readonly",t.loading)("ngClass",$(30,E,t.createUserForm.controls.password.dirty&&t.createUserForm.controls.password.valid,t.createUserForm.controls.password.dirty&&t.createUserForm.controls.password.errors)),n(2),u(d(21,21,"users.label_password")),n(4),m("readonly",t.loading)("ngClass",$(33,E,t.createUserForm.controls.passwordConfirm.dirty&&t.createUserForm.controls.passwordConfirm.valid,t.createUserForm.controls.passwordConfirm.dirty&&t.createUserForm.controls.passwordConfirm.errors)),n(2),u(d(27,23,"users.label_confirm_password")),n(3),m("disabled",t.createUserForm.invalid||t.loading)("ngClass",P(36,ge,t.loading)),n(),w(" ",d(31,25,"setup.create_account")," ")}}function ve(e,a){e&1&&(o(0,"span"),f(1,"i",31),p(2),c(3,"translate"),l()),e&2&&(n(2),w(" ",d(3,1,"backup.label_uploading")," "))}function xe(e,a){e&1&&(o(0,"span"),p(1),c(2,"translate"),l()),e&2&&(n(),u(d(2,1,"backup.button_restore_backup")))}function be(e,a){if(e&1){let t=I();o(0,"div",3),f(1,"img",9),o(2,"h3",5),p(3),c(4,"translate"),l(),o(5,"p"),p(6),c(7,"translate"),l(),o(8,"div",24)(9,"input",25),b("change",function(r){v(t);let g=_();return x(g.handleRestoreFileInput(r.target.files))}),l(),o(10,"label",26),p(11),c(12,"translate"),l()(),o(13,"div",27)(14,"button",28),b("click",function(){v(t);let r=_();return x(r.onClickCancelRestore())}),p(15),c(16,"translate"),l(),o(17,"button",29),b("click",function(){v(t);let r=_();return x(r.onRestoreBackupClick())}),z(18,ve,4,3,"span",30)(19,xe,3,3,"span",30),l()()()}if(e&2){let t=_();n(3),u(d(4,8,"form.button_restore")),n(3),u(d(7,10,"backup.restore_help_one")),n(5),w(" ",d(12,12,(t.selectedFile==null?null:t.selectedFile.name)||"backup.label_choose_backup_file_to_restore")," "),n(3),m("disabled",t.restoreUploadStarted),n(),w(" ",d(16,14,"form.button_cancel")," "),n(2),m("disabled",t.restoreUploading||!t.selectedFile),n(),m("ngIf",t.restoreUploading),n(),m("ngIf",!t.restoreUploading)}}function we(e,a){e&1&&(o(0,"div",3),f(1,"img",9),o(2,"h3",5),p(3),c(4,"translate"),l(),o(5,"h1"),f(6,"i",31),l()()),e&2&&(n(3),u(d(4,1,"restart.title_restart")))}function Ce(e,a){e&1&&(o(0,"div",3),f(1,"img",9),o(2,"h3",32),p(3),c(4,"translate"),l(),o(5,"p",33),p(6),c(7,"translate"),l(),o(8,"a",34),p(9),c(10,"translate"),l()()),e&2&&(n(3),u(d(4,3,"setup_wizard_message_complete_title")),n(3),u(d(7,5,"setup_wizard_message_complete_message")),n(3),u(d(10,7,"setup.open_dashboard")))}var pe=(()=>{let a=class a{constructor(i,r,g,de,me,ue,fe){s(this,"$api");s(this,"$auth");s(this,"$modal");s(this,"$settings");s(this,"$title");s(this,"$toastr");s(this,"$translate");s(this,"previousTitle");s(this,"step","welcome");s(this,"createUserForm",new X({username:new M("",[C.required]),password:new M("",[C.compose([C.required,C.minLength(4)])]),passwordConfirm:new M("",[C.required])},this.matchPassword));s(this,"loading",!1);s(this,"selectedFile");s(this,"restoreUploading",!1);this.$api=i,this.$auth=r,this.$modal=g,this.$settings=de,this.$title=me,this.$toastr=ue,this.$translate=fe}ngOnInit(){this.previousTitle=this.$title.getTitle(),this.$title.setTitle("Setup Homebridge")}matchPassword(i){let r=i.get("password").value,g=i.get("passwordConfirm").value;if(r!==g)i.get("passwordConfirm").setErrors({matchPassword:!0});else return null}ngOnDestroy(){this.$title.setTitle(this.previousTitle)}onClickGettingStarted(){this.step="create-account"}onClickRestoreBackup(){this.step="restore-backup"}onClickCancelRestore(){this.selectedFile=null,this.step="welcome"}createFirstUser(){this.loading=!0;let i=this.createUserForm.getRawValue();i.name=i.username,this.$api.post("/setup-wizard/create-first-user",i).subscribe({next:()=>y(this,null,function*(){this.$settings.env.setupWizardComplete=!0,yield this.$auth.login({username:i.username,password:i.password}),this.step="setup-complete"}),error:r=>{this.loading=!1,console.error(r),this.$toastr.error(r.error.message||this.$translate.instant("users.toast_failed_to_add_user"),this.$translate.instant("toast.title_error"))}})}handleRestoreFileInput(i){i.length?this.selectedFile=i[0]:delete this.selectedFile}onRestoreBackupClick(){this.restoreUploading=!0,this.uploadHomebridgeArchive()}uploadHomebridgeArchive(){return y(this,null,function*(){try{let i=yield S(this.$api.get("/setup-wizard/get-setup-wizard-token"));window.localStorage.setItem(U.jwt.tokenKey,i.access_token),this.$auth.token=i.access_token;let r=new FormData;r.append("restoreArchive",this.selectedFile,this.selectedFile.name),yield S(this.$api.post("/backup/restore",r)),this.openRestoreModal(),this.restoreUploading=!1}catch(i){this.restoreUploading=!1,console.error(i),this.$toastr.error(i.error.message||this.$translate.instant("users.toast_failed_to_add_user"),this.$translate.instant("toast.title_error"))}})}openRestoreModal(){let i=this.$modal.open(se,{size:"lg",backdrop:"static"});i.componentInstance.setupWizardRestore=!0,i.result.then(r=>{r===!0&&this.waitForHomebridgeToRestart()})}waitForHomebridgeToRestart(){return y(this,null,function*(){this.step="restarting",window.localStorage.removeItem(U.jwt.tokenKey),this.$auth.token=null,yield new Promise(r=>setTimeout(r,15e3));let i=setInterval(()=>y(this,null,function*(){try{yield S(this.$api.get("/auth/settings")),clearInterval(i),location.reload()}catch{}}),1e3)})}};s(a,"\u0275fac",function(r){return new(r||a)(h(H),h(L),h(ne),h(q),h(j),h(A),h(W))}),s(a,"\u0275cmp",B({type:a,selectors:[["ng-component"]],decls:7,vars:5,consts:[[1,"setup-container","d-flex","align-items-center","justify-content-center"],[1,"w-100","setup-card","d-flex","py-5"],["class","w-100 d-flex flex-column align-items-center",4,"ngIf"],[1,"w-100","d-flex","flex-column","align-items-center"],["src","/assets/homebridge-color-round.svg","alt","hb logo",1,"homebridge-logo","mx-auto"],[1,"pt-4","pb-3","text-center"],["type","button",1,"btn","btn-lg","btn-primary",3,"click"],[1,"mt-3"],["href","javascript:void(0)",1,"grey-text",3,"click"],["src","/assets/homebridge-color-round.svg","alt","hb logo",1,"homebridge-logo","homebridge-logo-small","mx-auto"],[1,"w-100"],["novalidate","",3,"ngSubmit","formGroup"],[1,"md-form"],[1,"fas","fa-fw","fa-user","prefix","grey-text"],["formControlName","username","type","text","id","form-username","autocomplete","username","autocapitalize","none","tabindex","1",1,"form-control","px-0",3,"readonly","ngClass"],["for","form-username"],[1,"fas","fa-fw","fa-lock","prefix","grey-text"],["formControlName","password","type","password","id","form-pass","autocomplete","new-password","tabindex","2",1,"form-control","px-0",3,"readonly","ngClass"],["for","form-pass"],["formControlName","passwordConfirm","type","password","id","form-pass-confirm","autocomplete","new-password","tabindex","2",1,"form-control","px-0",3,"readonly","ngClass"],["for","form-pass-confirm"],[1,"w-100","text-center"],["type","submit",1,"btn","btn-primary",3,"disabled","ngClass"],[1,"button-loading-overlay","fas","fa-fw","fa-spinner","fa-pulse"],[1,"custom-file"],["type","file","id","restoreFileUpload","accept","application/gzip, .gz",1,"custom-file-input",3,"change"],["for","restoreFileUpload",1,"custom-file-label"],[1,"mt-3","w-100","d-flex","justify-content-between"],["type","button",1,"btn","btn-elegant","ml-0",3,"click","disabled"],["type","button",1,"btn","btn-primary","mr-0",3,"click","disabled"],[4,"ngIf"],[1,"fas","fa-fw","fa-spinner","fa-pulse"],[1,"pt-4","pb-3"],[1,"text-center"],["routerLink","/",1,"btn","btn-lg","btn-primary","mt-3"]],template:function(r,g){r&1&&(o(0,"div",0)(1,"div",1),z(2,_e,12,9,"div",2)(3,he,33,38,"div",2)(4,be,20,16,"div",2)(5,we,7,3,"div",2)(6,Ce,11,9,"div",2),l()()),r&2&&(n(2),m("ngIf",g.step==="welcome"),n(),m("ngIf",g.step==="create-account"),n(),m("ngIf",g.step==="restore-backup"),n(),m("ngIf",g.step==="restarting"),n(),m("ngIf",g.step==="setup-complete"))},dependencies:[V,O,Y,K,J,Q,Z,ee,N,G],styles:[".setup-container[_ngcontent-%COMP%]{background-size:cover;z-index:-1;padding-top:1em;padding-bottom:1em}@media screen and (min-height: 500px) and (min-width: 600px){.setup-container[_ngcontent-%COMP%]{padding-top:4em}}.setup-card[_ngcontent-%COMP%]{max-width:600px;border-radius:15px;background-color:#fff;padding-right:25px;padding-left:25px}.setup-card[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]:focus{background-color:inherit!important}@media screen and (max-width: 600px){.setup-card[_ngcontent-%COMP%]{margin-left:1em;margin-right:1em}} body.dark-mode .setup-card{background-color:#2b2b2b;color:#fff}.homebridge-logo[_ngcontent-%COMP%]{margin-right:10px;height:200px}@media screen and (max-height: 500px){.homebridge-logo[_ngcontent-%COMP%]{height:100px}}@media screen and (max-width: 600px){.homebridge-logo[_ngcontent-%COMP%]{height:100px}}.homebridge-logo-small[_ngcontent-%COMP%]{height:50px}.button-loading[_ngcontent-%COMP%]{position:relative;color:#0000}.button-loading[_ngcontent-%COMP%] .button-loading-overlay[_ngcontent-%COMP%]{display:block;color:#fff}.button-loading-overlay[_ngcontent-%COMP%]{display:none;position:absolute;top:9px;left:0;right:0}small[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{text-decoration:underline}"]}));let e=a;return e})();var ye=[{path:"",component:pe}],ce=(()=>{let a=class a{};s(a,"\u0275fac",function(r){return new(r||a)}),s(a,"\u0275mod",F({type:a})),s(a,"\u0275inj",k({imports:[T.forChild(ye),T]}));let e=a;return e})();var Ze=(()=>{let a=class a{};s(a,"\u0275fac",function(r){return new(r||a)}),s(a,"\u0275mod",F({type:a})),s(a,"\u0275inj",k({providers:[re],imports:[R,te,ie,D,oe,ae,ce]}));let e=a;return e})();export{Ze as SetupWizardModule};
1
+ import{a as re}from"./chunk-5UYN5OWH.js";import{f as ae}from"./chunk-422JXES4.js";import{a as se}from"./chunk-ZEONO5N6.js";import"./chunk-THFLPY67.js";import"./chunk-7564WJJL.js";import"./chunk-TS27NWVA.js";import"./chunk-7R6JSPNH.js";import"./chunk-JM7QCDMZ.js";import{c as L}from"./chunk-RIWBPQF3.js";import{N as ne,Q as oe,c as K,d as C,e as J,f as Q,g as X,j as M,m as Y,p as Z,q as ee,y as te,z as ie}from"./chunk-WCDFKYP6.js";import{b as U,c as H,k as A,m as q}from"./chunk-S4SOWUAW.js";import{a as W,b as G,c as D}from"./chunk-F22FMU37.js";import{$ as B,$b as R,Ga as z,La as m,Pb as V,Rb as O,Ua as o,Va as l,Wa as f,X as k,Za as I,aa as F,ab as b,bb as _,h as s,ha as v,i as y,ia as x,jb as p,kb as u,lb as w,nc as j,t as S,tc as N,ub as P,vb as $,vc as T,wa as n,xa as h,yb as c,zb as d}from"./chunk-IGUSDGD6.js";var E=(e,a)=>({"is-valid":e,"is-invalid":a}),ge=e=>({"button-loading":e});function _e(e,a){if(e&1){let t=I();o(0,"div",3),f(1,"img",4),o(2,"h3",5),p(3),c(4,"translate"),l(),o(5,"button",6),b("click",function(){v(t);let r=_();return x(r.onClickGettingStarted())}),p(6),c(7,"translate"),l(),o(8,"small",7)(9,"a",8),b("click",function(){v(t);let r=_();return x(r.onClickRestoreBackup())}),p(10),c(11,"translate"),l()()()}e&2&&(n(3),u(d(4,3,"setup.welcome_to_homebridge")),n(3),w(" ",d(7,5,"setup.button_get_started")," "),n(4),u(d(11,7,"setup_wizard_message_restore")))}function he(e,a){if(e&1){let t=I();o(0,"div",3),f(1,"img",9),o(2,"h3",5),p(3),c(4,"translate"),l(),o(5,"div",10)(6,"p"),p(7),c(8,"translate"),l(),o(9,"form",11),b("ngSubmit",function(){v(t);let r=_();return x(r.createFirstUser())}),o(10,"div",12),f(11,"i",13)(12,"input",14),o(13,"label",15),p(14),c(15,"translate"),l()(),o(16,"div",12),f(17,"i",16)(18,"input",17),o(19,"label",18),p(20),c(21,"translate"),l()(),o(22,"div",12),f(23,"i",16)(24,"input",19),o(25,"label",20),p(26),c(27,"translate"),l()(),o(28,"div",21)(29,"button",22),p(30),c(31,"translate"),f(32,"i",23),l()()()()()}if(e&2){let t=_();n(3),u(d(4,15,"setup.create_account")),n(4),u(d(8,17,"setup.create_account_reason")),n(2),m("formGroup",t.createUserForm),n(3),m("readonly",t.loading)("ngClass",$(27,E,t.createUserForm.controls.username.dirty&&t.createUserForm.controls.username.valid,t.createUserForm.controls.username.dirty&&t.createUserForm.controls.username.invalid)),n(2),u(d(15,19,"users.label_username")),n(4),m("readonly",t.loading)("ngClass",$(30,E,t.createUserForm.controls.password.dirty&&t.createUserForm.controls.password.valid,t.createUserForm.controls.password.dirty&&t.createUserForm.controls.password.errors)),n(2),u(d(21,21,"users.label_password")),n(4),m("readonly",t.loading)("ngClass",$(33,E,t.createUserForm.controls.passwordConfirm.dirty&&t.createUserForm.controls.passwordConfirm.valid,t.createUserForm.controls.passwordConfirm.dirty&&t.createUserForm.controls.passwordConfirm.errors)),n(2),u(d(27,23,"users.label_confirm_password")),n(3),m("disabled",t.createUserForm.invalid||t.loading)("ngClass",P(36,ge,t.loading)),n(),w(" ",d(31,25,"setup.create_account")," ")}}function ve(e,a){e&1&&(o(0,"span"),f(1,"i",31),p(2),c(3,"translate"),l()),e&2&&(n(2),w(" ",d(3,1,"backup.label_uploading")," "))}function xe(e,a){e&1&&(o(0,"span"),p(1),c(2,"translate"),l()),e&2&&(n(),u(d(2,1,"backup.button_restore_backup")))}function be(e,a){if(e&1){let t=I();o(0,"div",3),f(1,"img",9),o(2,"h3",5),p(3),c(4,"translate"),l(),o(5,"p"),p(6),c(7,"translate"),l(),o(8,"div",24)(9,"input",25),b("change",function(r){v(t);let g=_();return x(g.handleRestoreFileInput(r.target.files))}),l(),o(10,"label",26),p(11),c(12,"translate"),l()(),o(13,"div",27)(14,"button",28),b("click",function(){v(t);let r=_();return x(r.onClickCancelRestore())}),p(15),c(16,"translate"),l(),o(17,"button",29),b("click",function(){v(t);let r=_();return x(r.onRestoreBackupClick())}),z(18,ve,4,3,"span",30)(19,xe,3,3,"span",30),l()()()}if(e&2){let t=_();n(3),u(d(4,8,"form.button_restore")),n(3),u(d(7,10,"backup.restore_help_one")),n(5),w(" ",d(12,12,(t.selectedFile==null?null:t.selectedFile.name)||"backup.label_choose_backup_file_to_restore")," "),n(3),m("disabled",t.restoreUploadStarted),n(),w(" ",d(16,14,"form.button_cancel")," "),n(2),m("disabled",t.restoreUploading||!t.selectedFile),n(),m("ngIf",t.restoreUploading),n(),m("ngIf",!t.restoreUploading)}}function we(e,a){e&1&&(o(0,"div",3),f(1,"img",9),o(2,"h3",5),p(3),c(4,"translate"),l(),o(5,"h1"),f(6,"i",31),l()()),e&2&&(n(3),u(d(4,1,"restart.title_restart")))}function Ce(e,a){e&1&&(o(0,"div",3),f(1,"img",9),o(2,"h3",32),p(3),c(4,"translate"),l(),o(5,"p",33),p(6),c(7,"translate"),l(),o(8,"a",34),p(9),c(10,"translate"),l()()),e&2&&(n(3),u(d(4,3,"setup_wizard_message_complete_title")),n(3),u(d(7,5,"setup_wizard_message_complete_message")),n(3),u(d(10,7,"setup.open_dashboard")))}var pe=(()=>{let a=class a{constructor(i,r,g,de,me,ue,fe){s(this,"$api");s(this,"$auth");s(this,"$modal");s(this,"$settings");s(this,"$title");s(this,"$toastr");s(this,"$translate");s(this,"previousTitle");s(this,"step","welcome");s(this,"createUserForm",new X({username:new M("",[C.required]),password:new M("",[C.compose([C.required,C.minLength(4)])]),passwordConfirm:new M("",[C.required])},this.matchPassword));s(this,"loading",!1);s(this,"selectedFile");s(this,"restoreUploading",!1);this.$api=i,this.$auth=r,this.$modal=g,this.$settings=de,this.$title=me,this.$toastr=ue,this.$translate=fe}ngOnInit(){this.previousTitle=this.$title.getTitle(),this.$title.setTitle("Setup Homebridge")}matchPassword(i){let r=i.get("password").value,g=i.get("passwordConfirm").value;if(r!==g)i.get("passwordConfirm").setErrors({matchPassword:!0});else return null}ngOnDestroy(){this.$title.setTitle(this.previousTitle)}onClickGettingStarted(){this.step="create-account"}onClickRestoreBackup(){this.step="restore-backup"}onClickCancelRestore(){this.selectedFile=null,this.step="welcome"}createFirstUser(){this.loading=!0;let i=this.createUserForm.getRawValue();i.name=i.username,this.$api.post("/setup-wizard/create-first-user",i).subscribe({next:()=>y(this,null,function*(){this.$settings.env.setupWizardComplete=!0,yield this.$auth.login({username:i.username,password:i.password}),this.step="setup-complete"}),error:r=>{this.loading=!1,console.error(r),this.$toastr.error(r.error.message||this.$translate.instant("users.toast_failed_to_add_user"),this.$translate.instant("toast.title_error"))}})}handleRestoreFileInput(i){i.length?this.selectedFile=i[0]:delete this.selectedFile}onRestoreBackupClick(){this.restoreUploading=!0,this.uploadHomebridgeArchive()}uploadHomebridgeArchive(){return y(this,null,function*(){try{let i=yield S(this.$api.get("/setup-wizard/get-setup-wizard-token"));window.localStorage.setItem(U.jwt.tokenKey,i.access_token),this.$auth.token=i.access_token;let r=new FormData;r.append("restoreArchive",this.selectedFile,this.selectedFile.name),yield S(this.$api.post("/backup/restore",r)),this.openRestoreModal(),this.restoreUploading=!1}catch(i){this.restoreUploading=!1,console.error(i),this.$toastr.error(i.error.message||this.$translate.instant("users.toast_failed_to_add_user"),this.$translate.instant("toast.title_error"))}})}openRestoreModal(){let i=this.$modal.open(se,{size:"lg",backdrop:"static"});i.componentInstance.setupWizardRestore=!0,i.result.then(r=>{r===!0&&this.waitForHomebridgeToRestart()})}waitForHomebridgeToRestart(){return y(this,null,function*(){this.step="restarting",window.localStorage.removeItem(U.jwt.tokenKey),this.$auth.token=null,yield new Promise(r=>setTimeout(r,15e3));let i=setInterval(()=>y(this,null,function*(){try{yield S(this.$api.get("/auth/settings")),clearInterval(i),location.reload()}catch{}}),1e3)})}};s(a,"\u0275fac",function(r){return new(r||a)(h(H),h(L),h(ne),h(q),h(j),h(A),h(W))}),s(a,"\u0275cmp",B({type:a,selectors:[["ng-component"]],decls:7,vars:5,consts:[[1,"setup-container","d-flex","align-items-center","justify-content-center"],[1,"w-100","setup-card","d-flex","py-5"],["class","w-100 d-flex flex-column align-items-center",4,"ngIf"],[1,"w-100","d-flex","flex-column","align-items-center"],["src","/assets/homebridge-color-round.svg","alt","hb logo",1,"homebridge-logo","mx-auto"],[1,"pt-4","pb-3","text-center"],["type","button",1,"btn","btn-lg","btn-primary",3,"click"],[1,"mt-3"],["href","javascript:void(0)",1,"grey-text",3,"click"],["src","/assets/homebridge-color-round.svg","alt","hb logo",1,"homebridge-logo","homebridge-logo-small","mx-auto"],[1,"w-100"],["novalidate","",3,"ngSubmit","formGroup"],[1,"md-form"],[1,"fas","fa-fw","fa-user","prefix","grey-text"],["formControlName","username","type","text","id","form-username","autocomplete","username","autocapitalize","none","tabindex","1",1,"form-control","px-0",3,"readonly","ngClass"],["for","form-username"],[1,"fas","fa-fw","fa-lock","prefix","grey-text"],["formControlName","password","type","password","id","form-pass","autocomplete","new-password","tabindex","2",1,"form-control","px-0",3,"readonly","ngClass"],["for","form-pass"],["formControlName","passwordConfirm","type","password","id","form-pass-confirm","autocomplete","new-password","tabindex","2",1,"form-control","px-0",3,"readonly","ngClass"],["for","form-pass-confirm"],[1,"w-100","text-center"],["type","submit",1,"btn","btn-primary",3,"disabled","ngClass"],[1,"button-loading-overlay","fas","fa-fw","fa-spinner","fa-pulse"],[1,"custom-file"],["type","file","id","restoreFileUpload","accept","application/gzip, .gz",1,"custom-file-input",3,"change"],["for","restoreFileUpload",1,"custom-file-label"],[1,"mt-3","w-100","d-flex","justify-content-between"],["type","button",1,"btn","btn-elegant","ml-0",3,"click","disabled"],["type","button",1,"btn","btn-primary","mr-0",3,"click","disabled"],[4,"ngIf"],[1,"fas","fa-fw","fa-spinner","fa-pulse"],[1,"pt-4","pb-3"],[1,"text-center"],["routerLink","/",1,"btn","btn-lg","btn-primary","mt-3"]],template:function(r,g){r&1&&(o(0,"div",0)(1,"div",1),z(2,_e,12,9,"div",2)(3,he,33,38,"div",2)(4,be,20,16,"div",2)(5,we,7,3,"div",2)(6,Ce,11,9,"div",2),l()()),r&2&&(n(2),m("ngIf",g.step==="welcome"),n(),m("ngIf",g.step==="create-account"),n(),m("ngIf",g.step==="restore-backup"),n(),m("ngIf",g.step==="restarting"),n(),m("ngIf",g.step==="setup-complete"))},dependencies:[V,O,Y,K,J,Q,Z,ee,N,G],styles:[".setup-container[_ngcontent-%COMP%]{background-size:cover;z-index:-1;padding-top:1em;padding-bottom:1em}@media screen and (min-height: 500px) and (min-width: 600px){.setup-container[_ngcontent-%COMP%]{padding-top:4em}}.setup-card[_ngcontent-%COMP%]{max-width:600px;border-radius:15px;background-color:#fff;padding-right:25px;padding-left:25px}.setup-card[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]:focus{background-color:inherit!important}@media screen and (max-width: 600px){.setup-card[_ngcontent-%COMP%]{margin-left:1em;margin-right:1em}} body.dark-mode .setup-card{background-color:#2b2b2b;color:#fff}.homebridge-logo[_ngcontent-%COMP%]{margin-right:10px;height:200px}@media screen and (max-height: 500px){.homebridge-logo[_ngcontent-%COMP%]{height:100px}}@media screen and (max-width: 600px){.homebridge-logo[_ngcontent-%COMP%]{height:100px}}.homebridge-logo-small[_ngcontent-%COMP%]{height:50px}.button-loading[_ngcontent-%COMP%]{position:relative;color:#0000}.button-loading[_ngcontent-%COMP%] .button-loading-overlay[_ngcontent-%COMP%]{display:block;color:#fff}.button-loading-overlay[_ngcontent-%COMP%]{display:none;position:absolute;top:9px;left:0;right:0}small[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{text-decoration:underline}"]}));let e=a;return e})();var ye=[{path:"",component:pe}],ce=(()=>{let a=class a{};s(a,"\u0275fac",function(r){return new(r||a)}),s(a,"\u0275mod",F({type:a})),s(a,"\u0275inj",k({imports:[T.forChild(ye),T]}));let e=a;return e})();var Ze=(()=>{let a=class a{};s(a,"\u0275fac",function(r){return new(r||a)}),s(a,"\u0275mod",F({type:a})),s(a,"\u0275inj",k({providers:[re],imports:[R,te,ie,D,oe,ae,ce]}));let e=a;return e})();export{Ze as SetupWizardModule};
@@ -1,4 +1,4 @@
1
- import{a as u}from"./chunk-7QKEKEAJ.js";import{a as b,b as z}from"./chunk-46QIUWKL.js";import{a}from"./chunk-FHXSXVSD.js";import{H as o,W as c,Z as d,g as m,h as t,l as h}from"./chunk-3NQEXKA4.js";var l=m(b(),1),f=m(z(),1),p=m(u(),1);var v=(()=>{let e=class e{constructor(s){t(this,"$ws");t(this,"term");t(this,"io");t(this,"fitAddon");t(this,"webLinksAddon");t(this,"resize");t(this,"elementResize");this.$ws=s}destroyTerminal(){this.io.end(),this.term.dispose(),this.resize.complete(),this.elementResize&&this.elementResize.complete()}startTerminal(s,n={},w){this.elementResize=w,this.io=this.$ws.connectToNamespace("platform-tools/terminal"),this.term=new l.Terminal(n),setTimeout(()=>{this.term.loadAddon(this.fitAddon),this.term.loadAddon(this.webLinksAddon)}),this.fitAddon=new f.FitAddon,this.webLinksAddon=new p.WebLinksAddon,this.resize=new h,this.term.open(s.nativeElement),setTimeout(()=>{this.fitAddon.activate(this.term),this.fitAddon.fit()}),this.io.connected.pipe(o(200)).subscribe(()=>{this.startSession()}),this.io.socket.on("disconnect",()=>{this.term.write(`
1
+ import{a as u}from"./chunk-GNQUXZMN.js";import{a as b,b as z}from"./chunk-THFLPY67.js";import{a}from"./chunk-7564WJJL.js";import{H as o,W as c,Z as d,g as m,h as t,l as h}from"./chunk-IGUSDGD6.js";var l=m(b(),1),f=m(z(),1),p=m(u(),1);var v=(()=>{let e=class e{constructor(s){t(this,"$ws");t(this,"term");t(this,"io");t(this,"fitAddon");t(this,"webLinksAddon");t(this,"resize");t(this,"elementResize");this.$ws=s}destroyTerminal(){this.io.end(),this.term.dispose(),this.resize.complete(),this.elementResize&&this.elementResize.complete()}startTerminal(s,n={},w){this.elementResize=w,this.io=this.$ws.connectToNamespace("platform-tools/terminal"),this.term=new l.Terminal(n),setTimeout(()=>{this.term.loadAddon(this.fitAddon),this.term.loadAddon(this.webLinksAddon)}),this.fitAddon=new f.FitAddon,this.webLinksAddon=new p.WebLinksAddon,this.resize=new h,this.term.open(s.nativeElement),setTimeout(()=>{this.fitAddon.activate(this.term),this.fitAddon.fit()}),this.io.connected.pipe(o(200)).subscribe(()=>{this.startSession()}),this.io.socket.on("disconnect",()=>{this.term.write(`
2
2
  \r
3
3
  \rTerminal disconnected. Is the server running?
4
4
  \r
@@ -1 +1 @@
1
- import{e as I}from"./chunk-3NQEXKA4.js";var j=I((k,m)=>{(function(g,l){typeof k=="object"&&typeof m=="object"?m.exports=l():typeof define=="function"&&define.amd?define([],l):typeof k=="object"?k.WebLinksAddon=l():g.WebLinksAddon=l()})(self,function(){return(()=>{"use strict";var g={6:(a,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.LinkComputer=r.WebLinkProvider=void 0;var s=function(){function o(n,i,e,t){t===void 0&&(t={}),this._terminal=n,this._regex=i,this._handler=e,this._options=t}return o.prototype.provideLinks=function(n,i){var e=p.computeLink(n,this._regex,this._terminal,this._handler);i(this._addCallbacks(e))},o.prototype._addCallbacks=function(n){var i=this;return n.map(function(e){return e.leave=i._options.leave,e.hover=function(t,u){if(i._options.hover){var c=e.range;i._options.hover(t,u,c)}},e})},o}();r.WebLinkProvider=s;var p=function(){function o(){}return o.computeLink=function(n,i,e,t){for(var u,c=new RegExp(i.source,(i.flags||"")+"g"),_=o._translateBufferLineToStringWithWrap(n-1,!1,e),d=_[0],f=_[1],v=-1,w=[];(u=c.exec(d))!==null;){var h=u[1];if(!h){console.log("match found without corresponding matchIndex");break}if(v=d.indexOf(h,v+1),c.lastIndex=v+h.length,v<0)break;for(var b=v+h.length,y=f+1;b>e.cols;)b-=e.cols,y++;for(var L=v+1,P=f+1;L>e.cols;)L-=e.cols,P++;var M={start:{x:L,y:P},end:{x:b,y}};w.push({range:M,text:h,activate:t})}return w},o._translateBufferLineToStringWithWrap=function(n,i,e){var t,u,c="";do{if(!(d=e.buffer.active.getLine(n)))break;d.isWrapped&&n--,u=d.isWrapped}while(u);var _=n;do{var d,f=e.buffer.active.getLine(n+1);if(t=!!f&&f.isWrapped,!(d=e.buffer.active.getLine(n)))break;c+=d.translateToString(!t&&i).substring(0,e.cols),n++}while(t);return[c,_]},o}();r.LinkComputer=p}},l={};function x(a){var r=l[a];if(r!==void 0)return r.exports;var s=l[a]={exports:{}};return g[a](s,s.exports,x),s.exports}var W={};return(()=>{var a=W;Object.defineProperty(a,"__esModule",{value:!0}),a.WebLinksAddon=void 0;var r=x(6),s=new RegExp(`(?:^|[^\\da-z\\.-]+)((https?:\\/\\/)((([\\da-z\\.-]+)\\.([a-z\\.]{2,18}))|((\\d{1,3}\\.){3}\\d{1,3})|(localhost))(:\\d{1,5})?((\\/[\\/\\w\\.\\-%~:+@]*)*([^:"'\\s]))?(\\?[0-9\\w\\[\\]\\(\\)\\/\\?\\!#@$%&'*+,:;~\\=\\.\\-]*)?(#[0-9\\w\\[\\]\\(\\)\\/\\?\\!#@$%&'*+,:;~\\=\\.\\-]*)?)($|[^\\/\\w\\.\\-%]+)`);function p(n,i){var e=window.open();if(e){try{e.opener=null}catch{}e.location.href=i}else console.warn("Opening link blocked as opener could not be cleared")}var o=function(){function n(i,e,t){i===void 0&&(i=p),e===void 0&&(e={}),t===void 0&&(t=!1),this._handler=i,this._options=e,this._useLinkProvider=t}return n.prototype.activate=function(i){if(this._terminal=i,this._useLinkProvider&&"registerLinkProvider"in this._terminal){var e=(t=this._options).urlRegex||s;this._linkProvider=this._terminal.registerLinkProvider(new r.WebLinkProvider(this._terminal,e,this._handler,t))}else{var t;(t=this._options).matchIndex=1,this._linkMatcherId=this._terminal.registerLinkMatcher(s,this._handler,t)}},n.prototype.dispose=function(){var i;this._linkMatcherId!==void 0&&this._terminal!==void 0&&this._terminal.deregisterLinkMatcher(this._linkMatcherId),(i=this._linkProvider)===null||i===void 0||i.dispose()},n}();a.WebLinksAddon=o})(),W})()})});export{j as a};
1
+ import{e as I}from"./chunk-IGUSDGD6.js";var j=I((k,m)=>{(function(g,l){typeof k=="object"&&typeof m=="object"?m.exports=l():typeof define=="function"&&define.amd?define([],l):typeof k=="object"?k.WebLinksAddon=l():g.WebLinksAddon=l()})(self,function(){return(()=>{"use strict";var g={6:(a,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.LinkComputer=r.WebLinkProvider=void 0;var s=function(){function o(n,i,e,t){t===void 0&&(t={}),this._terminal=n,this._regex=i,this._handler=e,this._options=t}return o.prototype.provideLinks=function(n,i){var e=p.computeLink(n,this._regex,this._terminal,this._handler);i(this._addCallbacks(e))},o.prototype._addCallbacks=function(n){var i=this;return n.map(function(e){return e.leave=i._options.leave,e.hover=function(t,u){if(i._options.hover){var c=e.range;i._options.hover(t,u,c)}},e})},o}();r.WebLinkProvider=s;var p=function(){function o(){}return o.computeLink=function(n,i,e,t){for(var u,c=new RegExp(i.source,(i.flags||"")+"g"),_=o._translateBufferLineToStringWithWrap(n-1,!1,e),d=_[0],f=_[1],v=-1,w=[];(u=c.exec(d))!==null;){var h=u[1];if(!h){console.log("match found without corresponding matchIndex");break}if(v=d.indexOf(h,v+1),c.lastIndex=v+h.length,v<0)break;for(var b=v+h.length,y=f+1;b>e.cols;)b-=e.cols,y++;for(var L=v+1,P=f+1;L>e.cols;)L-=e.cols,P++;var M={start:{x:L,y:P},end:{x:b,y}};w.push({range:M,text:h,activate:t})}return w},o._translateBufferLineToStringWithWrap=function(n,i,e){var t,u,c="";do{if(!(d=e.buffer.active.getLine(n)))break;d.isWrapped&&n--,u=d.isWrapped}while(u);var _=n;do{var d,f=e.buffer.active.getLine(n+1);if(t=!!f&&f.isWrapped,!(d=e.buffer.active.getLine(n)))break;c+=d.translateToString(!t&&i).substring(0,e.cols),n++}while(t);return[c,_]},o}();r.LinkComputer=p}},l={};function x(a){var r=l[a];if(r!==void 0)return r.exports;var s=l[a]={exports:{}};return g[a](s,s.exports,x),s.exports}var W={};return(()=>{var a=W;Object.defineProperty(a,"__esModule",{value:!0}),a.WebLinksAddon=void 0;var r=x(6),s=new RegExp(`(?:^|[^\\da-z\\.-]+)((https?:\\/\\/)((([\\da-z\\.-]+)\\.([a-z\\.]{2,18}))|((\\d{1,3}\\.){3}\\d{1,3})|(localhost))(:\\d{1,5})?((\\/[\\/\\w\\.\\-%~:+@]*)*([^:"'\\s]))?(\\?[0-9\\w\\[\\]\\(\\)\\/\\?\\!#@$%&'*+,:;~\\=\\.\\-]*)?(#[0-9\\w\\[\\]\\(\\)\\/\\?\\!#@$%&'*+,:;~\\=\\.\\-]*)?)($|[^\\/\\w\\.\\-%]+)`);function p(n,i){var e=window.open();if(e){try{e.opener=null}catch{}e.location.href=i}else console.warn("Opening link blocked as opener could not be cleared")}var o=function(){function n(i,e,t){i===void 0&&(i=p),e===void 0&&(e={}),t===void 0&&(t=!1),this._handler=i,this._options=e,this._useLinkProvider=t}return n.prototype.activate=function(i){if(this._terminal=i,this._useLinkProvider&&"registerLinkProvider"in this._terminal){var e=(t=this._options).urlRegex||s;this._linkProvider=this._terminal.registerLinkProvider(new r.WebLinkProvider(this._terminal,e,this._handler,t))}else{var t;(t=this._options).matchIndex=1,this._linkMatcherId=this._terminal.registerLinkMatcher(s,this._handler,t)}},n.prototype.dispose=function(){var i;this._linkMatcherId!==void 0&&this._terminal!==void 0&&this._terminal.deregisterLinkMatcher(this._linkMatcherId),(i=this._linkProvider)===null||i===void 0||i.dispose()},n}();a.WebLinksAddon=o})(),W})()})});export{j as a};