@camera.ui/server 2.1.4 → 2.1.5
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-6v3-U7nj.js → 404-C0XhilKM.js} +1 -1
- package/dist/interface/assets/{About-IMZSnCy7.js → About-DZsTev1Z.js} +1 -1
- package/dist/interface/assets/{Adminpanel-jq9sK1Ey.js → Adminpanel-BFKj4r-J.js} +1 -1
- package/dist/interface/assets/{Automation-xs_GEpGx.js → Automation-DftZGCt6.js} +3 -3
- package/dist/interface/assets/{AutomationImport-CR4fWWkU.js → AutomationImport-CWz3wK45.js} +2 -2
- package/dist/interface/assets/{AutomationStore-rB-eVXdY.js → AutomationStore-BDgJ0e1s.js} +2 -2
- package/dist/interface/assets/{AutomationStoreDetail-DzMg8IOO.js → AutomationStoreDetail-BxjQz384.js} +2 -2
- package/dist/interface/assets/Automations-CYK5CbkM.js +2 -0
- package/dist/interface/assets/Camera-C5gF7yVN.css +1 -0
- package/dist/interface/assets/Camera-C7TRw5N0.js +2 -0
- package/dist/interface/assets/{CameraConsole-CQLrlDvb.js → CameraConsole-CNULG_YE.js} +1 -1
- package/dist/interface/assets/Cameras-CXWCJWzR.js +652 -0
- package/dist/interface/assets/Camview-C09leXh7.js +1 -0
- package/dist/interface/assets/{Config-DxYeS7cY.js → Config-DNOXV5ek.js} +1 -1
- package/dist/interface/assets/{ConfigActionCameraControl-Biu5BwNu.js → ConfigActionCameraControl-BPfBxvxr.js} +1 -1
- package/dist/interface/assets/{ConfigActionDelay-CK5j4XLw.js → ConfigActionDelay-CZeAJTj7.js} +1 -1
- package/dist/interface/assets/{ConfigActionHttp-Dtvi3jZB.js → ConfigActionHttp-ipkZdIWF.js} +1 -1
- package/dist/interface/assets/{ConfigActionImageInput-Dh0A20j9.js → ConfigActionImageInput-CvETCNjG.js} +1 -1
- package/dist/interface/assets/{ConfigActionMqtt-DwZdnDlb.js → ConfigActionMqtt-B8ZNU0UW.js} +1 -1
- package/dist/interface/assets/{ConfigActionNotification-BVqYxGu8.js → ConfigActionNotification-B-nC2J6v.js} +1 -1
- package/dist/interface/assets/{ConfigActionNotificationControl-BTdnQqox.js → ConfigActionNotificationControl-DjxS7_ID.js} +1 -1
- package/dist/interface/assets/{ConfigActionOutput-Dv745ppL.js → ConfigActionOutput-QG12dzwm.js} +1 -1
- package/dist/interface/assets/{ConfigActionPlugin-C9QdPDXC.js → ConfigActionPlugin-Q2Tcpdgm.js} +1 -1
- package/dist/interface/assets/{ConfigActionSensor-D17wASao.js → ConfigActionSensor-BTFyt4ER.js} +1 -1
- package/dist/interface/assets/{ConfigActionSnapshot-CrbMLwuh.js → ConfigActionSnapshot-DfnAex92.js} +1 -1
- package/dist/interface/assets/{ConfigActionVariable-C0HobSMN.js → ConfigActionVariable-COrJ-lFp.js} +1 -1
- package/dist/interface/assets/{ConfigConditionIfElse-DsedkGhY.js → ConfigConditionIfElse-Dpc6Cwpf.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSensorState-rRLbA2_b.js → ConfigConditionSensorState-BQXY2c2t.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSwitch-5nEVS-Oj.js → ConfigConditionSwitch-BuI8_3Bp.js} +1 -1
- package/dist/interface/assets/{ConfigConditionTime-CieLn-sp.js → ConfigConditionTime-0Du7w_QE.js} +1 -1
- package/dist/interface/assets/{ConfigSensorValueInput-CRRM_aBz.js → ConfigSensorValueInput-vY0DCyRn.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerDetection-CMVgejZ3.js → ConfigTriggerDetection-ChUtfRtm.js} +1 -1
- package/dist/interface/assets/ConfigTriggerGeofence-fHTNHtGp.js +1 -0
- package/dist/interface/assets/{ConfigTriggerManual-Bd9H0AfP.js → ConfigTriggerManual-IAo9sbiS.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerMqtt-BIv5Ca91.js → ConfigTriggerMqtt-ZeRfexN1.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSchedule-CzWWcnFW.js → ConfigTriggerSchedule-Ct_AN-xu.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSensor-C5lsyxsh.js → ConfigTriggerSensor-BJkKOmTg.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSystem-WipCRwTJ.js → ConfigTriggerSystem-DedCuH2F.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerWebhook-Bl0O4RBX.js → ConfigTriggerWebhook-DPz9NPdp.js} +1 -1
- package/dist/interface/assets/Console-D5hGnmUg.js +1 -0
- package/dist/interface/assets/{CuiAutomationRunsDialog-CUPBuq_J.js → CuiAutomationRunsDialog-BP-FYYXr.js} +1 -1
- package/dist/interface/assets/{CuiBottomSheet-K19nZQiG.js → CuiBottomSheet-B25DDhsj.js} +1 -1
- package/dist/interface/assets/CuiBottomSheet-de-zDc6R.js +1 -0
- package/dist/interface/assets/{CuiCameraPipCard-D3o29_wc.css → CuiCameraPipCard-BQKk4fxY.css} +1 -1
- package/dist/interface/assets/CuiCameraPipCard-CeY7Gy9_.js +1 -0
- package/dist/interface/assets/CuiCameraRecordings-AA-sBtb4.css +1 -0
- package/dist/interface/assets/CuiCameraRecordings-CqwUqjAU.js +1 -0
- package/dist/interface/assets/{CuiCameraShares-BTn5ys6X.js → CuiCameraShares-B5pdZrh3.js} +1 -1
- package/dist/interface/assets/{CuiCameraTable-DYvQ-GCz.js → CuiCameraTable-BhUWRnwr.js} +1 -1
- package/dist/interface/assets/{CuiConsole-C4PawCou.js → CuiConsole-CAHUWadU.js} +2 -2
- package/dist/interface/assets/{CuiDataTable-CORQOWsf.js → CuiDataTable-DcyMAPBx.js} +1 -1
- package/dist/interface/assets/{CuiLightControl-BYkQ8Ue3.js → CuiLightControl-8aZiuOCv.js} +1 -1
- package/dist/interface/assets/{CuiList-BgZBIhXP.js → CuiList-psx5r57o.js} +1 -1
- package/dist/interface/assets/CuiMarkdownContent-73RAjkHa.js +1 -0
- package/dist/interface/assets/{CuiMarkdownContent-CCdOW_TM.js → CuiMarkdownContent-BfJOBp3S.js} +1 -1
- package/dist/interface/assets/{CuiPluginCard-C91rKOge.js → CuiPluginCard-BZPiou4m.js} +2 -2
- package/dist/interface/assets/{CuiPluginCategoryChip-B_Zy4B42.js → CuiPluginCategoryChip-1h2moEVm.js} +1 -1
- package/dist/interface/assets/{CuiPluginOAuthButton-IXGedGWs.js → CuiPluginOAuthButton-CI5gdHHd.js} +2 -2
- package/dist/interface/assets/{CuiPluginTrustBadge-DTfM8Jjo.js → CuiPluginTrustBadge-CqkEF6GV.js} +1 -1
- package/dist/interface/assets/CuiQRCode-CQGx_k0S.js +1 -0
- package/dist/interface/assets/CuiRecordingsGrid-CLNQoUbw.js +1 -0
- package/dist/interface/assets/CuiSchema-U31deYpX.js +1 -0
- package/dist/interface/assets/{CuiTopNavbarItem-DWLnn7Kh.js → CuiTopNavbarItem-BekRyj7O.js} +1 -1
- package/dist/interface/assets/Faces-BEqO99qz.js +1 -0
- package/dist/interface/assets/FirstSteps-BTDj1olc.js +1 -0
- package/dist/interface/assets/Instances-DTqwb5FF.js +1 -0
- package/dist/interface/assets/{Logs-Cii4oP8R.js → Logs-D8LlWlQ2.js} +1 -1
- package/dist/interface/assets/Menu-Cb5cBA-q.js +1 -0
- package/dist/interface/assets/{OAuthDeviceFlow-BZgtsIjF.js → OAuthDeviceFlow-CExQxxt6.js} +1 -1
- package/dist/interface/assets/Plugin-DtkmtFL6.js +1 -0
- package/dist/interface/assets/{PluginConsole-BFsCogtB.js → PluginConsole-CktnZFCJ.js} +1 -1
- package/dist/interface/assets/PluginDetail-t5V-ATem.js +2 -0
- package/dist/interface/assets/{PluginSchema-D45zblVz.js → PluginSchema-DgXUaGQ2.js} +1 -1
- package/dist/interface/assets/PluginSearch-D8qXgkEP.js +2 -0
- package/dist/interface/assets/PluginSearch-DDa1Jt8s.js +1 -0
- package/dist/interface/assets/{PluginUpdateProgress-CsRGGH8J.js → PluginUpdateProgress-B9GSD9wl.js} +1 -1
- package/dist/interface/assets/Plugins-CMjhJaUC.js +1 -0
- package/dist/interface/assets/Recordings-BP3-OD7P.js +1 -0
- package/dist/interface/assets/{SensorEdit-D2ChsNDL.js → SensorEdit-B-64Y4xT.js} +1 -1
- package/dist/interface/assets/{SensorHistory-B6ZKgot4.js → SensorHistory-D8xQKiuE.js} +1 -1
- package/dist/interface/assets/Sensors-D5VXCQ6N.js +2 -0
- package/dist/interface/assets/Settings-B3INZjRu.js +1 -0
- package/dist/interface/assets/{Settings-DmZjKfDi.css → Settings-D8L1oiQx.css} +1 -1
- package/dist/interface/assets/SettingsAccount-BEMYyovd.js +1 -0
- package/dist/interface/assets/SettingsAccount-CcPLFq2z.js +1 -0
- package/dist/interface/assets/SettingsAppearance-BSVGF67s.js +1 -0
- package/dist/interface/assets/SettingsAppearance-CCf7QwkP.js +1 -0
- package/dist/interface/assets/{SettingsBackup-8HCwVmDA.js → SettingsBackup-DSARU1qG.js} +1 -1
- package/dist/interface/assets/SettingsList-imzWFgaD.js +1 -0
- package/dist/interface/assets/SettingsMqtt-DkEqSLI4.js +1 -0
- package/dist/interface/assets/{SettingsNotifications-fDDuqryh.js → SettingsNotifications-CE5byZci.js} +1 -1
- package/dist/interface/assets/{SettingsPermissions-DYirYf1Z.js → SettingsPermissions-DU1XvFFc.js} +1 -1
- package/dist/interface/assets/{SettingsRecordings-4NxpAbu5.js → SettingsRecordings-CSCgcxrS.js} +1 -1
- package/dist/interface/assets/SettingsRemote-DXw6kYER.js +1 -0
- package/dist/interface/assets/{SettingsSystem-CVWkw449.js → SettingsSystem-BctqXTc5.js} +2 -2
- package/dist/interface/assets/{SettingsUsers-Dc6L7Lt2.js → SettingsUsers-DoPPk6w5.js} +1 -1
- package/dist/interface/assets/{Terminal-BgVnN-2g.js → Terminal-CPOkeiZ5.js} +2 -2
- package/dist/interface/assets/{VariableInput-ZYn-Phl4.js → VariableInput-DfDRe6bt.js} +1 -1
- package/dist/interface/assets/{VariableSuggestions-BnzdQP6R.js → VariableSuggestions-CjlK2Uqx.js} +1 -1
- package/dist/interface/assets/{VersionsHandler-BvKvGOlF.js → VersionsHandler-BEWveXqP.js} +1 -1
- package/dist/interface/assets/{VirtualSensorCreate-Dk_YYzxR.js → VirtualSensorCreate-CUTyLWv-.js} +1 -1
- package/dist/interface/assets/Workers-B_G_FZls.js +2 -0
- package/dist/interface/assets/{api-36pS71R2.js → api-BrAt3E8w.js} +1 -1
- package/dist/interface/assets/api-DIm7LItL.css +2 -0
- package/dist/interface/assets/api-Da98l_Y7.js +2 -0
- package/dist/interface/assets/{auth-DYoO8jpd.js → auth-BdsJrXmQ.js} +1 -1
- package/dist/interface/assets/{automations-BOvDlvvx.js → automations-C1EJke-z.js} +1 -1
- package/dist/interface/assets/{cameras.schema-BvnUX82v.js → cameras.schema-BWH_Q16D.js} +1 -1
- package/dist/interface/assets/cloudHandoff-1DPEACLE.js +1 -0
- package/dist/interface/assets/{config-DTGhJmsj.js → config-Bq4jYnKb.js} +1 -1
- package/dist/interface/assets/{flowSchema-zo1H4tnP.js → flowSchema-okQoWkh6.js} +1 -1
- package/dist/interface/assets/main-6B8o-buJ.css +1 -0
- package/dist/interface/assets/main-W_rUAd4i.js +3 -0
- package/dist/interface/assets/mqtt-DtPGnb1K.js +1 -0
- package/dist/interface/assets/{notifications-cHS8-1HN.js → notifications-CtZcAwQu.js} +1 -1
- package/dist/interface/assets/{plugins-CaKErv4E.js → plugins-BK7kZLJw.js} +1 -1
- package/dist/interface/assets/{round-restart-alt-DPYbDt-x.js → round-restart-alt-ctiUuhp8.js} +1 -1
- package/dist/interface/assets/{sensorIcons-DepqfSoA.js → sensorIcons-C9h8rHR6.js} +1 -1
- package/dist/interface/assets/{sensors-CMpbwMO4.js → sensors-Bj4drsO3.js} +1 -1
- package/dist/interface/assets/{server-C-WV93FX.js → server-D-ogiovS.js} +1 -1
- package/dist/interface/assets/{theme-BkwBz73p.js → theme-DGxZC_Ti.js} +1 -1
- package/dist/interface/assets/{types-Cko7VOxd.js → types-B1G3t3XJ.js} +1 -1
- package/dist/interface/assets/types-BCygqese.js +1 -0
- package/dist/interface/assets/{useAppVersion-V1S18l98.js → useAppVersion-Ceg42BEw.js} +1 -1
- package/dist/interface/assets/useBackupRestore-BwnYTBUM.js +1 -0
- package/dist/interface/assets/{useCameraOptions-o1hYGLbC.js → useCameraOptions-BxVd91Ew.js} +1 -1
- package/dist/interface/assets/{useElectron-3ZJLtRk3.js → useElectron-BNGXeZEx.js} +1 -1
- package/dist/interface/assets/{useLogsSocket-DDgnQ_Dk.js → useLogsSocket-0JucMhVY.js} +1 -1
- package/dist/interface/assets/useNavLayout-CTTy15kG.js +1 -0
- package/dist/interface/assets/{usePermissions-BWlj5SzG.js → usePermissions-C9kp5HQR.js} +1 -1
- package/dist/interface/assets/{usePluginUpdates-DI1p2NMc.js → usePluginUpdates-B9k-vTcT.js} +1 -1
- package/dist/interface/assets/{useServerRestart-D_ASBw_0.js → useServerRestart-D7dAWdQ6.js} +1 -1
- package/dist/interface/assets/{useStreamStatus-BQJIFFLv.js → useStreamStatus-BlV_fFBy.js} +1 -1
- package/dist/interface/assets/{useUpdateChannel-CyLSUSAY.js → useUpdateChannel-BeP49Gm-.js} +1 -1
- package/dist/interface/assets/{useUserOptions-Ds1Ybn7N.js → useUserOptions-B8UiLDx4.js} +1 -1
- package/dist/interface/assets/utils-gctUU5q_.js +1 -0
- package/dist/interface/assets/vendor-cameraui-GaXYUHUd.js +2326 -0
- package/dist/interface/assets/{vendor-core-DDtZhtY9.js → vendor-core-DNm82LOv.js} +1 -1
- package/dist/interface/assets/vendor-markdown-BDjboykr.js +14 -0
- package/dist/interface/assets/{vendor-primevue-DE-f4Z5f.js → vendor-primevue-CIRUBYsf.js} +1 -1
- package/dist/interface/index.html +26 -24
- package/dist/interface/sw.js +1 -1
- package/dist/server/package.json +4 -4
- package/dist/server/requirements.txt +1 -1
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/detection.py +2 -0
- package/dist/server/src/api/controllers/auth.controller.js +2 -0
- package/dist/server/src/api/controllers/auth.controller.js.map +1 -1
- package/dist/server/src/api/database/types.d.ts +2 -0
- package/dist/server/src/api/schemas/cameras.schema.d.ts +8 -0
- package/dist/server/src/api/schemas/cameras.schema.js +2 -0
- package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
- package/dist/server/src/api/schemas/users.schema.d.ts +65 -1
- package/dist/server/src/api/schemas/users.schema.js +23 -0
- package/dist/server/src/api/schemas/users.schema.js.map +1 -1
- package/dist/server/src/api/services/users.service.js +3 -1
- package/dist/server/src/api/services/users.service.js.map +1 -1
- package/dist/server/src/api/types/index.d.ts +8 -0
- package/dist/server/src/api/types/index.js.map +1 -1
- package/dist/server/src/camera/decoder/detection-coordinator.js +47 -22
- package/dist/server/src/camera/decoder/detection-coordinator.js.map +1 -1
- package/dist/server/src/rpc/server.js +5 -0
- package/dist/server/src/rpc/server.js.map +1 -1
- package/package.json +4 -4
- package/dist/interface/assets/Automations-DWI8Q2TS.js +0 -2
- package/dist/interface/assets/Camera-BIppnvyN.js +0 -2
- package/dist/interface/assets/Camera-BfMZmurS.css +0 -1
- package/dist/interface/assets/Cameras-kIN6bWi1.js +0 -652
- package/dist/interface/assets/Camview-4jdGGny8.js +0 -1
- package/dist/interface/assets/ConfigTriggerGeofence-cMhyndiz.js +0 -1
- package/dist/interface/assets/Console-GtK0GVLX.js +0 -1
- package/dist/interface/assets/CuiBottomSheet-DQNpk0mh.js +0 -1
- package/dist/interface/assets/CuiCameraPipCard-e3_uYELi.js +0 -1
- package/dist/interface/assets/CuiCameraRecordings-CPAMltfx.js +0 -1
- package/dist/interface/assets/CuiCameraRecordings-fB3X6kad.css +0 -1
- package/dist/interface/assets/CuiMarkdownContent-ChezqgI1.js +0 -1
- package/dist/interface/assets/CuiQRCode-D5vwhyuQ.js +0 -1
- package/dist/interface/assets/CuiRecordingsGrid-yXEzhnc4.js +0 -1
- package/dist/interface/assets/CuiSchema-hK_tgUP9.js +0 -1
- package/dist/interface/assets/Faces-DzwTi8P1.js +0 -1
- package/dist/interface/assets/FirstSteps-0ojmFGSr.js +0 -1
- package/dist/interface/assets/Instances-DvoFBGMx.js +0 -1
- package/dist/interface/assets/Menu-pvtuFKFM.js +0 -1
- package/dist/interface/assets/Plugin-BKqpBWJy.js +0 -1
- package/dist/interface/assets/PluginDetail-Dl0OM6me.js +0 -2
- package/dist/interface/assets/PluginSearch-DdIcv9xA.js +0 -1
- package/dist/interface/assets/PluginSearch-DxoQUW8M.js +0 -2
- package/dist/interface/assets/Plugins-CGj8DSLJ.js +0 -1
- package/dist/interface/assets/Recordings-PojBH8L3.js +0 -1
- package/dist/interface/assets/Sensors-DyqWcB-G.js +0 -2
- package/dist/interface/assets/Settings-BFJO08mq.js +0 -1
- package/dist/interface/assets/SettingsAccount-DREZwvce.js +0 -1
- package/dist/interface/assets/SettingsAccount-QxmP0dzI.js +0 -1
- package/dist/interface/assets/SettingsAppearance-BejKI3_C.js +0 -1
- package/dist/interface/assets/SettingsAppearance-_zvMUQvn.js +0 -1
- package/dist/interface/assets/SettingsList-B4H786Cc.js +0 -1
- package/dist/interface/assets/SettingsMqtt-D7ajm1JA.js +0 -1
- package/dist/interface/assets/SettingsRemote-DOQkaNzp.js +0 -1
- package/dist/interface/assets/Workers-CjEzGjy8.js +0 -2
- package/dist/interface/assets/api-CDvtqu1L.css +0 -2
- package/dist/interface/assets/api-DTFsk1zB.js +0 -2
- package/dist/interface/assets/cloudHandoff-DNKMEHOI.js +0 -1
- package/dist/interface/assets/main-CcvCf5qj.js +0 -3
- package/dist/interface/assets/main-XQ5Vahbs.css +0 -1
- package/dist/interface/assets/mqtt-CYc8_9pb.js +0 -1
- package/dist/interface/assets/types-ClTvDPjn.js +0 -1
- package/dist/interface/assets/useBackupRestore-BZ73vHrV.js +0 -1
- package/dist/interface/assets/vendor-cameraui-CQTIVF_m.js +0 -2326
- package/dist/interface/assets/vendor-markdown--U0EK8HV.js +0 -14
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Ir as e,Lr as t,Rr as n,zr as r}from"./vendor-cameraui-CQTIVF_m.js";import{C as i,S as a,_ as o,a as s,b as c,c as l,d as u,f as ee,g as d,h as f,i as p,l as m,m as te,o as ne,p as re,s as h,u as g,v as ie,w as _,x as v,y}from"./vendor-zod-Dbq0fBXY.js";o({tempToken:c().trim().min(1,`Temporary token is required`),code:c().trim().min(1,`Code is required`)}).strict(),o({code:c().trim().length(6,`Code must be 6 digits`)}).strict(),o({code:c().trim().min(1,`Code is required`)}).strict(),o({code:c().trim().min(1,`Code is required`)}).strict(),o({grant_type:c().optional(),username:c().trim().min(1,`Username is required`),password:c().min(1,`Password is required`),scope:c().optional(),client_id:c().optional(),client_secret:c().optional()}),o({refresh_token:c().min(1,`Refresh token is required`)}),o({id:c()}),o({name:c().trim().min(1,`Name is required`).max(64,`Name is too long`)}).strict(),o({id:c()});function ae(e){let t=[`kasa://`,`nest:`,`ring:`,`tapo://`];return e.some(e=>t.some(t=>e.startsWith(t)))}var oe=[`#df2a4c`,`#2a7fdf`,`#2adf7f`,`#df7f2a`,`#7f2adf`,`#2adfdf`,`#df2adf`,`#7fdf2a`];function se(){return oe[Math.floor(Math.random()*oe.length)]}function ce(){return{name:`Default Zone`,points:[[0,0],[100,0],[100,100],[0,100]],type:`intersect`,filter:`include`,labels:[`motion`,`person`,`vehicle`,`animal`],isPrivacyMask:!1,color:se()}}var le=o({enabled:g().default(!0),mode:h([`continuous`,`event`,`adhoc`]).default(`continuous`),preBuffer:d().min(0).max(60).default(10),sources:m(h([`high`,`mid`,`low`])).default([`high`,`mid`,`low`])}).strict(),ue={enabled:!0,mode:`continuous`,preBuffer:10,sources:[`high`,`mid`,`low`]},de=c().trim().min(1,`Detection label is required`),b=v([d(),d()]),x=o({name:c().trim().min(1,`Zone Name is required`),points:b.array().min(3,`At least 3 points are required`),type:a([f(`intersect`),f(`contain`)]),filter:a([f(`include`),f(`exclude`)]),labels:de.array(),isPrivacyMask:g(),color:c().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`)}).array(),S=o({name:c().trim().min(1,`Line Name is required`),points:v([b,b]),direction:a([f(`both`),f(`a-to-b`),f(`b-to-a`)]),labels:de.array(),color:c().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`)}).array(),fe=o({motion:o({resolution:a([f(`low`),f(`medium`),f(`high`)]),timeout:d().min(10,`Minimum 10 seconds`)}),object:o({confidence:d().min(.3,`Minimum 0.3`).max(1,`Maximum 1`),suppressStatic:g().default(!0)}),audio:o({minDecibels:d().min(-100,`Minimum -100 dBFS`).max(0,`Maximum 0 dBFS`),timeout:d().min(10,`Minimum 10 seconds`),confidence:d().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.7)}),face:o({confidence:d().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.5)}).default({confidence:.5}),licensePlate:o({confidence:d().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.9),minLength:d().int().min(1,`Minimum 1`).max(10,`Maximum 10`).default(4)}).default({confidence:.9,minLength:4}),sensor:o({timeout:d().min(10,`Minimum 10 seconds`),triggers:m(c().trim().min(1,`Sensor id is required`)).default([])}),cascadeDetection:g().default(!0),cascadeTimeout:d().min(1,`Minimum 1 second`).max(300,`Maximum 300 seconds`).default(10),snooze:g().default(!1)}),pe={enabled:!1,targetLabels:[`person`],minConfidence:.5,triggerDeadZone:.05,trackingSpeed:2,leadMs:1800,panRate:.85,returnToHome:!1,homeWaitMs:1e4},me=o({enabled:g().default(!1),targetLabels:c().trim().min(1,`Target label is required`).array().default([`person`]),minConfidence:d().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),triggerDeadZone:d().min(0,`Minimum 0`).max(.3,`Maximum 0.3`).default(.05),trackingSpeed:d().min(1,`Minimum 1`).max(5,`Maximum 5`).default(2),leadMs:d().min(0,`Minimum 0`).max(4e3,`Maximum 4000 ms`).default(1800),panRate:d().min(.1,`Minimum 0.1`).max(3,`Maximum 3`).default(.85),returnToHome:g().default(!1),homeWaitMs:d().min(1e3,`Minimum 1000 ms`).max(6e4,`Maximum 60000 ms`).default(1e4)}),C=a([f(`high-resolution`),f(`mid-resolution`),f(`low-resolution`),f(`snapshot`)]),he=a([f(`high-resolution`),f(`mid-resolution`),f(`low-resolution`)]),ge=a([f(`bubble://`),f(`cui://`),f(`doorbird://`),f(`dvrip://`),f(`eseecloud://`),f(`ffmpeg:`),f(`flussonic://`),f(`gopro://`),f(`hass:`),f(`homekit://`),f(`http://`),f(`https://`),f(`httpx://`),f(`isapi://`),f(`ivideon:`),f(`kasa://`),f(`nest:`),f(`onvif://`),f(`ring:`),f(`roborock://`),f(`rtmp://`),f(`rtsp://`),f(`rtspx://`),f(`tapo://`),f(`tcp://`),f(`tuya://`),f(`xiaomi://`),f(`yandex:`),f(`webrtc:`),f(`webtorrent:`),f(`wyze://`)]).options.map(e=>e.value),_e=RegExp(`^(${ge.join(`|`)})`),w=c().refine(e=>{if(!_e.test(e))return!1;try{return new URL(e),!0}catch{return!1}},{message:`Invalid URL format or unsupported protocol`}),ve=o({_id:c().default(t()).transform(()=>t()),name:c().trim().min(1,`Camera Source Name is required`).transform(e=>e.replace(/ /g,`_`).toLowerCase()),role:C,useForSnapshot:g().default(!1),hotMode:g().default(!0),preload:g().default(!0),muted:g().default(!1),urls:w.array().min(1,`At least one valid URL is required`),childSourceId:c().trim().min(1,`Child Source ID is required`).nullish().transform(e=>e??void 0).optional()}).strict().transform(e=>e.role===`snapshot`?{...e,useForSnapshot:!1,hotMode:!1,preload:!1}:e),ye=o({_id:c().default(t()).transform(()=>t()),name:c().trim().min(1,`Camera Source Name is required`).transform(e=>e.replace(/ /g,`_`).toLowerCase()),role:C,useForSnapshot:g().default(!1),hotMode:g().default(!0),preload:g().default(!0),muted:g().default(!1),urls:w.array().min(1,`At least one valid URL is required`),childSourceId:c().trim().min(1,`Child Source ID is required`).nullish().transform(e=>e??void 0).optional()}).strict().transform(e=>e.role===`snapshot`?{...e,useForSnapshot:!1,hotMode:!1,preload:!1}:e),T=o({id:c(),name:c().trim()}),E=o({motion:T.optional(),object:T.optional(),objectAssist:T.optional(),audio:T.optional(),face:T.optional(),licensePlate:T.optional(),ptz:T.optional(),battery:T.optional(),cameraController:T.optional(),clip:T.optional(),classifier:T.array().optional(),light:T.array().optional(),siren:T.array().optional(),switch:T.array().optional(),securitySystem:T.array().optional(),contact:T.array().optional(),doorbell:T.array().optional(),lock:T.array().optional(),temperature:T.array().optional(),humidity:T.array().optional(),occupancy:T.array().optional(),smoke:T.array().optional(),leak:T.array().optional(),garage:T.array().optional(),gas:T.array().optional(),carbonMonoxide:T.array().optional(),carbonDioxide:T.array().optional(),heat:T.array().optional(),cold:T.array().optional(),vibration:T.array().optional(),tamper:T.array().optional(),problem:T.array().optional(),power:T.array().optional(),illuminance:T.array().optional(),hub:T.array().optional()}).strict(),be=a([f(`auto`),f(`mse`),f(`webrtc`),f(`webrtc/tcp`)]),xe=c().regex(/^\d+(?:\.\d+)?:\d+(?:\.\d+)?$/,`Use a width:height ratio, e.g. 16:9`).refine(e=>{let[t,n]=e.split(`:`).map(Number);return Number.isFinite(t)&&Number.isFinite(n)&&t>0&&n>0},`Both sides must be greater than 0`).transform(e=>e),D=o({hardware:h([`auto`,`cpu`,`cuda`,`vaapi`,`qsv`,`videotoolbox`,`d3d11va`,`d3d12va`,`dxva2`,`vulkan`,`opencl`,`drm`,`rkmpp`]).default(`auto`),device:c().trim().max(128).optional()}).strict(),O=o({mainStreamAnalysis:g().default(!1),decoder:D.optional(),workerDecoder:D.nullable().transform(e=>e??void 0).optional()}),k=a([f(`camera`),f(`doorbell`)]),A=o({streamingMode:be,streamingSource:he,aspectRatio:xe}),j=o({model:c().trim().optional(),manufacturer:c().trim().optional(),hardware:c().trim().optional(),serialNumber:c().trim().optional(),firmwareVersion:c().trim().optional(),supportUrl:c().trim().optional()}),Se=o({id:c(),name:c().trim()}).strict(),M=o({autoRefresh:g().default(!0),ttl:d().min(10,`Minimum 10 seconds`).max(60,`Maximum 60 seconds`).default(50),interval:d().min(10,`Minimum 10 seconds`).max(60,`Maximum 60 seconds`).default(60)}).strict(),N=o({_id:c().default(t()).transform(()=>t()),nativeId:c().trim().optional(),pluginInfo:Se.optional(),disabled:g().default(!1),name:c().trim().min(1,`Camera name is required`),room:c().trim().min(1,`Room is required`).default(`Default`),type:k.default(`camera`),isCloud:g().default(!1),snapshotSettings:M.default({autoRefresh:!0,ttl:50,interval:60}),info:j.default({model:`IP Camera`,manufacturer:`camera.ui`,hardware:`Camera`,serialNumber:`Unknown`,firmwareVersion:`Unknown`,supportUrl:`Unknown`}),sources:ve.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=>{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`]}),plugins:T.array().default([]),assignments:E.default({}),interfaceSettings:A.default({streamingMode:`webrtc`,streamingSource:`high-resolution`,aspectRatio:`16:9`}),detectionZones:x.default([]),detectionLines:S.default([]),detectionSettings:fe.default({motion:{resolution:`low`,timeout:30},object:{confidence:.5,suppressStatic:!0},audio:{minDecibels:-40,timeout:30,confidence:.7},face:{confidence:.5},licensePlate:{confidence:.9,minLength:4},sensor:{timeout:30,triggers:[]},cascadeDetection:!0,cascadeTimeout:10,snooze:!1}),ptzAutotrack:me.default(pe),recordingSettings:le.default(ue),frameWorkerSettings:O.default({mainStreamAnalysis:!1})}).strict();N.transform(e=>{let t=e.sources.flatMap(e=>e.urls),n=e.detectionZones.length===0?[ce()]:e.detectionZones;return e.isCloud||ae(t)?{...e,isCloud:!0,detectionZones:n}:{...e,detectionZones:n}});var Ce=o({disabled:g().optional(),type:k.optional(),name:c().trim().min(1,`Camera name is required`).optional(),room:c().trim().min(1,`Room is required`).optional(),isCloud:g().optional(),snapshotSettings:M.partial().optional(),info:j.partial().optional(),sources:ye.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=>{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`]}).optional(),plugins:T.array().optional(),assignments:E.partial().optional(),interfaceSettings:A.partial().optional(),detectionZones:x.optional(),detectionLines:S.optional(),detectionSettings:fe.partial().optional(),ptzAutotrack:me.partial().optional(),recordingSettings:le.partial().optional(),frameWorkerSettings:O.partial().optional()}).strict().transform(e=>{if(e.sources){let t=e.sources.flatMap(e=>e.urls);if(e.isCloud===!0||ae(t))return{...e,isCloud:!0}}return e});o({url:c().trim().refine(e=>!/^\s*(exec|echo|expr):/i.test(e),`Command-execution stream sources are not allowed`)}).strict(),o({cameraname:c()}),o({cameraname:c(),sourcename:c()}),o({cameraid:c(),sourcename:c()}),o({cameraname:c(),pluginname:c()}),o({cameraname:c(),scope:c(),pluginname:c()}),o({cameraname:c(),pluginname:c(),sensorId:c()}),o({cameraname:c(),scope:c(),pluginname:c(),sensorId:c()}),o({type:c().optional()}),o({video:p().optional(),audio:p().optional(),microphone:p().optional(),refresh:p().optional()}),o({forceNew:p().optional()}),o({cameranames:m(c().min(1)).min(1).max(1e3),cameraData:o({disabled:g().optional(),detectionSettings:o({snooze:g()}).optional(),recordingSettings:o({enabled:g()}).optional()}).refine(e=>e.disabled!==void 0||e.detectionSettings!==void 0||e.recordingSettings!==void 0,{message:`Nothing to update`})}),o({cameranames:m(c().min(1)).min(1).max(1e3)}),o({name:c().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`),url:_(`Must be a valid URL`).trim(),credentials:o({username:c().trim().min(1,`Username is required`),password:c().min(1,`Password is required`)})}),o({name:c().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional(),url:_(`Must be a valid URL`).trim().optional(),credentials:o({username:c().trim().min(1,`Username is required`),password:c().min(1,`Password is required`)}).nullable().optional()}),o({id:c().min(1,`ID is required`)}),o({code:c().trim().min(1,`Code is required`).optional()}).optional(),o({ids:m(c().min(1)).min(1).max(1e3)});var P=/^[\w-]+(\/[\w-]+)*$/,we=o({enabled:g().optional(),mode:h([`external`,`embedded`]).optional(),broker:o({port:d().int().min(1).max(65535).optional(),username:c().trim().max(200,`Username cannot be more than 200 characters`).nullable().optional(),password:c().max(500,`Password cannot be more than 500 characters`).nullable().optional()}).strict().optional(),host:c().trim().min(1,`Host is required`).max(253,`Host cannot be more than 253 characters`).nullable().optional(),port:d().int().min(1).max(65535).optional(),protocol:h([`mqtt`,`mqtts`]).optional(),username:c().trim().max(200,`Username cannot be more than 200 characters`).nullable().optional(),password:c().max(500,`Password cannot be more than 500 characters`).nullable().optional(),clientId:c().trim().min(1,`Client ID is required`).max(128,`Client ID cannot be more than 128 characters`).optional(),topicPrefix:c().trim().min(1,`Topic prefix is required`).max(128,`Topic prefix cannot be more than 128 characters`).regex(P,`Topic prefix may only contain letters, numbers, "_", "-" and "/" separators`).optional(),tls:o({rejectUnauthorized:g().optional(),ca:c().trim().nullable().optional(),cert:c().trim().nullable().optional(),key:c().trim().nullable().optional()}).strict().optional(),haDiscovery:o({enabled:g().optional(),prefix:c().trim().min(1,`Discovery prefix is required`).max(128,`Discovery prefix cannot be more than 128 characters`).regex(P,`Discovery prefix may only contain letters, numbers, "_", "-" and "/" separators`).optional()}).strict().optional()}).strict(),Te=/^((@[\w-.]*)\/)?(camera-ui-[\w-]*)$/,Ee=function(e){return e.READY=`ready`,e.STARTING=`starting`,e.STARTED=`started`,e.STOPPING=`stopping`,e.STOPPED=`stopped`,e.ERROR=`error`,e.UNKNOWN=`unknown`,e.DISABLED=`disabled`,e.INCOMPATIBLE=`incompatible`,e.UPDATE_REQUIRED=`update_required`,e.SERVER_UPDATE_REQUIRED=`server_update_required`,e}({});function F(e){return e.mimetype!==void 0}function De(e){return F(e)?Buffer.byteLength(e._buf):e.size}function Oe(e){return F(e)?e.mimetype:e.type}function I(e,t,n,r){return u().refine(t=>De(t)<=e,n).refine(e=>t.includes(Oe(e)),r)}var ke=o({start:s().optional(),page:s().optional(),pageSize:s().optional()}),L=[`image/jpeg`,`image/png`],Ae=2097152,R=[`video/mp4`,`video/quicktime`],z=10485760,je=[`audio/mpeg`,`audio/wav`,`audio/ogg`],Me=2097152,B=()=>I(Ae,L,`Max file size is 2 MB`,`.jpeg and .png files are accepted`),V=u().transform(e=>JSON.parse(e.value)),H=u().transform(e=>JSON.parse(e.value)),Ne=u().transform(e=>JSON.parse(e.value)),Pe=o({pluginname:c().trim().refine(e=>Te.test(e),`Not a valid plugin name`),pluginversion:c().trim().refine(e=>/^[a-z][\w-]*$/i.test(e)||/^v?\d+\.\d+\.\d+(?:[-+][\w.-]+)?$/i.test(e),`Not a valid plugin version (expected a dist-tag or exact semver)`).optional().default(`latest`)}).strict();o({actionId:c(),payload:l()}).strict(),y(l(),l()),o({upload:B(),metadata:H,config:V}),o({upload:I(Me,je,`Max file size is 2 MB`,`.mp3, .wav and .ogg files are accepted`),metadata:Ne,config:V}),o({upload:I(z,R,`Max file size is 5 MB`,`.mp4 files are accepted`),config:V}),o({upload:B(),metadata:H,config:V}),o({upload:B(),metadata:H,config:V}),o({upload:B(),metadata:H,config:V}),o({pluginname:c()}),o({scope:c(),pluginname:c()}),ke.extend({pluginname:c().trim().optional(),refresh:p().optional()}),o({removeStorage:p().optional()}),o({pluginversion:c().trim().optional()}),o({pluginNames:m(c().trim().min(1)).min(1).max(1e3)}),o({plugins:m(Pe).min(1).max(1e3)});var Fe=o({enabled:g().optional(),directEnabled:g().optional(),directMode:h([`cloudflare`,`customDomain`]).optional(),customDomain:o({url:_(`Must be a valid URL`).trim().nullable()}).strict().optional(),cloudflare:o({mode:h([`quick`,`token`,`managed`]).optional(),hostname:c().trim().min(1,`Hostname is required`).max(253,`Hostname cannot be more than 253 characters`).nullable().optional(),token:c().trim().min(1,`Token is required`).nullable().optional()}).strict().optional()}).strict().refine(e=>!(e.directMode===`customDomain`&&!e.customDomain?.url),{message:`Custom domain URL is required when directMode is "customDomain"`,path:[`customDomain`,`url`]}).refine(e=>!(e.cloudflare?.mode&&e.cloudflare.mode!==`quick`&&!e.cloudflare?.hostname),{message:`Hostname is required when cloudflare.mode is "token" or "managed"`,path:[`cloudflare`,`hostname`]});o({mode:h([`cloudflare`,`customDomain`])}).strict(),o({hostname:c().trim().min(1,`Hostname is required`).max(253,`Hostname cannot be more than 253 characters`).regex(/^[a-z0-9.-]+\.[a-z]{2,}$/i,`Invalid hostname`)}).strict(),o({name:c().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional()}).strict(),o({name:c().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional()}).strict(),o({name:c().trim().min(1,`Server name is required`).max(100,`Server name cannot be more than 100 characters`)}).strict(),o({version:c().trim().optional().default(`latest`)}).strict();var Ie=o({serverAddresses:a([re().trim(),te().trim()]).array().default([])}).strict();o({version:c().trim()}).strict(),y(c(),l()),o({key:c()}).strict(),o({key:c(),payload:l()}).strict();function Le(){let e={};for(let t of n)e[t.type]={category:t.category,assignmentKey:t.assignmentKey,multiProvider:t.multiProvider,isDetectionType:t.isDetectionType,cameraBound:t.cameraBound??!1,...t.cascadeTrigger?{cascadeTrigger:t.cascadeTrigger}:{}};return e}var U=Le();Object.fromEntries(n.filter(e=>e.propertyCapabilities).map(e=>[e.type,e.propertyCapabilities]));function Re(){return Object.entries(U).filter(([,e])=>e.multiProvider).map(([e])=>e)}function ze(){return n.filter(e=>e.shortcutable).map(e=>e.type)}function Be(){return Object.entries(U).filter(([,e])=>e.isDetectionType).map(([e])=>e)}function Ve(e){return U[e].assignmentKey}function He(){return Object.entries(U).filter(([,e])=>e.category===r.Sensor&&!e.multiProvider).map(([e])=>e)}function Ue(){return Object.entries(U).filter(([,e])=>!e.multiProvider&&e.category!==r.Sensor).map(([e])=>e)}function We(){return Object.entries(U).filter(([,e])=>e.multiProvider).map(([e])=>e)}function Ge(e){return!U[e].multiProvider}Object.fromEntries(n.map(e=>[e.type,Object.keys(e.properties)]));var W=Object.fromEntries(n.map(e=>[e.type,e.properties]));function Ke(e,t){return W[e]?.[t]}function qe(e){let t=W[e];return t?Object.entries(t).filter(([,e])=>!e.internal).map(([e])=>e):[]}function Je(e){let t=W[e];return t?Object.entries(t).filter(([,e])=>e.writable).map(([e])=>e):[]}function Ye(e,t){let n=U[e];return n?n.category===r.Control||n.category===r.Trigger||t===`cameraui.virtual`&&!n.isDetectionType:!1}new Set(Re()),new Set(Be());var Xe=`cameraui.virtual`,Ze=n.filter(e=>e.virtual).map(e=>e.type);Object.fromEntries(n.filter(e=>e.virtual).map(e=>[e.type,e.virtual?.properties??{}])),Object.fromEntries(n.filter(e=>e.virtual?.capabilities).map(e=>[e.type,e.virtual?.capabilities])),o({id:c().min(1,`Sensor ID is required`)});var Qe=o({cameraId:c().min(1).optional(),type:h(Ze),name:c().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`)});o({displayName:c().trim().min(1,`Display name is required`).max(100,`Display name cannot be more than 100 characters`).optional(),assignedCameraIds:m(c().min(1)).optional(),exposed:g().optional(),hidden:g().optional()}).refine(e=>e.displayName!==void 0||e.assignedCameraIds!==void 0||e.exposed!==void 0||e.hidden!==void 0,{message:`Nothing to update`}),o({property:c().trim().min(1,`Property is required`),value:i()}),o({ids:m(c()).min(1).max(1e4)}),o({ids:m(c()).min(1).max(1e4),data:o({hidden:g()})});var $e=[`de`,`en`],et=[`image/jpeg`,`image/jpg`,`image/png`],tt=5242880,nt=o({index:d(),cameraId:c(),colSpan:d().optional(),rowSpan:d().optional(),x:d().optional(),y:d().optional()}),rt=a([f(1),f(4),f(6),f(7),f(9),f(10),f(12),f(13),f(15),f(16),f(20),f(26)]),it=a([f(`dnd`),f(`view`)]),at=o({_id:c().default(t()).transform(()=>t()),name:c().trim().min(1,`Layout name is required`),viewSize:rt,cameras:nt.array(),type:it});o({name:c().trim().min(1,`Layout name is required`),viewSize:rt,cameras:nt.array()}).partial().optional();var ot=o({views:at.array()}),st=n.filter(e=>e.shortcutable).map(e=>String(e.type)),ct=h(st),lt=o({_id:c().default(t()).transform(()=>t()),type:f(`camera`),cameraId:c(),points:b}),ut=o({_id:c().default(t()).transform(()=>t()),type:f(`sensor`),sensorId:c(),sensorType:ct,points:b}),dt=ee(`type`,[lt,ut]),ft=o({type:f(`camera`),cameraId:c(),points:b}).partial(),pt=o({type:f(`sensor`),sensorId:c(),sensorType:ct,points:b}).partial();a([ft,pt]).optional();var mt=o({shortcuts:dt.array()}),ht=h([`auto`,...$e]),gt=o({ungrouped:g()}),_t=o({language:ht.optional(),camview:ot,cameras:y(c().trim(),mt),recordings:gt.optional()}),G=c().trim().min(10,`Password must be at least 10 characters long`).regex(/[A-Z]/,`Password must contain at least one uppercase letter`).regex(/[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]/,`Password must contain at least one special character (!@#$%^&*()_+-=[]{};:'"\\|,.<>/?)`).max(32,`Password cannot be more than 32 characters`),vt=o({_id:c().default(t()).transform(()=>t()),username:c().trim().min(1,`Username is required`),password:G,passwordConfirm:c().trim().min(1,`Please confirm your password`),role:a([f(`admin`),f(`user`)]),firstLogin:g().default(!0),preferences:_t.default({language:`auto`,camview:{views:[]},cameras:{}})}).strict().refine(e=>e.password===e.passwordConfirm,{path:[`passwordConfirm`],message:`Passwords do not match`});o({username:c().trim().min(1,`Username is required`),password:c().trim().min(1,`Password is required`),kind:h([`native`,`web`,`tv`]),persistent:g().default(!1),device:o({id:c().min(1,`Device id is required`).max(128,`Device id cannot be more than 128 characters`),name:c().trim().min(1,`Device name is required`).max(100,`Device name cannot be more than 100 characters`)})}).strict();var yt=o({username:c().trim().min(1,`Username is required`).optional(),password:G.optional(),passwordConfirm:c().trim().optional(),role:a([f(`admin`),f(`user`)]).optional(),upload:ie(I(tt,et,`Max file size is 5MB.`,`.jpg, .jpeg, .png files are accepted.`)),firstLogin:g().optional(),preferences:_t.partial().optional()}).strict().refine(e=>e.password===e.passwordConfirm,{path:[`passwordConfirm`],message:`Passwords do not match`});o({username:c()}),o({username:c(),cameraname:c()}),o({username:c(),cameraname:c(),shortcutid:c()}),o({username:c(),viewid:c()}),o({username:c()}),o({cameraId:c().min(1,`Camera ID is required`),agentId:c().min(1,`Agent ID is required`)}),o({cameraId:c().min(1,`Camera ID is required`)}),o({agentId:c().min(1,`Agent ID is required`)}),o({code:c().min(1,`Pairing code is required`),agentId:c().min(1,`Agent ID is required`),name:c().min(1,`Worker name is required`)}),o({pluginName:c().min(1,`Plugin name is required`),agentId:c().min(1,`Agent ID is required`)}),o({pluginName:c().min(1,`Plugin name is required`)}),o({name:c().trim().min(1,`Name is required`).max(64,`Maximum 64 characters`)}),o({enabled:g().optional(),address:c().trim().optional(),port:d().min(1024,`Minimum 1024`).max(65535,`Maximum 65535`).optional()}).strict();function bt(e){return e.type===`string`&&!(`enum`in e)}function xt(e){return e.type===`number`}function St(e){return e.type===`boolean`}function K(e){return e.type===`string`&&`enum`in e}function Ct(e){return e.type===`array`}function wt(e){return e.type===`object`}function q(e){return e.type===`button`}function J(e){return e.type===`submit`}function Tt(e){return bt(e)&&(!e.format||e.format!==`qrCode`&&e.format!==`image`)}var Et=(e,t)=>{let n=Q(t,e.key),r=e.value;switch(e.operator??`eq`){case`eq`:return n===r;case`neq`:return n==null||n===``?!1:n!==r;case`gt`:return typeof n==`number`&&typeof r==`number`&&n>r;case`lt`:return typeof n==`number`&&typeof r==`number`&&n<r;case`in`:return(Array.isArray(r)?r:[r]).includes(n);case`nin`:return n==null||n===``?!1:!(Array.isArray(r)?r:[r]).includes(n);default:return!0}};function Y(e,t){return Array.isArray(e)?e.every(e=>Et(e,t)):Et(e,t)}function Dt(t,n){if(!t||Object.keys(t).length===0)return!0;let r=n.filter(e=>!q(e)&&!J(e));for(let n of r){let r=Q(t,n.key),i=X(n);if(r!==void 0&&!e(r,i,!0))return!1}return!0}function X(e){if(`defaultValue`in e&&e.defaultValue!==void 0)return e.defaultValue;switch(e.type){case`string`:return K(e)?e.multiple?[]:e.required?e.enum[0]:``:``;case`number`:return 0;case`boolean`:return!1;case`array`:return[];case`object`:{let t={};for(let n of e.properties??[])q(n)||J(n)||(t[n.key]=X(n));return t}default:return}}function Ot(e){let t={};for(let n of e)q(n)||J(n)||(t[n.key]=X(n));return t}function Z(e){return e.split(`.`).reduce((e,t)=>{if(t.includes(`[`)){let[n,r]=t.split(`[`);e.push(n,r.slice(0,-1))}else e.push(t);return e},[])}function kt(e){return!isNaN(Number(e))}function Q(e={},t){if(!t.includes(`.`)&&!t.includes(`[`))return e[t];let n=e;for(let e of Z(t)){if(n==null)return;n=n[e]}return n}function At(e,t,n){if(!t.includes(`.`)&&!t.includes(`[`)){e[t]=n;return}let r=Z(t),i=r.pop();if(!i)return;let a=e;for(let e=0;e<r.length;e++){let t=r[e];(typeof a[t]!=`object`||a[t]===null)&&(a[t]=kt(r[e+1]??i)?[]:{}),a=a[t]}a[i]=n}function jt(e,t){let n={};for(let r of e)if(`store`in r&&r.store&&!q(r)&&!J(r)){let e=Q(t,r.key);e!==void 0&&(n[r.key]=e)}return n}function Mt(e,t){return t?e.filter(e=>`group`in e&&e.group===t):e}function Nt(e,t){let n=Mt(e,t);return n.length>0&&n.every(e=>`readonly`in e&&e.readonly)}function Pt(e,t){let n=Mt(e,t);return n.length>0&&n.some(e=>`store`in e&&e.store)}function Ft(e,t){if(!t)return!0;let n={"date-time":e=>/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(.\d+)?(Z|[+-]\d{2}:\d{2})?$/.test(e),date:e=>/^\d{4}-\d{2}-\d{2}$/.test(e),time:e=>/^([01]?[0-9]|2[0-3]):([0-5][0-9])(:([0-5][0-9]))?$/.test(e),email:e=>/^\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b$/.test(e),uuid:e=>/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/.test(e),ipv4:e=>/^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/.test(e),ipv6:e=>/^\s*([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4})\s*$/.test(e)};return t in n?n[t](e):!0}function $(e){if(q(e)||J(e))return l();switch(e.type){case`string`:if(K(e))if(e.multiple){let t=m(c().trim().refine(t=>e.enum.includes(t),{error:`Invalid selection`}));return e.minItems===void 0?e.required&&(t=t.min(1,{error:`Required`})):t=t.min(e.minItems,{error:`Select at least ${e.minItems}`}),e.required?t:t.optional()}else{let t=h(e.enum);return e.required?t:t.optional()}let t=c().trim();return e.required&&(t=t.nonempty(`Required`)),e.minLength!==void 0&&(t=t.min(e.minLength)),e.maxLength!==void 0&&(t=t.max(e.maxLength)),e.format&&(t=t.refine(t=>!t||t.trim()===``||Ft(t,e.format),{message:`Invalid ${e.format} format`})),e.required?t:t.optional();case`number`:let n=d();return e.minimum!==void 0&&(n=n.min(e.minimum)),e.maximum!==void 0&&(n=n.max(e.maximum)),e.required&&(n=n.refine(e=>e!=null,{error:`Required`})),e.required?n:n.optional();case`boolean`:return e.required?g():g().optional();case`array`:{let t=e.items?$(e.items):l(),n=m(t);return e.minItems!==void 0&&(n=n.min(e.minItems,{error:`At least ${e.minItems} entries required`})),e.required?n:n.optional()}case`object`:{let t={};for(let n of e.properties??[])q(n)||J(n)||(t[n.key]=$(n));let n=o(t);return e.required?n:n.optional()}default:return e.required?l():l().optional()}}var It=(e,t,n)=>t.filter(e=>`group`in e&&e.group===n).some(t=>{let n=e[t.key];return n!=null&&n!==``});function Lt(e){let t={},n=new Set;e.forEach(e=>{`group`in e&&e.group&&n.add(e.group)}),e.forEach(e=>{if(!q(e)&&!J(e)){let n=`group`in e&&e.group,r=`condition`in e&&e.condition;(n||r)&&e.required?t[e.key]=$({...e,required:!1}):t[e.key]=$(e)}});let r=o(t),i=e.filter(e=>`condition`in e&&e.condition&&`required`in e&&e.required&&!q(e)&&!J(e));return(n.size>0||i.length>0)&&(r=r.superRefine((t,r)=>{for(let i of n)if(It(t,e,i)){let n=e.filter(e=>`group`in e&&e.group===i);for(let e of n)if(`required`in e&&e.required){if(`condition`in e&&e.condition&&!Y(e.condition,t))continue;let n=t[e.key];(n==null||n===``)&&r.addIssue({code:ne.custom,message:`Required`,path:[e.key]})}}for(let e of i)if(!(`group`in e&&e.group)&&`condition`in e&&e.condition&&Y(e.condition,t)){let n=t[e.key];(n==null||n===``)&&r.addIssue({code:ne.custom,message:`Required`,path:[e.key]})}})),r}export{C as $,We as A,Ie as B,G as C,U as D,Qe as E,Ke as F,Me as G,je as H,ze as I,we as J,z as K,Je as L,Ue as M,He as N,Xe as O,qe as P,x as Q,Ge as R,vt as S,at as T,R as U,Fe as V,L as W,N as X,ge as Y,S as Z,Nt as _,Lt as a,tt as b,St as c,K as d,Ce as et,xt as f,Tt as g,J as h,jt as i,Ve as j,Ze as k,q as l,bt as m,Ot as n,Q as o,wt as p,Ee as q,X as r,Ct as s,Y as t,Dt as u,Pt as v,yt as w,$e as x,At as y,Ye as z};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{fr as e,g as t,s as n,xr as r}from"./api-DTFsk1zB.js";import{cr as i}from"./vendor-BaiDFVEr.js";import{a}from"./server-C-WV93FX.js";import{n as o}from"./useServerRestart-D_ASBw_0.js";var s=3e5;async function c(e){return(await r.post(`/backup/download`,{localStorage:e},{responseType:`arraybuffer`,timeout:s})).data}async function l(e,t){return(await r.post(`/backup/restore`,e,{timeout:s,onUploadProgress:e=>{e.total&&t?.(Math.round(e.loaded/e.total*100))}})).data}async function u(){return(await r.get(`/backup/scheduler`)).data}async function d(e){return(await r.patch(`/backup/scheduler`,e)).data}async function f(){return(await r.post(`/backup/scheduler/run`)).data}async function p(e){return(await r.get(`/backup/scheduler/backups/${encodeURIComponent(e)}`,{responseType:`arraybuffer`,timeout:s})).data}async function m(e){await r.delete(`/backup/scheduler/backups/${encodeURIComponent(e)}`)}var h=i(!1),g=i(`idle`),_=i(0),v=i(``),y=h;function b(e){e.theme&&localStorage.setItem(`theme`,JSON.stringify(e.theme)),e.language&&localStorage.setItem(`language`,e.language),e.ui&&localStorage.setItem(`ui`,JSON.stringify(e.ui))}function x(){async function r(r){let i=e();h.value=!0,g.value=`uploading`,_.value=0,v.value=``;try{let e=new FormData;e.append(`upload`,r),b(await l(e,e=>{_.value=e,e>=100&&(g.value=`restoring`)}))}catch(e){return h.value=!1,g.value=`idle`,v.value=n(e),i.add({severity:`error`,detail:v.value,life:1e4}),!1}g.value=`restarting`;let{beginServerRestart:s}=o();return s(),await a().catch(()=>{}),await t().logout(),h.value=!1,g.value=`idle`,!0}return{active:h,phase:g,uploadPercent:_,lastError:v,restoreLocalStorage:b,run:r}}export{p as a,f as c,c as i,x as n,u as o,m as r,d as s,y as t};
|