@camera.ui/server 0.0.110 → 0.0.111
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/dist/interface/assets/{404-CZDMFg2Z.js → 404-CGV2uv4y.js} +1 -1
- package/dist/interface/assets/{About-TDIJXs5o.js → About-Cc2eFlW5.js} +1 -1
- package/dist/interface/assets/{Adminpanel-Cciuxh1q.js → Adminpanel-EjUhiapF.js} +1 -1
- package/dist/interface/assets/{Automation-CMMDPrn0.js → Automation-C7HuyjXk.js} +2 -2
- package/dist/interface/assets/{Automations-by_LN5br.js → Automations-DOj8Eo03.js} +1 -1
- package/dist/interface/assets/{Camera-BlN_KppY.js → Camera-C3Il4X2T.js} +2 -2
- package/dist/interface/assets/{CameraConsole-DGbeilsL.js → CameraConsole-70m5hucZ.js} +1 -1
- package/dist/interface/assets/{Cameras-CVID1akl.js → Cameras-BJUWRm26.js} +2 -2
- package/dist/interface/assets/{Camview-B-Pqm0Fw.js → Camview-BqFeqFU1.js} +1 -1
- package/dist/interface/assets/{Config-CfunWNtM.js → Config--CF46OKO.js} +1 -1
- package/dist/interface/assets/{ConfigActionCameraControl-BRgTU6MP.js → ConfigActionCameraControl-DBRh1R9m.js} +1 -1
- package/dist/interface/assets/{ConfigActionDelay-CYz0z9Od.js → ConfigActionDelay-DOUAx4lh.js} +1 -1
- package/dist/interface/assets/{ConfigActionHttp-C9nEQ-7w.js → ConfigActionHttp-BGz4r_Nr.js} +1 -1
- package/dist/interface/assets/{ConfigActionImageInput-D8ipnlfe.js → ConfigActionImageInput-BhO3ekJT.js} +1 -1
- package/dist/interface/assets/{ConfigActionNotification-FzGgJM9i.js → ConfigActionNotification-MJAViQFR.js} +1 -1
- package/dist/interface/assets/{ConfigActionOutput-BB-jkCdD.js → ConfigActionOutput-P0WY0DlF.js} +1 -1
- package/dist/interface/assets/{ConfigActionPlugin-C1OSUQ3_.js → ConfigActionPlugin-C2gSPDim.js} +1 -1
- package/dist/interface/assets/{ConfigActionSensor-C6DOrCYd.js → ConfigActionSensor-Dv7Hgx92.js} +1 -1
- package/dist/interface/assets/{ConfigActionSnapshot-k8RM-NMf.js → ConfigActionSnapshot-CB6IQ_jP.js} +1 -1
- package/dist/interface/assets/{ConfigActionVariable-D-1zVFz-.js → ConfigActionVariable-B2BoiQPb.js} +1 -1
- package/dist/interface/assets/{ConfigConditionIfElse-pp0wRFeJ.js → ConfigConditionIfElse-Nd0_qDVA.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSensorState-CIbkk6LA.js → ConfigConditionSensorState-CHYw1D90.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSwitch-BPdEa--b.js → ConfigConditionSwitch-DsJEOPx0.js} +1 -1
- package/dist/interface/assets/{ConfigConditionTime-bHKJ8kBR.js → ConfigConditionTime-lhWiIy2x.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerDetection-BrtBsd1t.js → ConfigTriggerDetection-C-e6Z1m9.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerGeofence-DCqAqAG3.js → ConfigTriggerGeofence-DGnBxTWd.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerManual-DDmBGqnC.js → ConfigTriggerManual-ChsUsNCK.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSchedule-vC9yyRct.js → ConfigTriggerSchedule-CE47WiIV.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSensor-BbKksZMP.js → ConfigTriggerSensor-C9DsLW_Z.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSystem-CO06Crjg.js → ConfigTriggerSystem-CdOgSvDy.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerWebhook-CrtHc6Q3.js → ConfigTriggerWebhook-D3cHvW8H.js} +1 -1
- package/dist/interface/assets/{Console-B4SQZA5X.js → Console-bCie-JmB.js} +1 -1
- package/dist/interface/assets/{CuiActionButton-CNTiGrTt.js → CuiActionButton-Bl7gqhIV.js} +1 -1
- package/dist/interface/assets/{CuiAvatar-DUucUxIP.js → CuiAvatar-Bbdxpgvs.js} +1 -1
- package/dist/interface/assets/{CuiBBoxPlayground-DOcoHCTQ.js → CuiBBoxPlayground-CIU5kteO.js} +1 -1
- package/dist/interface/assets/{CuiBottomSheet-zPb4AI5w.js → CuiBottomSheet-2SNSjqOZ.js} +1 -1
- package/dist/interface/assets/CuiBottomSheet-DX9ynJj_.js +1 -0
- package/dist/interface/assets/{CuiCameraCard-kI_GNoa7.js → CuiCameraCard-CXO5aDTJ.js} +1 -1
- package/dist/interface/assets/{CuiCameraPipCard-DehPfhfs.js → CuiCameraPipCard-BMxMzolT.js} +1 -1
- package/dist/interface/assets/{CuiCameraRecordings-bqChEXwx.js → CuiCameraRecordings-DLjYt8vJ.js} +1 -1
- package/dist/interface/assets/{CuiCameraShares-BvwB4H_0.js → CuiCameraShares-CLN2wuHG.js} +1 -1
- package/dist/interface/assets/{CuiCameraSnapshot-C33nUgVt.js → CuiCameraSnapshot-C7wIpD9K.js} +1 -1
- package/dist/interface/assets/{CuiCameraTable-B5wQAGfM.js → CuiCameraTable-CCpYHBTn.js} +1 -1
- package/dist/interface/assets/{CuiDataTable-D9GqApg1.js → CuiDataTable-saRt0sBc.js} +1 -1
- package/dist/interface/assets/{CuiFloatingButton-BLCO4wJw.js → CuiFloatingButton-B5YMdr0X.js} +1 -1
- package/dist/interface/assets/{CuiImage-B3eMhhIS.js → CuiImage-CoVi1BKR.js} +1 -1
- package/dist/interface/assets/{CuiMenu-BO2e4LK5.js → CuiMenu-vSJpyg_1.js} +1 -1
- package/dist/interface/assets/{CuiPluginCard-Bu_rNdQH.js → CuiPluginCard-CwGKyEU6.js} +2 -2
- package/dist/interface/assets/{CuiPluginOAuthButton-Q2CBmZzv.js → CuiPluginOAuthButton-CxNqrBe7.js} +2 -2
- package/dist/interface/assets/{CuiQRCode-CVHjvjZP.js → CuiQRCode-CP6aDzF5.js} +1 -1
- package/dist/interface/assets/{CuiRecordingsGrid-BFHPh2dn.js → CuiRecordingsGrid-BNyITEKD.js} +1 -1
- package/dist/interface/assets/{CuiSchema-DEYDened.js → CuiSchema-Bdy2raxw.js} +1 -1
- package/dist/interface/assets/{CuiTopNavbarItem-CqM9AHmU.js → CuiTopNavbarItem-Q7M4nMw5.js} +1 -1
- package/dist/interface/assets/{CuiTopbarSlot-DbzQRnbt.js → CuiTopbarSlot-ac4GLLbf.js} +1 -1
- package/dist/interface/assets/{Faces-u9Rxm4Ti.js → Faces-DufdNYrc.js} +1 -1
- package/dist/interface/assets/{FirstSteps-YNR-3tqt.js → FirstSteps-Bpu4QLhF.js} +1 -1
- package/dist/interface/assets/{Instances-CWzMYIvB.js → Instances-CxgKUsJh.js} +1 -1
- package/dist/interface/assets/{Logs-CpAkrsEJ.js → Logs-CJcq3xd6.js} +1 -1
- package/dist/interface/assets/{Menu-uW8DUGLM.js → Menu-BlYf1LF3.js} +1 -1
- package/dist/interface/assets/{OAuthDeviceFlow-CxJbM1jZ.js → OAuthDeviceFlow-k6_zfcw_.js} +1 -1
- package/dist/interface/assets/{Plugin-CWjFyBeK.js → Plugin-DcwR4dBy.js} +1 -1
- package/dist/interface/assets/{PluginConsole-C-ndOnmZ.js → PluginConsole-CQebF4NZ.js} +1 -1
- package/dist/interface/assets/{PluginSchema-BcLXAX-Q.js → PluginSchema-CcWTcoz_.js} +1 -1
- package/dist/interface/assets/{Plugins-B7ZOk3ld.js → Plugins-DfMxKm_j.js} +2 -2
- package/dist/interface/assets/{Recordings-Daf0TCPA.js → Recordings-BgqhrYcF.js} +1 -1
- package/dist/interface/assets/{Settings-Bz7u44Pl.js → Settings-BVa4xU_p.js} +1 -1
- package/dist/interface/assets/SettingsAccount-BcPNz9jC.js +1 -0
- package/dist/interface/assets/{SettingsAccount-C_pQPGoW.js → SettingsAccount-UKbQLW6n.js} +1 -1
- package/dist/interface/assets/SettingsAppearance-De_E9UCe.js +1 -0
- package/dist/interface/assets/{SettingsAppearance-CwPSvzkX.js → SettingsAppearance-e45pjRF6.js} +1 -1
- package/dist/interface/assets/{SettingsBackup-CCEtuJsQ.js → SettingsBackup-t2irnG2Z.js} +1 -1
- package/dist/interface/assets/{SettingsNotifications-OV4-nraE.js → SettingsNotifications-te4LKEdZ.js} +1 -1
- package/dist/interface/assets/{SettingsRecordings-uNRwROAh.js → SettingsRecordings-x4yRgxJm.js} +1 -1
- package/dist/interface/assets/{SettingsRemote-Dg3BfdmI.js → SettingsRemote-CBLPWHM6.js} +1 -1
- package/dist/interface/assets/{SettingsSystem-DwXSeR_Z.js → SettingsSystem-Du3S8gps.js} +2 -2
- package/dist/interface/assets/{SettingsUsers-CimG6HaL.js → SettingsUsers-DLAYh9IA.js} +1 -1
- package/dist/interface/assets/{Terminal-h5vqtN-o.js → Terminal-BsdUon5-.js} +1 -1
- package/dist/interface/assets/{VariableInput-tPI6hxP8.js → VariableInput-CFs-kzqd.js} +1 -1
- package/dist/interface/assets/{VariableSuggestions-K3CHs8XG.js → VariableSuggestions-PEzupqiE.js} +1 -1
- package/dist/interface/assets/{VersionsHandler-BrfHmvOf.js → VersionsHandler-DF_kclOb.js} +1 -1
- package/dist/interface/assets/{Workers-xo6c0O5M.js → Workers-CXvuE4Bn.js} +1 -1
- package/dist/interface/assets/api-BWWcvHf5.js +2 -0
- package/dist/interface/assets/{api-Cm9H8gwG.js → api-DY4FSNX7.js} +1 -1
- package/dist/interface/assets/{auth-Czmir2ST.js → auth-DJ1WgC3s.js} +1 -1
- package/dist/interface/assets/{automations-C2J4u5Uj.js → automations-C309DNNg.js} +1 -1
- package/dist/interface/assets/{automations-DVc4ovPU.js → automations-wQnuqfmi.js} +1 -1
- package/dist/interface/assets/{backup-BcXXJ1y6.js → backup-DYBEA8gj.js} +1 -1
- package/dist/interface/assets/cameras-WikE4nxe.js +1 -0
- package/dist/interface/assets/{cameras.schema-CuVLJONJ.js → cameras.schema-BULBdfmS.js} +1 -1
- package/dist/interface/assets/cloudHandoff-zXwtzo8e.js +1 -0
- package/dist/interface/assets/{deviceId-BM0pOHhg.js → deviceId-DMh1VcHg.js} +1 -1
- package/dist/interface/assets/{hasPermission-B724PtFJ.js → hasPermission-DdAdlKls.js} +1 -1
- package/dist/interface/assets/{instances-5MeVN25v.js → instances-BBnYdgRc.js} +1 -1
- package/dist/interface/assets/{locale-hdhgxXOX.js → locale-qn_8MsnX.js} +1 -1
- package/dist/interface/assets/{main-D0dJIe_X.js → main-CjUbwZ3z.js} +2 -2
- package/dist/interface/assets/{notifications-Cq1bDRQk.js → notifications-DGRbcf65.js} +1 -1
- package/dist/interface/assets/{plugins-BMys-WCs.js → plugins-tQniunmN.js} +1 -1
- package/dist/interface/assets/{round-restart-alt-bbbi50F4.js → round-restart-alt-wyrnMpa4.js} +1 -1
- package/dist/interface/assets/{router-DUCivZj8.js → router-CvWvXFyk.js} +2 -2
- package/dist/interface/assets/{routerState-ByP_jZ8E.js → routerState-dQtObsFs.js} +1 -1
- package/dist/interface/assets/{server-BW0jfXav.js → server-CmXhhpSW.js} +1 -1
- package/dist/interface/assets/{shares-D0r3nTB0.js → shares-ZKyJZapA.js} +1 -1
- package/dist/interface/assets/{theme-B2fORWV9.js → theme-DhiUIeo3.js} +1 -1
- package/dist/interface/assets/types-C9iWhZtk.js +1 -0
- package/dist/interface/assets/{ui-CnzJLu9N.js → ui-DrzKhUXW.js} +1 -1
- package/dist/interface/assets/{useBiometricCredentials-BGl37Skw.js → useBiometricCredentials-DDyhIy7O.js} +1 -1
- package/dist/interface/assets/{useCameraOptions-D0rQaUuh.js → useCameraOptions-CoogpQnN.js} +1 -1
- package/dist/interface/assets/{useCuiCameraDrawer-2I0LB3ff.js → useCuiCameraDrawer-DnN9lwiy.js} +1 -1
- package/dist/interface/assets/{useCuiDialog-DZvxI8xi.js → useCuiDialog-C50obC48.js} +1 -1
- package/dist/interface/assets/{useFileDownload-BLbAIlSX.js → useFileDownload-CSek7CzK.js} +1 -1
- package/dist/interface/assets/{useLogsSocket-BnU6ynWU.js → useLogsSocket-rG2BaLWl.js} +1 -1
- package/dist/interface/assets/{useSharedComposables-DjDddcdT.js → useSharedComposables-gpJ--qZh.js} +1 -1
- package/dist/interface/assets/{useStreamStatus-Dy3K_ILd.js → useStreamStatus-BdN05nfE.js} +1 -1
- package/dist/interface/assets/users.schema-Bz59q-My.js +1 -0
- package/dist/interface/assets/{vendor-cameraui-B9wC4-mi.js → vendor-cameraui-DgSMexWY.js} +1 -1
- package/dist/interface/assets/{vendor-core-CBFMCwgj.js → vendor-core-BKHiXSX7.js} +1 -1
- package/dist/interface/assets/{vendor-primevue-DYHQyonV.js → vendor-primevue-7iEzPOvf.js} +1 -1
- package/dist/interface/assets/{vendor-zod-V2qTUMVc.js → vendor-zod-DycFxUhi.js} +1 -1
- package/dist/interface/assets/{view-grid-D39XDBn9.js → view-grid-Cs5VWmxE.js} +1 -1
- package/dist/interface/index.html +41 -41
- package/dist/interface/sw.js +1 -1
- package/dist/server/package.json +2 -2
- package/dist/server/src/api/controllers/cameras.controller.d.ts +1 -5
- package/dist/server/src/api/controllers/cameras.controller.js +0 -359
- package/dist/server/src/api/controllers/cameras.controller.js.map +1 -1
- package/dist/server/src/api/routes/cameras.routes.js +1 -12
- package/dist/server/src/api/routes/cameras.routes.js.map +1 -1
- package/dist/server/src/api/schemas/cameras.schema.d.ts +0 -14
- package/dist/server/src/api/schemas/cameras.schema.js +0 -103
- package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
- package/dist/server/src/api/services/cameras.service.d.ts +2 -3
- package/dist/server/src/api/services/cameras.service.js +0 -67
- package/dist/server/src/api/services/cameras.service.js.map +1 -1
- package/dist/server/src/api/types/index.d.ts +1 -29
- package/dist/server/src/api/types/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/interface/assets/CuiBottomSheet-DSG6iONb.js +0 -1
- package/dist/interface/assets/SettingsAccount-BgpeeHsR.js +0 -1
- package/dist/interface/assets/SettingsAppearance-DSNXI3t4.js +0 -1
- package/dist/interface/assets/api-B8LDDNgZ.js +0 -2
- package/dist/interface/assets/cameras-BEBBV7mz.js +0 -1
- package/dist/interface/assets/cloudHandoff-Cnd7f4Es.js +0 -1
- package/dist/interface/assets/types-CztXMZ5X.js +0 -1
- package/dist/interface/assets/users.schema-2wYWhJ9W.js +0 -1
- /package/dist/interface/assets/{error-256-DLKVOU2S.png → logo-512-DLKVOU2S.png} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{At as e,Oi as t,Ri as n,V as r,W as i}from"./vendor-cameraui-B9wC4-mi.js";import{C as a,F as o,M as s,N as c,O as l,T as u,f as d,x as f}from"./api-B8LDDNgZ.js";import{$ as p,X as m,Y as h,dn as g,mn as _,mr as v,pr as y,un as b,ur as x,xr as S,zn as C}from"./vendor-DoIl6acN.js";import{d as w,l as T}from"./vendor-core-CBFMCwgj.js";import{t as ee}from"./hasPermission-B724PtFJ.js";import{t as E}from"./useCuiDialog-DZvxI8xi.js";var D={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function O(e,t){return C(),_(`svg`,D,[...t[0]||=[g(`path`,{fill:`currentColor`,d:`M20.916 9.564a1 1 0 0 0-.513-1.316L7.328 2.492c-.995-.438-2.22.051-2.645 1.042l-2.21 5.154a2 2 0 0 0 1.052 2.624L9.563 13.9L8.323 17H4v-3H2v8h2v-3h4.323c.823 0 1.552-.494 1.856-1.258l1.222-3.054l5.205 2.23a1 1 0 0 0 1.31-.517l.312-.71l1.701.68l2-5l-1.536-.613zm-4.434 5.126L4.313 9.475l2.208-5.152l12.162 5.354z`},null,-1)]])}var k=x({name:`bx-cctv`,render:O}),A={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function j(e,t){return C(),_(`svg`,A,[...t[0]||=[g(`path`,{fill:`currentColor`,d:`M20 3H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2m-5 5h-2V6h2zm4 0h-2V6h2zm1 5H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2m-5 5h-2v-2h2zm4 0h-2v-2h2z`},null,-1)]])}var M=x({name:`bxs-server`,render:j});async function N(e){return(await s.get(`/instances`,{signal:e})).data}async function P(e){return(await s.post(`/instances`,e)).data}async function F({id:e,data:t}){return(await s.put(`/instances/${e}`,t)).data}async function I(e){await s.delete(`/instances/${e}`)}async function L(e){return(await s.patch(`/instances/${e}/favorite`)).data}async function R(e){return(await s.post(`/instances/${e}/login`)).data}async function z(e,t){return(await s.get(`/instances/${e}/status`,{signal:t})).data}var B=class{_queryClient=p();toast=a();t=u.global.t;listQuery(){return f({queryKey:[`instances`],queryFn:({signal:e})=>N(e)})}statusQueries(e){return m({queries:b(()=>S(e).map(e=>({queryKey:[`instances`,e.id,`status`],queryFn:({signal:t})=>z(e.id,t),refetchInterval:15e3,retry:!1})))})}createMutation(){return h({mutationFn:P,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.added`),life:3e3})}})}updateMutation(){return h({mutationFn:F,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.updated`),life:3e3})}})}deleteMutation(){return h({mutationFn:async e=>{await I(e),await this._queryClient.cancelQueries({queryKey:[`instances`,e,`status`]}),this._queryClient.removeQueries({queryKey:[`instances`,e,`status`]})},onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.removed`),life:3e3})}})}toggleFavoriteMutation(){return h({mutationFn:L,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]})}})}loginMutation(){return h({mutationFn:R,onError:()=>{}})}},V=3e4,H=5e3,U=`__home__`,W=new Set([`localhost`,`127.0.0.1`,`::1`]),G=l(`Instances`);async function K(e,t){try{let n=AbortSignal.timeout(H),r=t?AbortSignal.any([n,t]):n,i=await fetch(`${e}/api/health`,{signal:r});return G.debug(`[probe]`,`${e} → ${i.ok?`OK`:`HTTP ${i.status}`}`),i.ok}catch(t){let n=t instanceof Error?t.message:String(t);return G.debug(`[probe]`,`${e} → FAIL`,n),!1}}function q(e){return{access:e.access_token,accessExpiresAt:e.access_token_expires_at,refresh:e.refresh_token,refreshExpiresAt:e.refresh_token_expires_at}}function te(e,t){return{_id:t?._id??``,username:t?.username??``,email:t?.email,role:t?.role??``,firstLogin:t?.firstLogin,avatar:t?.avatar,access_token:e.access,refresh_token:e.refresh??``,token_type:`Bearer`,access_token_expires_at:e.accessExpiresAt??0,refresh_token_expires_at:e.refreshExpiresAt??0,internalAddresses:[],externalAddresses:[]}}var J=w(`instances`,()=>{let s=d(),l=T(),f=a(),m=E(),h=p(),{t:g}=u.global,_=t(`instanceTokens`,{}),x=t(`activeInstanceId`,null),S=v(!1),C=v(null),w=v(0),D=0,O=v(null),k=v([]),A=n(`redirectInfo`,null,{serializer:{read:e=>e?JSON.parse(e):null,write:e=>JSON.stringify(e)}}),j=b(()=>x.value===null),M=b(()=>x.value===null?null:k.value.find(e=>e.id===x.value)?.url??null);async function z(){try{if(!ee(void 0,`admin`))return;let e=await N();k.value=e.instances,O.value=e.homeId,G.debug(`[fetch]`,`loaded ${e.instances.length} instances`,{homeId:e.homeId})}catch(e){G.warn(`[fetch]`,`failed`,e)}}let B=b(()=>{let e=O.value;return k.value.filter(t=>!(e&&t.remoteHomeId&&t.remoteHomeId===e)).map(e=>{let t=_.value[e.id];return{id:e.id,name:e.name,url:e.url,hasCredentials:!!e.credentials,favorite:e.favorite??!0,userData:t?.userData??null,lastConnectedAt:t?.lastConnectedAt??null,isHome:!1}})});function H(){let e=_.value[U],t=x.value===null?c().target.value?.endpoint.url??e?.url??window.location.origin:e?.url??window.location.origin;return{id:`home`,name:g(`navigation.home`),url:t,hasCredentials:!1,favorite:!1,userData:e?.userData??null,lastConnectedAt:e?.lastConnectedAt??null,isHome:!0}}let J=b(()=>{if(x.value!==null){let e=B.value.find(e=>e.id===x.value);if(e)return e}return H()}),Y=b(()=>B.value.filter(e=>e.favorite)),X=b(()=>Y.value.length>0||x.value!==null||A.value!==null);function Z(e){return k.value.find(t=>t.id===e)?.favorite??!0}async function ne(e){let{favorite:t}=await L(e),n=k.value.find(t=>t.id===e);n&&(n.favorite=t)}async function re(e){let t=await P(e);return k.value=[...k.value,t],t}async function ie(e){await I(e),k.value=k.value.filter(t=>t.id!==e),delete _.value[e]}async function ae(e,t){let n=await F({id:e,data:t}),r=k.value.findIndex(t=>t.id===e);r!==-1&&(k.value[r]=n)}async function oe(e,t){let n=k.value.find(t=>t.id===e);return n?K(n.url,t):!1}function Q(){let e=c().target.value;if(!e?.tokens.access){G.debug(`[save-tokens]`,`skipped — no live access token`);return}let t=x.value??U;_.value[t]={userData:te(e.tokens,s.user??void 0),lastConnectedAt:Date.now(),url:e.endpoint.url},G.debug(`[save-tokens]`,`slot=${t} url=${e.endpoint.url}`)}function se(){if(x.value===null){o.value=null,G.debug(`[restore-override]`,`no active instance — home target`);return}let e=_.value[x.value],t=e?.url??e?.userData?.internalAddresses?.[0]??e?.userData?.externalAddresses?.[0]??null;o.value=t,G.debug(`[restore-override]`,`activeId=${x.value} → ${t??`no cached url`}`)}async function ce(t){if(S.value){G.warn(`[switch]`,`ignored — another switch is already in progress`);return}let n=t===null?H():B.value.find(e=>e.id===t)??H();if(t!==null&&$(n.url)&&!await ue(n.name)){G.debug(`[switch]`,`URL handoff declined by user`);return}let a=++D;S.value=!0,C.value=n.name,G.debug(`[switch]`,`START targetId=${t??`home`} gen=${a}`),G.debug(`[switch]`,`target resolved — name="${n.name}" url=${n.url} hasCreds=${n.hasCredentials}`);try{if(t!==null){let e=await K(n.url);if(a!==D){G.debug(`[switch]`,`aborted after probe — newer gen=${D}`);return}if(!e){G.warn(`[switch]`,`target unreachable — ${n.url}`),f.add({severity:`warn`,detail:g(`instances.unreachable`,{name:n.name}),life:3e3});return}}let u=null;if(t!==null&&n.hasCredentials)try{u=await R(t),G.debug(`[switch]`,`backend relay login OK`)}catch(e){G.warn(`[switch]`,`backend relay login FAILED — will try cached tokens`,e)}if(a!==D){G.debug(`[switch]`,`aborted after relay-login — newer gen=${D}`);return}Q();let d=t??U,p=u?q(u):le(d);if(G.debug(`[switch]`,`tokens source: ${u?`fresh`:p?`cached`:`none`} (slot=${d})`),t!==null&&$(n.url)){G.debug(`[switch]`,`URL handoff required — leaving SPA`),await de(n,u);return}let m=c();if(m.reset(),G.debug(`[switch]`,`kernel RESET`),e(),r(),i(),h.clear(),G.debug(`[switch]`,`vue-query cleared`),x.value=t,o.value=t===null?null:n.url,G.debug(`[switch]`,`activeId=${t} instanceOverride=${o.value??`null`}`),p&&u&&(_.value[d]={userData:u,lastConnectedAt:Date.now(),url:n.url},s.user={_id:u._id,username:u.username,role:u.role,firstLogin:u.firstLogin,avatar:u.avatar}),p){let e={url:n.url,mode:`direct-lan`,priority:0};G.debug(`[switch]`,`seedAndRetry → ${e.url}`),await Promise.race([m.seedAndRetry({endpoint:e,tokens:p},t??`home`),new Promise((e,t)=>setTimeout(()=>t(Error(`switch_timeout`)),V))])}else{G.warn(`[switch]`,`no tokens — boot + route to login`),m.boot(t??`home`),s.user=null,l.push(`/`);return}if(a!==D){G.debug(`[switch]`,`aborted after seedAndRetry — newer gen=${D}`);return}w.value++,G.debug(`[switch]`,`DONE gen=${a} → /home`),l.push(`/home`)}catch(e){(e instanceof Error?e.message:String(e))===`switch_timeout`?(G.error(`[switch]`,`TIMEOUT after ${V}ms`),f.add({severity:`error`,detail:g(`instances.switch_timeout`,{name:C.value??``}),life:3e3})):(G.error(`[switch]`,`failed`,e),f.add({severity:`error`,detail:e,life:3e3}))}finally{a===D&&(S.value=!1,C.value=null)}}function le(e){let t=_.value[e];return t?.userData?.access_token?q(t.userData):null}function $(e){try{let t=new URL(e),n=new URL(window.location.origin),r=n.protocol===`https:`&&t.protocol===`http:`,i=W.has(t.hostname)&&!W.has(n.hostname);return r||i}catch{return!1}}function ue(e){return G.warn(`[switch]`,`target "${e}" requires URL handoff — asking user confirmation`),new Promise(t=>{let n=!1,r=e=>{n||(n=!0,t(e))};m.openTextDialog({data:{title:g(`instances.insecure_handoff_title`),confirmText:g(`instances.insecure_handoff_confirm`),contentText:g(`instances.insecure_handoff_message`,{name:e}),confirmButtonProps:{severity:`danger`}},onConfirm:()=>r(!0),onCancel:()=>r(!1)})})}async function de(e,t){let n={_reset:!0,_sourceUrl:window.location.origin,_instanceName:e.name};t&&Object.assign(n,t);let r=encodeURIComponent(btoa(JSON.stringify(n))),i=`${e.url.split(`#`)[0]}#auth=${r}`;G.debug(`[url-handoff]`,`→ ${e.url} (with token=${t?`yes`:`no`})`),window.location.href=i}function fe(){_.value={},x.value=null,o.value=null,A.value=null,k.value=[],O.value=null,G.debug(`[reset]`,`store cleared`)}return{instances:B,activeInstance:J,activeId:x,activeUrl:M,isHomeActive:j,isMultiInstance:X,isSwitching:y(S),switchTargetName:y(C),switchKey:y(w),serverHomeId:O,redirectInfo:A,serverInstances:k,instanceTokens:_,favoriteInstances:Y,isFavorite:Z,toggleFavorite:ne,fetchInstances:z,addInstance:re,removeInstance:ie,updateInstance:ae,switchInstance:ce,probeInstance:oe,reset:fe,saveCurrentTokens:Q,restoreActiveOverride:se}});export{k as i,B as n,M as r,J as t};
|
|
1
|
+
import{At as e,Oi as t,Ri as n,V as r,W as i}from"./vendor-cameraui-DgSMexWY.js";import{C as a,F as o,M as s,N as c,O as l,T as u,f as d,x as f}from"./api-BWWcvHf5.js";import{$ as p,X as m,Y as h,dn as g,mn as _,mr as v,pr as y,un as b,ur as x,xr as S,zn as C}from"./vendor-DoIl6acN.js";import{d as w,l as T}from"./vendor-core-BKHiXSX7.js";import{t as ee}from"./hasPermission-DdAdlKls.js";import{t as E}from"./useCuiDialog-C50obC48.js";var D={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function O(e,t){return C(),_(`svg`,D,[...t[0]||=[g(`path`,{fill:`currentColor`,d:`M20.916 9.564a1 1 0 0 0-.513-1.316L7.328 2.492c-.995-.438-2.22.051-2.645 1.042l-2.21 5.154a2 2 0 0 0 1.052 2.624L9.563 13.9L8.323 17H4v-3H2v8h2v-3h4.323c.823 0 1.552-.494 1.856-1.258l1.222-3.054l5.205 2.23a1 1 0 0 0 1.31-.517l.312-.71l1.701.68l2-5l-1.536-.613zm-4.434 5.126L4.313 9.475l2.208-5.152l12.162 5.354z`},null,-1)]])}var k=x({name:`bx-cctv`,render:O}),A={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function j(e,t){return C(),_(`svg`,A,[...t[0]||=[g(`path`,{fill:`currentColor`,d:`M20 3H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2m-5 5h-2V6h2zm4 0h-2V6h2zm1 5H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2m-5 5h-2v-2h2zm4 0h-2v-2h2z`},null,-1)]])}var M=x({name:`bxs-server`,render:j});async function N(e){return(await s.get(`/instances`,{signal:e})).data}async function P(e){return(await s.post(`/instances`,e)).data}async function F({id:e,data:t}){return(await s.put(`/instances/${e}`,t)).data}async function I(e){await s.delete(`/instances/${e}`)}async function L(e){return(await s.patch(`/instances/${e}/favorite`)).data}async function R(e){return(await s.post(`/instances/${e}/login`)).data}async function z(e,t){return(await s.get(`/instances/${e}/status`,{signal:t})).data}var B=class{_queryClient=p();toast=a();t=u.global.t;listQuery(){return f({queryKey:[`instances`],queryFn:({signal:e})=>N(e)})}statusQueries(e){return m({queries:b(()=>S(e).map(e=>({queryKey:[`instances`,e.id,`status`],queryFn:({signal:t})=>z(e.id,t),refetchInterval:15e3,retry:!1})))})}createMutation(){return h({mutationFn:P,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.added`),life:3e3})}})}updateMutation(){return h({mutationFn:F,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.updated`),life:3e3})}})}deleteMutation(){return h({mutationFn:async e=>{await I(e),await this._queryClient.cancelQueries({queryKey:[`instances`,e,`status`]}),this._queryClient.removeQueries({queryKey:[`instances`,e,`status`]})},onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.removed`),life:3e3})}})}toggleFavoriteMutation(){return h({mutationFn:L,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]})}})}loginMutation(){return h({mutationFn:R,onError:()=>{}})}},V=3e4,H=5e3,U=`__home__`,W=new Set([`localhost`,`127.0.0.1`,`::1`]),G=l(`Instances`);async function K(e,t){try{let n=AbortSignal.timeout(H),r=t?AbortSignal.any([n,t]):n,i=await fetch(`${e}/api/health`,{signal:r});return G.debug(`[probe]`,`${e} → ${i.ok?`OK`:`HTTP ${i.status}`}`),i.ok}catch(t){let n=t instanceof Error?t.message:String(t);return G.debug(`[probe]`,`${e} → FAIL`,n),!1}}function q(e){return{access:e.access_token,accessExpiresAt:e.access_token_expires_at,refresh:e.refresh_token,refreshExpiresAt:e.refresh_token_expires_at}}function te(e,t){return{_id:t?._id??``,username:t?.username??``,email:t?.email,role:t?.role??``,firstLogin:t?.firstLogin,avatar:t?.avatar,access_token:e.access,refresh_token:e.refresh??``,token_type:`Bearer`,access_token_expires_at:e.accessExpiresAt??0,refresh_token_expires_at:e.refreshExpiresAt??0,internalAddresses:[],externalAddresses:[]}}var J=w(`instances`,()=>{let s=d(),l=T(),f=a(),m=E(),h=p(),{t:g}=u.global,_=t(`instanceTokens`,{}),x=t(`activeInstanceId`,null),S=v(!1),C=v(null),w=v(0),D=0,O=v(null),k=v([]),A=n(`redirectInfo`,null,{serializer:{read:e=>e?JSON.parse(e):null,write:e=>JSON.stringify(e)}}),j=b(()=>x.value===null),M=b(()=>x.value===null?null:k.value.find(e=>e.id===x.value)?.url??null);async function z(){try{if(!ee(void 0,`admin`))return;let e=await N();k.value=e.instances,O.value=e.homeId,G.debug(`[fetch]`,`loaded ${e.instances.length} instances`,{homeId:e.homeId})}catch(e){G.warn(`[fetch]`,`failed`,e)}}let B=b(()=>{let e=O.value;return k.value.filter(t=>!(e&&t.remoteHomeId&&t.remoteHomeId===e)).map(e=>{let t=_.value[e.id];return{id:e.id,name:e.name,url:e.url,hasCredentials:!!e.credentials,favorite:e.favorite??!0,userData:t?.userData??null,lastConnectedAt:t?.lastConnectedAt??null,isHome:!1}})});function H(){let e=_.value[U],t=x.value===null?c().target.value?.endpoint.url??e?.url??window.location.origin:e?.url??window.location.origin;return{id:`home`,name:g(`navigation.home`),url:t,hasCredentials:!1,favorite:!1,userData:e?.userData??null,lastConnectedAt:e?.lastConnectedAt??null,isHome:!0}}let J=b(()=>{if(x.value!==null){let e=B.value.find(e=>e.id===x.value);if(e)return e}return H()}),Y=b(()=>B.value.filter(e=>e.favorite)),X=b(()=>Y.value.length>0||x.value!==null||A.value!==null);function Z(e){return k.value.find(t=>t.id===e)?.favorite??!0}async function ne(e){let{favorite:t}=await L(e),n=k.value.find(t=>t.id===e);n&&(n.favorite=t)}async function re(e){let t=await P(e);return k.value=[...k.value,t],t}async function ie(e){await I(e),k.value=k.value.filter(t=>t.id!==e),delete _.value[e]}async function ae(e,t){let n=await F({id:e,data:t}),r=k.value.findIndex(t=>t.id===e);r!==-1&&(k.value[r]=n)}async function oe(e,t){let n=k.value.find(t=>t.id===e);return n?K(n.url,t):!1}function Q(){let e=c().target.value;if(!e?.tokens.access){G.debug(`[save-tokens]`,`skipped — no live access token`);return}let t=x.value??U;_.value[t]={userData:te(e.tokens,s.user??void 0),lastConnectedAt:Date.now(),url:e.endpoint.url},G.debug(`[save-tokens]`,`slot=${t} url=${e.endpoint.url}`)}function se(){if(x.value===null){o.value=null,G.debug(`[restore-override]`,`no active instance — home target`);return}let e=_.value[x.value],t=e?.url??e?.userData?.internalAddresses?.[0]??e?.userData?.externalAddresses?.[0]??null;o.value=t,G.debug(`[restore-override]`,`activeId=${x.value} → ${t??`no cached url`}`)}async function ce(t){if(S.value){G.warn(`[switch]`,`ignored — another switch is already in progress`);return}let n=t===null?H():B.value.find(e=>e.id===t)??H();if(t!==null&&$(n.url)&&!await ue(n.name)){G.debug(`[switch]`,`URL handoff declined by user`);return}let a=++D;S.value=!0,C.value=n.name,G.debug(`[switch]`,`START targetId=${t??`home`} gen=${a}`),G.debug(`[switch]`,`target resolved — name="${n.name}" url=${n.url} hasCreds=${n.hasCredentials}`);try{if(t!==null){let e=await K(n.url);if(a!==D){G.debug(`[switch]`,`aborted after probe — newer gen=${D}`);return}if(!e){G.warn(`[switch]`,`target unreachable — ${n.url}`),f.add({severity:`warn`,detail:g(`instances.unreachable`,{name:n.name}),life:3e3});return}}let u=null;if(t!==null&&n.hasCredentials)try{u=await R(t),G.debug(`[switch]`,`backend relay login OK`)}catch(e){G.warn(`[switch]`,`backend relay login FAILED — will try cached tokens`,e)}if(a!==D){G.debug(`[switch]`,`aborted after relay-login — newer gen=${D}`);return}Q();let d=t??U,p=u?q(u):le(d);if(G.debug(`[switch]`,`tokens source: ${u?`fresh`:p?`cached`:`none`} (slot=${d})`),t!==null&&$(n.url)){G.debug(`[switch]`,`URL handoff required — leaving SPA`),await de(n,u);return}let m=c();if(m.reset(),G.debug(`[switch]`,`kernel RESET`),e(),r(),i(),h.clear(),G.debug(`[switch]`,`vue-query cleared`),x.value=t,o.value=t===null?null:n.url,G.debug(`[switch]`,`activeId=${t} instanceOverride=${o.value??`null`}`),p&&u&&(_.value[d]={userData:u,lastConnectedAt:Date.now(),url:n.url},s.user={_id:u._id,username:u.username,role:u.role,firstLogin:u.firstLogin,avatar:u.avatar}),p){let e={url:n.url,mode:`direct-lan`,priority:0};G.debug(`[switch]`,`seedAndRetry → ${e.url}`),await Promise.race([m.seedAndRetry({endpoint:e,tokens:p},t??`home`),new Promise((e,t)=>setTimeout(()=>t(Error(`switch_timeout`)),V))])}else{G.warn(`[switch]`,`no tokens — boot + route to login`),m.boot(t??`home`),s.user=null,l.push(`/`);return}if(a!==D){G.debug(`[switch]`,`aborted after seedAndRetry — newer gen=${D}`);return}w.value++,G.debug(`[switch]`,`DONE gen=${a} → /home`),l.push(`/home`)}catch(e){(e instanceof Error?e.message:String(e))===`switch_timeout`?(G.error(`[switch]`,`TIMEOUT after ${V}ms`),f.add({severity:`error`,detail:g(`instances.switch_timeout`,{name:C.value??``}),life:3e3})):(G.error(`[switch]`,`failed`,e),f.add({severity:`error`,detail:e,life:3e3}))}finally{a===D&&(S.value=!1,C.value=null)}}function le(e){let t=_.value[e];return t?.userData?.access_token?q(t.userData):null}function $(e){try{let t=new URL(e),n=new URL(window.location.origin),r=n.protocol===`https:`&&t.protocol===`http:`,i=W.has(t.hostname)&&!W.has(n.hostname);return r||i}catch{return!1}}function ue(e){return G.warn(`[switch]`,`target "${e}" requires URL handoff — asking user confirmation`),new Promise(t=>{let n=!1,r=e=>{n||(n=!0,t(e))};m.openTextDialog({data:{title:g(`instances.insecure_handoff_title`),confirmText:g(`instances.insecure_handoff_confirm`),contentText:g(`instances.insecure_handoff_message`,{name:e}),confirmButtonProps:{severity:`danger`}},onConfirm:()=>r(!0),onCancel:()=>r(!1)})})}async function de(e,t){let n={_reset:!0,_sourceUrl:window.location.origin,_instanceName:e.name};t&&Object.assign(n,t);let r=encodeURIComponent(btoa(JSON.stringify(n))),i=`${e.url.split(`#`)[0]}#auth=${r}`;G.debug(`[url-handoff]`,`→ ${e.url} (with token=${t?`yes`:`no`})`),window.location.href=i}function fe(){_.value={},x.value=null,o.value=null,A.value=null,k.value=[],O.value=null,G.debug(`[reset]`,`store cleared`)}return{instances:B,activeInstance:J,activeId:x,activeUrl:M,isHomeActive:j,isMultiInstance:X,isSwitching:y(S),switchTargetName:y(C),switchKey:y(w),serverHomeId:O,redirectInfo:A,serverInstances:k,instanceTokens:_,favoriteInstances:Y,isFavorite:Z,toggleFavorite:ne,fetchInstances:z,addInstance:re,removeInstance:ie,updateInstance:ae,switchInstance:ce,probeInstance:oe,reset:fe,saveCurrentTokens:Q,restoreActiveOverride:se}});export{k as i,B as n,M as r,J as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Oi as e}from"./vendor-cameraui-
|
|
1
|
+
import{Oi as e}from"./vendor-cameraui-DgSMexWY.js";import{T as t,w as n}from"./api-BWWcvHf5.js";import{$n as r,mr as i,v as a,y as o}from"./vendor-DoIl6acN.js";import{d as s}from"./vendor-core-BKHiXSX7.js";import{t as c}from"./useElectron-mh8HQUAI.js";import{b as l}from"./vendor-primevue-7iEzPOvf.js";var u={de:o,en:a},d=s(`locale`,()=>{let a=e(`locale`,`en`),o=i(n),s=l(),{electron:d}=c(),f=t.global;function p(e){d?.send(`change-language`,e),f.locale.value=e}async function m(e){let t=u[e];t&&(s.config.locale=t)}return r(a,e=>{p(e),m(e)}),p(a.value),m(a.value),{languages:o,locale:a,setI18Nlocale:p,setPrimeVueLocale:m}});export{d as t};
|