homebridge-config-ui-x 5.3.0 → 5.3.1-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.
- package/CHANGELOG.md +24 -0
- package/config.schema.json +32 -0
- package/dist/core/auth/auth.controller.d.ts +6 -0
- package/dist/core/config/config.service.d.ts +12 -0
- package/dist/core/config/config.service.js +9 -0
- package/dist/core/config/config.service.js.map +1 -1
- package/dist/globalDefaults.js +3 -0
- package/dist/globalDefaults.js.map +1 -1
- package/dist/modules/config-editor/config-editor.controller.d.ts +1 -0
- package/dist/modules/config-editor/config-editor.controller.js +13 -0
- package/dist/modules/config-editor/config-editor.controller.js.map +1 -1
- package/dist/modules/config-editor/config-editor.service.d.ts +1 -0
- package/dist/modules/config-editor/config-editor.service.js +7 -0
- package/dist/modules/config-editor/config-editor.service.js.map +1 -1
- package/dist/modules/platform-tools/terminal/terminal.controller.d.ts +11 -0
- package/dist/modules/platform-tools/terminal/terminal.controller.js +46 -0
- package/dist/modules/platform-tools/terminal/terminal.controller.js.map +1 -0
- package/dist/modules/platform-tools/terminal/terminal.gateway.d.ts +2 -0
- package/dist/modules/platform-tools/terminal/terminal.gateway.js +18 -0
- package/dist/modules/platform-tools/terminal/terminal.gateway.js.map +1 -1
- package/dist/modules/platform-tools/terminal/terminal.module.js +4 -0
- package/dist/modules/platform-tools/terminal/terminal.module.js.map +1 -1
- package/dist/modules/platform-tools/terminal/terminal.service.d.ts +10 -0
- package/dist/modules/platform-tools/terminal/terminal.service.js +167 -6
- package/dist/modules/platform-tools/terminal/terminal.service.js.map +1 -1
- package/package.json +2 -2
- package/public/3rdpartylicenses.txt +58 -58
- package/public/{chunk-4XLPIGSD.js → chunk-25NXLXGL.js} +1 -1
- package/public/{chunk-4ELFIE24.js → chunk-2FTHA637.js} +1 -1
- package/public/{chunk-HPDPYCCU.js → chunk-2HPRTE5R.js} +1 -1
- package/public/{chunk-ULBODTVI.js → chunk-2IJUFNYR.js} +1 -1
- package/public/chunk-2KRFK7IW.js +20 -0
- package/public/{chunk-EY4TL7MQ.js → chunk-2Q5IEAZO.js} +1 -1
- package/public/chunk-3T4CLJZB.js +1 -0
- package/public/chunk-4PXGNN5B.js +1 -0
- package/public/{chunk-65R3WGJK.js → chunk-5V2HRRTP.js} +1 -1
- package/public/chunk-6MTFGR5B.js +1 -0
- package/public/{chunk-AOQFASDR.js → chunk-7CEEAPZG.js} +1 -1
- package/public/{chunk-P3TP4J62.js → chunk-AKD24HZC.js} +1 -1
- package/public/{chunk-6U2B3ZIB.js → chunk-BDGMOTRS.js} +1 -1
- package/public/{chunk-ZG3HINDJ.js → chunk-CPAHENLQ.js} +1 -1
- package/public/{chunk-RM73XLPO.js → chunk-CU7PIYHU.js} +1 -1
- package/public/{chunk-6QCBKKQ7.js → chunk-DUQOTBHL.js} +1 -1
- package/public/{chunk-UJT6ID6R.js → chunk-EGJJG2RZ.js} +1 -1
- package/public/{chunk-ZT56WXIZ.js → chunk-F3MG6UU6.js} +1 -1
- package/public/{chunk-ZZMY2IKC.js → chunk-FTCRINBI.js} +1 -1
- package/public/{chunk-6ICMDOE6.js → chunk-FXEJT7GG.js} +1 -1
- package/public/{chunk-BSFL67L2.js → chunk-GQHI4XTW.js} +1 -1
- package/public/{chunk-JWNACTNS.js → chunk-GTH4PHUA.js} +1 -1
- package/public/{chunk-HCLPERDW.js → chunk-GV2XWDHB.js} +1 -1
- package/public/{chunk-BSZ6MHFZ.js → chunk-H337OZRD.js} +1 -1
- package/public/chunk-HFY24UNF.js +1 -0
- package/public/chunk-IJFXFK57.js +1 -0
- package/public/chunk-IMT3YYMD.js +1 -0
- package/public/{chunk-SNMQAZT2.js → chunk-IWCQMK7M.js} +1 -1
- package/public/{chunk-7L7OF6NJ.js → chunk-IXD64QKB.js} +1 -1
- package/public/chunk-J55PBCQB.js +4 -0
- package/public/{chunk-BYJZ4WBV.js → chunk-KKMV35EJ.js} +1 -1
- package/public/{chunk-UEO5SW2H.js → chunk-KY7IDLVE.js} +1 -1
- package/public/{chunk-RS2XIQ2D.js → chunk-LQCAPPAR.js} +1 -1
- package/public/chunk-LWPMYHHA.js +1 -0
- package/public/chunk-MC3DBFRZ.js +8 -0
- package/public/{chunk-PSSVCFFV.js → chunk-MJK6N6PA.js} +1 -1
- package/public/{chunk-7UEIHMOI.js → chunk-NO7RIAKI.js} +1 -1
- package/public/{chunk-B3QDBZSW.js → chunk-O4DNLPYF.js} +1 -1
- package/public/chunk-PBEWASUU.js +1 -0
- package/public/chunk-PKX43Z45.js +1 -0
- package/public/chunk-QBSRQJA7.js +1 -0
- package/public/{chunk-QLQG37MU.js → chunk-RHCMG64A.js} +1 -1
- package/public/{chunk-WU2LDFGK.js → chunk-RJOGO4M5.js} +2 -2
- package/public/{chunk-BUFCBMS4.js → chunk-RLDDNMLB.js} +1 -1
- package/public/{chunk-7FO4RGTF.js → chunk-RPRM66DV.js} +1 -1
- package/public/{chunk-4TP3IKT3.js → chunk-S7AIVWKK.js} +1 -1
- package/public/{chunk-WAEIH452.js → chunk-S7D4ALZN.js} +1 -1
- package/public/chunk-S7MG46BY.js +14 -0
- package/public/{chunk-BCQ7O7GT.js → chunk-S7TOCZGS.js} +1 -1
- package/public/chunk-SHVFBIT3.js +1 -0
- package/public/{chunk-KTVSDY3J.js → chunk-SLR3NVYA.js} +1 -1
- package/public/{chunk-RKLVJKRV.js → chunk-SS672TTT.js} +1 -1
- package/public/{chunk-T33UVRIX.js → chunk-UAFLQBAP.js} +1 -1
- package/public/{chunk-ADNBR4EK.js → chunk-UKEZ5GGN.js} +1 -1
- package/public/chunk-UOLEC72N.js +1 -0
- package/public/{chunk-MQDZYQ4P.js → chunk-UPWD7C23.js} +1 -1
- package/public/{chunk-QMWOYMP2.js → chunk-V2JQMGNW.js} +1 -1
- package/public/chunk-VDG4QQHT.js +5 -0
- package/public/{chunk-K2NEWUWG.js → chunk-VPU5FNT3.js} +1 -1
- package/public/{chunk-V7SOQAC5.js → chunk-WEVBEUAJ.js} +1 -1
- package/public/chunk-WFCOI7VK.js +1 -0
- package/public/chunk-WXEF2D2E.js +28 -0
- package/public/{chunk-CIFVKKCL.js → chunk-XMB4NIH3.js} +1 -1
- package/public/{chunk-NXD65TQY.js → chunk-XPHWFC2T.js} +1 -1
- package/public/chunk-XXPQF5XE.js +1 -0
- package/public/{chunk-PYA727PD.js → chunk-YXC4EMGP.js} +1 -1
- package/public/chunk-Z2W3X3WE.js +1 -0
- package/public/{chunk-7NRDWLRV.js → chunk-ZQEAB3ZB.js} +1 -1
- package/public/{chunk-SS2BB5BR.js → chunk-ZS7IYMP4.js} +1 -1
- package/public/index.html +2 -2
- package/public/main-EXDHZREW.js +1 -0
- package/public/{styles-QT7KIM52.css → styles-LG2MDN7O.css} +1 -1
- package/dist/bin/standalone.d.ts +0 -2
- package/dist/bin/standalone.js +0 -58
- package/dist/bin/standalone.js.map +0 -1
- package/public/chunk-2V74YNKO.js +0 -20
- package/public/chunk-3AKLELGT.js +0 -1
- package/public/chunk-55DKEZRT.js +0 -4
- package/public/chunk-7LC5ILOZ.js +0 -8
- package/public/chunk-A5YPMEVZ.js +0 -1
- package/public/chunk-CN6AIV2G.js +0 -1
- package/public/chunk-EJUHSQJT.js +0 -1
- package/public/chunk-FBKZG6NW.js +0 -5
- package/public/chunk-J647HPEO.js +0 -1
- package/public/chunk-JOWPFOJ6.js +0 -1
- package/public/chunk-L5YI32XL.js +0 -1
- package/public/chunk-MM4VXTF7.js +0 -1
- package/public/chunk-P3YJZITV.js +0 -1
- package/public/chunk-QOU7SWHO.js +0 -1
- package/public/chunk-TDCLTQMH.js +0 -1
- package/public/chunk-TNHTCUOR.js +0 -1
- package/public/chunk-X7V7CXS5.js +0 -14
- package/public/chunk-Y5LCR2EO.js +0 -28
- package/public/main-5SJ6EOYL.js +0 -1
package/dist/bin/standalone.d.ts
DELETED
package/dist/bin/standalone.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
-
if (k2 === undefined) k2 = k;
|
|
5
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
-
}
|
|
9
|
-
Object.defineProperty(o, k2, desc);
|
|
10
|
-
}) : (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k;
|
|
12
|
-
o[k2] = m[k];
|
|
13
|
-
}));
|
|
14
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
-
}) : function(o, v) {
|
|
17
|
-
o["default"] = v;
|
|
18
|
-
});
|
|
19
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
-
var ownKeys = function(o) {
|
|
21
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
-
var ar = [];
|
|
23
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
-
return ar;
|
|
25
|
-
};
|
|
26
|
-
return ownKeys(o);
|
|
27
|
-
};
|
|
28
|
-
return function (mod) {
|
|
29
|
-
if (mod && mod.__esModule) return mod;
|
|
30
|
-
var result = {};
|
|
31
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
-
__setModuleDefault(result, mod);
|
|
33
|
-
return result;
|
|
34
|
-
};
|
|
35
|
-
})();
|
|
36
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
-
};
|
|
39
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
-
const node_os_1 = require("node:os");
|
|
41
|
-
const node_path_1 = require("node:path");
|
|
42
|
-
const node_process_1 = __importDefault(require("node:process"));
|
|
43
|
-
const commander_1 = require("commander");
|
|
44
|
-
node_process_1.default.title = 'homebridge-config-ui-x';
|
|
45
|
-
commander_1.program
|
|
46
|
-
.allowUnknownOption()
|
|
47
|
-
.allowExcessArguments()
|
|
48
|
-
.option('-U, --user-storage-path [path]', '', p => node_process_1.default.env.UIX_STORAGE_PATH = p)
|
|
49
|
-
.option('-P, --plugin-path [path]', '', p => node_process_1.default.env.UIX_CUSTOM_PLUGIN_PATH = p)
|
|
50
|
-
.option('-I, --insecure', '', () => node_process_1.default.env.UIX_INSECURE_MODE = '1')
|
|
51
|
-
.option('-T, --no-timestamp', '', () => node_process_1.default.env.UIX_LOG_NO_TIMESTAMPS = '1')
|
|
52
|
-
.parse(node_process_1.default.argv);
|
|
53
|
-
if (!node_process_1.default.env.UIX_STORAGE_PATH) {
|
|
54
|
-
node_process_1.default.env.UIX_STORAGE_PATH = (0, node_path_1.resolve)((0, node_os_1.homedir)(), '.homebridge');
|
|
55
|
-
}
|
|
56
|
-
node_process_1.default.env.UIX_CONFIG_PATH = (0, node_path_1.resolve)(node_process_1.default.env.UIX_STORAGE_PATH, 'config.json');
|
|
57
|
-
Promise.resolve().then(() => __importStar(require('../main')));
|
|
58
|
-
//# sourceMappingURL=standalone.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"standalone.js","sourceRoot":"","sources":["../../src/bin/standalone.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,qCAAiC;AACjC,yCAAmC;AACnC,gEAAkC;AAElC,yCAAmC;AAEnC,sBAAO,CAAC,KAAK,GAAG,wBAAwB,CAAA;AAExC,mBAAO;KACJ,kBAAkB,EAAE;KACpB,oBAAoB,EAAE;KACtB,MAAM,CAAC,gCAAgC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,sBAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,CAAC;KACnF,MAAM,CAAC,0BAA0B,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,sBAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,CAAC,CAAC;KACnF,MAAM,CAAC,gBAAgB,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,sBAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,GAAG,CAAC;KACvE,MAAM,CAAC,oBAAoB,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,sBAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,GAAG,CAAC;KAC/E,KAAK,CAAC,sBAAO,CAAC,IAAI,CAAC,CAAA;AAEtB,IAAI,CAAC,sBAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAClC,sBAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAA,mBAAO,EAAC,IAAA,iBAAO,GAAE,EAAE,aAAa,CAAC,CAAA;AAClE,CAAC;AAED,sBAAO,CAAC,GAAG,CAAC,eAAe,GAAG,IAAA,mBAAO,EAAC,sBAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAA;AAElF,kDAAO,SAAS,IAAC"}
|
package/public/chunk-2V74YNKO.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import{a as ne}from"./chunk-WAEIH452.js";import{a as oe,b as le}from"./chunk-X7V7CXS5.js";import{a as X,b as Z}from"./chunk-ZT56WXIZ.js";import{a as ie}from"./chunk-P3TP4J62.js";import{m as Y,n as G,t as Q}from"./chunk-PSSVCFFV.js";import{c as J,e as K,l as U,z as W}from"./chunk-K2NEWUWG.js";import{b as ee}from"./chunk-4XLPIGSD.js";import{b as te}from"./chunk-A5YPMEVZ.js";import{k as A,n as I}from"./chunk-L5YI32XL.js";import{a as S,b as D}from"./chunk-ZG3HINDJ.js";import"./chunk-WU2LDFGK.js";import{Hb as _,Hc as r,Ib as d,Ic as s,Jb as c,Jc as q,Lb as P,Mb as B,Nb as L,Ob as v,Pb as y,Qb as w,Rb as x,Sb as m,Tb as u,Ub as V,_b as b,ab as n,bc as E,cc as k,dc as a,fb as R,g as se,h as j,la as h,mb as M,pd as z,qc as C,ra as f,rc as $,sa as g,sc as T,w as H,xc as O,yc as N,zc as F}from"./chunk-V7SOQAC5.js";var ae=se(le(),1);function ce(o,p){o&1&&(m(0,"div",5),V(1,"i",12),u())}function me(o,p){if(o&1){let e=b();m(0,"li",17),C(1),r(2,"date"),m(3,"button",18),r(4,"translate"),k("click",function(){let t=f(e).$implicit,l=a(3);return g(l.restore(t.id))}),V(5,"i",19),u()()}if(o&2){let e=p.$implicit;n(),T(" ",q(2,2,e.timestamp,"medium")," "),n(2),_("aria-label",s(4,5,"config.restore.copy_to_editor"))}}function pe(o,p){if(o&1&&(m(0,"ul",15),B(1,me,6,7,"li",17,P),u()),o&2){let e=a(2);n(),L(e.backupList)}}function fe(o,p){o&1&&(m(0,"p",16),C(1),r(2,"translate"),u()),o&2&&(n(),$(s(2,1,"config.restore.no_backups")))}function ge(o,p){if(o&1&&(m(0,"div",13),V(1,"i",14),u(),m(2,"p",13),C(3),r(4,"translate"),u(),d(5,pe,3,0,"ul",15),d(6,fe,3,3,"p",16)),o&2){let e=a();n(3),$(s(4,3,"config.restore.title_restore_homebridge_backup")),n(2),c(e.backupList&&e.backupList.length?5:-1),n(),c(!e.backupList||!e.backupList.length?6:-1)}}function ue(o,p){if(o&1){let e=b();m(0,"button",20),r(1,"translate"),k("click",function(){f(e);let t=a();return g(t.dismissModal())}),C(2),r(3,"translate"),u()}o&2&&(_("aria-label",s(1,2,"form.button_close")),n(2),T(" ",s(3,4,"form.button_close")," "))}function he(o,p){if(o&1){let e=b();m(0,"button",20),r(1,"translate"),k("click",function(){f(e);let t=a();return g(t.dismissModal())}),C(2),r(3,"translate"),u()}o&2&&(_("aria-label",s(1,2,"form.button_close")),n(2),T(" ",s(3,4,"form.button_close")," "))}function be(o,p){if(o&1){let e=b();m(0,"button",21),r(1,"translate"),k("click",function(){f(e);let t=a();return g(t.deleteAllBackups())}),C(2),r(3,"translate"),u()}o&2&&(_("aria-label",s(1,2,"form.button_remove")),n(2),T(" ",s(3,4,"form.button_remove")," "))}var re=(()=>{class o{$activeModal=h(Y);$api=h(I);$toastr=h(A);$translate=h(S);loading=!0;backupList=[];ngOnInit(){this.$api.get("/config-editor/backups").subscribe({next:e=>{this.loading=!1,this.backupList=e},error:e=>{this.loading=!1,console.error(e),this.$toastr.error(e.error.message||e.message,this.$translate.instant("toast.title_error"))}})}restore(e){return this.$activeModal.close(e)}deleteAllBackups(){return this.$api.delete("/config-editor/backups").subscribe({next:()=>{this.$activeModal.dismiss(),this.$toastr.success(this.$translate.instant("config.restore.toast_backups_deleted"),this.$translate.instant("toast.title_success"))},error:e=>{console.error(e),this.$toastr.error(e.error.message||e.message,this.$translate.instant("toast.title_error"))}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(i){return new(i||o)};static \u0275cmp=M({type:o,selectors:[["ng-component"]],decls:17,vars:11,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","primary-text"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-center"],[1,"text-end"],["type","button",1,"btn","btn-danger","me-auto"],[1,"fa","fa-fw","fa-cog","fa-spin",2,"font-size","75px"],[1,"text-center","mb-3"],[1,"fas","fa-fw","fa-history","primary-text",2,"font-size","75px"],[1,"list-group","list-group-box"],[1,"text-center","mb-0"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"btn","btn-primary","m-0","ms-3",3,"click"],[1,"fas","fa-fw","fa-arrow-right"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button",1,"btn","btn-danger","me-auto",3,"click"]],template:function(i,t){i&1&&(m(0,"div",0)(1,"div",1)(2,"h5",2),C(3),r(4,"translate"),u(),m(5,"button",3),r(6,"translate"),k("click",function(){return t.dismissModal()}),u()(),m(7,"div",4),d(8,ce,2,0,"div",5),d(9,ge,7,5),u(),m(10,"div",6)(11,"div",7),d(12,ue,4,6,"button",8),u(),m(13,"div",9),d(14,he,4,6,"button",8),u(),m(15,"div",10),d(16,be,4,6,"button",11),u()()()),i&2&&(n(3),$(s(4,7,"form.button_restore")),n(2),_("aria-label",s(6,9,"form.button_close")),n(3),c(t.loading?8:-1),n(),c(t.loading?-1:9),n(3),c(!t.loading&&t.backupList.length?12:-1),n(2),c(t.loading||!t.loading&&!t.backupList.length?14:-1),n(2),c(!t.loading&&t.backupList.length?16:-1))},dependencies:[z,D],encapsulation:2})}return o})();function _e(o,p){if(o&1){let e=b();y(0,"button",14),r(1,"translate"),r(2,"translate"),E("click",function(){f(e);let t=a();return g(t.onExportConfig())}),x(3,"i",15),w()}o&2&&(v("ngbTooltip",s(1,2,"form.button_download")),_("aria-label",s(2,4,"form.button_download")))}function Ce(o,p){if(o&1){let e=b();y(0,"button",16),r(1,"translate"),r(2,"translate"),E("click",function(){f(e);let t=a();return g(t.onCancelRestore())}),x(3,"i",17),w()}if(o&2){let e=a();v("disabled",e.saveInProgress)("openDelay",150)("ngbTooltip",s(1,4,"form.button_cancel")),_("aria-label",s(2,6,"form.button_cancel"))}}function ye(o,p){if(o&1){let e=b();y(0,"button",18),r(1,"translate"),r(2,"translate"),E("click",function(){f(e);let t=a();return g(t.onRestore())}),x(3,"i",19),w()}o&2&&(v("openDelay",150)("ngbTooltip",s(1,3,"form.button_restore")),_("aria-label",s(2,5,"form.button_restore")))}function we(o,p){o&1&&x(0,"i",9)}function ve(o,p){o&1&&x(0,"i",10)}function Ee(o,p){if(o&1){let e=b();y(0,"ngx-monaco-editor",20),E("onInit",function(t){f(e);let l=a();return g(l.onEditorInit(t))})("keydown.control.s",function(t){f(e);let l=a();return t.preventDefault(),g(l.onSave())})("keydown.meta.s",function(t){f(e);let l=a();return t.preventDefault(),g(l.onSave())}),w()}if(o&2){let e=a();v("options",e.editorOptions)("model",e.monacoEditorModel)}}function xe(o,p){if(o&1){let e=b();y(0,"ngx-monaco-diff-editor",21),E("onInit",function(t){f(e);let l=a();return g(l.onInitDiffEditor(t))})("keydown.control.s",function(t){f(e);let l=a();return t.preventDefault(),g(l.onSave())})("keydown.meta.s",function(t){f(e);let l=a();return t.preventDefault(),g(l.onSave())}),w()}if(o&2){let e=a();v("options",e.editorOptions)("originalModel",e.monacoEditorModel)("modifiedModel",e.monacoEditorModel)}}function ke(o,p){if(o&1){let e=b();y(0,"textarea",22),F("ngModelChange",function(t){f(e);let l=a();return N(l.homebridgeConfig,t)||(l.homebridgeConfig=t),g(t)}),C(1," "),w()}if(o&2){let e=a();O("ngModel",e.homebridgeConfig)}}var Ge=(()=>{class o{$api=h(I);$md=h(ie);$modal=h(G);$monacoEditor=h(ne);$route=h(ee);$renderer=h(R);$settings=h(te);$toastr=h(A);$translate=h(S);editorDecorations=[];lastHeight;visualViewPortEventCallback;homebridgeConfig;originalConfig;saveInProgress;isMobile=!1;monacoEditor;editorOptions;monacoEditorModel;constructor(){this.isMobile=this.$md.detect.mobile()}ngOnInit(){this.editorOptions={language:"json",theme:this.$settings.actualLightingMode==="dark"?"vs-dark":"vs-light",automaticLayout:!0};let e=document.querySelector(".content");this.$renderer.setStyle(e,"height","100%"),this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.disableTouchMove()),this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.disableTouchMove()),this.$route.data.subscribe(i=>{this.homebridgeConfig=i.config}),this.monacoEditorModel={value:"{}",language:"json",uri:window.monaco?window.monaco.Uri.parse("a://homebridge/config.json"):void 0},window.monaco?this.setMonacoEditorModel():this.$monacoEditor.readyEvent.subscribe({next:()=>{this.setMonacoEditorModel()}})}onEditorInit(e){window.editor=e,this.monacoEditor=e,this.monacoEditor.getModel().setValue(this.homebridgeConfig)}onInitDiffEditor(e){this.monacoEditor=e.modifiedEditor,e.getModel().original.setValue(this.originalConfig),e.getModel().modified.setValue(this.homebridgeConfig),window.editor=e}onSave(){return j(this,null,function*(){if(!this.saveInProgress){this.monacoEditor&&(this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[])),this.saveInProgress=!0;try{if(!this.isMobile){yield this.monacoEditor.getAction("editor.action.formatDocument").run();let i=window.monaco.editor.getModelMarkers({owner:"json"});for(let t of i)if(t.message==="Duplicate object key"){this.saveInProgress=!1,this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error"));return}this.homebridgeConfig=this.monacoEditor.getModel().getValue()}let e=this.parseConfigFromEditor();this.homebridgeConfig=JSON.stringify(e,null,4),typeof e.bridge!="object"?this.$toastr.error(this.$translate.instant("config.config_bridge_missing"),this.$translate.instant("toast.title_error")):/^(?:[0-9A-F]{2}:){5}[0-9A-F]{2}$/i.test(e.bridge.username)?e.accessories&&!Array.isArray(e.accessories)?this.$toastr.error(this.$translate.instant("config.config_accessory_must_be_array"),this.$translate.instant("toast.title_error")):e.platforms&&!Array.isArray(e.platforms)?this.$toastr.error(this.$translate.instant("config.config_platform_must_be_array"),this.$translate.instant("toast.title_error")):e.platforms&&Array.isArray(e.platforms)&&!this.validateSection(e.platforms,"platform")||e.accessories&&Array.isArray(e.accessories)&&!this.validateSection(e.accessories,"accessory")||e.plugins&&Array.isArray(e.plugins)&&!this.validatePlugins(e.plugins,"plugins")||e.disabledPlugins&&Array.isArray(e.disabledPlugins)&&!this.validatePlugins(e.disabledPlugins,"disabledPlugins")||(yield this.saveConfig(e),this.originalConfig=""):this.$toastr.error(this.$translate.instant("config.config_username_error"),this.$translate.instant("toast.title_error"))}catch(e){console.error(e),this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error"))}this.saveInProgress=!1}})}onRestore(){this.$modal.open(re,{size:"lg",backdrop:"static"}).result.then(e=>{this.originalConfig||(this.originalConfig=this.homebridgeConfig),this.$api.get(`/config-editor/backups/${e}`).subscribe({next:i=>{this.$toastr.info(this.$translate.instant("config.restore.confirm"),this.$translate.instant("config.title_backup_loaded")),this.homebridgeConfig=JSON.stringify(i,null,4),this.monacoEditor&&window.editor.modifiedEditor&&(this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[]),this.monacoEditor.executeEdits("beautifier",[{identifier:"delete",range:new monaco.Range(1,1,this.monacoEditor.getModel().getLineCount()+10,1),text:"",forceMoveMarkers:!0}]),this.monacoEditor.executeEdits("beautifier",[{identifier:"insert",range:new monaco.Range(1,1,1,1),text:this.homebridgeConfig,forceMoveMarkers:!0}]))},error:i=>{console.error(i),this.$toastr.error(i.error?.message||this.$translate.instant("backup.load_error"),this.$translate.instant("toast.title_error"))}})}).catch(()=>{})}onExportConfig(){let e=`data:text/json;charset=utf-8,${encodeURIComponent(this.homebridgeConfig)}`,i=document.createElement("a");i.setAttribute("href",e),i.setAttribute("download","config.json"),document.body.appendChild(i),i.click(),i.remove()}onCancelRestore(){this.homebridgeConfig=this.originalConfig,this.originalConfig=""}ngOnDestroy(){let e=document.querySelector(".content");this.$renderer.removeStyle(e,"height"),window.visualViewport&&(window.visualViewport.removeEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.enableTouchMove()),this.monacoEditor&&this.monacoEditor.dispose()}validateSection(e,i){for(let t of e){if(typeof t!="object"||Array.isArray(t))return this.$toastr.error(this.$translate.instant("config.error_blocks_objects",{type:i}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(t),!1;if(!t[i])return this.$toastr.error(this.$translate.instant("config.error_blocks_type",{type:i}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(t),!1;if(typeof t[i]!="string")return this.$toastr.error(this.$translate.instant("config.error_string_type",{type:i}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(t),!1}return!0}validatePlugins(e,i){for(let t of e)if(typeof t!="string")return this.$toastr.error(this.$translate.instant("config.error_string_array",{key:i}),this.$translate.instant("toast.title_error")),!1;return!0}highlightOffendingArrayItem(e){this.monacoEditor&&(e=JSON.stringify(e,null,4).split(`
|
|
2
|
-
`).map(i=>` ${i}`).join(`
|
|
3
|
-
`),setTimeout(()=>{let i=this.monacoEditor.getModel().findMatches(e);if(i.length){let t=i[0].range,l=new monaco.Range(t.startLineNumber,t.startColumn,t.endLineNumber,t.endColumn);this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[{range:l,options:{isWholeLine:!0,linesDecorationsClassName:"hb-monaco-editor-line-error"}}])}},200))}setMonacoEditorModel(){if(window.monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas.some(i=>i.uri==="http://homebridge/config.json"))return;let e=monaco.Uri.parse("a://homebridge/config.json");window.monaco.languages.json.jsonDefaults.setDiagnosticsOptions({allowComments:!1,validate:!0,schemas:[{uri:"http://homebridge/config.json",fileMatch:[e.toString()],schema:{type:"object",required:["bridge"],properties:{bridge:{type:"object",required:["name","username","port","pin"],properties:{name:{type:"string",description:`The Homebridge instance name.
|
|
4
|
-
This should be unique if you are running multiple instances of Homebridge.`,default:"Homebridge"},username:{type:"string",description:`Homebridge username must be 6 pairs of colon-separated hexadecimal characters (A-F 0-9).
|
|
5
|
-
You should change this pin if you need to re-pair your instance with HomeKit.
|
|
6
|
-
Example: 0E:89:49:64:91:86`,default:"0E:89:49:64:91:86",pattern:"^([A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2}$"},port:{type:"number",description:`The port Homebridge listens on.
|
|
7
|
-
If running more than one instance of Homebridge on the same server make sure each instance is given a unique port.`,default:51173,minimum:1025,maximum:65534},pin:{type:"string",description:`The Homebridge instance pin.
|
|
8
|
-
This is used when pairing Homebridge to HomeKit.
|
|
9
|
-
Example: 630-27-655`,default:"630-27-655",pattern:"^([0-9]{3}-[0-9]{2}-[0-9]{3})$"},manufacturer:{type:"string",description:"The bridge manufacturer to be displayed in HomeKit"},firmwareRevision:{type:"string",description:"The bridge firmware version to be displayed in HomeKit"},model:{type:"string",description:"The bridge model to be displayed in HomeKit"},bind:{description:`A string or an array of strings with the name(s) of the network interface(s) Homebridge should bind to.
|
|
10
|
-
|
|
11
|
-
Requires Homebridge v1.3 or later.`,type:["string","array"],items:{type:"string",description:"Network Interface name that Homebridge should bind to."}}},default:{name:"Homebridge",username:"0E:89:49:64:91:86",port:51173,pin:"6302-7655"}},mdns:{type:"object",properties:{interface:{type:"string",description:`The interface or IP address of the interface you want Homebridge to listen on. This is useful if your server has multiple interfaces.
|
|
12
|
-
|
|
13
|
-
Deprecated as of Homebridge v1.3.0 - use bridge.bind instead.`},legacyAdvertiser:{type:"boolean",description:"Set to `false` to use the new mdns library, ciao."}},default:{legacyAdvertiser:!1}},plugins:{type:"array",description:"An array of plugins that should be selectively enabled. Remove this array to enable all plugins.",items:{type:"string",description:`The full plugin npm package name.
|
|
14
|
-
Example: homebridge-dummy`},default:["homebridge-config-ui-x"]},disabledPlugins:{type:"array",description:`An array of plugins that should be disabled.
|
|
15
|
-
|
|
16
|
-
Requires Homebridge v1.3 or later.`,items:{type:"string",description:`The full plugin npm package name.
|
|
17
|
-
Example: homebridge-dummy`},default:[]},ports:{type:"object",description:"The range of ports that should be used for certain accessories like cameras and TVs",required:["start","end"],properties:{start:{type:"number",default:52100,minimum:1025,maximum:65534},end:{type:"number",default:52150,minimum:1025,maximum:65534}},default:{start:52100,end:52150}},platforms:{type:"array",description:`Any plugin that exposes a platform should have its config entered in this array.
|
|
18
|
-
Separate each plugin config block using a comma.`,items:{type:"object",required:["platform"],anyOf:[{type:"object",required:["platform"],properties:{platform:{type:"string",description:"This is used by Homebridge to identify which plugin this platform belongs to.",not:{enum:["config"]}},name:{type:"string",description:"The name of the platform."}}},{type:"object",properties:{platform:{type:"string",description:`Homebridge UI platform name must be set to "config".
|
|
19
|
-
Do Not Change!`,oneOf:[{enum:"config"}]},name:{type:"string",description:"The name used in the Homebridge log."}}}]}},accessories:{type:"array",description:`Any plugin that exposes an accessory should have its config entered in this array.
|
|
20
|
-
Separate each plugin config block using a comma.`,items:{type:"object",required:["accessory","name"],properties:{accessory:{type:"string",description:"This is used by Homebridge to identify which plugin this accessory belongs to."},name:{type:"string",description:"The name of the accessory."}}}}}}}]}),this.monacoEditorModel.uri=monaco.Uri.parse("a://homebridge/config.json")}visualViewPortChanged(){this.lastHeight<window.visualViewport.height&&document.activeElement.blur(),window.visualViewport.height<window.innerHeight?(this.$md.enableTouchMove(),this.lastHeight=window.visualViewport.height):window.visualViewport.height===window.innerHeight&&(this.$md.disableTouchMove(),this.lastHeight=window.visualViewport.height)}saveConfig(e){return j(this,null,function*(){try{let i=yield H(this.$api.post("/config-editor",e));this.homebridgeConfig=JSON.stringify(i,null,4),this.$modal.open(oe,{size:"lg",backdrop:"static"})}catch(i){console.error(i),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error"))}})}parseConfigFromEditor(){try{return JSON.parse(this.homebridgeConfig)}catch{let i=ae.default.parse(this.homebridgeConfig);return this.homebridgeConfig=JSON.stringify(i,null,4),this.monacoEditor&&this.monacoEditor.getModel().setValue(this.homebridgeConfig),i}}static \u0275fac=function(i){return new(i||o)};static \u0275cmp=M({type:o,selectors:[["ng-component"]],decls:18,vars:19,consts:[[1,"flex-column","d-flex","align-items-stretch","h-100"],[1,"row"],[1,"col-6"],[1,"primary-text","m-0"],[1,"col-6","text-end"],["container","body","placement","bottom","openDelay","150","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","me-2",3,"ngbTooltip"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-danger","waves-effect","my-0","me-2",3,"disabled","openDelay","ngbTooltip"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","me-2",3,"openDelay","ngbTooltip"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","me-0",3,"click","disabled","openDelay","ngbTooltip"],[1,"fas","fa-fw","fa-floppy-disk"],[1,"fas","fa-fw","fa-spinner","fa-pulse"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"options","model"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"options","originalModel","modifiedModel"],["wrap","off","autocomplete","off","autocorrect","off","autocapitalize","off","spellcheck","false",1,"hb-plain-text-editor","align-self-end","h-100","w-100","my-3",3,"ngModel"],["container","body","placement","bottom","openDelay","150","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","me-2",3,"click","ngbTooltip"],[1,"fas","fa-fw","fa-download"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-danger","waves-effect","my-0","me-2",3,"click","disabled","openDelay","ngbTooltip"],[1,"fas","fa-fw","fa-times"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","me-2",3,"click","openDelay","ngbTooltip"],[1,"fas","fa-fw","fa-history"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"onInit","keydown.control.s","keydown.meta.s","options","model"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"onInit","keydown.control.s","keydown.meta.s","options","originalModel","modifiedModel"],["wrap","off","autocomplete","off","autocorrect","off","autocapitalize","off","spellcheck","false",1,"hb-plain-text-editor","align-self-end","h-100","w-100","my-3",3,"ngModelChange","ngModel"]],template:function(i,t){i&1&&(y(0,"div",0)(1,"div",1)(2,"div",2)(3,"h3",3),C(4),r(5,"translate"),w()(),y(6,"div",4),d(7,_e,4,6,"button",5),d(8,Ce,4,8,"button",6),d(9,ye,4,7,"button",7),y(10,"button",8),r(11,"translate"),r(12,"translate"),E("click",function(){return t.onSave()}),d(13,we,1,0,"i",9),d(14,ve,1,0,"i",10),w()()(),d(15,Ee,1,2,"ngx-monaco-editor",11),d(16,xe,1,3,"ngx-monaco-diff-editor",12),d(17,ke,2,1,"textarea",13),w()),i&2&&(n(4),$(s(5,13,"menu.config_json_editor")),n(3),c(t.originalConfig?-1:7),n(),c(t.originalConfig?8:-1),n(),c(t.originalConfig?-1:9),n(),v("disabled",t.saveInProgress)("openDelay",150)("ngbTooltip",s(11,15,"form.button_save")),_("aria-label",s(12,17,"form.button_save")),n(3),c(t.saveInProgress?-1:13),n(),c(t.saveInProgress?14:-1),n(),c(!t.isMobile&&!t.originalConfig?15:-1),n(),c(!t.isMobile&&t.originalConfig?16:-1),n(),c(t.isMobile?17:-1))},dependencies:[Q,X,Z,W,J,K,U,D],encapsulation:2})}return o})();export{Ge as ConfigEditorComponent};
|
package/public/chunk-3AKLELGT.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as n}from"./chunk-6ICMDOE6.js";import"./chunk-UEO5SW2H.js";import{g as r}from"./chunk-4XLPIGSD.js";import"./chunk-A5YPMEVZ.js";import"./chunk-L5YI32XL.js";import"./chunk-ZG3HINDJ.js";import"./chunk-WU2LDFGK.js";import{ha as o,nb as e}from"./chunk-V7SOQAC5.js";var c=[{path:"",loadComponent:()=>import("./chunk-JOWPFOJ6.js").then(t=>t.SettingsComponent),canActivate:[n]}],m=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=e({type:t});static \u0275inj=o({imports:[r.forChild(c),r]})}return t})();var l=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=e({type:t});static \u0275inj=o({imports:[m]})}return t})();export{l as SettingsModule};
|