@camera.ui/server 2.0.13 → 2.0.14
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-Dfyzm8bF.js → 404-Dc_0Olmy.js} +1 -1
- package/dist/interface/assets/{About-B4Y3WP7T.js → About-CRCM-TCh.js} +1 -1
- package/dist/interface/assets/{Adminpanel-DSk1uh2x.js → Adminpanel-BhxC4MaN.js} +1 -1
- package/dist/interface/assets/{Automation-CTSfLcmF.js → Automation-CjM_2c6p.js} +2 -2
- package/dist/interface/assets/{AutomationImport-B1P0T0Pe.js → AutomationImport-BbXsgU4b.js} +2 -2
- package/dist/interface/assets/{AutomationStore-ZaaXPPbd.js → AutomationStore-BCC23cZT.js} +2 -2
- package/dist/interface/assets/{AutomationStoreDetail-B2vc7mTZ.js → AutomationStoreDetail-Nvw6dcvk.js} +2 -2
- package/dist/interface/assets/{Automations-Bvw-jTKi.js → Automations-ocOGPBSG.js} +2 -2
- package/dist/interface/assets/{Camera-BxmJXk11.js → Camera-CVcl--Be.js} +2 -2
- package/dist/interface/assets/{CameraConsole-CVqgED5u.js → CameraConsole-DYnZN6CV.js} +1 -1
- package/dist/interface/assets/{Cameras-DT62fcZK.js → Cameras-0-cK5Qao.js} +1 -1
- package/dist/interface/assets/{Camview-CqSckgLr.js → Camview-CXAaiOIz.js} +1 -1
- package/dist/interface/assets/{Config-p9t9zgly.js → Config-BAQtGxV_.js} +1 -1
- package/dist/interface/assets/{ConfigActionCameraControl-BLROOU0q.js → ConfigActionCameraControl-qKmOFx9h.js} +1 -1
- package/dist/interface/assets/{ConfigActionNotification-DIkFNlKe.js → ConfigActionNotification-xoPwijU8.js} +1 -1
- package/dist/interface/assets/{ConfigActionPlugin-rQeJ4umG.js → ConfigActionPlugin-TsGugsaT.js} +1 -1
- package/dist/interface/assets/{ConfigActionSensor-BWHpkoMs.js → ConfigActionSensor-D6HHblmj.js} +1 -1
- package/dist/interface/assets/{ConfigActionSnapshot-BlvQZl1R.js → ConfigActionSnapshot-BbBzu2um.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSensorState-8bIGEhQd.js → ConfigConditionSensorState-B3DK1TSR.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerDetection-D4UitpXI.js → ConfigTriggerDetection-C-Y6dqJY.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerGeofence-Ci-gkmjS.js → ConfigTriggerGeofence-uGk0ucgz.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSensor-CZMplCYs.js → ConfigTriggerSensor-C6eoElEO.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSystem-OOffe8rK.js → ConfigTriggerSystem-KYnubRsW.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerWebhook-Baul6M1Y.js → ConfigTriggerWebhook-DHvAht-3.js} +1 -1
- package/dist/interface/assets/{Console-MXiL0z_X.js → Console-CT9DL8G6.js} +1 -1
- package/dist/interface/assets/{CuiAvatar-BUwQnIaI.js → CuiAvatar-CGs4KCeb.js} +1 -1
- package/dist/interface/assets/{CuiBottomSheet-CzG0n4Oa.js → CuiBottomSheet-Ccqs8aqt.js} +1 -1
- package/dist/interface/assets/CuiBottomSheet-D7tzN1B7.js +1 -0
- package/dist/interface/assets/{CuiCameraCard-GH-DR5_s.js → CuiCameraCard-DiiA1IHK.js} +1 -1
- package/dist/interface/assets/{CuiCameraPipCard-CL_wj05b.js → CuiCameraPipCard-164Vxpyy.js} +1 -1
- package/dist/interface/assets/{CuiCameraRecordings-BjErk9Gl.js → CuiCameraRecordings-CZg6-Joe.js} +1 -1
- package/dist/interface/assets/{CuiCameraShares-qrJhZMEt.js → CuiCameraShares-CQKMJS0b.js} +1 -1
- package/dist/interface/assets/{CuiCameraSnapshot-Dn1QSGrr.js → CuiCameraSnapshot-siWvyXxy.js} +1 -1
- package/dist/interface/assets/{CuiCameraTable-or8VpE34.js → CuiCameraTable-CmxdJniV.js} +1 -1
- package/dist/interface/assets/{CuiImage-Bq3bxOOL.js → CuiImage-D1OR7e_p.js} +1 -1
- package/dist/interface/assets/{CuiMenu-DtnIPhcr.js → CuiMenu-CZdrrvGm.js} +1 -1
- package/dist/interface/assets/{CuiPluginCard-DKNWUFpR.js → CuiPluginCard-BW8voSST.js} +2 -2
- package/dist/interface/assets/{CuiPluginOAuthButton-C6FQiVkt.js → CuiPluginOAuthButton-BrNhLZTM.js} +2 -2
- package/dist/interface/assets/{CuiQRCode-uQygC1dP.js → CuiQRCode-BNrRF1kj.js} +1 -1
- package/dist/interface/assets/{CuiRecordingsGrid-Cuwd4L67.js → CuiRecordingsGrid-BHK62CGb.js} +1 -1
- package/dist/interface/assets/{CuiSchema-CH0GXMWV.js → CuiSchema-DQekVg-C.js} +1 -1
- package/dist/interface/assets/{Faces-cpO5vJbp.js → Faces-BGt7OeMa.js} +1 -1
- package/dist/interface/assets/{FirstSteps-BHTcbs9O.js → FirstSteps-DOuZ0Ejq.js} +1 -1
- package/dist/interface/assets/{Instances-BXiVG2Dm.js → Instances-BKuNMjic.js} +1 -1
- package/dist/interface/assets/{Logs-hMg2QOGj.js → Logs-DlHlslG8.js} +1 -1
- package/dist/interface/assets/{Menu-BiPBCi8Z.js → Menu-s4tcmA39.js} +1 -1
- package/dist/interface/assets/{OAuthDeviceFlow-Bia9UA3I.js → OAuthDeviceFlow-CuTYrD9O.js} +1 -1
- package/dist/interface/assets/{Plugin-DfRaHAsi.js → Plugin-rxCnj2kj.js} +1 -1
- package/dist/interface/assets/{PluginConsole-CRw4zTRM.js → PluginConsole-Co4fjc4f.js} +1 -1
- package/dist/interface/assets/{PluginDetail-BqRoLZc7.js → PluginDetail-CTN85V6r.js} +2 -2
- package/dist/interface/assets/{PluginSchema-TtBJPR_R.js → PluginSchema-BBKqhEhT.js} +1 -1
- package/dist/interface/assets/{PluginSearch-B_NYpJi3.js → PluginSearch-BSkk8YEd.js} +2 -2
- package/dist/interface/assets/PluginSearch-CysXKG6O.js +1 -0
- package/dist/interface/assets/{Plugins-DVFEGtj3.js → Plugins-DscYFuBq.js} +1 -1
- package/dist/interface/assets/{Recordings-dwm6lAoJ.js → Recordings-CwnEqtEu.js} +1 -1
- package/dist/interface/assets/{Settings-BpBmrGpS.js → Settings-D3tqwxff.js} +1 -1
- package/dist/interface/assets/{SettingsAccount-8Kh1uQqn.js → SettingsAccount-5DJA1JXc.js} +1 -1
- package/dist/interface/assets/SettingsAccount-CAx-eRn1.js +1 -0
- package/dist/interface/assets/{SettingsAppearance-EoBxclgt.js → SettingsAppearance-BycQWjE1.js} +1 -1
- package/dist/interface/assets/SettingsAppearance-C5kgUTlV.js +1 -0
- package/dist/interface/assets/{SettingsBackup-Bpsbg6Pm.js → SettingsBackup-DN3fnfll.js} +1 -1
- package/dist/interface/assets/{SettingsMqtt-ZQolc9lR.js → SettingsMqtt-DcxlsTHF.js} +1 -1
- package/dist/interface/assets/{SettingsNotifications-BOoMt1Er.js → SettingsNotifications-D6OW8JdD.js} +1 -1
- package/dist/interface/assets/{SettingsRecordings-BQhxLCgM.js → SettingsRecordings-Dnq3B9t-.js} +1 -1
- package/dist/interface/assets/{SettingsRemote-Cvcmpdgb.js → SettingsRemote-DewU1s-u.js} +1 -1
- package/dist/interface/assets/{SettingsSystem-B-yhq40t.js → SettingsSystem-jgptDmFF.js} +2 -2
- package/dist/interface/assets/{SettingsUsers-CezygBk8.js → SettingsUsers-BWzWokSD.js} +1 -1
- package/dist/interface/assets/{Terminal-CDQJGwb_.js → Terminal-DNZZe-ly.js} +1 -1
- package/dist/interface/assets/{VersionsHandler-BHR1k9zz.js → VersionsHandler-DOUnzS4w.js} +1 -1
- package/dist/interface/assets/{Workers-Bv-bWBC-.js → Workers-BpYgRNR_.js} +1 -1
- package/dist/interface/assets/{api-BhOwzvxK.js → api-BDmdOpiE.js} +1 -1
- package/dist/interface/assets/api-BLTlDTXb.js +2 -0
- package/dist/interface/assets/{auth-CNPkdTXX.js → auth-Bz_wOZY_.js} +1 -1
- package/dist/interface/assets/{automations-DhLADBhd.js → automations-BZJH0t8U.js} +1 -1
- package/dist/interface/assets/{cameras-DyF2T0be.js → cameras-BeI58GuP.js} +1 -1
- package/dist/interface/assets/{cameras.schema-DBzgU4m6.js → cameras.schema-BNPdbNpH.js} +1 -1
- package/dist/interface/assets/cloudHandoff-B1v8OCuH.js +1 -0
- package/dist/interface/assets/{config-c7o4sJrQ.js → config-B7ya1VEA.js} +1 -1
- package/dist/interface/assets/{deviceId-BYu9Q8Ay.js → deviceId-CGGDdDuU.js} +1 -1
- package/dist/interface/assets/{hasPermission-CgyWyOhQ.js → hasPermission-ByNfMevH.js} +1 -1
- package/dist/interface/assets/{instances-CRYtaTQS.js → instances-B1yf-GZK.js} +1 -1
- package/dist/interface/assets/{main-CgXkx5UO.js → main-DSqwFZhx.js} +2 -2
- package/dist/interface/assets/{notifications-sejZCb0L.js → notifications-CRDDcfL2.js} +1 -1
- package/dist/interface/assets/{plugins-CCLFcD4c.js → plugins-yCjIwfVx.js} +1 -1
- package/dist/interface/assets/{round-restart-alt-PDSZur-0.js → round-restart-alt-DX8oW4nB.js} +1 -1
- package/dist/interface/assets/{router-DkMUvvnP.js → router-CLY-toId.js} +2 -2
- package/dist/interface/assets/{server-C7SETTy9.js → server-CL_7W-Ge.js} +1 -1
- package/dist/interface/assets/{shares-Cy1SLL98.js → shares-CNCmI_b5.js} +1 -1
- package/dist/interface/assets/{theme-DqbhRu7y.js → theme-DqZM6oaM.js} +1 -1
- package/dist/interface/assets/{useAppVersion-WfdoG9Ji.js → useAppVersion-BWNhVD0_.js} +1 -1
- package/dist/interface/assets/{useBackupRestore-ootsFhdF.js → useBackupRestore-5e3MURs9.js} +1 -1
- package/dist/interface/assets/{useBiometricCredentials-Ca75xEru.js → useBiometricCredentials-Td1PJjhl.js} +1 -1
- package/dist/interface/assets/{useCameraOptions-BpL2zbfV.js → useCameraOptions-nvj6-uZg.js} +1 -1
- package/dist/interface/assets/{useCuiDialog-yVh5UWKF.js → useCuiDialog-DwpKUbrp.js} +1 -1
- package/dist/interface/assets/{useFileDownload-BcaNWndS.js → useFileDownload-EHYhCRvk.js} +1 -1
- package/dist/interface/assets/{useLogsSocket-BRSsUNqv.js → useLogsSocket-BWN3k9kv.js} +1 -1
- package/dist/interface/assets/{useServerRestart-PZhND5H_.js → useServerRestart-ZFTJSxW7.js} +1 -1
- package/dist/interface/assets/{useStreamStatus-nCx5ux1-.js → useStreamStatus-DxtAbw4P.js} +1 -1
- package/dist/interface/assets/{useUpdateChannel-3eHk3KXZ.js → useUpdateChannel-m5t7lNTq.js} +1 -1
- package/dist/interface/assets/{useUserOptions-DVC4k8Zs.js → useUserOptions-B3MwA59K.js} +1 -1
- package/dist/interface/assets/{users.schema-B4fEuoKZ.js → users.schema-BOs7h9k2.js} +1 -1
- package/dist/interface/assets/{view-grid-BWJS0bBD.js → view-grid-Ot05h3Js.js} +1 -1
- package/dist/interface/index.html +30 -30
- package/dist/interface/sw.js +1 -1
- package/dist/server/package.json +2 -2
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/detection.py +2 -2
- package/dist/server/src/manager/downloadManager.d.ts +1 -0
- package/dist/server/src/manager/downloadManager.js +12 -0
- package/dist/server/src/manager/downloadManager.js.map +1 -1
- package/dist/server/src/workers/agent.js +5 -3
- package/dist/server/src/workers/agent.js.map +1 -1
- package/package.json +2 -2
- package/dist/interface/assets/CuiBottomSheet-BA-u9UtN.js +0 -1
- package/dist/interface/assets/PluginSearch-DnJgg6-6.js +0 -1
- package/dist/interface/assets/SettingsAccount-CjgYe5mF.js +0 -1
- package/dist/interface/assets/SettingsAppearance-3i3Ix7j-.js +0 -1
- package/dist/interface/assets/api-Cea16mc8.js +0 -2
- package/dist/interface/assets/cloudHandoff-LxdvSi1a.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Ct as e,D as t,O as n,T as r,kt as i}from"./api-
|
|
1
|
+
import{Ct as e,D as t,O as n,T as r,kt as i}from"./api-BLTlDTXb.js";import{J as a,Q as o,Sr as s,mr as c}from"./vendor-ClrOISZp.js";async function l(t){let n=e().endpoint.value??window.location.origin;return(await i.get(`/tunnel/check`,{signal:t,baseURL:n})).data}async function u({parameter:e,signal:t}){return(await i.get(`/auth/sessions`,{params:e,signal:t})).data.result??[]}async function d({parameter:e,signal:t}){return(await i.get(`/auth/sessions/all`,{params:e,signal:t})).data.result??[]}async function f({id:e}){await i.delete(`/auth/sessions/${e}`)}async function p(){await i.delete(`/auth/sessions`)}async function m({loginInformation:e}){return(await i.post(`/auth/login`,e)).data}async function h({tempToken:e,code:t}){return(await i.post(`/auth/verify-2fa`,{tempToken:e,code:t})).data}async function g(e){return(await i.get(`/auth/2fa/status`,{signal:e})).data}async function _(){return(await i.post(`/auth/2fa/setup`)).data}async function v({code:e}){return(await i.post(`/auth/2fa/enable`,{code:e})).data}async function y({code:e}){await i.post(`/auth/2fa/disable`,{code:e})}async function b({code:e}){return(await i.post(`/auth/2fa/backup-codes`,{code:e})).data}async function x(){return(await i.post(`/auth/logout`)).data}async function S({refresh_token:e,signal:t}){return(await i.post(`/auth/refresh`,{refresh_token:e},{timeout:1e4,signal:t})).data}var C=class{_queryClient=o();t=n.global.t;toast=t();queryActivator=c([{name:`checkQuery`,enabled:!0},{name:`listSessionsQuery`,enabled:!0},{name:`listAllSessionsQuery`,enabled:!0},{name:`get2FAStatusQuery`,enabled:!0}]);get queryClient(){return this._queryClient}checkQuery(){return r({queryKey:[`auth`,`check`],queryFn:({signal:e})=>l(e),enabled:()=>this.queryActivator.value.some(e=>e.name===`checkQuery`&&e.enabled)})}listSessionsQuery(e){return r({queryKey:[`auth`,`sessions`,e],queryFn:({signal:t})=>u({parameter:s(e),signal:t}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name===`listSessionsQuery`&&e.enabled)})}listAllSessionsQuery(e){return r({queryKey:[`auth`,`sessions`,`all`,e],queryFn:({signal:t})=>d({parameter:s(e),signal:t}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name===`listAllSessionsQuery`&&e.enabled)})}loginQuery(){return a({mutationFn:m,onError:()=>{}})}logoutQuery(){return a({mutationFn:x})}revokeSessionQuery(){return a({mutationFn:f,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`auth`,`sessions`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.user_logged_out`),life:3e3})}})}revokeOtherSessionsQuery(){return a({mutationFn:p,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`auth`,`sessions`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.active_sessions.revoke_others_success`),life:3e3})}})}refreshQuery(){return a({mutationFn:S})}verify2FAQuery(){return a({mutationFn:h,onError:()=>{}})}get2FAStatusQuery(){return r({queryKey:[`auth`,`2fa`,`status`],queryFn:({signal:e})=>g(e),enabled:()=>this.queryActivator.value.some(e=>e.name===`get2FAStatusQuery`&&e.enabled)})}setup2FAQuery(){return a({mutationFn:_})}enable2FAQuery(){return a({mutationFn:v,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`auth`,`2fa`,`status`]})}})}disable2FAQuery(){return a({mutationFn:y,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`auth`,`2fa`,`status`]})}})}regenerateBackupCodesQuery(){return a({mutationFn:b})}toggleQueryActivator(e,t){let n=this.queryActivator.value.find(t=>t.name===e);return n&&(n.enabled=t),this}};export{C as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as e,O as t,T as n,kt as r}from"./api-
|
|
1
|
+
import{D as e,O as t,T as n,kt as r}from"./api-BLTlDTXb.js";import{J as i,Q as a,Sr as o,mr as s}from"./vendor-ClrOISZp.js";async function c({signal:e}){return(await r.get(`/automations`,{signal:e})).data}async function l({id:e,signal:t}){return(await r.get(`/automations/${e}`,{signal:t})).data}async function u({data:e}){return(await r.post(`/automations`,e)).data}async function d({id:e,data:t}){return(await r.patch(`/automations/${e}`,t)).data}async function f({id:e}){await r.delete(`/automations/${e}`)}async function p({id:e}){let{data:t}=await r.post(`/automations/${e}/trigger`);return t}async function m({blueprint:e}){return(await r.post(`/automations/import`,e)).data}async function h({signal:e}){return(await r.get(`/automations/plugin-methods`,{signal:e})).data}async function g({refresh:e,signal:t}){return(await r.get(`/automations/store`,{params:e?{refresh:!0}:{},signal:t})).data}async function _({id:e,signal:t}){return(await r.get(`/automations/store/${e}`,{signal:t})).data}var v=class{_queryClient=a();t=t.global.t;toast=e();queryActivator=s([{name:`getAutomationsQuery`,enabled:!0},{name:`getAutomationQuery`,enabled:!0}]);getAutomationsQuery(){return n({queryKey:[`automationsList`],queryFn:({signal:e})=>c({signal:e}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name===`getAutomationsQuery`&&e.enabled)})}getAutomationQuery(e){return n({queryKey:[`automation`,e],queryFn:({signal:t})=>l({id:o(e),signal:t}),enabled:()=>!!o(e)&&o(e)!==`new`&&this.queryActivator.value.some(e=>e.name===`getAutomationQuery`&&e.enabled)})}createAutomationQuery(){return i({mutationFn:u,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`automationsList`]}),this.toast.add({severity:`success`,detail:this.t(`views.automation.saved`),life:3e3})}})}patchAutomationQuery(){return i({mutationFn:d,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`automationsList`]}),await this._queryClient.refetchQueries({queryKey:[`automation`,t.id]})}})}deleteAutomationQuery(){return i({mutationFn:f,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`automationsList`]})}})}triggerAutomationQuery(){return i({mutationFn:p,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`automationsList`]}),await this._queryClient.refetchQueries({queryKey:[`automation`,t.id]})}})}getPluginMethodsQuery(){return n({queryKey:[`automationPluginMethods`],queryFn:({signal:e})=>h({signal:e})})}getAutomationStoreQuery(e){return n({queryKey:[`automationStore`],queryFn:({signal:t})=>g({refresh:o(e),signal:t}),placeholderData:e=>e})}getAutomationStoreItemQuery(e){return n({queryKey:[`automationStoreItem`,e],queryFn:({signal:t})=>_({id:o(e),signal:t}),enabled:()=>!!o(e)})}importBlueprintQuery(){return i({mutationFn:m,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`automationsList`]}),this.toast.add({severity:`success`,detail:this.t(`views.automations.import_success`),life:3e3})}})}};export{v as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as e,O as t,T as n,kt as r}from"./api-Cea16mc8.js";import{J as i,Q as a,Sr as o,mr as s}from"./vendor-ClrOISZp.js";async function c({cameraData:e}){return(await r.post(`/cameras`,e)).data}async function l({cameraData:e}){return(await r.post(`/cameras/preview`,e)).data}async function u({signal:e}){return(await r.get(`/cameras/rooms`,{signal:e})).data}async function d({cameraname:e,signal:t}){return(await r.get(`/cameras/${e}`,{signal:t})).data}async function f({cameraname:e}){return(await r.delete(`/cameras/${e}/log`)).data}async function p({cameraname:e,signal:t}){return(await r.get(`/cameras/${e}/log/download`,{signal:t})).data}async function m({cameraname:e,sourcename:t,signal:n}){return(await r.get(`/cameras/${e}/info/${t}`,{signal:n})).data}async function h({cameraname:e,sourcename:t,probeConfig:n,force:i,signal:a}){return(await r.get(`/cameras/${e}/probe/${t}`,{params:{...n,...i?{refresh:!0}:{}},signal:a})).data}async function g({cameraname:e,forceNew:t,signal:n}){return(await r.get(`/cameras/${e}/snapshot`,{signal:n,params:{forceNew:t}})).data}async function _({parameter:e,signal:t}){return(await r.get(`/cameras`,{params:e,signal:t})).data}async function v({cameraname:e,cameraData:t}){return(await r.patch(`/cameras/${e}`,t)).data}async function y({cameraname:e,signal:t}){return(await r.get(`/cameras/${e}/extensions`,{signal:t})).data}async function b({cameraname:e,pluginname:t,signal:n}){return(await r.get(`/cameras/${e}/${t}/config`,{signal:n})).data}async function x({cameraname:e,pluginname:t,configData:n}){return(await r.patch(`/cameras/${e}/${t}/config`,n)).data}async function S({cameraname:e,pluginname:t,configData:n}){return(await r.put(`/cameras/${e}/${t}/config`,n)).data}async function C({cameraname:e,pluginname:t,configData:n}){return(await r.post(`/cameras/${e}/${t}/config`,n)).data}async function w({cameraname:e,pluginname:t,sensorId:n,signal:i}){return(await r.get(`/cameras/${e}/${t}/sensor/${n}/config`,{signal:i})).data}async function T({cameraname:e,pluginname:t,sensorId:n,configData:i}){return(await r.patch(`/cameras/${e}/${t}/sensor/${n}/config`,i)).data}async function E({cameraname:e,pluginname:t,sensorId:n,configData:i}){return(await r.put(`/cameras/${e}/${t}/sensor/${n}/config`,i)).data}async function D({cameraname:e,pluginname:t,sensorId:n,configData:i}){return(await r.post(`/cameras/${e}/${t}/sensor/${n}/config`,i)).data}async function O({cameraname:e,pluginname:t,type:n}){return(await r.put(`/cameras/${e}/${t}/enable`,null,{params:{type:n}})).data}async function k({cameraname:e,pluginname:t,type:n}){return(await r.put(`/cameras/${e}/${t}/disable`,null,{params:{type:n}})).data}async function A({cameraname:e,pluginname:t,type:n}){return(await r.post(`/cameras/${e}/${t}`,null,{params:{type:n}})).data}async function j({cameraname:e,pluginname:t,type:n}){return(await r.delete(`/cameras/${e}/${t}`,{params:{type:n}})).data}async function M({cameraname:e,pluginname:t}){return(await r.post(`/cameras/${e}/${t}/activate`)).data}async function N({cameraname:e,pluginname:t}){return(await r.delete(`/cameras/${e}/${t}/deactivate`)).data}async function P({cameraname:e,signal:t}){return(await r.get(`/cameras/${e}/zones`,{signal:t})).data}async function F({cameraname:e,zoneData:t}){return(await r.patch(`/cameras/${e}/zones`,t)).data}async function I({cameraname:e,lineData:t}){return(await r.patch(`/cameras/${e}/lines`,t)).data}async function L({cameraname:e}){return(await r.delete(`/cameras/${e}`)).data}async function R(){return(await r.delete(`/cameras`)).data}var z=class{_queryClient=a();t=t.global.t;toast=e();queryActivator=s([{name:`getCameraQuery`,enabled:!0},{name:`getCamerasQuery`,enabled:!0},{name:`getCameraSnapshotQuery`,enabled:!0},{name:`getCameraExtensionsQuery`,enabled:!0},{name:`getCameraExtensionConfigQuery`,enabled:!0},{name:`getZonesQuery`,enabled:!0},{name:`streamSourceInfoQuery`,enabled:!0},{name:`probeCameraSourceQuery`,enabled:!0},{name:`downloadLogQuery`,enabled:!0},{name:`getSensorConfigQuery`,enabled:!0}]);get queryClient(){return this._queryClient}createCameraQuery(){return i({mutationFn:c,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`camerasList`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.camera_added`),life:3e3})}})}previewCameraQuery(){return i({mutationFn:l})}getCameraQuery(e){return n({queryKey:[`cameras`,e],queryFn:({signal:t})=>d({cameraname:o(e),signal:t}),initialData:()=>{let t=o(e),n=this._queryClient.getQueriesData({queryKey:[`camerasList`]});for(let[,e]of n){let n=e?.result?.find(e=>e.name===t);if(n)return n}},initialDataUpdatedAt:0,enabled:()=>this.queryActivator.value.some(e=>e.name===`getCameraQuery`&&e.enabled)})}getCameraExtensionsQuery(e){return n({queryKey:[`camerasExtensions`,e],queryFn:({signal:t})=>y({cameraname:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getCameraExtensionsQuery`&&e.enabled)})}streamSourceInfoQuery(e,t){return n({queryKey:[`cameras`,e,`info`,t],queryFn:({signal:n})=>m({cameraname:o(e),sourcename:o(t),signal:n}),enabled:()=>this.queryActivator.value.some(e=>e.name===`streamSourceInfoQuery`&&e.enabled)})}probeCameraSourceQuery(e,t,r){return n({queryKey:[`cameras`,e,`probe`,t],queryFn:({signal:n})=>h({cameraname:o(e),sourcename:o(t),probeConfig:o(r),signal:n}),enabled:()=>this.queryActivator.value.some(e=>e.name===`probeCameraSourceQuery`&&e.enabled)})}getCameraSnapshotQuery(e,t){return n({queryKey:[`camerasSnapshot`,e],queryFn:({signal:n})=>g({cameraname:o(e),forceNew:o(t),signal:n}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getCameraSnapshotQuery`&&e.enabled),retry:!1})}getCamerasQuery(e){return n({queryKey:[`camerasList`,e],queryFn:({signal:t})=>_({parameter:o(e),signal:t}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name===`getCamerasQuery`&&e.enabled)})}getRoomsQuery(){return n({queryKey:[`camerasRooms`],queryFn:({signal:e})=>u({signal:e})})}patchCameraQuery(){return i({mutationFn:v,onSuccess:async(e,t)=>{let n=t.cameraData.name&&t.cameraData.name!==t.cameraname,r=t.cameraData.room!==void 0;if(n){let e=t.cameraname;await this._queryClient.invalidateQueries({queryKey:[e]}),await this._queryClient.refetchQueries({queryKey:[`camerasList`]})}else await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`extensions`,t.cameraname],type:`active`}),r&&(await this._queryClient.refetchQueries({queryKey:[`camerasList`]}),await this._queryClient.refetchQueries({queryKey:[`camerasRooms`]}));this.toast.add({severity:`success`,detail:this.t(`components.toast.camera_updated`),life:3e3})}})}getCameraExtensionConfigQuery(e,t,r){return n({queryKey:[`cameras`,`extensions`,e,t],queryFn:({signal:n})=>b({cameraname:o(e),pluginname:o(t),signal:n}),enabled:()=>!!o(t)&&this.queryActivator.value.some(e=>e.name===`getCameraExtensionConfigQuery`&&e.enabled),refetchInterval(){if(r.value)return 1e4},retry:10,retryDelay:500,staleTime:0})}patchCameraExtensionConfigQuery(){return i({mutationFn:x,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`extensions`,t.cameraname],type:`active`}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}setCameraExtensionConfigQuery(){return i({mutationFn:S,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`extensions`,t.cameraname],type:`active`}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}submitCameraExtensionConfigQuery(){return i({mutationFn:C,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`extensions`,t.cameraname],type:`active`}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}getSensorConfigQuery(e,t,r,i){return n({queryKey:[`cameras`,`sensor`,e,t,r],queryFn:({signal:n})=>w({cameraname:o(e),pluginname:o(t),sensorId:o(r),signal:n}),enabled:()=>{let e=o(t),n=o(r);return!e||!n?!1:this.queryActivator.value.some(e=>e.name===`getSensorConfigQuery`&&e.enabled)},refetchInterval(){if(i.value)return 1e4},retry:3,retryDelay:500,staleTime:0})}patchSensorConfigQuery(){return i({mutationFn:T,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`sensor`,t.cameraname,t.pluginname,t.sensorId]})}})}setSensorConfigQuery(){return i({mutationFn:E,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`sensor`,t.cameraname,t.pluginname,t.sensorId]})}})}submitSensorConfigQuery(){return i({mutationFn:D,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`sensor`,t.cameraname,t.pluginname,t.sensorId]})}})}enableCameraExtensionQuery(){return i({mutationFn:O,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}disableCameraExtensionQuery(){return i({mutationFn:k,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}addCameraExtensionQuery(){return i({mutationFn:A,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}activateCameraExtensionQuery(){return i({mutationFn:M,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}deactivateCameraExtensionQuery(){return i({mutationFn:N,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}getZonesQuery(e){return n({queryKey:[`cameras`,e,`zones`],queryFn:({signal:t})=>P({cameraname:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getZonesQuery`&&e.enabled)})}patchZonesQuery(){return i({mutationFn:F,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.zone_updated`),life:3e3})}})}patchLinesQuery(){return i({mutationFn:I,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.line_updated`),life:3e3})}})}removeCameraExtensionQuery(){return i({mutationFn:j,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}removeCameraQuery(){return i({mutationFn:L,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`camerasList`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.camera_removed`),life:3e3})}})}removeCamerasQuery(){return i({mutationFn:R,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`camerasList`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.cameras_removed`),life:3e3})}})}downloadLogQuery(e){return n({queryKey:[`logs`,e],queryFn:({signal:t})=>p({cameraname:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`downloadLogQuery`&&e.enabled)})}clearLogQuery(){return i({mutationFn:f,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`logs`,t.cameraname],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.log_cleared`),life:3e3})}})}toggleQueryActivator(e,t){let n=this.queryActivator.value.find(t=>t.name===e);return n&&(n.enabled=t),this}};export{d as a,h as c,b as i,L as l,f as n,x as o,p as r,v as s,z as t};
|
|
1
|
+
import{D as e,O as t,T as n,kt as r}from"./api-BLTlDTXb.js";import{J as i,Q as a,Sr as o,mr as s}from"./vendor-ClrOISZp.js";async function c({cameraData:e}){return(await r.post(`/cameras`,e)).data}async function l({cameraData:e}){return(await r.post(`/cameras/preview`,e)).data}async function u({signal:e}){return(await r.get(`/cameras/rooms`,{signal:e})).data}async function d({cameraname:e,signal:t}){return(await r.get(`/cameras/${e}`,{signal:t})).data}async function f({cameraname:e}){return(await r.delete(`/cameras/${e}/log`)).data}async function p({cameraname:e,signal:t}){return(await r.get(`/cameras/${e}/log/download`,{signal:t})).data}async function m({cameraname:e,sourcename:t,signal:n}){return(await r.get(`/cameras/${e}/info/${t}`,{signal:n})).data}async function h({cameraname:e,sourcename:t,probeConfig:n,force:i,signal:a}){return(await r.get(`/cameras/${e}/probe/${t}`,{params:{...n,...i?{refresh:!0}:{}},signal:a})).data}async function g({cameraname:e,forceNew:t,signal:n}){return(await r.get(`/cameras/${e}/snapshot`,{signal:n,params:{forceNew:t}})).data}async function _({parameter:e,signal:t}){return(await r.get(`/cameras`,{params:e,signal:t})).data}async function v({cameraname:e,cameraData:t}){return(await r.patch(`/cameras/${e}`,t)).data}async function y({cameraname:e,signal:t}){return(await r.get(`/cameras/${e}/extensions`,{signal:t})).data}async function b({cameraname:e,pluginname:t,signal:n}){return(await r.get(`/cameras/${e}/${t}/config`,{signal:n})).data}async function x({cameraname:e,pluginname:t,configData:n}){return(await r.patch(`/cameras/${e}/${t}/config`,n)).data}async function S({cameraname:e,pluginname:t,configData:n}){return(await r.put(`/cameras/${e}/${t}/config`,n)).data}async function C({cameraname:e,pluginname:t,configData:n}){return(await r.post(`/cameras/${e}/${t}/config`,n)).data}async function w({cameraname:e,pluginname:t,sensorId:n,signal:i}){return(await r.get(`/cameras/${e}/${t}/sensor/${n}/config`,{signal:i})).data}async function T({cameraname:e,pluginname:t,sensorId:n,configData:i}){return(await r.patch(`/cameras/${e}/${t}/sensor/${n}/config`,i)).data}async function E({cameraname:e,pluginname:t,sensorId:n,configData:i}){return(await r.put(`/cameras/${e}/${t}/sensor/${n}/config`,i)).data}async function D({cameraname:e,pluginname:t,sensorId:n,configData:i}){return(await r.post(`/cameras/${e}/${t}/sensor/${n}/config`,i)).data}async function O({cameraname:e,pluginname:t,type:n}){return(await r.put(`/cameras/${e}/${t}/enable`,null,{params:{type:n}})).data}async function k({cameraname:e,pluginname:t,type:n}){return(await r.put(`/cameras/${e}/${t}/disable`,null,{params:{type:n}})).data}async function A({cameraname:e,pluginname:t,type:n}){return(await r.post(`/cameras/${e}/${t}`,null,{params:{type:n}})).data}async function j({cameraname:e,pluginname:t,type:n}){return(await r.delete(`/cameras/${e}/${t}`,{params:{type:n}})).data}async function M({cameraname:e,pluginname:t}){return(await r.post(`/cameras/${e}/${t}/activate`)).data}async function N({cameraname:e,pluginname:t}){return(await r.delete(`/cameras/${e}/${t}/deactivate`)).data}async function P({cameraname:e,signal:t}){return(await r.get(`/cameras/${e}/zones`,{signal:t})).data}async function F({cameraname:e,zoneData:t}){return(await r.patch(`/cameras/${e}/zones`,t)).data}async function I({cameraname:e,lineData:t}){return(await r.patch(`/cameras/${e}/lines`,t)).data}async function L({cameraname:e}){return(await r.delete(`/cameras/${e}`)).data}async function R(){return(await r.delete(`/cameras`)).data}var z=class{_queryClient=a();t=t.global.t;toast=e();queryActivator=s([{name:`getCameraQuery`,enabled:!0},{name:`getCamerasQuery`,enabled:!0},{name:`getCameraSnapshotQuery`,enabled:!0},{name:`getCameraExtensionsQuery`,enabled:!0},{name:`getCameraExtensionConfigQuery`,enabled:!0},{name:`getZonesQuery`,enabled:!0},{name:`streamSourceInfoQuery`,enabled:!0},{name:`probeCameraSourceQuery`,enabled:!0},{name:`downloadLogQuery`,enabled:!0},{name:`getSensorConfigQuery`,enabled:!0}]);get queryClient(){return this._queryClient}createCameraQuery(){return i({mutationFn:c,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`camerasList`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.camera_added`),life:3e3})}})}previewCameraQuery(){return i({mutationFn:l})}getCameraQuery(e){return n({queryKey:[`cameras`,e],queryFn:({signal:t})=>d({cameraname:o(e),signal:t}),initialData:()=>{let t=o(e),n=this._queryClient.getQueriesData({queryKey:[`camerasList`]});for(let[,e]of n){let n=e?.result?.find(e=>e.name===t);if(n)return n}},initialDataUpdatedAt:0,enabled:()=>this.queryActivator.value.some(e=>e.name===`getCameraQuery`&&e.enabled)})}getCameraExtensionsQuery(e){return n({queryKey:[`camerasExtensions`,e],queryFn:({signal:t})=>y({cameraname:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getCameraExtensionsQuery`&&e.enabled)})}streamSourceInfoQuery(e,t){return n({queryKey:[`cameras`,e,`info`,t],queryFn:({signal:n})=>m({cameraname:o(e),sourcename:o(t),signal:n}),enabled:()=>this.queryActivator.value.some(e=>e.name===`streamSourceInfoQuery`&&e.enabled)})}probeCameraSourceQuery(e,t,r){return n({queryKey:[`cameras`,e,`probe`,t],queryFn:({signal:n})=>h({cameraname:o(e),sourcename:o(t),probeConfig:o(r),signal:n}),enabled:()=>this.queryActivator.value.some(e=>e.name===`probeCameraSourceQuery`&&e.enabled)})}getCameraSnapshotQuery(e,t){return n({queryKey:[`camerasSnapshot`,e],queryFn:({signal:n})=>g({cameraname:o(e),forceNew:o(t),signal:n}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getCameraSnapshotQuery`&&e.enabled),retry:!1})}getCamerasQuery(e){return n({queryKey:[`camerasList`,e],queryFn:({signal:t})=>_({parameter:o(e),signal:t}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name===`getCamerasQuery`&&e.enabled)})}getRoomsQuery(){return n({queryKey:[`camerasRooms`],queryFn:({signal:e})=>u({signal:e})})}patchCameraQuery(){return i({mutationFn:v,onSuccess:async(e,t)=>{let n=t.cameraData.name&&t.cameraData.name!==t.cameraname,r=t.cameraData.room!==void 0;if(n){let e=t.cameraname;await this._queryClient.invalidateQueries({queryKey:[e]}),await this._queryClient.refetchQueries({queryKey:[`camerasList`]})}else await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`extensions`,t.cameraname],type:`active`}),r&&(await this._queryClient.refetchQueries({queryKey:[`camerasList`]}),await this._queryClient.refetchQueries({queryKey:[`camerasRooms`]}));this.toast.add({severity:`success`,detail:this.t(`components.toast.camera_updated`),life:3e3})}})}getCameraExtensionConfigQuery(e,t,r){return n({queryKey:[`cameras`,`extensions`,e,t],queryFn:({signal:n})=>b({cameraname:o(e),pluginname:o(t),signal:n}),enabled:()=>!!o(t)&&this.queryActivator.value.some(e=>e.name===`getCameraExtensionConfigQuery`&&e.enabled),refetchInterval(){if(r.value)return 1e4},retry:10,retryDelay:500,staleTime:0})}patchCameraExtensionConfigQuery(){return i({mutationFn:x,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`extensions`,t.cameraname],type:`active`}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}setCameraExtensionConfigQuery(){return i({mutationFn:S,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`extensions`,t.cameraname],type:`active`}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}submitCameraExtensionConfigQuery(){return i({mutationFn:C,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`extensions`,t.cameraname],type:`active`}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}getSensorConfigQuery(e,t,r,i){return n({queryKey:[`cameras`,`sensor`,e,t,r],queryFn:({signal:n})=>w({cameraname:o(e),pluginname:o(t),sensorId:o(r),signal:n}),enabled:()=>{let e=o(t),n=o(r);return!e||!n?!1:this.queryActivator.value.some(e=>e.name===`getSensorConfigQuery`&&e.enabled)},refetchInterval(){if(i.value)return 1e4},retry:3,retryDelay:500,staleTime:0})}patchSensorConfigQuery(){return i({mutationFn:T,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`sensor`,t.cameraname,t.pluginname,t.sensorId]})}})}setSensorConfigQuery(){return i({mutationFn:E,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`sensor`,t.cameraname,t.pluginname,t.sensorId]})}})}submitSensorConfigQuery(){return i({mutationFn:D,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`sensor`,t.cameraname,t.pluginname,t.sensorId]})}})}enableCameraExtensionQuery(){return i({mutationFn:O,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}disableCameraExtensionQuery(){return i({mutationFn:k,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}addCameraExtensionQuery(){return i({mutationFn:A,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}activateCameraExtensionQuery(){return i({mutationFn:M,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}deactivateCameraExtensionQuery(){return i({mutationFn:N,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}getZonesQuery(e){return n({queryKey:[`cameras`,e,`zones`],queryFn:({signal:t})=>P({cameraname:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getZonesQuery`&&e.enabled)})}patchZonesQuery(){return i({mutationFn:F,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.zone_updated`),life:3e3})}})}patchLinesQuery(){return i({mutationFn:I,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.line_updated`),life:3e3})}})}removeCameraExtensionQuery(){return i({mutationFn:j,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}removeCameraQuery(){return i({mutationFn:L,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`camerasList`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.camera_removed`),life:3e3})}})}removeCamerasQuery(){return i({mutationFn:R,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`camerasList`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.cameras_removed`),life:3e3})}})}downloadLogQuery(e){return n({queryKey:[`logs`,e],queryFn:({signal:t})=>p({cameraname:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`downloadLogQuery`&&e.enabled)})}clearLogQuery(){return i({mutationFn:f,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`logs`,t.cameraname],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.log_cleared`),life:3e3})}})}toggleQueryActivator(e,t){let n=this.queryActivator.value.find(t=>t.name===e);return n&&(n.enabled=t),this}};export{d as a,h as c,b as i,L as l,f as n,x as o,p as r,v as s,z as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{O as e}from"./vendor-cameraui-QuTJKoXE.js";import{St as t,_t as n,bt as r,vt as i,xt as a,yt as o}from"./api-
|
|
1
|
+
import{O as e}from"./vendor-cameraui-QuTJKoXE.js";import{St as t,_t as n,bt as r,vt as i,xt as a,yt as o}from"./api-BLTlDTXb.js";import{Er as s,Sr as c,dn as l,lr as u,mn as d,mr as f,xn as p,yn as m,zn as h}from"./vendor-ClrOISZp.js";import{n as g,r as _,t as v}from"./vendor-zod-XsuaxHRY.js";var y={class:`flex flex-col gap-2 w-full`},b={for:`roomName`,class:`cui-label`},x=p({__name:`CreateRoom`,setup(t,{expose:n}){let r=f(``);return n({onConfirm:async()=>r.value.trim()||null}),(t,n)=>{let i=e;return h(),d(`div`,y,[l(`label`,b,s(t.$t(`components.form.label.name`)),1),m(i,{id:`roomName`,modelValue:c(r),"onUpdate:modelValue":n[0]||=e=>u(r)?r.value=e:null,class:`w-full`,placeholder:t.$t(`components.form.hint.room_select`),autofocus:``},null,8,[`modelValue`,`placeholder`])])}}}),S=RegExp(`^(${n.join(`|`)})`),C=_().trim().min(1,`Camera Source is required`).regex(S,`Unsupported protocol — start the URL with a supported one (e.g. rtsp://)`),w=g({name:_().trim().min(1,`Camera Source Name is required`),urls:C.array(),role:a,useForSnapshot:v().default(!1),hotMode:v().default(!0),preload:v().default(!0),muted:v().default(!1),childSourceId:_().trim().optional()}).strict(),T=g({...i.shape,sources:w.array().refine(e=>e.some(e=>e.role===`high-resolution`||e.role===`mid-resolution`||e.role===`low-resolution`),{path:[`sources[].role`],message:`One of the roles "high-resolution", "mid-resolution" or "low-resolution" is required`}).refine(e=>e.filter(e=>e.useForSnapshot).length<=1,{message:`Only one source can be used for snapshot`,path:[`sources`]}).refine(e=>e.filter(e=>e.role===`snapshot`).every(e=>!e.useForSnapshot),{message:`Snapshot source can not be used with useForSnapshot`,path:[`sources`]}).refine(e=>e.filter(e=>e.role===`snapshot`).every(e=>!e.hotMode),{message:`Snapshot source can not be used with hotMode`}).refine(e=>e.filter(e=>e.role===`snapshot`).every(e=>!e.preload),{message:`Snapshot source can not be used with preload`}).refine(e=>{let t=e.map(e=>e.role).filter(Boolean);return new Set(t).size===t.length},{message:`Each source role can be assigned to only one source`,path:[`sources`]})}).strict(),E=t,D=r,O=o;export{x as a,E as i,D as n,T as r,O as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{v as e}from"./api-BLTlDTXb.js";export{e as bounceToCloudFrontend};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as e,O as t,T as n,kt as r}from"./api-
|
|
1
|
+
import{D as e,O as t,T as n,kt as r}from"./api-BLTlDTXb.js";import{J as i,Q as a,Sr as o,mr as s}from"./vendor-ClrOISZp.js";async function c({json:e,signal:t}){return(await r.get(`/config`,{params:{json:e},signal:t})).data}async function l({json:e,signal:t}){return(await r.get(`/config/go2rtc`,{params:{json:e},signal:t})).data}async function u({configData:e}){return(await r.patch(`/config`,e,{headers:{"Content-Type":`text/yaml`}})).data}async function d({configData:e}){return(await r.patch(`/config/go2rtc`,e,{headers:{"Content-Type":`text/yaml`}})).data}async function f(){return(await r.delete(`/config`)).data}async function p(){return(await r.delete(`/config/go2rtc`)).data}var m=class{_queryClient=a();t=t.global.t;toast=e();queryActivator=s([{name:`getConfigQuery`,enabled:!0},{name:`getGo2RtcConfigQuery`,enabled:!0}]);get queryClient(){return this._queryClient}getConfigQuery(e=!1){return n({queryKey:[`config`,{json:e}],queryFn:({signal:t})=>c({json:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getConfigQuery`&&e.enabled)})}getGo2RtcConfigQuery(e=!1){return n({queryKey:[`go2rtcConfig`],queryFn:({signal:t})=>l({json:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getGo2RtcConfigQuery`&&e.enabled)})}patchConfigQuery(){return i({mutationFn:u,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`config`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.config_updated`),life:3e3})}})}patchGo2RtcConfigQuery(){return i({mutationFn:d,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`go2rtcConfig`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.config_go2rtc_updated`),life:3e3})}})}delteConfigQuery(){return i({mutationFn:f,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`config`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.config_deleted`),life:3e3})}})}delteGo2RtcConfigQuery(){return i({mutationFn:p,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`go2rtcConfig`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.config_go2rtc_deleted`),life:3e3})}})}toggleQueryActivator(e,t){let n=this.queryActivator.value.find(t=>t.name===e);return n&&(n.enabled=t),this}};export{m as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./api-
|
|
1
|
+
import"./api-BLTlDTXb.js";import"./vendor-ClrOISZp.js";var e=`cameraui:web-push-id`;function t(){if(typeof crypto<`u`&&typeof crypto.randomUUID==`function`)return crypto.randomUUID();if(typeof window<`u`&&window.crypto!==void 0&&typeof window.crypto.randomUUID==`function`)return window.crypto.randomUUID();let e=new Uint8Array(16);crypto.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=[...e].map(e=>e.toString(16).padStart(2,`0`)).join(``);return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}async function n(){let n=localStorage.getItem(e);return n||(n=t(),localStorage.setItem(e,n)),n}export{n,t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as e}from"./api-
|
|
1
|
+
import{h as e}from"./api-BLTlDTXb.js";import{c as t,f as n}from"./vendor-core-CCcu_nmz.js";var r={user:0,admin:1,master:2};function i(e,t){return(r[e]??0)>=(r[t]??0)}function a(r,a,o){let{user:s}=n(e()),c=s.value?.role??`user`;if(a&&!r)return o?c===a:i(c,a);r??=t();let l=!r?.meta?.auth||r?.meta?.auth.requiresAuth===!1,u=a??r.meta?.auth?.role??`user`;return l||u===`none`?!0:o?c===u:i(c,u)}export{a as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e,ki as t,l as n,rt as r,vi as i}from"./vendor-cameraui-QuTJKoXE.js";import{At as a,D as o,Mt as s,O as c,T as l,Tt as u,h as d,kt as f}from"./api-Cea16mc8.js";import{Er as p,J as m,Q as h,Sr as g,Y as _,br as v,dn as y,lr as b,mn as x,mr as S,pr as C,un as w,ur as T,xn as E,xr as D,yn as O,zn as k}from"./vendor-ClrOISZp.js";import{d as A,l as ee}from"./vendor-core-CCcu_nmz.js";import{u as j}from"./vendor-primevue-BdB7McKg.js";import{t as te}from"./hasPermission-CgyWyOhQ.js";import{t as ne}from"./useCuiDialog-yVh5UWKF.js";var M={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function N(e,t){return k(),x(`svg`,M,[...t[0]||=[y(`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 re=T({name:`bx-cctv`,render:N}),P={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ie(e,t){return k(),x(`svg`,P,[...t[0]||=[y(`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 F=T({name:`bxs-server`,render:ie});function I(e){return`requires2fa`in e&&e.requires2fa===!0}async function L(e){return(await f.get(`/instances`,{signal:e})).data}async function R(e){return(await f.post(`/instances`,e)).data}async function z({id:e,data:t}){return(await f.put(`/instances/${e}`,t)).data}async function B(e){await f.delete(`/instances/${e}`)}async function V(e){return(await f.patch(`/instances/${e}/favorite`)).data}async function H(e,t){return(await f.post(`/instances/${e}/login`,t?{code:t}:{})).data}async function U(e,t){return(await f.get(`/instances/${e}/status`,{signal:t})).data}var W=class{_queryClient=h();toast=o();t=c.global.t;listQuery(){return l({queryKey:[`instances`],queryFn:({signal:e})=>L(e)})}statusQueries(e){return _({queries:w(()=>D(e).map(e=>({queryKey:[`instances`,e.id,`status`],queryFn:({signal:t})=>U(e.id,t),refetchInterval:15e3,retry:!1})))})}createMutation(){return m({mutationFn:R,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.added`),life:3e3})}})}updateMutation(){return m({mutationFn:z,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.updated`),life:3e3})}})}deleteMutation(){return m({mutationFn:async e=>{await B(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 m({mutationFn:V,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]})}})}loginMutation(){return m({mutationFn:e=>H(e),onError:()=>{}})}},G={class:`flex flex-col gap-6`},K={class:`text-muted`},q={class:`flex flex-col gap-2 justify-center items-center mt-2`},J={class:`cui-label`},ae=E({__name:`InstanceTwoFactorPrompt`,props:{instanceName:{}},setup(e,{expose:t}){let{instanceName:n}=v(e),r=S(``),i=w(()=>r.value.length<6);async function a(){return r.value.length<6?null:r.value}return t({isDisabled:i,onConfirm:a}),(e,t)=>{let i=j;return k(),x(`div`,G,[y(`p`,K,p(e.$t(`instances.two_factor_hint`,{name:g(n)})),1),y(`div`,q,[y(`label`,J,p(e.$t(`views.settings.security.enter_code`)),1),O(i,{modelValue:g(r),"onUpdate:modelValue":t[0]||=e=>b(r)?r.value=e:null,length:6,"integer-only":``,class:`justify-center`},null,8,[`modelValue`])])])}}}),Y=3e4,X=5e3,Z=`__home__`,oe=new Set([`localhost`,`127.0.0.1`,`::1`]),Q=u(`Instances`);async function se(e,t){try{let n=AbortSignal.timeout(X),r=t?AbortSignal.any([n,t]):n,i=await fetch(`${e}/api/health`,{signal:r});return Q.debug(`[probe]`,`${e} → ${i.ok?`OK`:`HTTP ${i.status}`}`),i.ok}catch(t){let n=t instanceof Error?t.message:String(t);return Q.debug(`[probe]`,`${e} → FAIL`,n),!1}}function ce(e){return{access:e.access_token,accessExpiresAt:e.access_token_expires_at,refresh:e.refresh_token,refreshExpiresAt:e.refresh_token_expires_at}}function le(e,t){return{_id:t?._id??``,username:t?.username??``,email:t?.email,role:t?.role??``,firstLogin:t?.firstLogin,avatar:t?.avatar,language:`auto`,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 $=A(`instances`,()=>{let l=d(),u=ee(),f=o(),p=ne(),m=h(),{t:g}=c.global,_=i(`instanceTokens`,{}),v=i(`activeInstanceId`,null),y=S(!1),b=S(null),x=S(0),T=0,E=S(null),D=S([]),O=t(`redirectInfo`,null,{serializer:{read:e=>e?JSON.parse(e):null,write:e=>JSON.stringify(e)}}),k=w(()=>v.value===null),A=w(()=>v.value===null?null:D.value.find(e=>e.id===v.value)?.url??null);async function j(){try{if(!te(void 0,`admin`))return;let e=await L();D.value=e.instances,E.value=e.homeId,Q.debug(`[fetch]`,`loaded ${e.instances.length} instances`,{homeId:e.homeId})}catch(e){Q.warn(`[fetch]`,`failed`,e)}}let M=w(()=>{let e=E.value;return D.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 N(){let e=_.value[Z],t=v.value===null?a().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 re=w(()=>{if(v.value!==null){let e=M.value.find(e=>e.id===v.value);if(e)return e}return N()}),P=w(()=>M.value.filter(e=>e.favorite)),ie=w(()=>P.value.length>0||v.value!==null||O.value!==null);function F(e){return D.value.find(t=>t.id===e)?.favorite??!0}async function U(e){let{favorite:t}=await V(e),n=D.value.find(t=>t.id===e);n&&(n.favorite=t)}async function W(e){let t=await R(e);return D.value=[...D.value,t],t}async function G(e){await B(e),D.value=D.value.filter(t=>t.id!==e),delete _.value[e]}async function K(e,t){let n=await z({id:e,data:t}),r=D.value.findIndex(t=>t.id===e);r!==-1&&(D.value[r]=n)}async function q(e,t){let n=D.value.find(t=>t.id===e);return n?se(n.url,t):!1}function J(){let e=a().target.value;if(!e?.tokens.access){Q.debug(`[save-tokens]`,`skipped — no live access token`);return}let t=v.value??Z;_.value[t]={userData:le(e.tokens,l.user??void 0),lastConnectedAt:Date.now(),url:e.endpoint.url},Q.debug(`[save-tokens]`,`slot=${t} url=${e.endpoint.url}`)}function X(){if(v.value===null){s.value=null,Q.debug(`[restore-override]`,`no active instance — home target`);return}let e=_.value[v.value],t=e?.url??e?.userData?.internalAddresses?.[0]??e?.userData?.externalAddresses?.[0]??null;s.value=t,Q.debug(`[restore-override]`,`activeId=${v.value} → ${t??`no cached url`}`)}async function $(t){if(y.value){Q.warn(`[switch]`,`ignored — another switch is already in progress`);return}let i=t===null?N():M.value.find(e=>e.id===t)??N();if(t!==null&&de(i.url)&&!await he(i.name)){Q.debug(`[switch]`,`URL handoff declined by user`);return}let o=++T;y.value=!0,b.value=i.name,Q.debug(`[switch]`,`START targetId=${t??`home`} gen=${o}`),Q.debug(`[switch]`,`target resolved — name="${i.name}" url=${i.url} hasCreds=${i.hasCredentials}`);try{if(t!==null){let e=await se(i.url);if(o!==T){Q.debug(`[switch]`,`aborted after probe — newer gen=${T}`);return}if(!e){Q.warn(`[switch]`,`target unreachable — ${i.url}`),f.add({severity:`warn`,detail:g(`instances.unreachable`,{name:i.name}),life:3e3});return}}let c=null;if(t!==null&&i.hasCredentials)try{let e=await H(t);if(I(e)){Q.debug(`[switch]`,`remote requires 2FA — prompting for code`),y.value=!1;let n=await pe(t,i.name);if(o!==T)return;if(y.value=!0,!n){Q.debug(`[switch]`,`2FA prompt cancelled — aborting switch`);return}e=n}I(e)||(c=e,Q.debug(`[switch]`,`backend relay login OK`))}catch(e){Q.warn(`[switch]`,`backend relay login FAILED — will try cached tokens`,e)}if(o!==T){Q.debug(`[switch]`,`aborted after relay-login — newer gen=${T}`);return}J();let d=t??Z,p=c?ce(c):ue(d);if(Q.debug(`[switch]`,`tokens source: ${c?`fresh`:p?`cached`:`none`} (slot=${d})`),t!==null&&de(i.url)){Q.debug(`[switch]`,`URL handoff required — leaving SPA`),await ge(i,c);return}let h=a();if(h.reset(),Q.debug(`[switch]`,`kernel RESET`),r(),n(),e(),m.clear(),Q.debug(`[switch]`,`vue-query cleared`),v.value=t,s.value=t===null?null:i.url,Q.debug(`[switch]`,`activeId=${t} instanceOverride=${s.value??`null`}`),p&&c&&(_.value[d]={userData:c,lastConnectedAt:Date.now(),url:i.url},l.user={_id:c._id,username:c.username,role:c.role,firstLogin:c.firstLogin,avatar:c.avatar}),p){let e={url:i.url,mode:`direct-lan`,priority:0};Q.debug(`[switch]`,`seedAndRetry → ${e.url}`),await Promise.race([h.seedAndRetry({endpoint:e,tokens:p},t??`home`),new Promise((e,t)=>setTimeout(()=>t(Error(`switch_timeout`)),Y))])}else{Q.warn(`[switch]`,`no tokens — boot + route to login`),h.boot(t??`home`),l.user=null,u.push(`/`);return}if(o!==T){Q.debug(`[switch]`,`aborted after seedAndRetry — newer gen=${T}`);return}x.value++,Q.debug(`[switch]`,`DONE gen=${o} → /home`),u.push(`/home`)}catch(e){(e instanceof Error?e.message:String(e))===`switch_timeout`?(Q.error(`[switch]`,`TIMEOUT after ${Y}ms`),f.add({severity:`error`,detail:g(`instances.switch_timeout`,{name:b.value??``}),life:3e3})):(Q.error(`[switch]`,`failed`,e),f.add({severity:`error`,detail:e,life:3e3}))}finally{o===T&&(y.value=!1,b.value=null)}}function ue(e){let t=_.value[e];return t?.userData?.access_token?ce(t.userData):null}function de(e){try{let t=new URL(e),n=new URL(window.location.origin),r=n.protocol===`https:`&&t.protocol===`http:`,i=oe.has(t.hostname)&&!oe.has(n.hostname);return r||i}catch{return!1}}function fe(e){return new Promise(t=>{let n=!1,r=e=>{n||(n=!0,t(e))};p.openComponentDialog(ae,{data:{title:g(`instances.two_factor_title`),confirmText:g(`views.login.2fa_verify`),contentProps:{instanceName:e}},onConfirm:async e=>r(e??null),onCancel:async()=>r(null)})})}async function pe(e,t){for(;;){let n=await fe(t);if(!n)return null;try{let t=await H(e,n);if(!I(t))return t}catch(e){Q.warn(`[2fa]`,`verification failed`,e),f.add({severity:`error`,detail:g(`instances.two_factor_failed`),life:3e3})}}}async function me(e,t){return await pe(e,t)?(f.add({severity:`success`,detail:g(`instances.two_factor_completed`,{name:t}),life:3e3}),await j().catch(()=>{}),!0):!1}function he(e){return Q.warn(`[switch]`,`target "${e}" requires URL handoff — asking user confirmation`),new Promise(t=>{let n=!1,r=e=>{n||(n=!0,t(e))};p.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 ge(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}`;Q.debug(`[url-handoff]`,`→ ${e.url} (with token=${t?`yes`:`no`})`),window.location.href=i}function _e(){_.value={},v.value=null,s.value=null,O.value=null,D.value=[],E.value=null,Q.debug(`[reset]`,`store cleared`)}return{instances:M,activeInstance:re,activeId:v,activeUrl:A,isHomeActive:k,isMultiInstance:ie,isSwitching:C(y),switchTargetName:C(b),switchKey:C(x),serverHomeId:E,redirectInfo:O,serverInstances:D,instanceTokens:_,favoriteInstances:P,isFavorite:F,toggleFavorite:U,fetchInstances:j,addInstance:W,removeInstance:G,updateInstance:K,switchInstance:$,probeInstance:q,complete2FALogin:me,reset:_e,saveCurrentTokens:J,restoreActiveOverride:X}});export{re as i,W as n,F as r,$ as t};
|
|
1
|
+
import{i as e,ki as t,l as n,rt as r,vi as i}from"./vendor-cameraui-QuTJKoXE.js";import{At as a,D as o,Mt as s,O as c,T as l,Tt as u,h as d,kt as f}from"./api-BLTlDTXb.js";import{Er as p,J as m,Q as h,Sr as g,Y as _,br as v,dn as y,lr as b,mn as x,mr as S,pr as C,un as w,ur as T,xn as E,xr as D,yn as O,zn as k}from"./vendor-ClrOISZp.js";import{d as A,l as ee}from"./vendor-core-CCcu_nmz.js";import{u as j}from"./vendor-primevue-BdB7McKg.js";import{t as te}from"./hasPermission-ByNfMevH.js";import{t as ne}from"./useCuiDialog-DwpKUbrp.js";var M={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function N(e,t){return k(),x(`svg`,M,[...t[0]||=[y(`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 re=T({name:`bx-cctv`,render:N}),P={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ie(e,t){return k(),x(`svg`,P,[...t[0]||=[y(`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 F=T({name:`bxs-server`,render:ie});function I(e){return`requires2fa`in e&&e.requires2fa===!0}async function L(e){return(await f.get(`/instances`,{signal:e})).data}async function R(e){return(await f.post(`/instances`,e)).data}async function z({id:e,data:t}){return(await f.put(`/instances/${e}`,t)).data}async function B(e){await f.delete(`/instances/${e}`)}async function V(e){return(await f.patch(`/instances/${e}/favorite`)).data}async function H(e,t){return(await f.post(`/instances/${e}/login`,t?{code:t}:{})).data}async function U(e,t){return(await f.get(`/instances/${e}/status`,{signal:t})).data}var W=class{_queryClient=h();toast=o();t=c.global.t;listQuery(){return l({queryKey:[`instances`],queryFn:({signal:e})=>L(e)})}statusQueries(e){return _({queries:w(()=>D(e).map(e=>({queryKey:[`instances`,e.id,`status`],queryFn:({signal:t})=>U(e.id,t),refetchInterval:15e3,retry:!1})))})}createMutation(){return m({mutationFn:R,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.added`),life:3e3})}})}updateMutation(){return m({mutationFn:z,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.updated`),life:3e3})}})}deleteMutation(){return m({mutationFn:async e=>{await B(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 m({mutationFn:V,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]})}})}loginMutation(){return m({mutationFn:e=>H(e),onError:()=>{}})}},G={class:`flex flex-col gap-6`},K={class:`text-muted`},q={class:`flex flex-col gap-2 justify-center items-center mt-2`},J={class:`cui-label`},ae=E({__name:`InstanceTwoFactorPrompt`,props:{instanceName:{}},setup(e,{expose:t}){let{instanceName:n}=v(e),r=S(``),i=w(()=>r.value.length<6);async function a(){return r.value.length<6?null:r.value}return t({isDisabled:i,onConfirm:a}),(e,t)=>{let i=j;return k(),x(`div`,G,[y(`p`,K,p(e.$t(`instances.two_factor_hint`,{name:g(n)})),1),y(`div`,q,[y(`label`,J,p(e.$t(`views.settings.security.enter_code`)),1),O(i,{modelValue:g(r),"onUpdate:modelValue":t[0]||=e=>b(r)?r.value=e:null,length:6,"integer-only":``,class:`justify-center`},null,8,[`modelValue`])])])}}}),Y=3e4,X=5e3,Z=`__home__`,oe=new Set([`localhost`,`127.0.0.1`,`::1`]),Q=u(`Instances`);async function se(e,t){try{let n=AbortSignal.timeout(X),r=t?AbortSignal.any([n,t]):n,i=await fetch(`${e}/api/health`,{signal:r});return Q.debug(`[probe]`,`${e} → ${i.ok?`OK`:`HTTP ${i.status}`}`),i.ok}catch(t){let n=t instanceof Error?t.message:String(t);return Q.debug(`[probe]`,`${e} → FAIL`,n),!1}}function ce(e){return{access:e.access_token,accessExpiresAt:e.access_token_expires_at,refresh:e.refresh_token,refreshExpiresAt:e.refresh_token_expires_at}}function le(e,t){return{_id:t?._id??``,username:t?.username??``,email:t?.email,role:t?.role??``,firstLogin:t?.firstLogin,avatar:t?.avatar,language:`auto`,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 $=A(`instances`,()=>{let l=d(),u=ee(),f=o(),p=ne(),m=h(),{t:g}=c.global,_=i(`instanceTokens`,{}),v=i(`activeInstanceId`,null),y=S(!1),b=S(null),x=S(0),T=0,E=S(null),D=S([]),O=t(`redirectInfo`,null,{serializer:{read:e=>e?JSON.parse(e):null,write:e=>JSON.stringify(e)}}),k=w(()=>v.value===null),A=w(()=>v.value===null?null:D.value.find(e=>e.id===v.value)?.url??null);async function j(){try{if(!te(void 0,`admin`))return;let e=await L();D.value=e.instances,E.value=e.homeId,Q.debug(`[fetch]`,`loaded ${e.instances.length} instances`,{homeId:e.homeId})}catch(e){Q.warn(`[fetch]`,`failed`,e)}}let M=w(()=>{let e=E.value;return D.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 N(){let e=_.value[Z],t=v.value===null?a().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 re=w(()=>{if(v.value!==null){let e=M.value.find(e=>e.id===v.value);if(e)return e}return N()}),P=w(()=>M.value.filter(e=>e.favorite)),ie=w(()=>P.value.length>0||v.value!==null||O.value!==null);function F(e){return D.value.find(t=>t.id===e)?.favorite??!0}async function U(e){let{favorite:t}=await V(e),n=D.value.find(t=>t.id===e);n&&(n.favorite=t)}async function W(e){let t=await R(e);return D.value=[...D.value,t],t}async function G(e){await B(e),D.value=D.value.filter(t=>t.id!==e),delete _.value[e]}async function K(e,t){let n=await z({id:e,data:t}),r=D.value.findIndex(t=>t.id===e);r!==-1&&(D.value[r]=n)}async function q(e,t){let n=D.value.find(t=>t.id===e);return n?se(n.url,t):!1}function J(){let e=a().target.value;if(!e?.tokens.access){Q.debug(`[save-tokens]`,`skipped — no live access token`);return}let t=v.value??Z;_.value[t]={userData:le(e.tokens,l.user??void 0),lastConnectedAt:Date.now(),url:e.endpoint.url},Q.debug(`[save-tokens]`,`slot=${t} url=${e.endpoint.url}`)}function X(){if(v.value===null){s.value=null,Q.debug(`[restore-override]`,`no active instance — home target`);return}let e=_.value[v.value],t=e?.url??e?.userData?.internalAddresses?.[0]??e?.userData?.externalAddresses?.[0]??null;s.value=t,Q.debug(`[restore-override]`,`activeId=${v.value} → ${t??`no cached url`}`)}async function $(t){if(y.value){Q.warn(`[switch]`,`ignored — another switch is already in progress`);return}let i=t===null?N():M.value.find(e=>e.id===t)??N();if(t!==null&&de(i.url)&&!await he(i.name)){Q.debug(`[switch]`,`URL handoff declined by user`);return}let o=++T;y.value=!0,b.value=i.name,Q.debug(`[switch]`,`START targetId=${t??`home`} gen=${o}`),Q.debug(`[switch]`,`target resolved — name="${i.name}" url=${i.url} hasCreds=${i.hasCredentials}`);try{if(t!==null){let e=await se(i.url);if(o!==T){Q.debug(`[switch]`,`aborted after probe — newer gen=${T}`);return}if(!e){Q.warn(`[switch]`,`target unreachable — ${i.url}`),f.add({severity:`warn`,detail:g(`instances.unreachable`,{name:i.name}),life:3e3});return}}let c=null;if(t!==null&&i.hasCredentials)try{let e=await H(t);if(I(e)){Q.debug(`[switch]`,`remote requires 2FA — prompting for code`),y.value=!1;let n=await pe(t,i.name);if(o!==T)return;if(y.value=!0,!n){Q.debug(`[switch]`,`2FA prompt cancelled — aborting switch`);return}e=n}I(e)||(c=e,Q.debug(`[switch]`,`backend relay login OK`))}catch(e){Q.warn(`[switch]`,`backend relay login FAILED — will try cached tokens`,e)}if(o!==T){Q.debug(`[switch]`,`aborted after relay-login — newer gen=${T}`);return}J();let d=t??Z,p=c?ce(c):ue(d);if(Q.debug(`[switch]`,`tokens source: ${c?`fresh`:p?`cached`:`none`} (slot=${d})`),t!==null&&de(i.url)){Q.debug(`[switch]`,`URL handoff required — leaving SPA`),await ge(i,c);return}let h=a();if(h.reset(),Q.debug(`[switch]`,`kernel RESET`),r(),n(),e(),m.clear(),Q.debug(`[switch]`,`vue-query cleared`),v.value=t,s.value=t===null?null:i.url,Q.debug(`[switch]`,`activeId=${t} instanceOverride=${s.value??`null`}`),p&&c&&(_.value[d]={userData:c,lastConnectedAt:Date.now(),url:i.url},l.user={_id:c._id,username:c.username,role:c.role,firstLogin:c.firstLogin,avatar:c.avatar}),p){let e={url:i.url,mode:`direct-lan`,priority:0};Q.debug(`[switch]`,`seedAndRetry → ${e.url}`),await Promise.race([h.seedAndRetry({endpoint:e,tokens:p},t??`home`),new Promise((e,t)=>setTimeout(()=>t(Error(`switch_timeout`)),Y))])}else{Q.warn(`[switch]`,`no tokens — boot + route to login`),h.boot(t??`home`),l.user=null,u.push(`/`);return}if(o!==T){Q.debug(`[switch]`,`aborted after seedAndRetry — newer gen=${T}`);return}x.value++,Q.debug(`[switch]`,`DONE gen=${o} → /home`),u.push(`/home`)}catch(e){(e instanceof Error?e.message:String(e))===`switch_timeout`?(Q.error(`[switch]`,`TIMEOUT after ${Y}ms`),f.add({severity:`error`,detail:g(`instances.switch_timeout`,{name:b.value??``}),life:3e3})):(Q.error(`[switch]`,`failed`,e),f.add({severity:`error`,detail:e,life:3e3}))}finally{o===T&&(y.value=!1,b.value=null)}}function ue(e){let t=_.value[e];return t?.userData?.access_token?ce(t.userData):null}function de(e){try{let t=new URL(e),n=new URL(window.location.origin),r=n.protocol===`https:`&&t.protocol===`http:`,i=oe.has(t.hostname)&&!oe.has(n.hostname);return r||i}catch{return!1}}function fe(e){return new Promise(t=>{let n=!1,r=e=>{n||(n=!0,t(e))};p.openComponentDialog(ae,{data:{title:g(`instances.two_factor_title`),confirmText:g(`views.login.2fa_verify`),contentProps:{instanceName:e}},onConfirm:async e=>r(e??null),onCancel:async()=>r(null)})})}async function pe(e,t){for(;;){let n=await fe(t);if(!n)return null;try{let t=await H(e,n);if(!I(t))return t}catch(e){Q.warn(`[2fa]`,`verification failed`,e),f.add({severity:`error`,detail:g(`instances.two_factor_failed`),life:3e3})}}}async function me(e,t){return await pe(e,t)?(f.add({severity:`success`,detail:g(`instances.two_factor_completed`,{name:t}),life:3e3}),await j().catch(()=>{}),!0):!1}function he(e){return Q.warn(`[switch]`,`target "${e}" requires URL handoff — asking user confirmation`),new Promise(t=>{let n=!1,r=e=>{n||(n=!0,t(e))};p.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 ge(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}`;Q.debug(`[url-handoff]`,`→ ${e.url} (with token=${t?`yes`:`no`})`),window.location.href=i}function _e(){_.value={},v.value=null,s.value=null,O.value=null,D.value=[],E.value=null,Q.debug(`[reset]`,`store cleared`)}return{instances:M,activeInstance:re,activeId:v,activeUrl:A,isHomeActive:k,isMultiInstance:ie,isSwitching:C(y),switchTargetName:C(b),switchKey:C(x),serverHomeId:E,redirectInfo:O,serverInstances:D,instanceTokens:_,favoriteInstances:P,isFavorite:F,toggleFavorite:U,fetchInstances:j,addInstance:W,removeInstance:G,updateInstance:K,switchInstance:$,probeInstance:q,complete2FALogin:me,reset:_e,saveCurrentTokens:J,restoreActiveOverride:X}});export{re as i,W as n,F as r,$ as t};
|