@camera.ui/server 2.1.8 → 2.1.9
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-vRjJVgl4.js → 404-BEb5gvkW.js} +1 -1
- package/dist/interface/assets/{About-CO9cx5Gp.js → About-BKkjuIVJ.js} +1 -1
- package/dist/interface/assets/Automation-DA89AEEI.js +3 -0
- package/dist/interface/assets/{AutomationImport-DAeFd-SZ.js → AutomationImport-hYr3Lp8F.js} +2 -2
- package/dist/interface/assets/{AutomationStore-NyXuw3tI.js → AutomationStore-DKhnExZn.js} +2 -2
- package/dist/interface/assets/{AutomationStoreDetail-Dz9Y8j8g.js → AutomationStoreDetail-DmqqEOir.js} +2 -2
- package/dist/interface/assets/{Automations-BeGe7iQE.js → Automations-B6WFJyxS.js} +2 -2
- package/dist/interface/assets/{Camera-C0sNg85L.js → Camera-DmsSKvpY.js} +2 -2
- package/dist/interface/assets/{CameraConsole-S9Il0g0K.js → CameraConsole-DVpyGhx8.js} +1 -1
- package/dist/interface/assets/Cameras-KOOphtlx.js +652 -0
- package/dist/interface/assets/Camview-BPQIinyP.js +1 -0
- package/dist/interface/assets/{Camview-CS7PIBMz.css → Camview-Lp3QU0de.css} +1 -1
- package/dist/interface/assets/{Config-B0cy1RIU.js → Config-DeUec_TN.js} +1 -1
- package/dist/interface/assets/ConfigActionCameraControl-DWHg-YEU.js +1 -0
- package/dist/interface/assets/{ConfigActionDelay-DrzMP_7q.js → ConfigActionDelay-C8nNA7TC.js} +1 -1
- package/dist/interface/assets/{ConfigActionHttp-BUANm5zh.js → ConfigActionHttp-Dc97gItH.js} +1 -1
- package/dist/interface/assets/{ConfigActionImageInput-CKvnzs_4.js → ConfigActionImageInput-DpOGqlzA.js} +1 -1
- package/dist/interface/assets/{ConfigActionMqtt-Cz-fMzXH.js → ConfigActionMqtt-D5DJ21oe.js} +1 -1
- package/dist/interface/assets/{ConfigActionNotification-exxG4m-k.js → ConfigActionNotification-4wKfanGB.js} +1 -1
- package/dist/interface/assets/{ConfigActionNotificationControl-BMFbm9lJ.js → ConfigActionNotificationControl-jSgxCZmV.js} +1 -1
- package/dist/interface/assets/{ConfigActionOutput-js-UUBci.js → ConfigActionOutput-C8Esieni.js} +1 -1
- package/dist/interface/assets/{ConfigActionPlugin-B5hrC_B6.js → ConfigActionPlugin-C_cv60d3.js} +1 -1
- package/dist/interface/assets/{ConfigActionSensor-BESCtedA.js → ConfigActionSensor-CFIKoJ3-.js} +1 -1
- package/dist/interface/assets/{ConfigActionSnapshot-Uxz9dCqh.js → ConfigActionSnapshot-BqaTwtN3.js} +1 -1
- package/dist/interface/assets/{ConfigActionVariable-CsiC6bgF.js → ConfigActionVariable-De9RCGU4.js} +1 -1
- package/dist/interface/assets/{ConfigConditionIfElse-CiScJB42.js → ConfigConditionIfElse-CeNDIucw.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSensorState-CbDfsuOl.js → ConfigConditionSensorState-C_Q9gU23.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSwitch-B7E5DAoC.js → ConfigConditionSwitch-DR63IGcD.js} +1 -1
- package/dist/interface/assets/{ConfigConditionTime-BmeGYmwH.js → ConfigConditionTime-C9iuSxxe.js} +1 -1
- package/dist/interface/assets/{ConfigSensorValueInput-CNTToTaw.js → ConfigSensorValueInput-DnMlFzil.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerDetection-ijTkd_SS.js → ConfigTriggerDetection-iThbCKOO.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerGeofence-Q7LQpVoM.js → ConfigTriggerGeofence-BeKwVWvS.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerManual-Z1_1wUUM.js → ConfigTriggerManual-DPkRlUqD.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerMqtt-BBvD0ow9.js → ConfigTriggerMqtt-kd65tGJE.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSchedule-B0rMjsZL.js → ConfigTriggerSchedule-D6MoVDPc.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSensor-B1p15KGD.js → ConfigTriggerSensor-AMQM6f2r.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSystem-Du-AkCKy.js → ConfigTriggerSystem-CNBgtDF1.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerWebhook-Debqt-nw.js → ConfigTriggerWebhook-B70DobSi.js} +1 -1
- package/dist/interface/assets/{Console-Gu1eu82G.js → Console-N_2Vornl.js} +1 -1
- package/dist/interface/assets/{CuiAutomationRunsDialog-CxcWpqrI.js → CuiAutomationRunsDialog-Cp6Apki9.js} +1 -1
- package/dist/interface/assets/CuiBottomSheet-CIR_fmSk.js +1 -0
- package/dist/interface/assets/{CuiBottomSheet-DECWGdrp.js → CuiBottomSheet-D5N8X1K-.js} +1 -1
- package/dist/interface/assets/CuiCameraPipCard-DP6X45oq.js +1 -0
- package/dist/interface/assets/CuiCameraRecordings-CRjXsdO4.js +1 -0
- package/dist/interface/assets/{CuiCameraShares-D32cM63m.js → CuiCameraShares-DMHwZEf1.js} +1 -1
- package/dist/interface/assets/{CuiCameraTable-Bk9N-Oc6.js → CuiCameraTable-AnEPu3XS.js} +1 -1
- package/dist/interface/assets/CuiCameraTable-D5ZqTLVt.js +1 -0
- package/dist/interface/assets/CuiConsole-CqEvNGe_.js +5 -0
- package/dist/interface/assets/{CuiDataTable-P8bWN0ZK.js → CuiDataTable-wA_LbHH8.js} +1 -1
- package/dist/interface/assets/{CuiLightControl-D5Z1AqWH.js → CuiLightControl-CB_Tp4tI.js} +1 -1
- package/dist/interface/assets/{CuiList-w69dERIq.js → CuiList-DrYuFhK4.js} +1 -1
- package/dist/interface/assets/CuiPluginCard-DEuNt5ni.js +2 -0
- package/dist/interface/assets/{CuiPluginCategoryChip-CQ2FJafE.js → CuiPluginCategoryChip-BbkbkYj6.js} +1 -1
- package/dist/interface/assets/{CuiPluginOAuthButton-CNxj7cuf.js → CuiPluginOAuthButton-vMuRa9Qd.js} +2 -2
- package/dist/interface/assets/{CuiPluginTrustBadge-DYsEz6WI.js → CuiPluginTrustBadge-2wsPzYZA.js} +1 -1
- package/dist/interface/assets/{CuiQRCode-CZnspFFw.js → CuiQRCode-Dh9EcaVc.js} +1 -1
- package/dist/interface/assets/{CuiRecordingsGrid-wEaU6-3c.js → CuiRecordingsGrid-HjZEiSyp.js} +1 -1
- package/dist/interface/assets/{CuiSchema-DLV1lIiB.js → CuiSchema-CSFoI6cg.js} +1 -1
- package/dist/interface/assets/{CuiTopNavbarItem-7yu9c68R.js → CuiTopNavbarItem-CSdvkKHR.js} +1 -1
- package/dist/interface/assets/{Faces-BlPQek1-.js → Faces-CPZ5RA68.js} +1 -1
- package/dist/interface/assets/{FirstSteps-C-DKv_P2.js → FirstSteps-CaF8STWH.js} +1 -1
- package/dist/interface/assets/{Instances-Bmb-yWM-.js → Instances-Cw7A4I7E.js} +1 -1
- package/dist/interface/assets/{Logs-DxHqkMpx.js → Logs-4Mgj7YWu.js} +2 -2
- package/dist/interface/assets/{Menu-DceReBlq.js → Menu-T-54ZSSD.js} +1 -1
- package/dist/interface/assets/Metrics-CQGKmHev.css +1 -0
- package/dist/interface/assets/Metrics-Dgm5qpzh.js +6 -0
- package/dist/interface/assets/{OAuthDeviceFlow-CLi6l8jS.js → OAuthDeviceFlow-DGikOkgK.js} +1 -1
- package/dist/interface/assets/{Plugin-BBVxbQeT.js → Plugin-YxqbMbUc.js} +1 -1
- package/dist/interface/assets/{PluginConsole-xOY_kwz_.js → PluginConsole-ZZvJlgIh.js} +1 -1
- package/dist/interface/assets/PluginDetail-B9NgbzkJ.js +2 -0
- package/dist/interface/assets/{PluginSchema-DG3ou73v.js → PluginSchema-Cx_LInpM.js} +1 -1
- package/dist/interface/assets/PluginSearch-5AgSWlmi.js +1 -0
- package/dist/interface/assets/PluginSearch-P274oMvy.js +2 -0
- package/dist/interface/assets/{PluginUpdateProgress-Bx0MXwAk.js → PluginUpdateProgress-0nV-8LvI.js} +1 -1
- package/dist/interface/assets/{Plugins-COHwVV0A.js → Plugins-Bvru3q2P.js} +1 -1
- package/dist/interface/assets/Recordings-BWGWC6Kq.js +1 -0
- package/dist/interface/assets/Recordings-cR4_6aGN.css +1 -0
- package/dist/interface/assets/{SensorEdit-C-H_3ap8.js → SensorEdit-gEw6HHZs.js} +1 -1
- package/dist/interface/assets/{SensorHistory-CTIUwIWN.js → SensorHistory-IgMpuLdC.js} +1 -1
- package/dist/interface/assets/{Sensors-lPcOdHJN.js → Sensors-DukA8Xqx.js} +2 -2
- package/dist/interface/assets/{Settings-BUoXoFiH.js → Settings-DWpeWPJh.js} +1 -1
- package/dist/interface/assets/{SettingsAccount-DUy_W02_.js → SettingsAccount-C1OpCtob.js} +1 -1
- package/dist/interface/assets/SettingsAccount-CrLcqzSn.js +1 -0
- package/dist/interface/assets/SettingsAppearance-AhUjml5E.js +1 -0
- package/dist/interface/assets/{SettingsAppearance-CoTdsIwM.js → SettingsAppearance-C8EEBVZN.js} +1 -1
- package/dist/interface/assets/{SettingsBackup-ibb5I5Jv.js → SettingsBackup-BJupyZCJ.js} +1 -1
- package/dist/interface/assets/{SettingsList-W5FvbkXm.js → SettingsList-MXYSQMZ3.js} +1 -1
- package/dist/interface/assets/{SettingsMqtt-Ct42icAW.js → SettingsMqtt-F3pV1Bvo.js} +1 -1
- package/dist/interface/assets/{SettingsNotifications-B4lyMlLR.js → SettingsNotifications-BmaAccX9.js} +1 -1
- package/dist/interface/assets/SettingsPermissions-Dd_yfNlk.js +1 -0
- package/dist/interface/assets/{SettingsRecordings-COUi9BQg.js → SettingsRecordings-85B2bQIf.js} +1 -1
- package/dist/interface/assets/SettingsRemote-C_ikoXW7.js +2 -0
- package/dist/interface/assets/SettingsRemote-DzrfpHjw.css +1 -0
- package/dist/interface/assets/SettingsSystem-Ct3qms5O.js +2 -0
- package/dist/interface/assets/{SettingsUsers-Cjk6mevW.js → SettingsUsers-D36vZ8Zf.js} +1 -1
- package/dist/interface/assets/{Terminal-BIdBrL4g.js → Terminal-ltPiB9CB.js} +3 -3
- package/dist/interface/assets/{VariableInput-DhAhhfsm.js → VariableInput-7c7Px-DM.js} +1 -1
- package/dist/interface/assets/{VariableSuggestions-q0Jd1DVI.js → VariableSuggestions-CrEa2zN-.js} +1 -1
- package/dist/interface/assets/{VersionsHandler-XEn3uFy7.js → VersionsHandler-BFuLGk6Y.js} +1 -1
- package/dist/interface/assets/{VirtualSensorCreate-_E5E0U7E.js → VirtualSensorCreate-uumfOHgB.js} +1 -1
- package/dist/interface/assets/{Workers-DVABUc39.js → Workers-Bowrc1AF.js} +1 -1
- package/dist/interface/assets/{api-C7Yv5Scr.js → api-DLVsQBAO.js} +1 -1
- package/dist/interface/assets/api-daCggwpn.css +2 -0
- package/dist/interface/assets/api-py5HP4SF.js +2 -0
- package/dist/interface/assets/{auth-BixzEnBM.js → auth-uQlIia9h.js} +1 -1
- package/dist/interface/assets/{automations-K8XPcP3U.js → automations-ChG1qcO7.js} +1 -1
- package/dist/interface/assets/cameras.schema-Cv7cjMz3.js +1 -0
- package/dist/interface/assets/cloudHandoff-CL4sircA.js +1 -0
- package/dist/interface/assets/{config-CURuT8_k.js → config-B1aWtF-N.js} +1 -1
- package/dist/interface/assets/content-copy-CLkJTA4w.js +1 -0
- package/dist/interface/assets/eventLabels-BsPoPWS9.js +1 -0
- package/dist/interface/assets/{flowSchema-szT9B0sA.js → flowSchema-CNnBxcwy.js} +1 -1
- package/dist/interface/assets/{intercomService-BjB4QQiX.js → intercomService-DJHBix4X.js} +1 -1
- package/dist/interface/assets/main-CLvcwWW7.js +3 -0
- package/dist/interface/assets/main-mJXdi_gx.css +1 -0
- package/dist/interface/assets/{mqtt-uItF3Vd7.js → mqtt-Cyhv8shC.js} +1 -1
- package/dist/interface/assets/{notifications-CuZPzI4-.js → notifications-DniREnpL.js} +1 -1
- package/dist/interface/assets/{plugins-QEqfAk0G.js → plugins-5gXj0utE.js} +1 -1
- package/dist/interface/assets/round-restart-alt-D3jT5i_T.js +1 -0
- package/dist/interface/assets/round-restart-alt-DdIfy7mU.css +1 -0
- package/dist/interface/assets/{sensorIcons-BujySw0j.js → sensorIcons-BXauWntX.js} +1 -1
- package/dist/interface/assets/{sensors-BxvL01cB.js → sensors-Bc02Z1G9.js} +1 -1
- package/dist/interface/assets/{server-CDm6FwHH.js → server-D2KGja0u.js} +1 -1
- package/dist/interface/assets/{theme-CRw47tnu.js → theme-vkX_uBgJ.js} +1 -1
- package/dist/interface/assets/types-CrvnT4-i.js +1 -0
- package/dist/interface/assets/types-D6IQ6ssc.js +1 -0
- package/dist/interface/assets/{types-DtdpTPfZ.js → types-fCQkAGfW.js} +1 -1
- package/dist/interface/assets/{useAppVersion-BxTTVLKg.js → useAppVersion-9zH_FspP.js} +1 -1
- package/dist/interface/assets/{useBackupRestore-DLieDBFC.js → useBackupRestore-Dbf24OqP.js} +1 -1
- package/dist/interface/assets/{useCameraOptions-DMC2KjMS.js → useCameraOptions-BIaDXHeq.js} +1 -1
- package/dist/interface/assets/{useLogsSocket-CmyalQi8.js → useLogsSocket-BLV7dWSG.js} +1 -1
- package/dist/interface/assets/{useNavLayout-BacPxpZv.js → useNavLayout-wq-6JyWK.js} +1 -1
- package/dist/interface/assets/{usePermissions-C2wQBWmH.js → usePermissions-BiBlyeQl.js} +1 -1
- package/dist/interface/assets/{usePluginUpdates-CyjxFTTi.js → usePluginUpdates-BZJSqnSF.js} +1 -1
- package/dist/interface/assets/{usePushRegistration-BPSfvI_w.js → usePushRegistration-CGFiyCuv.js} +1 -1
- package/dist/interface/assets/{useServerRestart-x8p2rFqn.js → useServerRestart-CjPAgzoX.js} +1 -1
- package/dist/interface/assets/{useStreamStatus-PMpl519O.js → useStreamStatus-BFCF1B3T.js} +1 -1
- package/dist/interface/assets/{useUpdateChannel-ChscS5KW.js → useUpdateChannel-F4WpbMJR.js} +1 -1
- package/dist/interface/assets/{useUserOptions-YiEj2ox6.js → useUserOptions-GbSC7_qt.js} +1 -1
- package/dist/interface/assets/{vendor-cameraui-Cf0XVNQ7.js → vendor-cameraui-0EJfDg8o.js} +56 -56
- package/dist/interface/assets/vendor-core-RnPzfwaA.js +1 -0
- package/dist/interface/assets/{vendor-primevue-BDu2BpXv.js → vendor-primevue-b9CB9Uh0.js} +1 -1
- package/dist/interface/index.html +26 -25
- package/dist/interface/sw.js +1 -1
- package/dist/server/package.json +6 -6
- package/dist/server/requirements.txt +2 -2
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc/client.py +8 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc/types.py +20 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/__init__.py +4 -2
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/__init__.py +6 -2
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/config.py +3 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/detection.py +22 -8
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/enums.py +0 -7
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/notification.py +28 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/__init__.py +4 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/base.py +18 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/spec.py +27 -3
- package/dist/server/src/api/controllers/auth.controller.js +5 -0
- package/dist/server/src/api/controllers/auth.controller.js.map +1 -1
- package/dist/server/src/api/controllers/frameWorkers.controller.d.ts +14 -0
- package/dist/server/src/api/controllers/frameWorkers.controller.js +120 -1
- package/dist/server/src/api/controllers/frameWorkers.controller.js.map +1 -1
- package/dist/server/src/api/controllers/remote.controller.js +3 -0
- package/dist/server/src/api/controllers/remote.controller.js.map +1 -1
- package/dist/server/src/api/controllers/server.controller.js +1 -0
- package/dist/server/src/api/controllers/server.controller.js.map +1 -1
- package/dist/server/src/api/database/constants.d.ts +0 -1
- package/dist/server/src/api/database/constants.js +0 -1
- package/dist/server/src/api/database/constants.js.map +1 -1
- package/dist/server/src/api/database/index.d.ts +2 -3
- package/dist/server/src/api/database/index.js +3 -6
- package/dist/server/src/api/database/index.js.map +1 -1
- package/dist/server/src/api/database/migrations/v2-1-10.js +33 -0
- package/dist/server/src/api/database/migrations/v2-1-10.js.map +1 -0
- package/dist/server/src/api/database/migrations/v2-1-11.js +31 -0
- package/dist/server/src/api/database/migrations/v2-1-11.js.map +1 -0
- package/dist/server/src/api/database/migrations/v2-1-12.js +25 -0
- package/dist/server/src/api/database/migrations/v2-1-12.js.map +1 -0
- package/dist/server/src/api/database/migrations/v2-1-6.js.map +1 -1
- package/dist/server/src/api/database/migrations/v2-1-9.d.ts +3 -0
- package/dist/server/src/api/database/migrations/v2-1-9.js +38 -0
- package/dist/server/src/api/database/migrations/v2-1-9.js.map +1 -0
- package/dist/server/src/api/database/record-schemas.d.ts +18 -13
- package/dist/server/src/api/database/record-schemas.js +3 -3
- package/dist/server/src/api/database/record-schemas.js.map +1 -1
- package/dist/server/src/api/database/types.d.ts +3 -11
- package/dist/server/src/api/routes/frameWorkers.routes.js +22 -1
- package/dist/server/src/api/routes/frameWorkers.routes.js.map +1 -1
- package/dist/server/src/api/schemas/cameras.schema.d.ts +127 -28
- package/dist/server/src/api/schemas/cameras.schema.js +40 -7
- package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
- package/dist/server/src/api/schemas/frameWorkers.schema.d.ts +6 -0
- package/dist/server/src/api/schemas/frameWorkers.schema.js +7 -0
- package/dist/server/src/api/schemas/frameWorkers.schema.js.map +1 -1
- package/dist/server/src/api/schemas/server.schema.d.ts +1 -0
- package/dist/server/src/api/schemas/server.schema.js +4 -0
- package/dist/server/src/api/schemas/server.schema.js.map +1 -1
- package/dist/server/src/api/schemas/users.schema.d.ts +119 -84
- package/dist/server/src/api/schemas/users.schema.js +3 -0
- package/dist/server/src/api/schemas/users.schema.js.map +1 -1
- package/dist/server/src/api/types/index.d.ts +1 -0
- package/dist/server/src/api/types/index.js.map +1 -1
- package/dist/server/src/api/websocket/nsp/metrics.d.ts +1 -1
- package/dist/server/src/api/websocket/nsp/metrics.js +54 -33
- package/dist/server/src/api/websocket/nsp/metrics.js.map +1 -1
- package/dist/server/src/api/websocket/nsp/server.js +2 -2
- package/dist/server/src/api/websocket/nsp/server.js.map +1 -1
- package/dist/server/src/api/websocket/types.d.ts +20 -17
- package/dist/server/src/camera/controller.js +1 -0
- package/dist/server/src/camera/controller.js.map +1 -1
- package/dist/server/src/camera/decoder/audio-loop.d.ts +0 -1
- package/dist/server/src/camera/decoder/audio-loop.js +38 -68
- package/dist/server/src/camera/decoder/audio-loop.js.map +1 -1
- package/dist/server/src/camera/decoder/child.d.ts +4 -1
- package/dist/server/src/camera/decoder/child.js +27 -0
- package/dist/server/src/camera/decoder/child.js.map +1 -1
- package/dist/server/src/camera/decoder/detection-coordinator.d.ts +7 -2
- package/dist/server/src/camera/decoder/detection-coordinator.js +226 -130
- package/dist/server/src/camera/decoder/detection-coordinator.js.map +1 -1
- package/dist/server/src/camera/decoder/detection-pipeline.d.ts +2 -2
- package/dist/server/src/camera/decoder/detection-pipeline.js +5 -6
- package/dist/server/src/camera/decoder/detection-pipeline.js.map +1 -1
- package/dist/server/src/camera/decoder/event-thumbnailer.d.ts +3 -3
- package/dist/server/src/camera/decoder/event-thumbnailer.js +2 -2
- package/dist/server/src/camera/decoder/event-thumbnailer.js.map +1 -1
- package/dist/server/src/camera/decoder/frame-scaler.d.ts +2 -1
- package/dist/server/src/camera/decoder/frame-scaler.js +25 -13
- package/dist/server/src/camera/decoder/frame-scaler.js.map +1 -1
- package/dist/server/src/camera/decoder/perf-tracker.d.ts +27 -8
- package/dist/server/src/camera/decoder/perf-tracker.js +72 -50
- package/dist/server/src/camera/decoder/perf-tracker.js.map +1 -1
- package/dist/server/src/camera/decoder/plugin-registry.d.ts +1 -0
- package/dist/server/src/camera/decoder/plugin-registry.js +7 -0
- package/dist/server/src/camera/decoder/plugin-registry.js.map +1 -1
- package/dist/server/src/camera/decoder/secondary-stage.d.ts +4 -1
- package/dist/server/src/camera/decoder/secondary-stage.js +26 -3
- package/dist/server/src/camera/decoder/secondary-stage.js.map +1 -1
- package/dist/server/src/camera/decoder/sources/analysis-source.d.ts +14 -1
- package/dist/server/src/camera/decoder/sources/audio-source.d.ts +7 -3
- package/dist/server/src/camera/decoder/sources/audio-source.js +89 -78
- package/dist/server/src/camera/decoder/sources/audio-source.js.map +1 -1
- package/dist/server/src/camera/decoder/sources/buffered-source.d.ts +26 -9
- package/dist/server/src/camera/decoder/sources/buffered-source.js +113 -65
- package/dist/server/src/camera/decoder/sources/buffered-source.js.map +1 -1
- package/dist/server/src/camera/decoder/sources/frame-handle.d.ts +13 -0
- package/dist/server/src/camera/decoder/sources/frame-handle.js +106 -0
- package/dist/server/src/camera/decoder/sources/frame-handle.js.map +1 -0
- package/dist/server/src/camera/decoder/sources/frame-source.d.ts +25 -26
- package/dist/server/src/camera/decoder/sources/frame-source.js +213 -268
- package/dist/server/src/camera/decoder/sources/frame-source.js.map +1 -1
- package/dist/server/src/camera/decoder/sources/reconnect-loop.d.ts +17 -0
- package/dist/server/src/camera/decoder/sources/reconnect-loop.js +59 -0
- package/dist/server/src/camera/decoder/sources/reconnect-loop.js.map +1 -0
- package/dist/server/src/camera/decoder/sources/snapshot-fetcher.d.ts +15 -0
- package/dist/server/src/camera/decoder/sources/snapshot-fetcher.js +58 -0
- package/dist/server/src/camera/decoder/sources/snapshot-fetcher.js.map +1 -0
- package/dist/server/src/camera/decoder/sources/video-input.d.ts +18 -0
- package/dist/server/src/camera/decoder/sources/video-input.js +55 -0
- package/dist/server/src/camera/decoder/sources/video-input.js.map +1 -0
- package/dist/server/src/camera/decoder/types.d.ts +73 -18
- package/dist/server/src/camera/decoder/types.js +2 -0
- package/dist/server/src/camera/decoder/types.js.map +1 -1
- package/dist/server/src/camera/decoder/worker.d.ts +5 -1
- package/dist/server/src/camera/decoder/worker.js +35 -5
- package/dist/server/src/camera/decoder/worker.js.map +1 -1
- package/dist/server/src/camera/index.d.ts +2 -1
- package/dist/server/src/camera/index.js +3 -0
- package/dist/server/src/camera/index.js.map +1 -1
- package/dist/server/src/camera/streaming/fmp4-session.js +1 -1
- package/dist/server/src/camera/streaming/fmp4-session.js.map +1 -1
- package/dist/server/src/camera/streaming/rtp-session.js +1 -1
- package/dist/server/src/camera/streaming/rtp-session.js.map +1 -1
- package/dist/server/src/mqtt/bridge.d.ts +0 -1
- package/dist/server/src/mqtt/bridge.js +0 -33
- package/dist/server/src/mqtt/bridge.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js +9 -0
- package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/proxy/sensorManager.js +8 -0
- package/dist/server/src/plugins/runtime/node/proxy/sensorManager.js.map +1 -1
- package/dist/server/src/plugins/runtime/python/proxy/camera_device.py +14 -0
- package/dist/server/src/plugins/runtime/python/proxy/sensor.py +1 -0
- package/dist/server/src/plugins/runtime/python/proxy/sensor_manager.py +13 -0
- package/dist/server/src/remote/services/cloudflare-managed.d.ts +2 -0
- package/dist/server/src/remote/services/cloudflare-managed.js +9 -2
- package/dist/server/src/remote/services/cloudflare-managed.js.map +1 -1
- package/dist/server/src/remote/services/cloudflare.d.ts +3 -0
- package/dist/server/src/remote/services/cloudflare.js +11 -0
- package/dist/server/src/remote/services/cloudflare.js.map +1 -1
- package/dist/server/src/remote/services/index.d.ts +2 -0
- package/dist/server/src/remote/services/index.js +60 -8
- package/dist/server/src/remote/services/index.js.map +1 -1
- package/dist/server/src/remote/services/tunnelConnections.d.ts +9 -0
- package/dist/server/src/remote/services/tunnelConnections.js +45 -0
- package/dist/server/src/remote/services/tunnelConnections.js.map +1 -0
- package/dist/server/src/remote/services/urlReadiness.d.ts +2 -0
- package/dist/server/src/remote/services/urlReadiness.js +7 -4
- package/dist/server/src/remote/services/urlReadiness.js.map +1 -1
- package/dist/server/src/rpc/interfaces/frameworker.d.ts +4 -1
- package/dist/server/src/rpc/interfaces/sensor.d.ts +1 -0
- package/dist/server/src/sensors/registry.d.ts +2 -0
- package/dist/server/src/sensors/registry.js +16 -0
- package/dist/server/src/sensors/registry.js.map +1 -1
- package/dist/server/src/utils/plugin-registry/index.js +1 -1
- package/dist/server/src/utils/plugin-registry/index.js.map +1 -1
- package/dist/server/src/workers/agent.js +1 -1
- package/dist/server/src/workers/agent.js.map +1 -1
- package/package.json +6 -6
- package/dist/interface/assets/Automation-DDNhcjDg.js +0 -3
- package/dist/interface/assets/Cameras-lDMBkoUW.js +0 -652
- package/dist/interface/assets/Camview-DzMmXQvW.js +0 -1
- package/dist/interface/assets/ConfigActionCameraControl-BMlRbdRM.js +0 -1
- package/dist/interface/assets/CuiBottomSheet-BkmkKf1u.js +0 -1
- package/dist/interface/assets/CuiCameraPipCard-CuZZZ7Cv.js +0 -1
- package/dist/interface/assets/CuiCameraRecordings-BxEA_Vhd.js +0 -1
- package/dist/interface/assets/CuiCameraTable-67Itb7my.js +0 -1
- package/dist/interface/assets/CuiConsole-De9JpSLz.js +0 -5
- package/dist/interface/assets/CuiPluginCard-D3x9FPb6.js +0 -2
- package/dist/interface/assets/Metrics-BstlZavQ.css +0 -1
- package/dist/interface/assets/Metrics-Cw_Z_e0C.js +0 -1
- package/dist/interface/assets/PluginDetail-D2RncxpL.js +0 -2
- package/dist/interface/assets/PluginSearch-CBhloRm6.js +0 -1
- package/dist/interface/assets/PluginSearch-RGhSeM1T.js +0 -2
- package/dist/interface/assets/Recordings-H5qOm_rD.js +0 -1
- package/dist/interface/assets/Recordings-zdTzwv7C.css +0 -1
- package/dist/interface/assets/SettingsAccount-CudWgknL.js +0 -1
- package/dist/interface/assets/SettingsAppearance-eZsdWWp3.js +0 -1
- package/dist/interface/assets/SettingsPermissions-Bsv293ri.js +0 -1
- package/dist/interface/assets/SettingsRemote-DYld6-1F.css +0 -1
- package/dist/interface/assets/SettingsRemote-Dq_BD0fk.js +0 -1
- package/dist/interface/assets/SettingsSystem-C5xROdA0.js +0 -2
- package/dist/interface/assets/api-AVHJeggR.css +0 -2
- package/dist/interface/assets/api-CmdQlVDD.js +0 -2
- package/dist/interface/assets/cameras.schema-A_6JklLs.js +0 -1
- package/dist/interface/assets/cloudHandoff-D0ytFfHK.js +0 -1
- package/dist/interface/assets/main-B1ryIyTr.css +0 -1
- package/dist/interface/assets/main-BdIdmDhs.js +0 -3
- package/dist/interface/assets/round-restart-alt-B_7HR24a.js +0 -1
- package/dist/interface/assets/round-restart-alt-CmrjVFat.css +0 -1
- package/dist/interface/assets/types-R10eIequ.js +0 -1
- package/dist/interface/assets/types-p_uC0rfp.js +0 -1
- package/dist/interface/assets/vendor-core-u4xNQ-aF.js +0 -1
- package/dist/server/src/api/database/migrations/v2-0-50.js +0 -45
- package/dist/server/src/api/database/migrations/v2-0-50.js.map +0 -1
- package/dist/server/src/api/database/migrations/v2-0-51.js +0 -43
- package/dist/server/src/api/database/migrations/v2-0-51.js.map +0 -1
- package/dist/server/src/api/database/migrations/v2-1-0.js +0 -72
- package/dist/server/src/api/database/migrations/v2-1-0.js.map +0 -1
- /package/dist/server/src/api/database/migrations/{v2-0-50.d.ts → v2-1-10.d.ts} +0 -0
- /package/dist/server/src/api/database/migrations/{v2-0-51.d.ts → v2-1-11.d.ts} +0 -0
- /package/dist/server/src/api/database/migrations/{v2-1-0.d.ts → v2-1-12.d.ts} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Ft as e,H as t,Lt as n,Vt as r,Zr as i,jt as a}from"./vendor-cameraui-Cf0XVNQ7.js";import{Cn as o,Cr as s,Pn as c}from"./api-CmdQlVDD.js";import{Fn as l,Gn as u,Nn as d,Sn as f,Xn as p,Zn as m,_r as h,an as g,br as _,cn as v,en as y,gr as b,hn as x,in as S,ir as C,mr as w,on as T,pn as E,qt as ee,sn as D,wn as O,yr as k,zn as A}from"./vendor-BaiDFVEr.js";import{p as j}from"./vendor-core-u4xNQ-aF.js";import{T as te,g as ne}from"./vendor-primevue-BDu2BpXv.js";import{t as M}from"./theme-CRw47tnu.js";import{t as re}from"./information-outline-BQDq8w2t.js";import{n as N}from"./CuiDataTable-P8bWN0ZK.js";import{a as P,c as F,i as I,l as L,o as R,t as z}from"./vendor-chart-DtwjR6yw.js";var ie=e=>e.type===`category`,ae=e=>e.type===`action`,B=e=>e.type===`chart`,oe=e=>e.type===`indicator`,V={width:200,height:25},H={key:0,class:`text-muted`},se=o(x({__name:`ChartWrapper`,props:f({data:{},options:{},width:{},height:{}},V),setup(e){R.register(P,F,I,L);let{data:t,options:n,width:r,height:i}=w(e),a=u(`barRef`),o=S(()=>t.value.datasets?.[0].data??[]);function s(){let e=a.value?.chart;e&&(e.options.events=[`mousemove`,`mouseout`],e.options.plugins.tooltip.enabled=!0,e.update(`none`))}function c(){let e=a.value?.chart;e&&(e.options.events=[],e.options.plugins.tooltip.enabled=!1,e.update(`none`))}return(e,l)=>b(o).length?(d(),T(b(z),{key:1,ref_key:`barRef`,ref:a,data:b(t),options:b(n),height:b(i),width:b(r),style:k({contain:`strict`,contentVisibility:`auto`,containIntrinsicSize:`${b(r)}px ${b(i)}px`,maxWidth:`${b(r)}px`,minWidth:`${b(r)}px`,minHeight:`${b(i)}px`,maxHeight:`${b(i)}px`}),onMouseenter:s,onMouseleave:c},null,8,[`data`,`options`,`height`,`width`,`style`])):(d(),v(`span`,H,_(e.$t(`components.charts.no_data`)),1))}}),[[`__scopeId`,`data-v-71d295c5`]]),U={key:0,class:`absolute right-[20px] top-[5px] z-2`},W={key:0,class:`flex justify-center p-8`},G={key:1,class:`cui-chart-table w-full`},ce={class:`flex items-center gap-1`},le={key:0,class:`inline-flex shrink-0`},ue={key:0,class:`text-sm text-secondary`},de=[`colspan`],fe={key:0},pe={key:1},me={key:0},K=o(x({__name:`CuiChartTable`,props:{headers:{},items:{},loading:{type:Boolean},paginator:{type:Boolean},totalRecords:{},rows:{},pagination:{},chartData:{},emptyMessage:{}},emits:[`update:page`],setup(o,{emit:f}){let x=o,C=f,P=M(),{theme:F}=j(P),I=c(),{uiSettings:L}=j(I),{headers:R,items:z,loading:V,chartData:H,paginator:K,pagination:q,totalRecords:J}=w(x),Y=S(()=>x.rows??L.value.interface.tableRows),X=u(`endMarker`),Z=u(`scrollTarget`),he=i(X,{scrollTarget:Z}),Q=S(()=>q.value?.page??1),ge=S(()=>!J.value||!Y.value?1:Math.max(1,Math.ceil(J.value/Y.value))),$=S(()=>{if(!z.value)return[];if(!K.value)return z.value;let e=Y.value,t=Q.value-1;return z.value.slice(t*e,(t+1)*e)});function _e(e){let t=Y.value;C(`update:page`,{page:e-1,rows:t,first:(e-1)*t})}function ve(e,t){let n=`${t.name}_${e.for}`,r=(H.value?.[n])?.datasets?.[0]?.data??[],i=Math.max(...r.map(e=>Number(e)||0)),a=Math.ceil(i/10)*10;return{responsive:!1,maintainAspectRatio:!1,devicePixelRatio:1,animation:!1,events:[],plugins:{legend:{display:!1},tooltip:{enabled:!1,mode:`point`,intersect:!1,backgroundColor:F.value===`dark`?`#2e2e2e`:`#f1f5f9`,titleColor:F.value===`dark`?`#ffffff`:`#000000`,bodyColor:F.value===`dark`?`#ffffff`:`#000000`,displayColors:!1,padding:8,callbacks:{title:e=>{let t=e[0].label;if(t&&!isNaN(Number(t))){let n=new Date(Number(t)).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}),r=e[0].raw;return[`${n}`,`${r.toFixed(2)}%`].join(` - `)}return``}}}},scales:{x:{display:!1,grid:{display:!1}},y:{display:!1,min:0,max:a||100,grid:{display:!1}}}}}return(i,c)=>{let u=N,f=a,x=re,S=n,C=te,w=se,j=e,M=ne,P=t,F=r;return d(),v(`div`,null,[E(P,{class:`cui-card`},{content:p(()=>[E(ee,{name:`fade`},{default:p(()=>[b(he)?D(``,!0):(d(),v(`div`,U,[E(u,{width:`20px`,height:`20px`,class:`opacity-15`})]))]),_:1}),g(`div`,{ref_key:`scrollTarget`,ref:Z,class:`overflow-x-auto relative`},[b(V)?(d(),v(`div`,W,[E(f,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):(d(),v(`table`,G,[g(`thead`,null,[g(`tr`,null,[(d(!0),v(y,null,l(b(R),(e,t)=>(d(),v(`th`,{key:t,class:h([e.columnProps?.headerClass,`p-2 h-7 min-h-7 max-h-7 text-sm`])},[g(`div`,ce,[g(`span`,null,_(e.name??``),1),e.headerTooltip?m((d(),v(`span`,le,[E(x,{class:`w-3.5 h-3.5 text-muted-color`})])),[[F,{value:e.headerTooltip}]]):D(``,!0)])],2))),128)),g(`th`,{ref_key:`endMarker`,ref:X,class:`w-0 p-0 m-0`},null,512)])]),g(`tbody`,null,[b($).length?(d(!0),v(y,{key:1},l(b($),(e,t)=>(d(),v(`tr`,{key:t,class:`text-sm text-secondary`},[(d(!0),v(y,null,l(b(R),(t,n)=>(d(),v(`td`,{key:n,class:h([t.columnProps?.class,`p-2 h-7 min-h-7 max-h-7`])},[b(oe)(t)?(d(),v(`div`,O({key:0,ref_for:!0},t.props),[m(E(S,{style:k({background:t.color?.(e)??`gray`})},null,8,[`style`]),[[F,{value:t.tooltip?.(e)}]])],16)):b(ie)(t)?m((d(),v(`div`,O({key:1,ref_for:!0},t.props),[t.asChip?(d(),T(C,O({key:0,ref_for:!0},t.chipProps),{default:p(()=>[g(`span`,null,_(t.altName?t.altName:typeof t.field==`string`?e[t.field]:t.field(e)),1),t.suffix?(d(),v(`span`,fe,_(t.suffix),1)):D(``,!0)]),_:2},1040)):(d(),v(`span`,pe,[g(`span`,null,_(t.altName?t.altName:typeof t.field==`string`?e[t.field]:t.field(e)),1),t.suffix?(d(),v(`span`,me,_(t.suffix),1)):D(``,!0)]))],16)),[[F,{value:t.tooltip?.(e)}]]):b(B)(t)&&b(H)&&b(H)[`${e.name}_${t.for}`]?(d(),v(`div`,O({key:2,ref_for:!0},t.props),[E(w,{data:b(H)[`${e.name}_${t.for}`],options:ve(t,e),height:25},null,8,[`data`,`options`])],16)):b(ae)(t)?(d(),v(`div`,O({key:3,ref_for:!0},t.props,{class:`flex items-center justify-end gap-1`}),[t.buttons?.length?(d(!0),v(y,{key:0},l(t.buttons,(t,n)=>(d(),v(y,{key:n},[t.disabled?.(e)?D(``,!0):m((d(),T(j,O({key:0,rounded:``,loading:t.loading?.(e)},{ref_for:!0},t.buttonProps,{class:[`cui-icon-md`,{"text-white":t.buttonProps?.severity!==`secondary`}],onClick:n=>t.action(e)}),{icon:p(()=>[(d(),T(A(t.icon)))]),_:2},1040,[`loading`,`class`,`onClick`])),[[F,t.tooltip?.(e),void 0,{left:!0}]])],64))),128)):t.disabled?.(e)?D(``,!0):m((d(),T(j,O({key:1,rounded:``,loading:t.loading?.(e)},{ref_for:!0},t.buttonProps,{class:[`cui-icon-md`,{"text-white":t.buttonProps?.severity!==`secondary`}],onClick:n=>t.action?.(e)}),{icon:p(()=>[(d(),T(A(t.icon)))]),_:2},1040,[`loading`,`class`,`onClick`])),[[F,t.tooltip?.(e),void 0,{left:!0}]])],16)):D(``,!0)],2))),128)),c[1]||=g(`td`,{class:`w-0 p-0 m-0`},null,-1)]))),128)):(d(),v(`tr`,ue,[g(`td`,{colspan:b(R).length+1,class:`p-4 text-center text-muted`},_(o.emptyMessage??i.$t(`components.process_table.empty`)),9,de)]))])])),b(K)&&b(ge)>1?(d(),T(M,{key:2,rows:b(Y),"total-records":b(J)??0,first:(b(Q)-1)*b(Y),template:b(s),onPage:c[0]||=e=>_e(e.page+1)},null,8,[`rows`,`total-records`,`first`,`template`])):D(``,!0)],512)]),_:1})])}}}),[[`__scopeId`,`data-v-deb10bdc`]]),q={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function J(e,t){return d(),v(`svg`,q,[...t[0]||=[g(`path`,{fill:`currentColor`,d:`M12 5V3.21c0-.45-.54-.67-.85-.35l-2.8 2.79c-.2.2-.2.51 0 .71l2.79 2.79c.32.31.86.09.86-.36V7c3.31 0 6 2.69 6 6c0 2.72-1.83 5.02-4.31 5.75c-.42.12-.69.52-.69.95c0 .65.62 1.16 1.25.97A7.99 7.99 0 0 0 20 13c0-4.42-3.58-8-8-8m-6 8c0-1.34.44-2.58 1.19-3.59c.3-.4.26-.95-.09-1.31c-.42-.42-1.14-.38-1.5.1a7.99 7.99 0 0 0 4.15 12.47c.63.19 1.25-.32 1.25-.97c0-.43-.27-.83-.69-.95C7.83 18.02 6 15.72 6 13`},null,-1)]])}var Y=C({name:`ic-round-restart-alt`,render:J});export{K as n,B as r,Y as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.chart-container[data-v-71d295c5]{position:relative}.cui-chart-table[data-v-deb10bdc]{border-collapse:collapse}.cui-chart-table th[data-v-deb10bdc]{text-align:left;white-space:nowrap;border-bottom:1px solid var(--p-content-border-color);font-weight:600}.cui-chart-table td[data-v-deb10bdc]{white-space:nowrap;border-color:var(--p-datatable-body-cell-border-color);border-style:solid;border-width:0 0 1px}.cui-chart-table td>div[data-v-deb10bdc],.cui-chart-table td>span[data-v-deb10bdc]{white-space:normal;overflow-wrap:break-word;word-break:break-all;-webkit-hyphens:auto;hyphens:auto}.cui-chart-table tbody tr[data-v-deb10bdc]:nth-child(2n){background-color:var(--table-row-odd-background)}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Br as e,Lr as t,Rr as n,zr as r}from"./vendor-cameraui-Cf0XVNQ7.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 h,p as ne,s as g,u as _,v as re,w as v,x as y,y as b}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 ie(e){return{privacyFallback:e?.privacyFallback??`send`,motion:e?.motion??[],object:e?.object??[],privacy:e?.privacy??[],alert:e?.alert??[],lines:e?.lines??[]}}function ae(e){let t=[`kasa://`,`nest:`,`ring:`,`tapo://`];return e.some(e=>t.some(t=>e.startsWith(t)))}var oe=o({enabled:_().default(!0),mode:g([`continuous`,`event`,`adhoc`]).default(`continuous`),preBuffer:d().min(0).max(60).default(10),sources:m(g([`high`,`mid`,`low`])).default([`high`,`mid`,`low`])}).strict(),se={enabled:!0,mode:`continuous`,preBuffer:10,sources:[`high`,`mid`,`low`]},x=c().trim().min(1,`Detection label is required`),S=y([d(),d()]),ce=c().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`),le=o({name:c().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),filter:a([f(`include`),f(`exclude`)]).default(`include`),color:ce}).array(),ue=o({name:c().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),type:a([f(`intersect`),f(`contain`)]).default(`intersect`),filter:a([f(`include`),f(`exclude`)]).default(`include`),labels:x.array(),color:ce}).array(),de=o({name:c().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),dropDetections:_().default(!0)}).array(),fe=o({name:c().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),labels:x.array(),match:a([f(`anchor`),f(`intersect`),f(`contain`)]).default(`contain`),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(),pe=o({name:c().trim().min(1,`Line Name is required`),points:y([S,S]),direction:a([f(`both`),f(`a-to-b`),f(`b-to-a`)]),labels:x.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(),C=o({privacyFallback:a([f(`send`),f(`drop`)]).default(`send`),motion:le.default([]),object:ue.default([]),privacy:de.default([]),alert:fe.default([]),lines:pe.default([])}).strict(),me=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:_().default(!0),timeout:d().min(10,`Minimum 10 seconds`).default(15)}),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:_().default(!0),cascadeTimeout:d().min(1,`Minimum 1 second`).max(300,`Maximum 300 seconds`).default(10),snooze:_().default(!1)}),he=o({from:c().regex(/^\d{1,2}:\d{2}$/,`Use HH:mm`),to:c().regex(/^\d{1,2}:\d{2}$/,`Use HH:mm`),timezone:c().trim().min(1,`Timezone is required`)}),ge={enabled:!1,targetLabels:[`person`],minConfidence:.5,triggerDeadZone:.05,trackingSpeed:2,leadMs:1800,panRate:.85,returnToHome:!1,homeWaitMs:1e4,minTargetSize:0,maxTargetSize:0},w=o({enabled:_().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:_().default(!1),homeWaitMs:d().min(1e3,`Minimum 1000 ms`).max(6e4,`Maximum 60000 ms`).default(1e4),minTargetSize:d().min(0,`Minimum 0`).max(.5,`Maximum 0.5`).default(0),maxTargetSize:d().min(0,`Minimum 0`).max(1,`Maximum 1`).default(0),activeHours:he.optional()}),T=a([f(`high-resolution`),f(`mid-resolution`),f(`low-resolution`),f(`snapshot`)]),_e=a([f(`high-resolution`),f(`mid-resolution`),f(`low-resolution`)]),E=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),ve=RegExp(`^(${E.join(`|`)})`),D=c().refine(e=>{if(!ve.test(e))return!1;try{return new URL(e),!0}catch{return!1}},{message:`Invalid URL format or unsupported protocol`}),ye=o({_id:c().default(n()).transform(()=>n()),name:c().trim().min(1,`Camera Source Name is required`).transform(e=>e.replace(/ /g,`_`).toLowerCase()),role:T,useForSnapshot:_().default(!1),hotMode:_().default(!0),preload:_().default(!0),muted:_().default(!1),urls:D.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),be=o({_id:c().default(n()).transform(()=>n()),name:c().trim().min(1,`Camera Source Name is required`).transform(e=>e.replace(/ /g,`_`).toLowerCase()),role:T,useForSnapshot:_().default(!1),hotMode:_().default(!0),preload:_().default(!0),muted:_().default(!1),urls:D.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),O=o({id:c(),name:c().trim()}),k=o({motion:O.optional(),object:O.optional(),objectAssist:O.optional(),audio:O.optional(),face:O.optional(),licensePlate:O.optional(),ptz:O.optional(),battery:O.optional(),cameraController:O.optional(),clip:O.optional(),classifier:O.array().optional(),light:O.array().optional(),siren:O.array().optional(),switch:O.array().optional(),securitySystem:O.array().optional(),contact:O.array().optional(),doorbell:O.array().optional(),lock:O.array().optional(),temperature:O.array().optional(),humidity:O.array().optional(),occupancy:O.array().optional(),smoke:O.array().optional(),leak:O.array().optional(),garage:O.array().optional(),gas:O.array().optional(),carbonMonoxide:O.array().optional(),carbonDioxide:O.array().optional(),heat:O.array().optional(),cold:O.array().optional(),vibration:O.array().optional(),tamper:O.array().optional(),problem:O.array().optional(),power:O.array().optional(),illuminance:O.array().optional(),hub:O.array().optional()}).strict(),xe=a([f(`auto`),f(`mse`),f(`webrtc`),f(`webrtc/tcp`)]),Se=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),A=o({hardware:g([`auto`,`cpu`,`cuda`,`vaapi`,`qsv`,`videotoolbox`,`d3d11va`,`d3d12va`,`dxva2`,`vulkan`,`opencl`,`drm`,`rkmpp`]).default(`auto`),device:c().trim().max(128).optional()}).strict(),j=o({mainStreamAnalysis:_().default(!1),decoder:A.optional(),workerDecoder:A.nullable().transform(e=>e??void 0).optional()}),M=a([f(`camera`),f(`doorbell`)]),N=o({streamingMode:xe,streamingSource:_e,aspectRatio:Se}),P=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()}),Ce=o({id:c(),name:c().trim()}).strict(),F=o({autoRefresh:_().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(),I=o({_id:c().default(n()).transform(()=>n()),nativeId:c().trim().optional(),pluginInfo:Ce.optional(),disabled:_().default(!1),name:c().trim().min(1,`Camera name is required`),room:c().trim().min(1,`Room is required`).default(`Default`),type:M.default(`camera`),isCloud:_().default(!1),snapshotSettings:F.default({autoRefresh:!0,ttl:50,interval:60}),info:P.default({model:`IP Camera`,manufacturer:`camera.ui`,hardware:`Camera`,serialNumber:`Unknown`,firmwareVersion:`Unknown`,supportUrl:`Unknown`}),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`]}),plugins:O.array().default([]),assignments:k.default({}),interfaceSettings:N.default({streamingMode:`webrtc`,streamingSource:`high-resolution`,aspectRatio:`16:9`}),zones:C.default(ie()),detectionSettings:me.default({motion:{resolution:`low`,timeout:30},object:{confidence:.5,suppressStatic:!0,timeout:15},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:w.default(ge),recordingSettings:oe.default(se),frameWorkerSettings:j.default({mainStreamAnalysis:!1})}).strict();I.transform(e=>{let t=e.sources.flatMap(e=>e.urls);return e.isCloud||ae(t)?{...e,isCloud:!0}:{...e}});var we=o({disabled:_().optional(),type:M.optional(),name:c().trim().min(1,`Camera name is required`).optional(),room:c().trim().min(1,`Room is required`).optional(),isCloud:_().optional(),snapshotSettings:F.partial().optional(),info:P.partial().optional(),sources:be.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:O.array().optional(),assignments:k.partial().optional(),interfaceSettings:N.partial().optional(),zones:C.optional(),detectionSettings:me.partial().optional(),ptzAutotrack:w.partial().optional(),recordingSettings:oe.partial().optional(),frameWorkerSettings:j.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:_().optional(),detectionSettings:o({snooze:_()}).optional(),recordingSettings:o({enabled:_()}).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:v(`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:v(`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 L=/^[\w-]+(\/[\w-]+)*$/,Te=o({enabled:_().optional(),mode:g([`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:g([`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(L,`Topic prefix may only contain letters, numbers, "_", "-" and "/" separators`).optional(),tls:o({rejectUnauthorized:_().optional(),ca:c().trim().nullable().optional(),cert:c().trim().nullable().optional(),key:c().trim().nullable().optional()}).strict().optional(),haDiscovery:o({enabled:_().optional(),prefix:c().trim().min(1,`Discovery prefix is required`).max(128,`Discovery prefix cannot be more than 128 characters`).regex(L,`Discovery prefix may only contain letters, numbers, "_", "-" and "/" separators`).optional()}).strict().optional()}).strict(),Ee=/^((@[\w-.]*)\/)?(camera-ui-[\w-]*)$/,De=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 R(e){return e.mimetype!==void 0}function Oe(e){return R(e)?Buffer.byteLength(e._buf):e.size}function ke(e){return R(e)?e.mimetype:e.type}function z(e,t,n,r){return u().refine(t=>Oe(t)<=e,n).refine(e=>t.includes(ke(e)),r)}var Ae=o({start:s().optional(),page:s().optional(),pageSize:s().optional()}),je=[`image/jpeg`,`image/png`],Me=2097152,Ne=[`video/mp4`,`video/quicktime`],Pe=10485760,Fe=[`audio/mpeg`,`audio/wav`,`audio/ogg`],Ie=2097152,B=()=>z(Me,je,`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)),Le=u().transform(e=>JSON.parse(e.value)),Re=o({pluginname:c().trim().refine(e=>Ee.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(),b(l(),l()),o({upload:B(),metadata:H,config:V}),o({upload:z(Ie,Fe,`Max file size is 2 MB`,`.mp3, .wav and .ogg files are accepted`),metadata:Le,config:V}),o({upload:z(Pe,Ne,`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()}),Ae.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(Re).min(1).max(1e3)});var ze=o({enabled:_().optional(),directEnabled:_().optional(),directMode:g([`cloudflare`,`customDomain`]).optional(),customDomain:o({url:v(`Must be a valid URL`).trim().nullable()}).strict().optional(),cloudflare:o({mode:g([`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:g([`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 Be=o({serverAddresses:a([ne().trim(),te().trim()]).array().default([])}).strict();o({version:c().trim()}).strict(),b(c(),l()),o({key:c()}).strict(),o({key:c(),payload:l()}).strict();function Ve(){let e={};for(let t of r)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=Ve();Object.fromEntries(r.filter(e=>e.propertyCapabilities).map(e=>[e.type,e.propertyCapabilities]));function He(){return Object.entries(U).filter(([,e])=>e.multiProvider).map(([e])=>e)}function Ue(){return r.filter(e=>e.shortcutable).map(e=>e.type)}function We(){return Object.entries(U).filter(([,e])=>e.isDetectionType).map(([e])=>e)}function Ge(e){return U[e].assignmentKey}function Ke(){return Object.entries(U).filter(([,t])=>t.category===e.Sensor&&!t.multiProvider).map(([e])=>e)}function qe(){return Object.entries(U).filter(([,t])=>!t.multiProvider&&t.category!==e.Sensor).map(([e])=>e)}function Je(){return Object.entries(U).filter(([,e])=>e.multiProvider).map(([e])=>e)}function Ye(e){return!U[e].multiProvider}Object.fromEntries(r.map(e=>[e.type,Object.keys(e.properties)]));var W=Object.fromEntries(r.map(e=>[e.type,e.properties]));function Xe(e,t){return W[e]?.[t]}function Ze(e){let t=W[e];return t?Object.entries(t).filter(([,e])=>!e.internal).map(([e])=>e):[]}function Qe(e){let t=W[e];return t?Object.entries(t).filter(([,e])=>e.writable).map(([e])=>e):[]}function $e(t,n){let r=U[t];return r?r.category===e.Control||r.category===e.Trigger||n===`cameraui.virtual`&&!r.isDetectionType:!1}new Set(He()),new Set(We());var et=`cameraui.virtual`,tt=r.filter(e=>e.virtual).map(e=>e.type);Object.fromEntries(r.filter(e=>e.virtual).map(e=>[e.type,e.virtual?.properties??{}])),Object.fromEntries(r.filter(e=>e.virtual?.capabilities).map(e=>[e.type,e.virtual?.capabilities])),o({id:c().min(1,`Sensor ID is required`)});var nt=o({cameraId:c().min(1).optional(),type:g(tt),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:_().optional(),hidden:_().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:_()})});var rt=[`de`,`en`],it=[`image/jpeg`,`image/jpg`,`image/png`],at=5242880,ot=o({index:d(),cameraId:c(),colSpan:d().optional(),rowSpan:d().optional(),x:d().optional(),y:d().optional()}),st=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)]),ct=a([f(`dnd`),f(`view`)]),lt=o({_id:c().default(n()).transform(()=>n()),name:c().trim().min(1,`Layout name is required`),viewSize:st,cameras:ot.array(),type:ct});o({name:c().trim().min(1,`Layout name is required`),viewSize:st,cameras:ot.array()}).partial().optional();var ut=o({views:lt.array()}),dt=r.filter(e=>e.shortcutable).map(e=>String(e.type)),ft=g(dt),pt=o({_id:c().default(n()).transform(()=>n()),type:f(`camera`),cameraId:c(),points:S}),mt=o({_id:c().default(n()).transform(()=>n()),type:f(`sensor`),sensorId:c(),sensorType:ft,points:S}),ht=ee(`type`,[pt,mt]),gt=o({type:f(`camera`),cameraId:c(),points:S}).partial(),_t=o({type:f(`sensor`),sensorId:c(),sensorType:ft,points:S}).partial();a([gt,_t]).optional();var vt=o({shortcuts:ht.array()}),yt=g([`auto`,...rt]),bt=o({ungrouped:_()}),xt=o({main:c().array(),manage:c().array(),system:c().array(),settings:c().array()}).partial(),St=o({main:_(),manage:_(),system:_(),settings:_()}).partial(),Ct=o({order:xt.optional(),collapsible:St.optional(),settingsInNav:_().optional(),hidden:c().array().optional()}),wt=o({language:yt.optional(),camview:ut,cameras:b(c().trim(),vt),recordings:bt.optional(),navLayout:Ct.nullable().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`),Tt=o({_id:c().default(n()).transform(()=>n()),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:_().default(!0),preferences:wt.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:g([`native`,`web`,`tv`]),persistent:_().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 Et=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:re(z(at,it,`Max file size is 5MB.`,`.jpg, .jpeg, .png files are accepted.`)),firstLogin:_().optional(),preferences:wt.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:_().optional(),address:c().trim().optional(),port:d().min(1024,`Minimum 1024`).max(65535,`Maximum 65535`).optional()}).strict();function Dt(e){return e.type===`string`&&!(`enum`in e)}function Ot(e){return e.type===`number`}function kt(e){return e.type===`boolean`}function K(e){return e.type===`string`&&`enum`in e}function At(e){return e.type===`array`}function jt(e){return e.type===`object`}function q(e){return e.type===`button`}function J(e){return e.type===`submit`}function Mt(e){return Dt(e)&&(!e.format||e.format!==`qrCode`&&e.format!==`image`)}var Nt=(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=>Nt(e,t)):Nt(e,t)}function Pt(e,n){if(!e||Object.keys(e).length===0)return!0;let r=n.filter(e=>!q(e)&&!J(e));for(let n of r){let r=Q(e,n.key),i=X(n);if(r!==void 0&&!t(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 Ft(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 It(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 Lt(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]=It(r[e+1]??i)?[]:{}),a=a[t]}a[i]=n}function Rt(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 zt(e,t){return t?e.filter(e=>`group`in e&&e.group===t):e}function Bt(e,t){let n=zt(e,t);return n.length>0&&n.every(e=>`readonly`in e&&e.readonly)}function Vt(e,t){let n=zt(e,t);return n.length>0&&n.some(e=>`store`in e&&e.store)}function Ht(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=g(e.enum);return e.required?t:a([f(``),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()===``||Ht(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?_():_().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 Ut=(e,t,n)=>t.filter(e=>`group`in e&&e.group===n).some(t=>{let n=e[t.key];return n!=null&&n!==``});function Wt(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(Ut(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:h.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:h.custom,message:`Required`,path:[e.key]})}})),r}export{ue as $,Je as A,Be as B,G as C,U as D,nt as E,Xe as F,Ie as G,Fe as H,Ue as I,Te as J,Pe as K,Qe as L,qe as M,Ke as N,et as O,Ze as P,T as Q,Ye as R,Tt as S,lt as T,Ne as U,ze as V,je as W,I as X,E as Y,pe as Z,Bt as _,Wt as a,at as b,kt as c,K as d,we as et,Ot as f,Mt as g,J as h,Rt as i,Ge as j,tt as k,q as l,Dt as m,Ft as n,Q as o,jt as p,De as q,X as r,At as s,Y as t,Pt as u,Vt as v,Et as w,rt as x,Lt as y,$e as z};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{br as e}from"./vendor-cameraui-Cf0XVNQ7.js";var t={trigger:`#22c55e`,condition:`#f59e0b`,action:`#3b82f6`,utility:`#8b5cf6`},n={mode:`drag`},r=[{key:`detectionSettings.snooze`,labelKey:`components.automation_nodes.camera_prop_snooze`,inputType:`boolean`,defaultValue:`false`},{key:`disabled`,labelKey:`components.automation_nodes.camera_prop_disabled`,inputType:`boolean`,defaultValue:`false`},{key:`recordingSettings.enabled`,labelKey:`components.automation_nodes.camera_prop_recording`,inputType:`boolean`,defaultValue:`true`},{key:`recordingSettings.mode`,labelKey:`components.automation_nodes.camera_prop_recording_mode`,inputType:`select`,options:[{label:`Continuous`,value:`continuous`},{label:`Event`,value:`event`},{label:`Adhoc`,value:`adhoc`}],defaultValue:`continuous`},{key:`recordingSettings.preBuffer`,labelKey:`components.automation_nodes.camera_prop_recording_prebuffer`,inputType:`number`,min:0,max:60,step:1,defaultValue:`10`},{key:`recordingSettings.sources`,labelKey:`components.automation_nodes.camera_prop_recording_sources`,inputType:`multiselect`,options:[{label:`High`,value:`high`},{label:`Mid`,value:`mid`},{label:`Low`,value:`low`}],defaultValue:`["high","mid","low"]`},{key:`ptzAutotrack.enabled`,labelKey:`components.automation_nodes.camera_prop_ptz_autotrack`,inputType:`boolean`,defaultValue:`false`},{key:`ptzAutotrack.returnToHome`,labelKey:`components.automation_nodes.camera_prop_ptz_return_home`,inputType:`boolean`,defaultValue:`false`},{key:`ptzAutotrack.targetLabels`,labelKey:`components.automation_nodes.camera_prop_ptz_target_labels`,inputType:`multiselect`,options:e.map(e=>({label:e,value:e})),defaultValue:`["person"]`},{key:`ptzAutotrack.minConfidence`,labelKey:`components.automation_nodes.camera_prop_ptz_min_confidence`,inputType:`number`,min:.3,max:1,step:.05,defaultValue:`0.5`},{key:`detectionSettings.object.confidence`,labelKey:`components.automation_nodes.camera_prop_object_confidence`,inputType:`number`,min:.3,max:1,step:.05,defaultValue:`0.5`},{key:`detectionSettings.motion.timeout`,labelKey:`components.automation_nodes.camera_prop_motion_timeout`,inputType:`number`,min:10,defaultValue:`30`},{key:`detectionSettings.motion.resolution`,labelKey:`components.automation_nodes.camera_prop_motion_resolution`,inputType:`select`,options:[{label:`Low`,value:`low`},{label:`Medium`,value:`medium`},{label:`High`,value:`high`}],defaultValue:`low`},{key:`detectionSettings.audio.timeout`,labelKey:`components.automation_nodes.camera_prop_audio_timeout`,inputType:`number`,min:10,defaultValue:`30`},{key:`detectionSettings.audio.minDecibels`,labelKey:`components.automation_nodes.camera_prop_audio_min_decibels`,inputType:`number`,min:-100,max:0,defaultValue:`-40`},{key:`detectionSettings.audio.confidence`,labelKey:`components.automation_nodes.camera_prop_audio_confidence`,inputType:`number`,min:0,max:1,step:.05,defaultValue:`0.7`},{key:`detectionSettings.object.suppressStatic`,labelKey:`components.automation_nodes.camera_prop_suppress_static`,inputType:`boolean`,defaultValue:`true`},{key:`detectionSettings.object.timeout`,labelKey:`components.automation_nodes.camera_prop_object_timeout`,inputType:`number`,min:10,defaultValue:`15`},{key:`detectionSettings.face.confidence`,labelKey:`components.automation_nodes.camera_prop_face_confidence`,inputType:`number`,min:0,max:1,step:.05,defaultValue:`0.5`},{key:`detectionSettings.licensePlate.confidence`,labelKey:`components.automation_nodes.camera_prop_plate_confidence`,inputType:`number`,min:0,max:1,step:.05,defaultValue:`0.9`},{key:`detectionSettings.licensePlate.minLength`,labelKey:`components.automation_nodes.camera_prop_plate_min_length`,inputType:`number`,min:1,max:10,step:1,defaultValue:`4`},{key:`detectionSettings.sensor.timeout`,labelKey:`components.automation_nodes.camera_prop_sensor_timeout`,inputType:`number`,min:10,defaultValue:`30`},{key:`detectionSettings.cascadeDetection`,labelKey:`components.automation_nodes.camera_prop_cascade_detection`,inputType:`boolean`,defaultValue:`true`},{key:`detectionSettings.cascadeTimeout`,labelKey:`components.automation_nodes.camera_prop_cascade_timeout`,inputType:`number`,min:1,max:300,defaultValue:`10`},{key:`frameWorkerSettings.mainStreamAnalysis`,labelKey:`components.automation_nodes.camera_prop_main_stream_analysis`,inputType:`boolean`,defaultValue:`false`},{key:`snapshotSettings.autoRefresh`,labelKey:`components.automation_nodes.camera_prop_auto_refresh`,inputType:`boolean`,defaultValue:`false`},{key:`snapshotSettings.interval`,labelKey:`components.automation_nodes.camera_prop_snapshot_interval`,inputType:`number`,min:10,max:60,defaultValue:`60`},{key:`snapshotSettings.ttl`,labelKey:`components.automation_nodes.camera_prop_snapshot_ttl`,inputType:`number`,min:10,max:60,defaultValue:`50`}];export{t as n,n as r,r as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Ci as e,Gr as t,Jr as n,Kr as r,Xr as i,Yr as a,Zr as o,_i as s,ai as c,bi as l,di as u,ei as d,fi as f,li as p,ti as m,wi as h,xi as g,yi as _}from"./vendor-cameraui-Cf0XVNQ7.js";import{$n as v,An as ee,En as y,Mn as te,Pn as b,Tn as ne,ar as x,bn as S,cr as C,dr as w,er as re,fr as T,gn as ie,gr as E,hn as D,hr as ae,in as O,ir as oe,jn as k,lr as se,mr as ce,nr as A,or as j,pr as le,qn as M,rr as N,ur as P,vn as F,yn as I}from"./vendor-BaiDFVEr.js";var ue=typeof window<`u`,de,L=e=>de=e,fe=Symbol();function pe(e){return e&&typeof e==`object`&&Object.prototype.toString.call(e)===`[object Object]`&&typeof e.toJSON!=`function`}var me=typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:typeof global==`object`&&global.global===global?global:typeof globalThis==`object`?globalThis:{HTMLElement:null};function he(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function ge(e,t,n){let r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){ye(r.response,t,n)},r.onerror=function(){console.error(`could not download file`)},r.send()}function _e(e){let t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return t.status>=200&&t.status<=299}function R(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{let t=new MouseEvent(`click`,{bubbles:!0,cancelable:!0,view:window,detail:0,screenX:80,screenY:20,clientX:80,clientY:20,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:null});e.dispatchEvent(t)}}var z=typeof navigator==`object`?navigator:{userAgent:``},ve=/Macintosh/.test(z.userAgent)&&/AppleWebKit/.test(z.userAgent)&&!/Safari/.test(z.userAgent),ye=ue?typeof HTMLAnchorElement<`u`&&`download`in HTMLAnchorElement.prototype&&!ve?be:`msSaveOrOpenBlob`in z?xe:Se:()=>{};function be(e,t=`download`,n){let r=document.createElement(`a`);r.download=t,r.rel=`noopener`,typeof e==`string`?(r.href=e,r.origin===location.origin?R(r):_e(r.href)?ge(e,t,n):(r.target=`_blank`,R(r))):(r.href=URL.createObjectURL(e),setTimeout(function(){URL.revokeObjectURL(r.href)},4e4),setTimeout(function(){R(r)},0))}function xe(e,t=`download`,n){if(typeof e==`string`)if(_e(e))ge(e,t,n);else{let t=document.createElement(`a`);t.href=e,t.target=`_blank`,setTimeout(function(){R(t)})}else navigator.msSaveOrOpenBlob(he(e,n),t)}function Se(e,t,n,r){if(r||=open(``,`_blank`),r&&(r.document.title=r.document.body.innerText=`downloading...`),typeof e==`string`)return ge(e,t,n);let i=e.type===`application/octet-stream`,a=/constructor/i.test(String(me.HTMLElement))||`safari`in me,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||i&&a||ve)&&typeof FileReader<`u`){let t=new FileReader;t.onloadend=function(){let e=t.result;if(typeof e!=`string`)throw r=null,Error(`Wrong reader.result type`);e=o?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{let t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout(function(){URL.revokeObjectURL(t)},4e4)}}var{assign:Ce}=Object;function we(){let e=v(!0),t=e.run(()=>C({})),n=[],r=[],i=oe({install(e){L(i),i._a=e,e.provide(fe,i),e.config.globalProperties.$pinia=i,r.forEach(e=>n.push(e)),r=[]},use(e){return this._a?n.push(e):r.push(e),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return i}var Te=()=>{};function Ee(e,t,n,r=Te){e.add(t);let i=()=>{e.delete(t)&&r()};return!n&&re()&&x(i),i}function B(e,...t){e.forEach(e=>{e(...t)})}var De=e=>e(),Oe=Symbol(),ke=Symbol();function Ae(e,t){e instanceof Map&&t instanceof Map?t.forEach((t,n)=>e.set(n,t)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(let n in t){if(!Object.hasOwn(t,n))continue;let r=t[n],i=e[n];e[n]=pe(i)&&pe(r)&&Object.hasOwn(e,n)&&!N(r)&&!A(r)?Ae(i,r):r}return e}var je=Symbol();function Me(e){return!e||typeof e!=`object`||!Object.hasOwn(e,je)}var{assign:V}=Object;function Ne(e){return!!(N(e)&&e.effect)}function Pe(e,t,n,r){let{state:i,actions:a,getters:o}=t,s=n.state.value[e],c;function l(){return s||(n.state.value[e]=i?i():{}),V(ce(n.state.value[e]),a,Object.keys(o||{}).reduce((t,r)=>(t[r]=oe(O(()=>{L(n);let t=n._s.get(e);return o[r].call(t,t)})),t),{}))}return c=Fe(e,l,t,n,r,!0),c}function Fe(e,t,n={},r,i,a){let o,s=V({actions:{}},n),c={deep:!0},l,u,d=new Set,f=new Set,p,m=r.state.value[e];!a&&!m&&(r.state.value[e]={});let h;function g(t){let n;l=u=!1,typeof t==`function`?(t(r.state.value[e]),n={type:`patch function`,storeId:e,events:p}):(Ae(r.state.value[e],t),n={type:`patch object`,payload:t,storeId:e,events:p});let i=h=Symbol();ne().then(()=>{h===i&&(l=!0)}),u=!0,B(d,n,r.state.value[e])}let _=a?function(){let{state:e}=n,t=e?e():{};this.$patch(e=>{V(e,t)})}:Te;function ee(){o.stop(),d.clear(),f.clear(),r._s.delete(e)}let y=(t,n=``)=>{if(Oe in t)return t[ke]=n,t;let i=function(){L(r);let n=Array.from(arguments),a=new Set,o=new Set;function s(e){a.add(e)}function c(e){o.add(e)}B(f,{args:n,name:i[ke],store:b,after:s,onError:c});let l;try{l=t.apply(this&&this.$id===e?this:b,n)}catch(e){throw B(o,e),e}return l instanceof Promise?l.then(e=>(B(a,e),e)).catch(e=>(B(o,e),Promise.reject(e))):(B(a,l),l)};return i[Oe]=!0,i[ke]=n,i},te={_p:r,$id:e,$onAction:Ee.bind(null,f),$patch:g,$reset:_,$subscribe(t,n={}){if(d.has(t))return Te;let i=Ee(d,t,n.detached,()=>a()),a=o.run(()=>M(()=>r.state.value[e],r=>{(n.flush===`sync`?u:l)&&t({storeId:e,type:`direct`,events:p},r)},V({},c,n)));return i},$dispose:ee},b=j(te);r._s.set(e,b);let x=(r._a&&r._a.runWithContext||De)(()=>r._e.run(()=>(o=v()).run(()=>t({action:y}))));for(let t in x){let n=x[t];N(n)&&!Ne(n)||A(n)?a||(m&&Me(n)&&(N(n)?n.value=m[t]:((n instanceof Set||n instanceof Map)&&n.clear(),Ae(n,m[t]))),r.state.value[e][t]=n):typeof n==`function`&&(x[t]=y(n,t),s.actions[t]=n)}return V(b,x),V(T(b),x),Object.defineProperty(b,"$state",{get:()=>r.state.value[e],set:e=>{g(t=>{V(t,e)})}}),r._p.forEach(e=>{let t=o.run(()=>e({store:b,app:r._a,pinia:r,options:s}));V(b,t)}),m&&a&&n.hydrate&&n.hydrate(b.$state,m),l=!0,u=!0,b}function Ie(e,t,n){let r,i=typeof t==`function`;r=i?n:t;function a(n,a){let o=I();return n||=o?S(fe,null):null,n&&L(n),n=de,n._s.has(e)||(i?Fe(e,t,r,n):Pe(e,r,n)),n._s.get(e)}return a.$id=e,a}function Le(e){let t=T(e),n={};for(let r in t){let i=t[r];i?.effect?n[r]=O({get:()=>e[r],set(t){e[r]=t}}):(N(i)||A(i))&&(n[r]=le(e,r))}return n}function Re(e){return typeof e==`object`||`displayName`in e||`props`in e||`__vccOpts`in e}function ze(e){return e.__esModule||e[Symbol.toStringTag]===`Module`||e.default&&Re(e.default)}var H=Object.assign;function Be(e,t){let n={};for(let r in t){let i=t[r];n[r]=W(i)?i.map(e):e(i)}return n}var U=()=>{},W=Array.isArray;function Ve(e,t){let n={};for(let r in e)n[r]=r in t?t[r]:e[r];return n}var He=Symbol(``);function G(e,t){return H(Error(),{type:e,[He]:!0},t)}function K(e,t){return e instanceof Error&&He in e&&(t==null||!!(e.type&t))}var Ue=Symbol(``),We=Symbol(``),q=Symbol(``),Ge=Symbol(``),Ke=Symbol(``);function qe(){return S(q)}function Je(e){return S(Ge)}var J=typeof document<`u`,Ye=/#/g,Xe=/&/g,Ze=/\//g,Qe=/=/g,$e=/\?/g,et=/\+/g,tt=/%5B/g,nt=/%5D/g,rt=/%5E/g,it=/%60/g,at=/%7B/g,ot=/%7C/g,st=/%7D/g,ct=/%20/g;function lt(e){return e==null?``:encodeURI(``+e).replace(ot,`|`).replace(tt,`[`).replace(nt,`]`)}function ut(e){return lt(e).replace(at,`{`).replace(st,`}`).replace(rt,`^`)}function dt(e){return lt(e).replace(et,`%2B`).replace(ct,`+`).replace(Ye,`%23`).replace(Xe,`%26`).replace(it,"`").replace(at,`{`).replace(st,`}`).replace(rt,`^`)}function ft(e){return dt(e).replace(Qe,`%3D`)}function pt(e){return lt(e).replace(Ye,`%23`).replace($e,`%3F`)}function mt(e){return pt(e).replace(Ze,`%2F`)}function Y(e){if(e==null)return null;try{return decodeURIComponent(``+e)}catch{}return``+e}var ht=/\/$/,gt=e=>e.replace(ht,``);function _t(e,t,n=`/`){let r,i={},a=``,o=``,s=t.indexOf(`#`),c=t.indexOf(`?`);return c=s>=0&&c>s?-1:c,c>=0&&(r=t.slice(0,c),a=t.slice(c,s>0?s:t.length),i=e(a.slice(1))),s>=0&&(r||=t.slice(0,s),o=t.slice(s,t.length)),r=wt(r??t,n),{fullPath:r+a+o,path:r,query:i,hash:Y(o)}}function vt(e,t){let n=t.query?e(t.query):``;return t.path+(n&&`?`)+n+(t.hash||``)}function yt(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||`/`}function bt(e,t,n){let r=t.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&X(t.matched[r],n.matched[i])&&xt(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function X(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function xt(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!St(e[n],t[n]))return!1;return!0}function St(e,t){return W(e)?Ct(e,t):W(t)?Ct(t,e):(e&&e.valueOf())===(t&&t.valueOf())}function Ct(e,t){return W(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):e.length===1&&e[0]===t}function wt(e,t){if(e.startsWith(`/`))return e;if(!e)return t;let n=t.split(`/`),r=e.split(`/`),i=r[r.length-1];(i===`..`||i===`.`)&&r.push(``);let a=n.length-1,o,s;for(o=0;o<r.length;o++)if(s=r[o],s!==`.`)if(s===`..`)a>1&&a--;else break;return n.slice(0,a).join(`/`)+`/`+r.slice(o).join(`/`)}var Z={path:`/`,name:void 0,params:{},query:{},hash:``,fullPath:`/`,matched:[],meta:{},redirectedFrom:void 0};function Tt(e){if(!e)if(J){let t=document.querySelector(`base`);e=t&&t.getAttribute(`href`)||`/`,e=e.replace(/^\w+:\/\/[^/]+/,``)}else e=`/`;return e[0]!==`/`&&e[0]!==`#`&&(e=`/`+e),gt(e)}var Et=/^[^#]+#/;function Dt(e,t){return e.replace(Et,`#`)+t}function Ot(e,t){let n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}var kt=()=>({left:window.scrollX,top:window.scrollY});function At(e){let t;if(`el`in e){let n=e.el,r=typeof n==`string`&&n.startsWith(`#`),i=typeof n==`string`?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!i)return;t=Ot(i,e)}else t=e;`scrollBehavior`in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left==null?window.scrollX:t.left,t.top==null?window.scrollY:t.top)}function jt(e,t){return(history.state?history.state.position-t:-1)+e}var Mt=new Map;function Nt(e,t){Mt.set(e,t)}function Pt(e){let t=Mt.get(e);return Mt.delete(e),t}function Ft(e){return typeof e==`string`||e&&typeof e==`object`}function It(e){return typeof e==`string`||typeof e==`symbol`}function Lt(e){let t={};if(e===``||e===`?`)return t;let n=(e[0]===`?`?e.slice(1):e).split(`&`);for(let e=0;e<n.length;++e){let r=n[e].replace(et,` `),i=r.indexOf(`=`),a=Y(i<0?r:r.slice(0,i)),o=i<0?null:Y(r.slice(i+1));if(a in t){let e=t[a];W(e)||(e=t[a]=[e]),e.push(o)}else t[a]=o}return t}function Rt(e){let t=``;for(let n in e){let r=e[n];if(n=ft(n),r==null){r!==void 0&&(t+=(t.length?`&`:``)+n);continue}(W(r)?r.map(e=>e&&dt(e)):[r&&dt(r)]).forEach(e=>{e!==void 0&&(t+=(t.length?`&`:``)+n,e!=null&&(t+=`=`+e))})}return t}function zt(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=W(r)?r.map(e=>e==null?null:``+e):r==null?r:``+r)}return t}function Q(){let e=[];function t(t){return e.push(t),()=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Bt(e,t,n){let r=e.value;if(!r)return;let i=r,a=()=>{i[t].delete(n)};te(a),ee(a),y(()=>{let r=e.value;r&&(i=r),i[t].add(n)}),i[t].add(n)}function Vt(e){Bt(S(Ue,{}),`leaveGuards`,e)}function Ht(e){Bt(S(Ue,{}),`updateGuards`,e)}function $(e,t,n,r,i,a=e=>e()){let o=r&&(r.enterCallbacks[i]=r.enterCallbacks[i]||[]);return()=>new Promise((s,c)=>{let l=e=>{e===!1?c(G(4,{from:n,to:t})):e instanceof Error?c(e):Ft(e)?c(G(2,{from:t,to:e})):(o&&r.enterCallbacks[i]===o&&typeof e==`function`&&o.push(e),s())},u=a(()=>e.call(r&&r.instances[i],t,n,l)),d=Promise.resolve(u);e.length<3&&(d=d.then(l)),d.catch(e=>c(e))})}function Ut(e,t,n,r,i=e=>e()){let a=[];for(let o of e)for(let e in o.components){let s=o.components[e];if(!(t!==`beforeRouteEnter`&&!o.instances[e]))if(Re(s)){let c=(s.__vccOpts||s)[t];c&&a.push($(c,n,r,o,e,i))}else{let c=s();a.push(()=>c.then(a=>{if(!a)throw Error(`Couldn't resolve component "${e}" at "${o.path}"`);let s=ze(a)?a.default:a;o.mods[e]=a,o.components[e]=s;let c=(s.__vccOpts||s)[t];return c&&$(c,n,r,o,e,i)()}))}}return a}function Wt(e,t){let n=[],r=[],i=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;o<a;o++){let a=t.matched[o];a&&(e.matched.find(e=>X(e,a))?r.push(a):n.push(a));let s=e.matched[o];s&&(t.matched.find(e=>X(e,s))||i.push(s))}return[n,r,i]}var Gt=()=>location.protocol+`//`+location.host;function Kt(e,t){let{pathname:n,search:r,hash:i}=t,a=e.indexOf(`#`);if(a>-1){let t=i.includes(e.slice(a))?e.slice(a).length:1,n=i.slice(t);return n[0]!==`/`&&(n=`/`+n),yt(n,``)}return yt(n,e)+r+i}function qt(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=Kt(e,location),c=n.value,l=t.value,u=0;if(a){if(n.value=s,t.value=a,o&&o===c){o=null;return}u=l?a.position-l.position:0}else r(s);i.forEach(e=>{e(n.value,c,{delta:u,type:`pop`,direction:u?u>0?`forward`:`back`:``})})};function c(){o=n.value}function l(e){i.push(e);let t=()=>{let t=i.indexOf(e);t>-1&&i.splice(t,1)};return a.push(t),t}function u(){if(document.visibilityState===`hidden`){let{history:e}=window;if(!e.state)return;e.replaceState(H({},e.state,{scroll:kt()}),``)}}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u),document.removeEventListener(`visibilitychange`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),document.addEventListener(`visibilitychange`,u),{pauseListeners:c,listen:l,destroy:d}}function Jt(e,t,n,r=!1,i=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:i?kt():null}}function Yt(e){let{history:t,location:n}=window,r={value:Kt(e,n)},i={value:t.state};i.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(r,a,o){let s=e.indexOf(`#`),c=s>-1?(n.host&&document.querySelector(`base`)?e:e.slice(s))+r:Gt()+e+r;try{t[o?`replaceState`:`pushState`](a,``,c),i.value=a}catch(e){console.error(e),n[o?`replace`:`assign`](c)}}function o(e,n){a(e,H({},t.state,Jt(i.value.back,e,i.value.forward,!0),n,{position:i.value.position}),!0),r.value=e}function s(e,n){let o=H({},i.value,t.state,{forward:e,scroll:kt()});a(o.current,o,!0),a(e,H({},Jt(r.value,e,null),{position:o.position+1},n),!1),r.value=e}return{location:r,state:i,push:s,replace:o}}function Xt(e){e=Tt(e);let t=Yt(e),n=qt(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=H({location:``,base:e,go:r,createHref:Dt.bind(null,e)},t,n);return Object.defineProperty(i,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,"state",{enumerable:!0,get:()=>t.state.value}),i}function Zt(e){return e=location.host?e||location.pathname+location.search:``,e.includes(`#`)||(e+=`#`),Xt(e)}var Qt={type:0,value:``},$t=/[a-zA-Z0-9_]/;function en(e){if(!e)return[[]];if(e===`/`)return[[Qt]];if(!e.startsWith(`/`))throw Error(`Invalid path "${e}"`);function t(e){throw Error(`ERR (${n})/"${l}": ${e}`)}let n=0,r=n,i=[],a;function o(){a&&i.push(a),a=[]}let s=0,c,l=``,u=``;function d(){l&&=(n===0?a.push({type:0,value:l}):n===1||n===2||n===3?(a.length>1&&(c===`*`||c===`+`)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:l,regexp:u,repeatable:c===`*`||c===`+`,optional:c===`*`||c===`?`})):t(`Invalid state to consume buffer`),``)}function f(){l+=c}for(;s<e.length;)switch(c=e[s++],n){case 0:c===`\\`?(r=n,n=4):c===`/`?(l&&d(),o()):c===`:`?(d(),n=1):f();break;case 4:f(),n=r;break;case 1:c===`(`?n=2:$t.test(c)?f():(d(),n=0,c!==`*`&&c!==`?`&&c!==`+`&&s--);break;case 2:c===`)`?u[u.length-1]==`\\`?u=u.slice(0,-1)+c:n=3:u+=c;break;case 3:d(),n=0,c!==`*`&&c!==`?`&&c!==`+`&&s--,u=``;break;default:t(`Unknown state`)}return n===2&&t(`Unfinished custom RegExp for param "${l}"`),d(),o(),i}var tn=`[^/]+?`,nn={sensitive:!1,strict:!1,start:!0,end:!0},rn=/[.+*?^${}()[\]/\\]/g;function an(e,t){let n=H({},nn,t),r=[],i=n.start?`^`:``,a=[];for(let t of e){let e=t.length?[]:[90];n.strict&&!t.length&&(i+=`/`);for(let r=0;r<t.length;r++){let o=t[r],s=40+(n.sensitive?.25:0);if(o.type===0)r||(i+=`/`),i+=o.value.replace(rn,`\\$&`),s+=40;else if(o.type===1){let{value:e,repeatable:n,optional:c,regexp:l}=o;a.push({name:e,repeatable:n,optional:c});let u=l||tn;if(u!==tn){s+=10;try{RegExp(`(${u})`)}catch(t){throw Error(`Invalid custom RegExp for param "${e}" (${u}): `+t.message)}}let d=n?`((?:${u})(?:/(?:${u}))*)`:`(${u})`;r||(d=c&&t.length<2?`(?:/${d})`:`/`+d),c&&(d+=`?`),i+=d,s+=20,c&&(s+=-8),n&&(s+=-20),u===`.*`&&(s+=-50)}e.push(s)}r.push(e)}if(n.strict&&n.end){let e=r.length-1;r[e][r[e].length-1]+=.7000000000000001}n.strict||(i+=`/?`),n.end?i+=`$`:n.strict&&!i.endsWith(`/`)&&(i+=`(?:/|$)`);let o=new RegExp(i,n.sensitive?``:`i`);function s(e){let t=e.match(o),n={};if(!t)return null;for(let e=1;e<t.length;e++){let r=t[e]||``,i=a[e-1];n[i.name]=r&&i.repeatable?r.split(`/`):r}return n}function c(t){let n=``,r=!1;for(let i of e){(!r||!n.endsWith(`/`))&&(n+=`/`),r=!1;for(let e of i)if(e.type===0)n+=e.value;else if(e.type===1){let{value:a,repeatable:o,optional:s}=e,c=a in t?t[a]:``;if(W(c)&&!o)throw Error(`Provided param "${a}" is an array but it is not repeatable (* or + modifiers)`);let l=W(c)?c.join(`/`):c;if(!l)if(s)i.length<2&&(n.endsWith(`/`)?n=n.slice(0,-1):r=!0);else throw Error(`Missing required param "${a}"`);n+=l}}return n||`/`}return{re:o,score:r,keys:a,parse:s,stringify:c}}function on(e,t){let n=0;for(;n<e.length&&n<t.length;){let r=t[n]-e[n];if(r)return r;n++}return e.length<t.length?e.length===1&&e[0]===80?-1:1:e.length>t.length?t.length===1&&t[0]===80?1:-1:0}function sn(e,t){let n=0,r=e.score,i=t.score;for(;n<r.length&&n<i.length;){let e=on(r[n],i[n]);if(e)return e;n++}if(Math.abs(i.length-r.length)===1){if(cn(r))return 1;if(cn(i))return-1}return i.length-r.length}function cn(e){let t=e[e.length-1];return e.length>0&&t[t.length-1]<0}var ln={strict:!1,end:!0,sensitive:!1};function un(e,t,n){let r=H(an(en(e.path),n),{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function dn(e,t){let n=[],r=new Map;t=Ve(ln,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=pn(e);s.aliasOf=r&&r.record;let l=Ve(t,e),u=[s];if(`alias`in e){let t=typeof e.alias==`string`?[e.alias]:e.alias;for(let e of t)u.push(pn(H({},s,{components:r?r.record.components:s.components,path:e,aliasOf:r?r.record:s})))}let d,f;for(let t of u){let{path:u}=t;if(n&&u[0]!==`/`){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=un(t,n,l),r?r.alias.push(d):(f||=d,f!==d&&f.alias.push(d),i&&e.name&&!hn(d)&&o(e.name)),yn(d)&&c(d),s.children){let e=s.children;for(let t=0;t<e.length;t++)a(e[t],d,r&&r.children[t])}r||=d}return f?()=>{o(f)}:U}function o(e){if(It(e)){let t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(o),t.alias.forEach(o))}else{let t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(o),e.alias.forEach(o))}}function s(){return n}function c(e){let t=_n(e,n);n.splice(t,0,e),e.record.name&&!hn(e)&&r.set(e.record.name,e)}function l(e,t){let i,a={},o,s;if(`name`in e&&e.name){if(i=r.get(e.name),!i)throw G(1,{location:e});s=i.record.name,a=H(fn(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&fn(e.params,i.keys.map(e=>e.name))),o=i.stringify(a)}else if(e.path!=null)o=e.path,i=n.find(e=>e.re.test(o)),i&&(a=i.parse(o),s=i.record.name,i.keys.forEach(e=>{e.optional&&!a[e.name]&&delete a[e.name]}));else{if(i=t.name?r.get(t.name):n.find(e=>e.re.test(t.path)),!i)throw G(1,{location:e,currentLocation:t});s=i.record.name,a=H({},t.params,e.params),o=i.stringify(a)}let c=[],l=i;for(;l;)c.unshift(l.record),l=l.parent;return{name:s,path:o,params:a,matched:c,meta:gn(c)}}e.forEach(e=>a(e));function u(){n.length=0,r.clear()}return{addRoute:a,resolve:l,removeRoute:o,clearRoutes:u,getRoutes:s,getRecordMatcher:i}}function fn(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function pn(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:mn(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:`components`in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function mn(e){let t={},n=e.props||!1;if(`component`in e)t.default=n;else for(let r in e.components)t[r]=typeof n==`object`?n[r]:n;return t}function hn(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function gn(e){return e.reduce((e,t)=>H(e,t.meta),{})}function _n(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;sn(e,t[i])<0?r=i:n=i+1}let i=vn(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function vn(e){let t=e;for(;t=t.parent;)if(yn(t)&&sn(e,t)===0)return t}function yn({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function bn(e){let t=S(q),n=S(Ge),r=O(()=>{let n=E(e.to);return t.resolve(n)}),i=O(()=>{let{matched:e}=r.value,{length:t}=e,i=e[t-1],a=n.matched;if(!i||!a.length)return-1;let o=a.findIndex(X.bind(null,i));if(o>-1)return o;let s=Tn(e[t-2]);return t>1&&Tn(i)===s&&a[a.length-1].path!==s?a.findIndex(X.bind(null,e[t-2])):o}),a=O(()=>i.value>-1&&wn(n.params,r.value.params)),o=O(()=>i.value>-1&&i.value===n.matched.length-1&&xt(n.params,r.value.params));function s(n={}){if(Cn(n)){let n=t[E(e.replace)?`replace`:`push`](E(e.to)).catch(U);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>n),n}return Promise.resolve()}return{route:r,href:O(()=>r.value.href),isActive:a,isExactActive:o,navigate:s}}function xn(e){return e.length===1?e[0]:e}var Sn=D({name:`RouterLink`,compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:`page`},viewTransition:Boolean},useLink:bn,setup(e,{slots:t}){let n=j(bn(e)),{options:r}=S(q),i=O(()=>({[En(e.activeClass,r.linkActiveClass,`router-link-active`)]:n.isActive,[En(e.exactActiveClass,r.linkExactActiveClass,`router-link-exact-active`)]:n.isExactActive}));return()=>{let r=t.default&&xn(t.default(n));return e.custom?r:F(`a`,{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:i.value},r)}}});function Cn(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&(e.button===void 0||e.button===0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute(`target`);if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function wn(e,t){for(let n in t){let r=t[n],i=e[n];if(typeof r==`string`){if(r!==i)return!1}else if(!W(i)||i.length!==r.length||r.some((e,t)=>e.valueOf()!==i[t].valueOf()))return!1}return!0}function Tn(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var En=(e,t,n)=>e??t??n,Dn=D({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){let r=S(Ke),i=O(()=>e.route||r.value),a=S(We,0),o=O(()=>{let e=E(a),{matched:t}=i.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),s=O(()=>i.value.matched[o.value]);b(We,O(()=>o.value+1)),b(Ue,s),b(Ke,i);let c=C();return M(()=>[c.value,s.value,e.name],([e,t,n],[r,i,a])=>{t&&(t.instances[n]=e,i&&i!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=i.leaveGuards),t.updateGuards.size||(t.updateGuards=i.updateGuards))),e&&t&&(!i||!X(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let r=i.value,a=e.name,o=s.value,l=o&&o.components[a];if(!l)return On(n.default,{Component:l,route:r});let u=o.props[a],d=u?u===!0?r.params:typeof u==`function`?u(r):u:null,f=F(l,H({},d,t,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(o.instances[a]=null)},ref:c}));return On(n.default,{Component:f,route:r})||f}}});function On(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var kn=Dn;function An(e){let t=dn(e.routes,e),n=e.parseQuery||Lt,r=e.stringifyQuery||Rt,i=e.history,a=Q(),o=Q(),s=Q(),c=w(Z),l=Z;J&&e.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let u=Be.bind(null,e=>``+e),d=Be.bind(null,mt),f=Be.bind(null,Y);function p(e,n){let r,i;return It(e)?(r=t.getRecordMatcher(e),i=n):i=e,t.addRoute(i,r)}function m(e){let n=t.getRecordMatcher(e);n&&t.removeRoute(n)}function h(){return t.getRoutes().map(e=>e.record)}function g(e){return!!t.getRecordMatcher(e)}function _(e,a){if(a=H({},a||c.value),typeof e==`string`){let r=_t(n,e,a.path),o=t.resolve({path:r.path},a),s=i.createHref(r.fullPath);return H(r,o,{params:f(o.params),redirectedFrom:void 0,href:s})}let o;if(e.path!=null)o=H({},e,{path:_t(n,e.path,a.path).path});else{let t=H({},e.params);for(let e in t)t[e]??delete t[e];o=H({},e,{params:d(t)}),a.params=d(a.params)}let s=t.resolve(o,a),l=e.hash||``;s.params=u(f(s.params));let p=vt(r,H({},e,{hash:ut(l),path:s.path})),m=i.createHref(p);return H({fullPath:p,hash:l,query:r===Rt?zt(e.query):e.query||{}},s,{redirectedFrom:void 0,href:m})}function v(e){return typeof e==`string`?_t(n,e,c.value.path):H({},e)}function ee(e,t){if(l!==e)return G(8,{from:t,to:e})}function y(e){return x(e)}function te(e){return y(H(v(e),{replace:!0}))}function b(e,t){let n=e.matched[e.matched.length-1];if(n&&n.redirect){let{redirect:r}=n,i=typeof r==`function`?r(e,t):r;return typeof i==`string`&&(i=i.includes(`?`)||i.includes(`#`)?i=v(i):{path:i},i.params={}),H({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function x(e,t){let n=l=_(e),i=c.value,a=e.state,o=e.force,s=e.replace===!0,u=b(n,i);if(u)return x(H(v(u),{state:typeof u==`object`?H({},a,u.state):a,force:o,replace:s}),t||n);let d=n;d.redirectedFrom=t;let f;return!o&&bt(r,i,n)&&(f=G(16,{to:d,from:i}),le(i,i,!0,!1)),(f?Promise.resolve(f):re(d,i)).catch(e=>K(e)?K(e,2)?e:j(e):ce(e,d,i)).then(e=>{if(e){if(K(e,2))return x(H({replace:s},v(e.to),{state:typeof e.to==`object`?H({},a,e.to.state):a,force:o}),t||d)}else e=ie(d,i,!0,s,a);return T(d,i,e),e})}function S(e,t){let n=ee(e,t);return n?Promise.reject(n):Promise.resolve()}function C(e){let t=P.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function re(e,t){let n,[r,i,s]=Wt(e,t);n=Ut(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push($(r,e,t))});let c=S.bind(null,e,t);return n.push(c),I(n).then(()=>{n=[];for(let r of a.list())n.push($(r,e,t));return n.push(c),I(n)}).then(()=>{n=Ut(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push($(r,e,t))});return n.push(c),I(n)}).then(()=>{n=[];for(let r of s)if(r.beforeEnter)if(W(r.beforeEnter))for(let i of r.beforeEnter)n.push($(i,e,t));else n.push($(r.beforeEnter,e,t));return n.push(c),I(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=Ut(s,`beforeRouteEnter`,e,t,C),n.push(c),I(n))).then(()=>{n=[];for(let r of o.list())n.push($(r,e,t));return n.push(c),I(n)}).catch(e=>K(e,8)?e:Promise.reject(e))}function T(e,t,n){s.list().forEach(r=>C(()=>r(e,t,n)))}function ie(e,t,n,r,a){let o=ee(e,t);if(o)return o;let s=t===Z,l=J?history.state:{};n&&(r||s?i.replace(e.fullPath,H({scroll:s&&l&&l.scroll},a)):i.push(e.fullPath,a)),c.value=e,le(e,t,n,s),j()}let D;function ae(){D||=i.listen((e,t,n)=>{if(!F.listening)return;let r=_(e),a=b(r,F.currentRoute.value);if(a){x(H(a,{replace:!0,force:!0}),r).catch(U);return}l=r;let o=c.value;J&&Nt(jt(o.fullPath,n.delta),kt()),re(r,o).catch(e=>K(e,12)?e:K(e,2)?(x(H(v(e.to),{force:!0}),r).then(e=>{K(e,20)&&!n.delta&&n.type===`pop`&&i.go(-1,!1)}).catch(U),Promise.reject()):(n.delta&&i.go(-n.delta,!1),ce(e,r,o))).then(e=>{e||=ie(r,o,!1),e&&(n.delta&&!K(e,8)?i.go(-n.delta,!1):n.type===`pop`&&K(e,20)&&i.go(-1,!1)),T(r,o,e)}).catch(U)})}let O=Q(),oe=Q(),k;function ce(e,t,n){j(e);let r=oe.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function A(){return k&&c.value!==Z?Promise.resolve():new Promise((e,t)=>{O.add([e,t])})}function j(e){return k||(k=!e,ae(),O.list().forEach(([t,n])=>e?n(e):t()),O.reset()),e}function le(t,n,r,i){let{scrollBehavior:a}=e;if(!J||!a)return Promise.resolve();let o=!r&&Pt(jt(t.fullPath,0))||(i||!r)&&history.state&&history.state.scroll||null;return ne().then(()=>a(t,n,o)).then(e=>t===c.value&&e&&At(e)).catch(e=>t===c.value&&ce(e,t,n))}let M=e=>i.go(e),N,P=new Set,F={currentRoute:c,listening:!0,addRoute:p,removeRoute:m,clearRoutes:t.clearRoutes,hasRoute:g,getRoutes:h,resolve:_,options:e,push:y,replace:te,go:M,back:()=>M(-1),forward:()=>M(1),beforeEach:a.add,beforeResolve:o.add,afterEach:s.add,onError:oe.add,isReady:A,install(e){e.component(`RouterLink`,Sn),e.component(`RouterView`,kn),e.config.globalProperties.$router=F,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>E(c)}),J&&!N&&c.value===Z&&(N=!0,y(i.location).catch(e=>{}));let t={};for(let e in Z)Object.defineProperty(t,e,{get:()=>c.value[e],enumerable:!0});e.provide(q,F),e.provide(Ge,se(t)),e.provide(Ke,c);let n=e.unmount;P.add(e),e.unmount=function(){P.delete(e),P.size<1&&(l=Z,D&&D(),D=null,c.value=Z,N=!1,k=!1),n()}}};function I(e){return e.reduce((e,t)=>e.then(()=>C(t)),Promise.resolve())}return F}s({mounted(e,n){let r=n.arg?.split(`,`)??!0;if(typeof n.value==`function`)t(r,n.value,{target:e});else{let[i,a]=n.value;t(r,i,{target:e,...a})}}});var jn=s({mounted(e,t){typeof t.value==`function`?r(e,t.value,{modifiers:t.modifiers}):r(e,...t.value)}});s({mounted(e,t){let[r,i]=typeof t.value==`function`?[t.value,{}]:t.value,{height:a,bottom:o,left:s,right:c,top:l,width:u,x:d,y:f}=n(e,i);M([a,o,s,c,l,u,d,f],()=>r({height:a,bottom:o,left:s,right:c,top:l,width:u,x:d,y:f}))}});var Mn=s({mounted(e,t){let n=t.value;if(typeof n==`function`)M(a(e),e=>n(e));else{let[t,r]=n;M(a(e,r),e=>t(e))}}}),Nn=_?window:void 0;_&&window.document,_&&window.navigator,_&&window.location;function Pn(e){let t=ae(e);return t?.$el??t}function Fn(){let e=w(!1),t=ie();return t&&k(()=>{e.value=!0},t),e}function In(e){let t=Fn();return O(()=>(t.value,!!e()))}function Ln(t,n,r={}){let{window:i=Nn,...a}=r,o,s=In(()=>i&&`MutationObserver`in i),c=()=>{o&&=(o.disconnect(),void 0)},u=M(O(()=>{let n=e(ae(t)).map(Pn).filter(l);return new Set(n)}),e=>{c(),s.value&&e.size&&(o=new MutationObserver(n),e.forEach(e=>o.observe(e,a)))},{immediate:!0,flush:`post`}),d=()=>o?.takeRecords(),f=()=>{u(),c()};return h(f),{isSupported:s,stop:f,takeRecords:d}}function Rn(e,t,n={}){let{window:r=Nn,...i}=n,a,o=In(()=>r&&`ResizeObserver`in r),s=()=>{a&&=(a.disconnect(),void 0)},c=M(O(()=>{let t=ae(e);return Array.isArray(t)?t.map(e=>Pn(e)):[Pn(t)]}),e=>{if(s(),o.value&&r){a=new ResizeObserver(t);for(let t of e)t&&a.observe(t,i)}},{immediate:!0,flush:`post`}),l=()=>{s(),c()};return h(l),{isSupported:o,stop:l}}function zn(e,t={}){let{observeMutation:n=!1,onUpdated:r,window:i=Nn}=t,a=w(!1),o=w(!1);function s(e){a.value=e.scrollWidth>e.offsetWidth,o.value=e.scrollHeight>e.offsetHeight}let c=r,l=O(()=>{let t=Pn(e);if(!(!t||t instanceof SVGElement))return t}),u=()=>{let e=l.value;return!e||e instanceof SVGElement?[]:[e,...Array.from(e.children).filter(e=>e instanceof HTMLElement)]};if(Rn(u,(e,t)=>{let n=l.value;n&&s(n),c?.(e,t)},{window:i}),n){let e=r;Ln(u,(t,n)=>{let r=l.value;r&&s(r),e?.(t,n)},{window:i,...typeof n==`object`?n:{childList:!0,subtree:!0,characterData:!0}})}return{isXOverflowed:P(a),isYOverflowed:P(o),stop,update:()=>{let e=l.value;e&&i&&s(e)}}}s({mounted(e,t){let[n,r]=typeof t.value==`function`?[t.value]:t.value,i=zn(e,r),{isXOverflowed:a,isYOverflowed:o}=i;M([a,o],()=>n(i),{immediate:!0})}}),s({mounted(e,t){let n=typeof t.value==`function`?t.value:t.value?.[0],{width:r,height:a}=i(e,...typeof t.value==`function`?[]:t.value.slice(1));M([r,a],([e,t])=>n({width:e,height:t}),{immediate:!0})}}),s({mounted(e,t){if(typeof t.value==`function`){let n=t.value;M(o(e),e=>n(e),{immediate:!0})}else{let[n,r]=t.value;if(r?.controls){let t=o(e,r);M(t.isVisible,()=>n(t),{immediate:!0})}else M(o(e,r),e=>n(e),{immediate:!0})}}}),s({mounted(e,t){typeof t.value==`function`?d(e,t.value):d(e,...t.value)}});var Bn=s({mounted(e,t){typeof t.value==`function`?m(e,t.value):m(e,...t.value)}});s({mounted(e,t){let[n,r]=typeof t.value==`function`?[t.value,{}]:t.value;M(g(j(c(e,r)),`stop`),e=>n(e))}}),s({mounted(e,t){typeof t.value==`function`?p(e,t.value):p(e,...t.value)}}),s({mounted(e,t){if(typeof t.value==`function`){let n=t.value,r=u(e,{onScroll(){n(r)},onStop(){n(r)}})}else{let[n,r]=t.value,i=u(e,{...r,onScroll(e){var t;(t=r.onScroll)==null||t.call(r,e),n(i)},onStop(e){var t;(t=r.onStop)==null||t.call(r,e),n(i)}})}}});function Vn(){let e=!1,t=w(!1);return s((n,r)=>{if(t.value=r.value,e)return;e=!0;let i=f(n,r.value);M(t,e=>i.value=e)})}Vn();export{Zt as a,Ht as c,we as d,Ie as f,An as i,Je as l,Bn as n,Xt as o,Le as p,jn as r,Vt as s,Mn as t,qe as u};
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { normalizeSwitchCaseHandles } from '../../../automations/switchHandles.js';
|
|
2
|
-
const MAX_LEAD_MS = 4000;
|
|
3
|
-
const BLIND_TIME_SECONDS = 1.8;
|
|
4
|
-
function leadFramesToMs(leadFrames, fps) {
|
|
5
|
-
if (leadFrames === 0)
|
|
6
|
-
return 0;
|
|
7
|
-
return Math.min(MAX_LEAD_MS, Math.round((Math.max(leadFrames, BLIND_TIME_SECONDS * fps) / fps) * 1000));
|
|
8
|
-
}
|
|
9
|
-
async function migratePtzLead(ctx) {
|
|
10
|
-
await ctx.db.camerasDB.transaction(() => {
|
|
11
|
-
for (const { key, value: camera } of ctx.db.camerasDB.getRange()) {
|
|
12
|
-
const autotrack = camera?.ptzAutotrack;
|
|
13
|
-
if (!autotrack || typeof autotrack.leadFrames !== 'number')
|
|
14
|
-
continue;
|
|
15
|
-
// fps was a camera setting back then, v2-1-4 removed it
|
|
16
|
-
const fps = camera.frameWorkerSettings?.fps ?? 10;
|
|
17
|
-
autotrack.leadMs = leadFramesToMs(autotrack.leadFrames, fps);
|
|
18
|
-
delete autotrack.leadFrames;
|
|
19
|
-
ctx.db.camerasDB.put(key, camera);
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
async function migrateSwitchHandles(ctx) {
|
|
24
|
-
await ctx.db.automationsDB.transaction(() => {
|
|
25
|
-
for (const { key, value: flow } of ctx.db.automationsDB.getRange()) {
|
|
26
|
-
if (!flow?.nodes?.some((n) => n.type === 'condition-switch'))
|
|
27
|
-
continue;
|
|
28
|
-
const result = normalizeSwitchCaseHandles(flow);
|
|
29
|
-
if (!result.changed)
|
|
30
|
-
continue;
|
|
31
|
-
flow.updatedAt = Date.now();
|
|
32
|
-
ctx.db.automationsDB.put(key, flow);
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
const migration = {
|
|
37
|
-
version: '2.0.50',
|
|
38
|
-
description: 'ptz autotrack leadFrames to leadMs, switch conditions route by case handle',
|
|
39
|
-
async up(ctx) {
|
|
40
|
-
await migratePtzLead(ctx);
|
|
41
|
-
await migrateSwitchHandles(ctx);
|
|
42
|
-
},
|
|
43
|
-
};
|
|
44
|
-
export default migration;
|
|
45
|
-
//# sourceMappingURL=v2-0-50.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"v2-0-50.js","sourceRoot":"","sources":["../../../../../../src/api/database/migrations/v2-0-50.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AAInF,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,SAAS,cAAc,CAAC,UAAkB,EAAE,GAAW;IACrD,IAAI,UAAU,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,kBAAkB,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC1G,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,GAAqB;IACjD,MAAM,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE;QACtC,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;YACjE,MAAM,SAAS,GAAG,MAAM,EAAE,YAA8D,CAAC;YACzF,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,CAAC,UAAU,KAAK,QAAQ;gBAAE,SAAS;YAErE,wDAAwD;YACxD,MAAM,GAAG,GAAI,MAAM,CAAC,mBAAoD,EAAE,GAAG,IAAI,EAAE,CAAC;YACpF,SAAS,CAAC,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YAC7D,OAAO,SAAS,CAAC,UAAU,CAAC;YAE5B,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,GAAqB;IACvD,MAAM,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,EAAE;QAC1C,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC;YACnE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC;gBAAE,SAAS;YAEvE,MAAM,MAAM,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,SAAS;YAE9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC5B,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,SAAS,GAAc;IAC3B,OAAO,EAAE,QAAQ;IACjB,WAAW,EAAE,4EAA4E;IACzF,KAAK,CAAC,EAAE,CAAC,GAAG;QACV,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;CACF,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { join } from 'node:path';
|
|
2
|
-
import { STORE_FILE_NAME } from '../../../plugins/store/pluginStoreFile.js';
|
|
3
|
-
import { readStoreFile } from '../../../plugins/store/storeFile.js';
|
|
4
|
-
import { DEFAULT_RECORDING_SETTINGS } from '../../schemas/cameras.schema.js';
|
|
5
|
-
const NVR_PLUGIN_NAME = '@camera.ui/camera-ui-nvr';
|
|
6
|
-
const RECORDING_MODES = new Set(['continuous', 'event', 'adhoc']);
|
|
7
|
-
const RECORDING_SOURCES = new Set(['high', 'mid', 'low']);
|
|
8
|
-
function toRecordingSettings(nvr) {
|
|
9
|
-
const sources = Array.isArray(nvr.recordedSources) ? nvr.recordedSources.filter((s) => RECORDING_SOURCES.has(s)) : [];
|
|
10
|
-
return {
|
|
11
|
-
enabled: typeof nvr.recordingEnabled === 'boolean' ? nvr.recordingEnabled : DEFAULT_RECORDING_SETTINGS.enabled,
|
|
12
|
-
mode: typeof nvr.recordingMode === 'string' && RECORDING_MODES.has(nvr.recordingMode) ? nvr.recordingMode : DEFAULT_RECORDING_SETTINGS.mode,
|
|
13
|
-
preBuffer: typeof nvr.preBuffer === 'number' ? Math.min(60, Math.max(0, nvr.preBuffer)) : DEFAULT_RECORDING_SETTINGS.preBuffer,
|
|
14
|
-
sources: sources.length ? sources : [...DEFAULT_RECORDING_SETTINGS.sources],
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
async function migrateRecordingSettings(ctx) {
|
|
18
|
-
const storePath = join(ctx.configService.PLUGINS_STORAGE_PATH, NVR_PLUGIN_NAME, 'volume', STORE_FILE_NAME);
|
|
19
|
-
let nvrCameras = {};
|
|
20
|
-
try {
|
|
21
|
-
nvrCameras = (await readStoreFile(storePath))?.cameras ?? {};
|
|
22
|
-
}
|
|
23
|
-
catch {
|
|
24
|
-
// unreadable or missing store, cameras fall back to defaults
|
|
25
|
-
}
|
|
26
|
-
await ctx.db.camerasDB.transaction(() => {
|
|
27
|
-
for (const { key, value: camera } of ctx.db.camerasDB.getRange()) {
|
|
28
|
-
if (camera.recordingSettings)
|
|
29
|
-
continue;
|
|
30
|
-
camera.recordingSettings = toRecordingSettings(nvrCameras[camera._id] ?? {});
|
|
31
|
-
ctx.db.camerasDB.put(key, camera);
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
const migration = {
|
|
36
|
-
version: '2.0.51',
|
|
37
|
-
description: 'recording settings move from NVR plugin storage to the camera record',
|
|
38
|
-
async up(ctx) {
|
|
39
|
-
await migrateRecordingSettings(ctx);
|
|
40
|
-
},
|
|
41
|
-
};
|
|
42
|
-
export default migration;
|
|
43
|
-
//# sourceMappingURL=v2-0-51.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"v2-0-51.js","sourceRoot":"","sources":["../../../../../../src/api/database/migrations/v2-0-51.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { VIRTUAL_SENSOR_OWNER_ID, VIRTUAL_SENSOR_OWNER_NAME } from '../../../sensors/types.js';
|
|
2
|
-
const migration = {
|
|
3
|
-
version: '2.1.0',
|
|
4
|
-
description: 'standalone sensor entities: migrate virtual sensors, reset camera-scoped sensor references',
|
|
5
|
-
async up(ctx) {
|
|
6
|
-
const { db, logger } = ctx;
|
|
7
|
-
// virtual sensors -> DBSensor
|
|
8
|
-
let migratedVirtual = 0;
|
|
9
|
-
for (const { value } of db.virtualSensorsDB.getRange()) {
|
|
10
|
-
const old = value;
|
|
11
|
-
const record = {
|
|
12
|
-
_id: old._id,
|
|
13
|
-
pluginInfo: { id: VIRTUAL_SENSOR_OWNER_ID, name: VIRTUAL_SENSOR_OWNER_NAME },
|
|
14
|
-
type: old.type,
|
|
15
|
-
name: old.name,
|
|
16
|
-
displayName: old.displayName,
|
|
17
|
-
assignedCameraIds: old.cameraId ? [old.cameraId] : [],
|
|
18
|
-
exposed: true,
|
|
19
|
-
state: old.state ?? {},
|
|
20
|
-
createdAt: old.createdAt,
|
|
21
|
-
updatedAt: Date.now(),
|
|
22
|
-
};
|
|
23
|
-
await db.sensorsDB.put(record._id, record);
|
|
24
|
-
await db.virtualSensorsDB.remove(old._id);
|
|
25
|
-
migratedVirtual++;
|
|
26
|
-
}
|
|
27
|
-
if (migratedVirtual > 0)
|
|
28
|
-
logger.log(`Migrated ${migratedVirtual} virtual sensors to standalone entities`);
|
|
29
|
-
// cameras: old cascade trigger triples cannot be mapped to sensor ids
|
|
30
|
-
for (const { key, value } of db.camerasDB.getRange()) {
|
|
31
|
-
const camera = value;
|
|
32
|
-
const triggers = camera.detectionSettings?.sensor?.triggers;
|
|
33
|
-
if (triggers?.length && triggers.some((t) => typeof t !== 'string')) {
|
|
34
|
-
camera.detectionSettings.sensor.triggers = [];
|
|
35
|
-
await db.camerasDB.put(String(key), camera);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
// automation flows with sensor nodes: disable, user re-picks the sensor
|
|
39
|
-
for (const { key, value } of db.automationsDB.getRange()) {
|
|
40
|
-
const flow = value;
|
|
41
|
-
const hasSensorNode = flow.nodes.some((node) => typeof node.data?.sensorName === 'string' && typeof node.data?.sensorPluginId === 'string');
|
|
42
|
-
if (!hasSensorNode)
|
|
43
|
-
continue;
|
|
44
|
-
flow.enabled = false;
|
|
45
|
-
flow.requiresUpdate = true;
|
|
46
|
-
flow.updatedAt = Date.now();
|
|
47
|
-
await db.automationsDB.put(String(key), flow);
|
|
48
|
-
logger.log(`Automation "${flow.name}" disabled: sensor references need to be re-selected`);
|
|
49
|
-
}
|
|
50
|
-
// user preferences: sensor shortcuts reference the old composite key
|
|
51
|
-
for (const { key, value } of db.usersDB.getRange()) {
|
|
52
|
-
const user = value;
|
|
53
|
-
const cameras = user.preferences?.cameras;
|
|
54
|
-
if (!cameras)
|
|
55
|
-
continue;
|
|
56
|
-
let changed = false;
|
|
57
|
-
for (const pref of Object.values(cameras)) {
|
|
58
|
-
if (!pref?.shortcuts?.length)
|
|
59
|
-
continue;
|
|
60
|
-
const filtered = pref.shortcuts.filter((shortcut) => shortcut.type !== 'sensor');
|
|
61
|
-
if (filtered.length !== pref.shortcuts.length) {
|
|
62
|
-
pref.shortcuts = filtered;
|
|
63
|
-
changed = true;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
if (changed)
|
|
67
|
-
await db.usersDB.put(String(key), user);
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
};
|
|
71
|
-
export default migration;
|
|
72
|
-
//# sourceMappingURL=v2-1-0.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"v2-1-0.js","sourceRoot":"","sources":["../../../../../../src/api/database/migrations/v2-1-0.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|