@camera.ui/server 2.0.22 → 2.0.24
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-CRIhzt2J.js +1 -0
- package/dist/interface/assets/About-CvY4xvAU.js +1 -0
- package/dist/interface/assets/Adminpanel-4ilp8plp.js +1 -0
- package/dist/interface/assets/Automation-uaWWTeTZ.js +3 -0
- package/dist/interface/assets/AutomationImport-RNgRv6Uc.js +2 -0
- package/dist/interface/assets/AutomationStore-D8plMzVI.js +2 -0
- package/dist/interface/assets/AutomationStoreDetail-BO-9XCRn.js +2 -0
- package/dist/interface/assets/Automations-PHMVe6wG.js +2 -0
- package/dist/interface/assets/Camera-Akukeq4_.js +2 -0
- package/dist/interface/assets/CameraConsole-BnKiGukm.js +7 -0
- package/dist/interface/assets/Cameras-BuHNAHpD.js +652 -0
- package/dist/interface/assets/{Camview-CaEbdeQZ.css → Camview-Cj10uxGy.css} +1 -1
- package/dist/interface/assets/Camview-dF8o0iy2.js +1 -0
- package/dist/interface/assets/Config-iq-YI9Vg.js +2 -0
- package/dist/interface/assets/{ConfigActionCameraControl-DFdb4xzq.js → ConfigActionCameraControl-C2qva2mT.js} +1 -1
- package/dist/interface/assets/ConfigActionDelay-C02w0yBx.js +1 -0
- package/dist/interface/assets/ConfigActionHttp-DVf26mYG.js +1 -0
- package/dist/interface/assets/ConfigActionImageInput-BTlFV7kK.js +1 -0
- package/dist/interface/assets/ConfigActionMqtt-CD9RW5Lq.js +1 -0
- package/dist/interface/assets/ConfigActionNotification-CjbIPrEb.js +1 -0
- package/dist/interface/assets/ConfigActionNotificationControl-BCdKNvgC.js +1 -0
- package/dist/interface/assets/ConfigActionOutput-wV9RFDQO.js +1 -0
- package/dist/interface/assets/ConfigActionPlugin-DijuNALK.js +1 -0
- package/dist/interface/assets/ConfigActionSensor-C9q3sRuI.js +1 -0
- package/dist/interface/assets/ConfigActionSnapshot-B79IJLFV.js +1 -0
- package/dist/interface/assets/ConfigActionVariable-Do94c7oi.js +1 -0
- package/dist/interface/assets/ConfigConditionIfElse-BtbZhnCM.js +1 -0
- package/dist/interface/assets/ConfigConditionSensorState-D1V_FhNU.js +1 -0
- package/dist/interface/assets/ConfigConditionSwitch-C74dDt3R.js +1 -0
- package/dist/interface/assets/ConfigConditionTime-5IrJQgAV.js +1 -0
- package/dist/interface/assets/ConfigSensorValueInput-BcbzMf0g.js +1 -0
- package/dist/interface/assets/{ConfigTriggerDetection-Cjes6g7x.js → ConfigTriggerDetection-ld9Upgoc.js} +1 -1
- package/dist/interface/assets/ConfigTriggerGeofence-DbfBc1AM.js +1 -0
- package/dist/interface/assets/ConfigTriggerManual-t-J-HbqF.js +1 -0
- package/dist/interface/assets/ConfigTriggerMqtt-i57J8-Nq.js +1 -0
- package/dist/interface/assets/ConfigTriggerSchedule-Dv7wIG3G.js +1 -0
- package/dist/interface/assets/ConfigTriggerSensor-Ba2lCSGc.js +1 -0
- package/dist/interface/assets/{ConfigTriggerSystem-NaaBopYq.js → ConfigTriggerSystem-BWs3rP_W.js} +1 -1
- package/dist/interface/assets/ConfigTriggerWebhook-CpQakeYG.js +1 -0
- package/dist/interface/assets/Console-BTb5Yc32.js +1 -0
- package/dist/interface/assets/CuiAutomationRunsDialog-DX0xpNxx.js +1 -0
- package/dist/interface/assets/CuiBottomSheet-Bu0PtwX-.js +1 -0
- package/dist/interface/assets/CuiBottomSheet-DIg-nl0p.js +1 -0
- package/dist/interface/assets/CuiCameraPipCard-q3yeptLd.js +1 -0
- package/dist/interface/assets/CuiCameraRecordings-BWN8gBl4.js +1 -0
- package/dist/interface/assets/CuiCameraShares-BggG5Ic_.js +1 -0
- package/dist/interface/assets/CuiCameraTable-BCrE4TMJ.js +2 -0
- package/dist/interface/assets/CuiDataTable-Dk8LJl5S.js +1 -0
- package/dist/interface/assets/CuiLightControl-CaIl2eCO.js +1 -0
- package/dist/interface/assets/CuiLightControl-DFrZm_sv.css +1 -0
- package/dist/interface/assets/CuiList-Cjbxtb1E.js +1 -0
- package/dist/interface/assets/CuiMarkdownContent-Bjs3wRnq.js +1 -0
- package/dist/interface/assets/CuiMarkdownContent-Do8-vIl7.js +1 -0
- package/dist/interface/assets/CuiPluginCard-cvZkF8Cz.js +2 -0
- package/dist/interface/assets/{CuiPluginCategoryChip-D9Vi1SEP.js → CuiPluginCategoryChip-DsEuwQrw.js} +1 -1
- package/dist/interface/assets/CuiPluginOAuthButton-Bbwly_xJ.js +2 -0
- package/dist/interface/assets/{CuiPluginTrustBadge-D0rUX2i6.js → CuiPluginTrustBadge-BC6F9f-3.js} +1 -1
- package/dist/interface/assets/CuiQRCode-DKHFwuhr.js +1 -0
- package/dist/interface/assets/CuiRecordingsGrid-DSf7RXci.js +1 -0
- package/dist/interface/assets/CuiSchema-Dda4lNPz.js +1 -0
- package/dist/interface/assets/CuiTopNavbarItem-BZawroJz.js +1 -0
- package/dist/interface/assets/Faces-CvQCD53E.js +1 -0
- package/dist/interface/assets/FirstSteps-Dg0Bvjs2.js +1 -0
- package/dist/interface/assets/Instances-DisNu3zt.js +1 -0
- package/dist/interface/assets/Logs-DSSDjAY-.js +6 -0
- package/dist/interface/assets/Menu-CJ-MMxvd.js +1 -0
- package/dist/interface/assets/OAuthDeviceFlow-CKTokRaq.js +1 -0
- package/dist/interface/assets/Plugin-7daLGUVo.js +1 -0
- package/dist/interface/assets/PluginConsole-CcRMneFa.js +7 -0
- package/dist/interface/assets/PluginDetail-B1-NdurE.js +2 -0
- package/dist/interface/assets/PluginSchema-CP0JWUSD.js +1 -0
- package/dist/interface/assets/PluginSearch-BHN0J_JP.js +2 -0
- package/dist/interface/assets/PluginSearch-Cx_lzDqC.js +1 -0
- package/dist/interface/assets/Plugins-DnMPdcQF.js +1 -0
- package/dist/interface/assets/Recordings-Dxs3srmh.js +1 -0
- package/dist/interface/assets/SensorEdit-Dq2nV1Wf.js +1 -0
- package/dist/interface/assets/SensorHistory-BeCbNWJh.js +1 -0
- package/dist/interface/assets/Sensors-BA9P_Ray.css +1 -0
- package/dist/interface/assets/Sensors-D9DLdMaD.js +2 -0
- package/dist/interface/assets/Settings-DCHoD7r8.js +1 -0
- package/dist/interface/assets/SettingsAccount-BrhnlNuF.js +1 -0
- package/dist/interface/assets/SettingsAccount-djLxmQ9r.js +1 -0
- package/dist/interface/assets/{SettingsAccount-CyNJQSuV.css → SettingsAccount-si-6gWl5.css} +1 -1
- package/dist/interface/assets/SettingsAppearance-Bq-xM16S.js +1 -0
- package/dist/interface/assets/SettingsAppearance-JKbe5xiH.js +1 -0
- package/dist/interface/assets/SettingsBackup-CjlVk3hF.js +1 -0
- package/dist/interface/assets/SettingsList-C4mMOKJh.js +1 -0
- package/dist/interface/assets/SettingsMqtt-DoYFVHoD.js +1 -0
- package/dist/interface/assets/SettingsNotifications-Cmr9Bvy0.js +2 -0
- package/dist/interface/assets/SettingsPermissions-D33G-1kM.js +1 -0
- package/dist/interface/assets/SettingsRecordings-DYiuW0rA.js +1 -0
- package/dist/interface/assets/SettingsRemote-CROA1Oa7.js +1 -0
- package/dist/interface/assets/SettingsSystem-rgucO68X.js +2 -0
- package/dist/interface/assets/SettingsUsers-2uMPOpyC.js +1 -0
- package/dist/interface/assets/Terminal-BMFWoJ_k.js +4 -0
- package/dist/interface/assets/VariableInput-Cx9tgiM4.js +1 -0
- package/dist/interface/assets/VariableSuggestions-DV_QjTtU.js +1 -0
- package/dist/interface/assets/VersionsHandler-v4hH23M_.js +7 -0
- package/dist/interface/assets/VirtualSensorCreate-DhuGE1Mf.js +1 -0
- package/dist/interface/assets/Workers-DyJXudfY.js +2 -0
- package/dist/interface/assets/{account-sFoKqEOV.js → account-C5mHt2Ep.js} +1 -1
- package/dist/interface/assets/ace-BqKKexH4.js +1 -0
- package/dist/interface/assets/{ace.config-C_wgqTLD.js → ace.config-BNjBs7Fe.js} +1 -1
- package/dist/interface/assets/alarm-light-outline-jCTfmz5t.js +1 -0
- package/dist/interface/assets/{alert-circle-BQZQ417w.js → alert-circle-Cu_kjPlA.js} +1 -1
- package/dist/interface/assets/alert-outline-DXHNnhoP.js +1 -0
- package/dist/interface/assets/api-3va2gyB0.css +2 -0
- package/dist/interface/assets/{api-DEaXK1Kq.js → api-BKU9IS3U.js} +1 -1
- package/dist/interface/assets/api-Cc-rMHwl.js +2 -0
- package/dist/interface/assets/arrow-left-DPtWmM6S.js +1 -0
- package/dist/interface/assets/arrow-right-outline-BY1ggGA1.js +1 -0
- package/dist/interface/assets/{auth-XA5zkqwW.js → auth-B4latCDR.js} +1 -1
- package/dist/interface/assets/automationBlueprint-D0F9AHk9.js +1 -0
- package/dist/interface/assets/automations-BFkAMu3Y.js +1 -0
- package/dist/interface/assets/{back-filled-BdHG6uUx.js → back-filled-r7bN5ObT.js} +1 -1
- package/dist/interface/assets/{bell-ring-Dua4zXf_.js → bell-ring-C470qCAb.js} +1 -1
- package/dist/interface/assets/{cameras.schema-1a2URPGd.js → cameras.schema-BtaT3B32.js} +1 -1
- package/dist/interface/assets/{cctv-DEiPL3U8.js → cctv-BKVOVZCR.js} +1 -1
- package/dist/interface/assets/check-circle-Ce_sbfPZ.js +1 -0
- package/dist/interface/assets/chevron-down-CjSTp091.js +1 -0
- package/dist/interface/assets/chevron-right-B4vB0gm4.js +1 -0
- package/dist/interface/assets/{clock-outline-C_f3Ed8x.js → clock-outline-BgcDXoyp.js} +1 -1
- package/dist/interface/assets/{close-DNgGJYHi.js → close-CQoGQHOF.js} +1 -1
- package/dist/interface/assets/{close-circle-L5juejMg.js → close-circle-DYhkXsRj.js} +1 -1
- package/dist/interface/assets/{cloud-check-DD7oRzmo.js → cloud-check-CVx221dJ.js} +1 -1
- package/dist/interface/assets/cloudHandoff-CPrXpD0L.js +1 -0
- package/dist/interface/assets/{config-C2hgXHyj.js → config-B_lj3Myj.js} +1 -1
- package/dist/interface/assets/copy-yhHCVVOa.js +1 -0
- package/dist/interface/assets/cube-scan-Ccxismvr.js +1 -0
- package/dist/interface/assets/delete-xWUQUP2x.js +1 -0
- package/dist/interface/assets/dist-DVb-CALh.js +1 -0
- package/dist/interface/assets/download-PLxvyB7s.js +1 -0
- package/dist/interface/assets/esm-B4MXP42m.js +1 -0
- package/dist/interface/assets/esm-BW9m3dy4.js +1 -0
- package/dist/interface/assets/esm-BZ3gh7Fj.js +1 -0
- package/dist/interface/assets/esm-Blvz9SsB.js +1 -0
- package/dist/interface/assets/esm-CJXU9jaA.js +1 -0
- package/dist/interface/assets/esm-Cqqu_mer.js +1 -0
- package/dist/interface/assets/esm-CtKbLoV_.js +1 -0
- package/dist/interface/assets/esm-CwzNi2iW.js +1 -0
- package/dist/interface/assets/esm-KnO8wJyB.js +1 -0
- package/dist/interface/assets/esm-Lt6R0RFn.js +1 -0
- package/dist/interface/assets/esm-MvRctfDP.js +1 -0
- package/dist/interface/assets/esm-W4LX4Rpq.js +1 -0
- package/dist/interface/assets/esm-l57LNUWu.js +1 -0
- package/dist/interface/assets/esm-xofhyA8r.js +1 -0
- package/dist/interface/assets/eye-off-C8kzsdYU.js +1 -0
- package/dist/interface/assets/flowSchema-CyZseAPD.js +1 -0
- package/dist/interface/assets/{history-iAZcYg3f.js → history-QBEPNc4X.js} +1 -1
- package/dist/interface/assets/home-af3W_y8U.js +1 -0
- package/dist/interface/assets/{information-outline-CVsB1bl-.js → information-outline-BPCsozSU.js} +1 -1
- package/dist/interface/assets/{lightbulb-outline-nNLyXAIp.js → lightbulb-outline-ccTlGyvW.js} +1 -1
- package/dist/interface/assets/main-C4qjk6s5.js +3 -0
- package/dist/interface/assets/main-aZt-Pooz.css +1 -0
- package/dist/interface/assets/{microphone-CU0mFDMh.js → microphone-5exHwwyq.js} +1 -1
- package/dist/interface/assets/mqtt-CFw_CCq8.js +1 -0
- package/dist/interface/assets/native-Cpj7zrLp.js +1 -0
- package/dist/interface/assets/native-D--k2WN1.js +1 -0
- package/dist/interface/assets/nodeDefinitions-CRrkU6zR.js +1 -0
- package/dist/interface/assets/{notifications-BHQN6WD4.js → notifications-0_glcRlR.js} +1 -1
- package/dist/interface/assets/{pencil-outline-BQxLTlZx.js → pencil-outline-M9I4mCJO.js} +1 -1
- package/dist/interface/assets/plugin-D3FpjfF8.js +1 -0
- package/dist/interface/assets/{plugins-C0RtyBHQ.js → plugins-ICpmsguj.js} +1 -1
- package/dist/interface/assets/plus-CGIx-WV8.js +1 -0
- package/dist/interface/assets/{plus-Ct6WQfM1.js → plus-CrfQUUEC.js} +1 -1
- package/dist/interface/assets/power-VnZM2-0c.js +1 -0
- package/dist/interface/assets/{ring-resize-CZBThoQC.js → ring-resize-CodGa6wQ.js} +1 -1
- package/dist/interface/assets/rolldown-runtime-C0FnF6B9.js +1 -0
- package/dist/interface/assets/{round-alt-arrow-left-bold-BlpNMBxm.js → round-alt-arrow-left-bold-DTrlW4yx.js} +1 -1
- package/dist/interface/assets/round-restart-alt-CxUkNgtt.js +1 -0
- package/dist/interface/assets/{search-M4Rt52Co.js → search-miJXZGQz.js} +1 -1
- package/dist/interface/assets/sensors-Bh5GuQ78.js +1 -0
- package/dist/interface/assets/{server-CVSOthzT.js → server-DbpDC3pc.js} +1 -1
- package/dist/interface/assets/{settings-CgToKrFd.js → settings-DY0TJSAM.js} +1 -1
- package/dist/interface/assets/{source-branch-CoHKTGxb.js → source-branch-nw9fwXin.js} +1 -1
- package/dist/interface/assets/{theme-BZi7VV10.js → theme-DlMdsvGC.js} +1 -1
- package/dist/interface/assets/{trash-2-BKWfq15D.js → trash-2-B-di2M48.js} +1 -1
- package/dist/interface/assets/trash-can-outline-BbZkHoW7.js +1 -0
- package/dist/interface/assets/{trash-fill-yNQsFs0Y.js → trash-fill-Bgen5QTD.js} +1 -1
- package/dist/interface/assets/{trash2-DjTG9rG-.js → trash2-BP__fHgN.js} +1 -1
- package/dist/interface/assets/types-C1VwkReu.js +1 -0
- package/dist/interface/assets/{types-Bw8H-UB4.js → types-CggzoTPX.js} +1 -1
- package/dist/interface/assets/upload-CNYrnwuV.js +1 -0
- package/dist/interface/assets/{useAppVersion-CDTrwxkp.js → useAppVersion-CCxZnwIP.js} +1 -1
- package/dist/interface/assets/useBackupRestore-DQQc_D6D.js +1 -0
- package/dist/interface/assets/useCameraOptions-DVlhUpbE.js +1 -0
- package/dist/interface/assets/{useCardSelection-CgZ7QTaA.js → useCardSelection-B3B2qPHO.js} +1 -1
- package/dist/interface/assets/{useElectron-CgLWOhcS.js → useElectron-KnqvZz0q.js} +1 -1
- package/dist/interface/assets/useLogsSocket-CUQwZ6wm.js +5 -0
- package/dist/interface/assets/{usePermissions-tzi2t12h.js → usePermissions-C3D3JcPH.js} +1 -1
- package/dist/interface/assets/useServerRestart-CqZRPCpR.js +1 -0
- package/dist/interface/assets/{useStreamStatus-BV_L7pxB.js → useStreamStatus-CVJFHRLZ.js} +1 -1
- package/dist/interface/assets/useUserOptions-drl3-JUC.js +1 -0
- package/dist/interface/assets/{variable-Y3IAPnsB.js → variable-CbNySf4s.js} +1 -1
- package/dist/interface/assets/vendor-CSg6_Jfu.js +22 -0
- package/dist/interface/assets/vendor-ace-DIEVbs6L.js +1085 -0
- package/dist/interface/assets/vendor-cameraui-Cgb5z6NJ.js +2040 -0
- package/dist/interface/assets/vendor-capacitor-C-8IYzpJ.js +2 -0
- package/dist/interface/assets/vendor-chart-CoQ9HTE3.js +3 -0
- package/dist/interface/assets/vendor-core-BJsSXMFQ.js +1 -0
- package/dist/interface/assets/{vendor-dnd-hwiZJHjo.js → vendor-dnd-DQF7Aoap.js} +2 -2
- package/dist/interface/assets/vendor-draggabilly-Cghb3aIb.js +1 -0
- package/dist/interface/assets/vendor-gridstack-qw2ro2uB.js +3 -0
- package/dist/interface/assets/{vendor-leaflet-BMMJO5Nd.js → vendor-leaflet-Bcgd-fkG.js} +1 -1
- package/dist/interface/assets/vendor-markdown-DWwrEE67.js +14 -0
- package/dist/interface/assets/{vendor-primevue-C6wcTjtT.js → vendor-primevue-CyD8V_Ft.js} +85 -85
- package/dist/interface/assets/vendor-vueflow-crUU2mAI.js +26 -0
- package/dist/interface/assets/vendor-xterm-BafMBqaV.js +91 -0
- package/dist/interface/assets/vendor-zod-Dbq0fBXY.js +127 -0
- package/dist/interface/assets/web-BX3axHeB.js +1 -0
- package/dist/interface/assets/web-BcHmbPny.js +1 -0
- package/dist/interface/assets/web-BjKL51lK-BQjyRtns.js +1 -0
- package/dist/interface/assets/web-C8w-z-xR.js +1 -0
- package/dist/interface/assets/web-CHdniv8I.js +1 -0
- package/dist/interface/assets/web-CWBhY0Av.js +1 -0
- package/dist/interface/assets/web-Cf1yYy4u.js +1 -0
- package/dist/interface/assets/web-Ct6Vkr6F.js +1 -0
- package/dist/interface/assets/web-DARDw7d8.js +1 -0
- package/dist/interface/assets/web-DKBMdBSA.js +1 -0
- package/dist/interface/assets/web-Ddzvp-fv.js +1 -0
- package/dist/interface/assets/web-Dymr_MpD.js +1 -0
- package/dist/interface/assets/web-XIuTPdFc.js +1 -0
- package/dist/interface/assets/web-lrnXIJTz.js +1 -0
- package/dist/interface/assets/{webhook-yCryYojY.js → webhook-B7YgiSrF.js} +1 -1
- package/dist/interface/assets/workbox-window.prod.es5-BkFwsIPp.js +1 -0
- package/dist/interface/assets/{zoom-in-Da5uRiQq.js → zoom-in-D7BJNotF.js} +1 -1
- package/dist/interface/index.html +44 -40
- package/dist/interface/sw.js +1 -1
- package/dist/server/package.json +11 -11
- package/dist/server/requirements.txt +4 -6
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc/client.py +3 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc/types.py +4 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/__init__.py +9 -14
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/__init__.py +0 -4
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/config.py +5 -12
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/detection.py +6 -23
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/device.py +60 -100
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/events.py +3 -2
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/frames.py +2 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/__init__.py +2 -20
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/camera_config_internal.py +1 -1
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/camera_enums.py +3 -3
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/event_emitter.py +13 -26
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/manager_rpc.py +2 -5
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/sensor_rpc.py +21 -6
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/shared_utils.py +7 -18
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/manager/__init__.py +91 -29
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/observable/__init__.py +145 -37
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/__init__.py +10 -1
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/api.py +21 -68
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/contract.py +31 -58
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/helper.py +3 -12
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/interfaces.py +137 -99
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/notifier.py +34 -52
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/oauth.py +4 -4
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/__init__.py +3 -4
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/audio.py +45 -39
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/base.py +329 -256
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/battery.py +17 -16
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/classifier.py +31 -27
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/clip.py +14 -12
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/contact.py +11 -10
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/detection.py +34 -22
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/doorbell.py +19 -19
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/face.py +34 -28
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/garage.py +29 -20
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/humidity.py +22 -12
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/leak.py +12 -11
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/license_plate.py +35 -31
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/light.py +22 -18
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/lock.py +26 -19
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/motion.py +28 -27
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/object.py +37 -33
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/occupancy.py +11 -10
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/ptz.py +20 -24
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/security_system.py +22 -22
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/siren.py +17 -16
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/smoke.py +11 -10
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/spec.py +26 -22
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/switch.py +13 -12
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/temperature.py +22 -12
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/storage/__init__.py +56 -38
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/types.py +15 -18
- package/dist/server/src/api/controllers/auth.controller.js +2 -1
- package/dist/server/src/api/controllers/auth.controller.js.map +1 -1
- package/dist/server/src/api/controllers/cameras.controller.d.ts +6 -0
- package/dist/server/src/api/controllers/cameras.controller.js +21 -11
- package/dist/server/src/api/controllers/cameras.controller.js.map +1 -1
- package/dist/server/src/api/controllers/cast.controller.d.ts +11 -0
- package/dist/server/src/api/controllers/cast.controller.js +29 -0
- package/dist/server/src/api/controllers/cast.controller.js.map +1 -0
- package/dist/server/src/api/controllers/notifications.controller.d.ts +12 -0
- package/dist/server/src/api/controllers/notifications.controller.js +41 -0
- package/dist/server/src/api/controllers/notifications.controller.js.map +1 -1
- package/dist/server/src/api/controllers/nvr.controller.d.ts +14 -0
- package/dist/server/src/api/controllers/nvr.controller.js +61 -0
- package/dist/server/src/api/controllers/nvr.controller.js.map +1 -0
- package/dist/server/src/api/controllers/sensors.controller.d.ts +13 -0
- package/dist/server/src/api/controllers/sensors.controller.js +94 -0
- package/dist/server/src/api/controllers/sensors.controller.js.map +1 -0
- package/dist/server/src/api/controllers/server.controller.d.ts +1 -0
- package/dist/server/src/api/controllers/server.controller.js +11 -0
- package/dist/server/src/api/controllers/server.controller.js.map +1 -1
- package/dist/server/src/api/controllers/tunnel.controller.d.ts +0 -3
- package/dist/server/src/api/controllers/tunnel.controller.js +1 -21
- package/dist/server/src/api/controllers/tunnel.controller.js.map +1 -1
- package/dist/server/src/api/database/constants.d.ts +2 -0
- package/dist/server/src/api/database/constants.js +2 -0
- package/dist/server/src/api/database/constants.js.map +1 -1
- package/dist/server/src/api/database/index.d.ts +5 -2
- package/dist/server/src/api/database/index.js +7 -4
- package/dist/server/src/api/database/index.js.map +1 -1
- package/dist/server/src/api/database/migrations/v2-1-0.d.ts +3 -0
- package/dist/server/src/api/database/migrations/v2-1-0.js +72 -0
- package/dist/server/src/api/database/migrations/v2-1-0.js.map +1 -0
- package/dist/server/src/api/database/record-schemas.d.ts +2 -3
- 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 +27 -3
- package/dist/server/src/api/index.js +3 -0
- package/dist/server/src/api/index.js.map +1 -1
- package/dist/server/src/api/plugins/natsSubFirewall.d.ts +1 -1
- package/dist/server/src/api/plugins/natsSubFirewall.js +5 -2
- package/dist/server/src/api/plugins/natsSubFirewall.js.map +1 -1
- package/dist/server/src/api/plugins/proxy.plugin.js +5 -3
- package/dist/server/src/api/plugins/proxy.plugin.js.map +1 -1
- package/dist/server/src/api/routes/cameras.routes.js +14 -7
- package/dist/server/src/api/routes/cameras.routes.js.map +1 -1
- package/dist/server/src/api/routes/cast.routes.d.ts +2 -0
- package/dist/server/src/api/routes/cast.routes.js +29 -0
- package/dist/server/src/api/routes/cast.routes.js.map +1 -0
- package/dist/server/src/api/routes/index.js +6 -2
- package/dist/server/src/api/routes/index.js.map +1 -1
- package/dist/server/src/api/routes/notifications.routes.js +32 -0
- package/dist/server/src/api/routes/notifications.routes.js.map +1 -1
- package/dist/server/src/api/routes/nvr.routes.d.ts +2 -0
- package/dist/server/src/api/routes/nvr.routes.js +19 -0
- package/dist/server/src/api/routes/nvr.routes.js.map +1 -0
- package/dist/server/src/api/routes/sensors.routes.d.ts +2 -0
- package/dist/server/src/api/routes/sensors.routes.js +89 -0
- package/dist/server/src/api/routes/sensors.routes.js.map +1 -0
- package/dist/server/src/api/routes/server.routes.js +10 -0
- package/dist/server/src/api/routes/server.routes.js.map +1 -1
- package/dist/server/src/api/schemas/cameras.schema.d.ts +103 -45
- package/dist/server/src/api/schemas/cameras.schema.js +7 -10
- package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
- package/dist/server/src/api/schemas/cast.schema.d.ts +7 -0
- package/dist/server/src/api/schemas/cast.schema.js +7 -0
- package/dist/server/src/api/schemas/cast.schema.js.map +1 -0
- package/dist/server/src/api/schemas/nvr.schema.d.ts +10 -0
- package/dist/server/src/api/schemas/nvr.schema.js +13 -0
- package/dist/server/src/api/schemas/nvr.schema.js.map +1 -0
- package/dist/server/src/api/schemas/{virtualsensors.schema.d.ts → sensors.schema.d.ts} +15 -8
- package/dist/server/src/api/schemas/sensors.schema.js +25 -0
- package/dist/server/src/api/schemas/sensors.schema.js.map +1 -0
- package/dist/server/src/api/schemas/users.schema.d.ts +7 -18
- package/dist/server/src/api/schemas/users.schema.js +3 -7
- package/dist/server/src/api/schemas/users.schema.js.map +1 -1
- package/dist/server/src/api/services/cameras.service.js +1 -1
- package/dist/server/src/api/services/cameras.service.js.map +1 -1
- package/dist/server/src/api/services/cast.service.d.ts +7 -0
- package/dist/server/src/api/services/cast.service.js +14 -0
- package/dist/server/src/api/services/cast.service.js.map +1 -0
- package/dist/server/src/api/services/instances.service.js +1 -1
- package/dist/server/src/api/services/notifications.service.d.ts +3 -0
- package/dist/server/src/api/services/notifications.service.js +9 -0
- package/dist/server/src/api/services/notifications.service.js.map +1 -1
- package/dist/server/src/api/services/plugins.service.js +18 -3
- package/dist/server/src/api/services/plugins.service.js.map +1 -1
- package/dist/server/src/api/services/sensors.service.d.ts +41 -0
- package/dist/server/src/api/services/sensors.service.js +106 -0
- package/dist/server/src/api/services/sensors.service.js.map +1 -0
- package/dist/server/src/api/services/server.service.d.ts +4 -0
- package/dist/server/src/api/services/server.service.js +14 -0
- package/dist/server/src/api/services/server.service.js.map +1 -1
- package/dist/server/src/api/services/users.service.js +6 -9
- package/dist/server/src/api/services/users.service.js.map +1 -1
- package/dist/server/src/api/types/index.d.ts +19 -6
- package/dist/server/src/api/websocket/nsp/events.js +38 -15
- package/dist/server/src/api/websocket/nsp/events.js.map +1 -1
- package/dist/server/src/api.d.ts +0 -2
- package/dist/server/src/api.js +0 -12
- package/dist/server/src/api.js.map +1 -1
- package/dist/server/src/automations/actions/sensor.js +4 -7
- package/dist/server/src/automations/actions/sensor.js.map +1 -1
- package/dist/server/src/automations/conditions/sensorState.js +4 -4
- package/dist/server/src/automations/conditions/sensorState.js.map +1 -1
- package/dist/server/src/automations/context.d.ts +2 -1
- package/dist/server/src/automations/context.js +2 -1
- package/dist/server/src/automations/context.js.map +1 -1
- package/dist/server/src/automations/pluginMethodRegistry.d.ts +2 -0
- package/dist/server/src/automations/pluginMethodRegistry.js +14 -0
- package/dist/server/src/automations/pluginMethodRegistry.js.map +1 -1
- package/dist/server/src/automations/triggers/sensor.js +12 -23
- package/dist/server/src/automations/triggers/sensor.js.map +1 -1
- package/dist/server/src/camera/controller.d.ts +0 -1
- package/dist/server/src/camera/controller.js +9 -46
- package/dist/server/src/camera/controller.js.map +1 -1
- package/dist/server/src/camera/decoder/detection-coordinator.js +13 -11
- package/dist/server/src/camera/decoder/detection-coordinator.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 +13 -1
- package/dist/server/src/camera/decoder/plugin-registry.js.map +1 -1
- package/dist/server/src/camera/decoder/ptz/autotracker.js +2 -2
- package/dist/server/src/camera/decoder/ptz/autotracker.js.map +1 -1
- package/dist/server/src/camera/decoder/secondary-stage.js +6 -6
- package/dist/server/src/camera/decoder/secondary-stage.js.map +1 -1
- package/dist/server/src/camera/decoder/types.d.ts +7 -1
- package/dist/server/src/camera/decoder/types.js +4 -0
- package/dist/server/src/camera/decoder/types.js.map +1 -1
- package/dist/server/src/camera/decoder/worker.d.ts +2 -0
- package/dist/server/src/camera/decoder/worker.js +14 -3
- package/dist/server/src/camera/decoder/worker.js.map +1 -1
- package/dist/server/src/camera/index.d.ts +2 -14
- package/dist/server/src/camera/index.js +1 -32
- package/dist/server/src/camera/index.js.map +1 -1
- package/dist/server/src/camera/sensors/controller.d.ts +17 -77
- package/dist/server/src/camera/sensors/controller.js +60 -445
- package/dist/server/src/camera/sensors/controller.js.map +1 -1
- package/dist/server/src/internal-bus.d.ts +7 -13
- package/dist/server/src/internal-bus.js.map +1 -1
- package/dist/server/src/main.d.ts +1 -0
- package/dist/server/src/main.js +7 -0
- package/dist/server/src/main.js.map +1 -1
- package/dist/server/src/manager/castManager.d.ts +24 -0
- package/dist/server/src/manager/castManager.js +79 -0
- package/dist/server/src/manager/castManager.js.map +1 -0
- package/dist/server/src/manager/downloadManager.d.ts +1 -0
- package/dist/server/src/manager/downloadManager.js +6 -0
- package/dist/server/src/manager/downloadManager.js.map +1 -1
- package/dist/server/src/manager/notificationManager.d.ts +6 -0
- package/dist/server/src/manager/notificationManager.js +70 -3
- package/dist/server/src/manager/notificationManager.js.map +1 -1
- package/dist/server/src/mqtt/bridge.d.ts +7 -0
- package/dist/server/src/mqtt/bridge.js +92 -32
- package/dist/server/src/mqtt/bridge.js.map +1 -1
- package/dist/server/src/mqtt/ha-discovery.d.ts +1 -1
- package/dist/server/src/mqtt/ha-discovery.js +53 -8
- package/dist/server/src/mqtt/ha-discovery.js.map +1 -1
- package/dist/server/src/mqtt/manager.js +1 -1
- package/dist/server/src/mqtt/manager.js.map +1 -1
- package/dist/server/src/mqtt/topics.d.ts +3 -3
- package/dist/server/src/mqtt/topics.js +11 -10
- package/dist/server/src/mqtt/topics.js.map +1 -1
- package/dist/server/src/plugins/config-store.js +1 -1
- package/dist/server/src/plugins/config-store.js.map +1 -1
- package/dist/server/src/plugins/runtime/base.d.ts +1 -0
- package/dist/server/src/plugins/runtime/base.js +29 -6
- package/dist/server/src/plugins/runtime/base.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/child.js +5 -2
- package/dist/server/src/plugins/runtime/node/child.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/pluginApi.d.ts +2 -0
- package/dist/server/src/plugins/runtime/node/pluginApi.js +4 -1
- package/dist/server/src/plugins/runtime/node/pluginApi.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.d.ts +5 -13
- package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js +97 -179
- package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/proxy/deviceManager.d.ts +2 -1
- package/dist/server/src/plugins/runtime/node/proxy/deviceManager.js +26 -7
- package/dist/server/src/plugins/runtime/node/proxy/deviceManager.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/proxy/reconnect.d.ts +2 -0
- package/dist/server/src/plugins/runtime/node/proxy/reconnect.js +27 -0
- package/dist/server/src/plugins/runtime/node/proxy/reconnect.js.map +1 -0
- package/dist/server/src/plugins/runtime/node/proxy/sensor.d.ts +17 -3
- package/dist/server/src/plugins/runtime/node/proxy/sensor.js +61 -20
- package/dist/server/src/plugins/runtime/node/proxy/sensor.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/proxy/sensorManager.d.ts +18 -0
- package/dist/server/src/plugins/runtime/node/proxy/sensorManager.js +269 -0
- package/dist/server/src/plugins/runtime/node/proxy/sensorManager.js.map +1 -0
- package/dist/server/src/plugins/runtime/node/storage.d.ts +1 -1
- package/dist/server/src/plugins/runtime/node/storage.js +10 -7
- package/dist/server/src/plugins/runtime/node/storage.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/storageController.d.ts +5 -7
- package/dist/server/src/plugins/runtime/node/storageController.js +18 -43
- package/dist/server/src/plugins/runtime/node/storageController.js.map +1 -1
- package/dist/server/src/plugins/runtime/python/child.py +13 -7
- package/dist/server/src/plugins/runtime/python/namespaces.py +13 -19
- package/dist/server/src/plugins/runtime/python/plugin_api.py +10 -1
- package/dist/server/src/plugins/runtime/python/proxy/camera_device.py +130 -280
- package/dist/server/src/plugins/runtime/python/proxy/device_manager.py +26 -5
- package/dist/server/src/plugins/runtime/python/proxy/sensor.py +88 -21
- package/dist/server/src/plugins/runtime/python/proxy/sensor_manager.py +386 -0
- package/dist/server/src/plugins/runtime/python/storage.py +12 -9
- package/dist/server/src/plugins/runtime/python/storage_controller.py +18 -80
- package/dist/server/src/plugins/runtime/python/store.py +19 -95
- package/dist/server/src/plugins/runtime/python/typings.py +32 -9
- package/dist/server/src/plugins/store/layout.d.ts +1 -2
- package/dist/server/src/plugins/store/layout.js +9 -56
- package/dist/server/src/plugins/store/layout.js.map +1 -1
- package/dist/server/src/plugins/store/location.d.ts +2 -3
- package/dist/server/src/plugins/store/location.js +5 -13
- package/dist/server/src/plugins/store/location.js.map +1 -1
- package/dist/server/src/plugins/store/pluginStoreFile.d.ts +1 -2
- package/dist/server/src/plugins/store/pluginStoreFile.js +8 -15
- package/dist/server/src/plugins/store/pluginStoreFile.js.map +1 -1
- package/dist/server/src/plugins/worker.d.ts +2 -0
- package/dist/server/src/plugins/worker.js +26 -7
- package/dist/server/src/plugins/worker.js.map +1 -1
- package/dist/server/src/rpc/index.d.ts +2 -0
- package/dist/server/src/rpc/index.js +5 -0
- package/dist/server/src/rpc/index.js.map +1 -1
- package/dist/server/src/rpc/interfaces/sensor.d.ts +33 -16
- package/dist/server/src/rpc/namespaces.d.ts +17 -8
- package/dist/server/src/rpc/namespaces.js +20 -12
- package/dist/server/src/rpc/namespaces.js.map +1 -1
- package/dist/server/src/rpc/server.js +1 -0
- package/dist/server/src/rpc/server.js.map +1 -1
- package/dist/server/src/sensors/registry.d.ts +96 -0
- package/dist/server/src/sensors/registry.js +814 -0
- package/dist/server/src/sensors/registry.js.map +1 -0
- package/dist/server/src/{camera/sensors → sensors}/semantics.d.ts +1 -1
- package/dist/server/src/{camera/sensors → sensors}/semantics.js +4 -1
- package/dist/server/src/sensors/semantics.js.map +1 -0
- package/dist/server/src/sensors/sensor.d.ts +58 -0
- package/dist/server/src/{camera/sensors → sensors}/sensor.js +43 -32
- package/dist/server/src/sensors/sensor.js.map +1 -0
- package/dist/server/src/{camera/sensors → sensors}/types.d.ts +2 -0
- package/dist/server/src/{camera/sensors → sensors}/types.js +9 -0
- package/dist/server/src/sensors/types.js.map +1 -0
- package/dist/server/src/{camera/sensors → sensors}/virtual.d.ts +4 -6
- package/dist/server/src/{camera/sensors → sensors}/virtual.js +10 -56
- package/dist/server/src/sensors/virtual.js.map +1 -0
- package/dist/server/src/services/mdns/index.js +4 -0
- package/dist/server/src/services/mdns/index.js.map +1 -1
- package/package.json +11 -11
- package/dist/interface/assets/404-0d936klL.js +0 -1
- package/dist/interface/assets/About-BMwYrGrl.js +0 -1
- package/dist/interface/assets/Adminpanel-DBsOmAuo.js +0 -1
- package/dist/interface/assets/Automation-BLndVfqR.js +0 -3
- package/dist/interface/assets/AutomationImport-Ba33juY0.js +0 -2
- package/dist/interface/assets/AutomationStore-Bjf1x7go.js +0 -2
- package/dist/interface/assets/AutomationStoreDetail-Ko3n3U1U.js +0 -2
- package/dist/interface/assets/Automations-BfC8bvkT.js +0 -2
- package/dist/interface/assets/Camera-BYDPeH6d.js +0 -2
- package/dist/interface/assets/CameraConsole-pVCj1xXI.js +0 -7
- package/dist/interface/assets/Cameras-DdokAe_Q.js +0 -652
- package/dist/interface/assets/Camview-DmuGSzal.js +0 -1
- package/dist/interface/assets/Config-DvVqB0_Y.js +0 -2
- package/dist/interface/assets/ConfigActionDelay-B1JjI6bg.js +0 -1
- package/dist/interface/assets/ConfigActionHttp-BzGIbeVo.js +0 -1
- package/dist/interface/assets/ConfigActionImageInput-C6m2-s8z.js +0 -1
- package/dist/interface/assets/ConfigActionMqtt-ByZNQKsg.js +0 -1
- package/dist/interface/assets/ConfigActionNotification-YmdMddoN.js +0 -1
- package/dist/interface/assets/ConfigActionNotificationControl-2hWDRBpq.js +0 -1
- package/dist/interface/assets/ConfigActionOutput-D9k1-jfI.js +0 -1
- package/dist/interface/assets/ConfigActionPlugin-DjD_94EX.js +0 -1
- package/dist/interface/assets/ConfigActionSensor-fak8jYSC.js +0 -1
- package/dist/interface/assets/ConfigActionSnapshot-mwEHXqyk.js +0 -1
- package/dist/interface/assets/ConfigActionVariable-kBxNfyOV.js +0 -1
- package/dist/interface/assets/ConfigConditionIfElse-CkjmImTD.js +0 -1
- package/dist/interface/assets/ConfigConditionSensorState-FE3mFjRe.js +0 -1
- package/dist/interface/assets/ConfigConditionSwitch-msqWizIt.js +0 -1
- package/dist/interface/assets/ConfigConditionTime-ifPV135b.js +0 -1
- package/dist/interface/assets/ConfigSensorValueInput-Bg3SEbSh.js +0 -1
- package/dist/interface/assets/ConfigTriggerGeofence-CemaUwl5.js +0 -1
- package/dist/interface/assets/ConfigTriggerManual-DWuiq7PC.js +0 -1
- package/dist/interface/assets/ConfigTriggerMqtt-DxAoDh2Z.js +0 -1
- package/dist/interface/assets/ConfigTriggerSchedule-DDqgMGvp.js +0 -1
- package/dist/interface/assets/ConfigTriggerSensor-M6bXqz4k.js +0 -1
- package/dist/interface/assets/ConfigTriggerWebhook-CxOXgcJi.js +0 -1
- package/dist/interface/assets/Console-CMuW2_8s.js +0 -1
- package/dist/interface/assets/CuiAutomationRunsDialog-yh1qHzmS.js +0 -1
- package/dist/interface/assets/CuiBottomSheet-BshiVWqw.js +0 -1
- package/dist/interface/assets/CuiBottomSheet-DSNyVg5P.js +0 -1
- package/dist/interface/assets/CuiCameraPipCard-Cmk0jl6M.js +0 -1
- package/dist/interface/assets/CuiCameraRecordings-KU1wIai4.js +0 -1
- package/dist/interface/assets/CuiCameraShares-BoR3YQWj.js +0 -1
- package/dist/interface/assets/CuiCameraTable-BRPBqU8V.js +0 -2
- package/dist/interface/assets/CuiDataTable-BGY4VBtv.js +0 -1
- package/dist/interface/assets/CuiList-BSOMR296.js +0 -1
- package/dist/interface/assets/CuiMarkdownContent-DEMo42iT.js +0 -1
- package/dist/interface/assets/CuiMarkdownContent-Xn_VHwym.js +0 -1
- package/dist/interface/assets/CuiPluginCard-CgJb8B1W.js +0 -2
- package/dist/interface/assets/CuiPluginOAuthButton-XpEyqoRm.js +0 -2
- package/dist/interface/assets/CuiQRCode-QBkbmvRA.js +0 -1
- package/dist/interface/assets/CuiRecordingsGrid-CuEl_hhu.js +0 -1
- package/dist/interface/assets/CuiSchema-D_cg-H5i.js +0 -1
- package/dist/interface/assets/CuiTopNavbarItem-CXijnkK9.js +0 -1
- package/dist/interface/assets/Faces-C95mlWaW.js +0 -1
- package/dist/interface/assets/FirstSteps-Cpbg7fng.js +0 -1
- package/dist/interface/assets/Instances-BgJtM1Xl.js +0 -1
- package/dist/interface/assets/Logs-BWXYqm5T.js +0 -6
- package/dist/interface/assets/Menu-BO9Zjy1w.js +0 -1
- package/dist/interface/assets/OAuthDeviceFlow-NnwqdmBM.js +0 -1
- package/dist/interface/assets/Plugin-DQq3xjhe.js +0 -1
- package/dist/interface/assets/PluginConsole-BTsVAsKf.js +0 -7
- package/dist/interface/assets/PluginDetail-CTyzzZVU.js +0 -2
- package/dist/interface/assets/PluginSchema-Bn3pHjQA.js +0 -1
- package/dist/interface/assets/PluginSearch-DbXCyUF0.js +0 -1
- package/dist/interface/assets/PluginSearch-z0z8Z1gP.js +0 -2
- package/dist/interface/assets/Plugins-Cy7e-ty2.js +0 -1
- package/dist/interface/assets/Recordings-CWBpGEUf.js +0 -1
- package/dist/interface/assets/Settings-CUIORSmm.js +0 -1
- package/dist/interface/assets/SettingsAccount-CeJBKpzp.js +0 -1
- package/dist/interface/assets/SettingsAccount-CnwVrQx1.js +0 -1
- package/dist/interface/assets/SettingsAppearance-BraaC0WF.js +0 -1
- package/dist/interface/assets/SettingsAppearance-CZrOTBki.js +0 -1
- package/dist/interface/assets/SettingsBackup-y9mb8XZZ.js +0 -1
- package/dist/interface/assets/SettingsList-DsKncveQ.js +0 -1
- package/dist/interface/assets/SettingsMqtt-DTyyctmQ.js +0 -1
- package/dist/interface/assets/SettingsNotifications-SFMt4Yuj.js +0 -2
- package/dist/interface/assets/SettingsPermissions-CktJaQzL.js +0 -1
- package/dist/interface/assets/SettingsRecordings-Bqguyt6u.js +0 -1
- package/dist/interface/assets/SettingsRemote-CTv7bb4g.js +0 -1
- package/dist/interface/assets/SettingsSystem-CkCnB34r.js +0 -2
- package/dist/interface/assets/SettingsUsers-D8LAGd6F.js +0 -1
- package/dist/interface/assets/Terminal-DaR9Ur0_.js +0 -4
- package/dist/interface/assets/VariableInput-D0TP_Lmo.js +0 -1
- package/dist/interface/assets/VariableSuggestions--vq7928F.js +0 -1
- package/dist/interface/assets/VersionsHandler-D9GDdcXr.js +0 -7
- package/dist/interface/assets/Workers-CUyRzwJG.js +0 -2
- package/dist/interface/assets/ace-DYqf8ZN7.js +0 -1
- package/dist/interface/assets/alert-outline-BUvdNY2J.js +0 -1
- package/dist/interface/assets/api-DxrxNyIH.js +0 -2
- package/dist/interface/assets/api-VZ_wVUpU.css +0 -2
- package/dist/interface/assets/arrow-left-LdfKbcre.js +0 -1
- package/dist/interface/assets/arrow-right-outline-BbTEhBJq.js +0 -1
- package/dist/interface/assets/automationBlueprint-DMjszOs4.js +0 -1
- package/dist/interface/assets/automations-51-JMUWD.js +0 -1
- package/dist/interface/assets/check-circle-D-utE_P9.js +0 -1
- package/dist/interface/assets/chevron-down-OEjMpuec.js +0 -1
- package/dist/interface/assets/chevron-right-B3nxd9UE.js +0 -1
- package/dist/interface/assets/cloudHandoff-BktPB9rt.js +0 -1
- package/dist/interface/assets/copy-BvSzmsFs.js +0 -1
- package/dist/interface/assets/delete-B9BZTgya.js +0 -1
- package/dist/interface/assets/dist-qdWlJrr0.js +0 -1
- package/dist/interface/assets/download-Dp_ssGIE.js +0 -1
- package/dist/interface/assets/esm-9VMgxuPI.js +0 -1
- package/dist/interface/assets/esm-B69zS8aI.js +0 -1
- package/dist/interface/assets/esm-BF94InGP.js +0 -1
- package/dist/interface/assets/esm-BHdK6hkk.js +0 -1
- package/dist/interface/assets/esm-BYm8JT8N.js +0 -1
- package/dist/interface/assets/esm-BwCmHX2G.js +0 -1
- package/dist/interface/assets/esm-CL6t-XYT.js +0 -1
- package/dist/interface/assets/esm-CXstRMXa.js +0 -1
- package/dist/interface/assets/esm-Ckb9rjlL.js +0 -1
- package/dist/interface/assets/esm-D4insKbc.js +0 -1
- package/dist/interface/assets/esm-DiReJ8YS.js +0 -1
- package/dist/interface/assets/esm-Dt_Neag0.js +0 -1
- package/dist/interface/assets/esm-GspmWlKf.js +0 -1
- package/dist/interface/assets/esm-eezqpB2a.js +0 -1
- package/dist/interface/assets/flowSchema-Ckr7CEbZ.js +0 -1
- package/dist/interface/assets/home-DL94781-.js +0 -1
- package/dist/interface/assets/main-BxM81wMi.css +0 -1
- package/dist/interface/assets/main-DOjghmGX.js +0 -3
- package/dist/interface/assets/mqtt-COazyb4A.js +0 -1
- package/dist/interface/assets/native-WiRjRKUS.js +0 -1
- package/dist/interface/assets/native-hhip9y-E.js +0 -1
- package/dist/interface/assets/nodeDefinitions-CPyyuw1P.js +0 -1
- package/dist/interface/assets/plugin-DIVM640y.js +0 -1
- package/dist/interface/assets/plus-CTzaBaTz.js +0 -1
- package/dist/interface/assets/power-CvKGepBP.js +0 -1
- package/dist/interface/assets/rolldown-runtime-DAXXjFlN.js +0 -1
- package/dist/interface/assets/round-restart-alt-D3iswthu.js +0 -1
- package/dist/interface/assets/trash-can-outline-HvqPHpF7.js +0 -1
- package/dist/interface/assets/types-CDJiWcQ7.js +0 -1
- package/dist/interface/assets/upload-B6yqOWqz.js +0 -1
- package/dist/interface/assets/useBackupRestore-QuXkc5ZG.js +0 -1
- package/dist/interface/assets/useCameraOptions-D5-bI-e6.js +0 -1
- package/dist/interface/assets/useLogsSocket-BlAo-xcw.js +0 -5
- package/dist/interface/assets/useServerRestart-DctcFWWh.js +0 -1
- package/dist/interface/assets/useUserOptions-nuBRgAEk.js +0 -1
- package/dist/interface/assets/vendor-ace-CrklN-bc.js +0 -1085
- package/dist/interface/assets/vendor-cameraui-B_OCKNGw.js +0 -2040
- package/dist/interface/assets/vendor-capacitor-D6T-f6Q_.js +0 -2
- package/dist/interface/assets/vendor-chart-DpsXMlB-.js +0 -3
- package/dist/interface/assets/vendor-core-zLmLhSHM.js +0 -1
- package/dist/interface/assets/vendor-draggabilly-OrLwQbim.js +0 -1
- package/dist/interface/assets/vendor-gridstack-C6VKsm_r.js +0 -3
- package/dist/interface/assets/vendor-markdown-_OBaDsnU.js +0 -15
- package/dist/interface/assets/vendor-nfBMzqgY.js +0 -22
- package/dist/interface/assets/vendor-vueflow-B1MUSE71.js +0 -26
- package/dist/interface/assets/vendor-xterm-IIYDrBG1.js +0 -142
- package/dist/interface/assets/vendor-zod-BaT-dXMv.js +0 -127
- package/dist/interface/assets/web-B-SlpbxK.js +0 -1
- package/dist/interface/assets/web-B6leYIzJ.js +0 -1
- package/dist/interface/assets/web-BLDe3Kn0.js +0 -1
- package/dist/interface/assets/web-BT-51W2W.js +0 -1
- package/dist/interface/assets/web-BjKL51lK-DHLvmMLr.js +0 -1
- package/dist/interface/assets/web-BpRU7MbT.js +0 -1
- package/dist/interface/assets/web-CiaJvmq8.js +0 -1
- package/dist/interface/assets/web-Cnkt61og.js +0 -1
- package/dist/interface/assets/web-CzhM-YH1.js +0 -1
- package/dist/interface/assets/web-Da5rcZ2Q.js +0 -1
- package/dist/interface/assets/web-DdZjFuTb.js +0 -1
- package/dist/interface/assets/web-DnHj9sl9.js +0 -1
- package/dist/interface/assets/web-E4Ew4Xhj.js +0 -1
- package/dist/interface/assets/web-q63OEDhG.js +0 -1
- package/dist/interface/assets/workbox-window.prod.es5-BMiTt6Ad.js +0 -1
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/sensor_triggers.py +0 -4
- package/dist/server/src/api/controllers/virtualsensors.controller.d.ts +0 -11
- package/dist/server/src/api/controllers/virtualsensors.controller.js +0 -61
- package/dist/server/src/api/controllers/virtualsensors.controller.js.map +0 -1
- package/dist/server/src/api/routes/virtualsensors.routes.d.ts +0 -2
- package/dist/server/src/api/routes/virtualsensors.routes.js +0 -63
- package/dist/server/src/api/routes/virtualsensors.routes.js.map +0 -1
- package/dist/server/src/api/schemas/virtualsensors.schema.js +0 -14
- package/dist/server/src/api/schemas/virtualsensors.schema.js.map +0 -1
- package/dist/server/src/api/services/virtualsensors.service.d.ts +0 -20
- package/dist/server/src/api/services/virtualsensors.service.js +0 -151
- package/dist/server/src/api/services/virtualsensors.service.js.map +0 -1
- package/dist/server/src/camera/sensors/semantics.js.map +0 -1
- package/dist/server/src/camera/sensors/sensor.d.ts +0 -34
- package/dist/server/src/camera/sensors/sensor.js.map +0 -1
- package/dist/server/src/camera/sensors/stable-id.d.ts +0 -2
- package/dist/server/src/camera/sensors/stable-id.js +0 -17
- package/dist/server/src/camera/sensors/stable-id.js.map +0 -1
- package/dist/server/src/camera/sensors/types.js.map +0 -1
- package/dist/server/src/camera/sensors/virtual.js.map +0 -1
- package/dist/server/src/plugins/runtime/python/store_migrate.py +0 -59
- package/dist/server/src/plugins/store/migrate.d.ts +0 -1
- package/dist/server/src/plugins/store/migrate.js +0 -22
- package/dist/server/src/plugins/store/migrate.js.map +0 -1
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import
|
|
3
|
+
from typing import (
|
|
4
|
+
TYPE_CHECKING,
|
|
5
|
+
Any,
|
|
6
|
+
Literal,
|
|
7
|
+
NotRequired,
|
|
8
|
+
Protocol,
|
|
9
|
+
TypedDict,
|
|
10
|
+
runtime_checkable,
|
|
11
|
+
)
|
|
4
12
|
|
|
5
13
|
if TYPE_CHECKING:
|
|
6
14
|
from ..camera import CameraDevice
|
|
7
15
|
from ..observable import Observable
|
|
8
16
|
from ..plugin import BasePlugin, PluginInfo, PluginInterface
|
|
9
17
|
from ..plugin.notifier import Notification
|
|
18
|
+
from ..sensor.base import Sensor
|
|
10
19
|
|
|
11
20
|
|
|
12
21
|
class CoreManagerEvent(TypedDict):
|
|
@@ -50,6 +59,18 @@ class CoreManager(Protocol):
|
|
|
50
59
|
```
|
|
51
60
|
"""
|
|
52
61
|
|
|
62
|
+
@property
|
|
63
|
+
def onEvent(self) -> Observable[CoreManagerEvent]:
|
|
64
|
+
"""
|
|
65
|
+
Observable for core manager events (e.g. cloud account changes).
|
|
66
|
+
|
|
67
|
+
Example:
|
|
68
|
+
```python
|
|
69
|
+
api.coreManager.onEvent.subscribe(lambda e: print(e["type"], e["data"]))
|
|
70
|
+
```
|
|
71
|
+
"""
|
|
72
|
+
...
|
|
73
|
+
|
|
53
74
|
async def connectToPlugin(self, pluginName: str) -> BasePlugin | None:
|
|
54
75
|
"""
|
|
55
76
|
Connect to another plugin by name.
|
|
@@ -107,15 +128,57 @@ class CoreManager(Protocol):
|
|
|
107
128
|
"""
|
|
108
129
|
...
|
|
109
130
|
|
|
110
|
-
|
|
111
|
-
|
|
131
|
+
|
|
132
|
+
@runtime_checkable
|
|
133
|
+
class SensorManager(Protocol):
|
|
134
|
+
"""
|
|
135
|
+
Sensor manager for standalone sensors: devices that are not part of a
|
|
136
|
+
camera's hardware (smart plugs, imported smart-home devices, hubs).
|
|
137
|
+
|
|
138
|
+
The host persists each sensor as its own entity: the user assigns it to
|
|
139
|
+
cameras, renames it and decides whether it is exported or not.
|
|
140
|
+
Sensors that belong to a camera's hardware are registered via
|
|
141
|
+
``camera.addSensor()`` instead.
|
|
142
|
+
|
|
143
|
+
Accessed via `api.sensorManager` in plugins.
|
|
144
|
+
|
|
145
|
+
Example:
|
|
146
|
+
```python
|
|
147
|
+
lock = LockControl("Front Door", native_id="lock.front_door")
|
|
148
|
+
await api.sensorManager.addSensor(lock)
|
|
149
|
+
```
|
|
150
|
+
"""
|
|
151
|
+
|
|
152
|
+
async def addSensor(self, sensor: Sensor[Any, Any, Any]) -> None:
|
|
112
153
|
"""
|
|
113
|
-
|
|
154
|
+
Register a standalone sensor with the host.
|
|
114
155
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
156
|
+
The host reconciles it against the persisted entity by
|
|
157
|
+
``(pluginId, nativeId)``, or by ``(type, name)`` when no native_id is
|
|
158
|
+
set, and replaces the sensor's provisional ``id`` with the persistent
|
|
159
|
+
entity id. Camera assignment is the user's decision and happens in the UI.
|
|
160
|
+
|
|
161
|
+
Args:
|
|
162
|
+
sensor: Sensor instance to register
|
|
163
|
+
"""
|
|
164
|
+
...
|
|
165
|
+
|
|
166
|
+
async def removeSensor(self, sensor: Sensor[Any, Any, Any]) -> None:
|
|
167
|
+
"""
|
|
168
|
+
Unregister a sensor. The persisted entity stays (shows disconnected)
|
|
169
|
+
unless the user deletes it in the UI.
|
|
170
|
+
|
|
171
|
+
Args:
|
|
172
|
+
sensor: Sensor instance to unregister
|
|
173
|
+
"""
|
|
174
|
+
...
|
|
175
|
+
|
|
176
|
+
def getSensors(self) -> list[Sensor[Any, Any, Any]]:
|
|
177
|
+
"""
|
|
178
|
+
Get all sensors this plugin has registered in this session.
|
|
179
|
+
|
|
180
|
+
Returns:
|
|
181
|
+
Sensor instances owned by this plugin
|
|
119
182
|
"""
|
|
120
183
|
...
|
|
121
184
|
|
|
@@ -124,7 +187,7 @@ class CoreManager(Protocol):
|
|
|
124
187
|
class DeviceManager(Protocol):
|
|
125
188
|
"""
|
|
126
189
|
Device manager interface for camera operations.
|
|
127
|
-
Provides methods to
|
|
190
|
+
Provides methods to push discovered cameras and get camera devices.
|
|
128
191
|
|
|
129
192
|
Accessed via `api.deviceManager` in plugins.
|
|
130
193
|
|
|
@@ -143,7 +206,8 @@ class DeviceManager(Protocol):
|
|
|
143
206
|
"""
|
|
144
207
|
Push discovered cameras to the backend.
|
|
145
208
|
Use this when cameras are discovered asynchronously (e.g., after cloud login).
|
|
146
|
-
Cameras
|
|
209
|
+
Cameras become visible in the UI without waiting for the next poll.
|
|
210
|
+
Only available for CameraController and CameraAndSensorProvider plugins.
|
|
147
211
|
|
|
148
212
|
Args:
|
|
149
213
|
cameras: List of discovered cameras to push
|
|
@@ -196,21 +260,21 @@ class CreateDownloadOptions(TypedDict):
|
|
|
196
260
|
"""Absolute path to the file on disk."""
|
|
197
261
|
|
|
198
262
|
filename: NotRequired[str]
|
|
199
|
-
"""Filename for Content-Disposition header."""
|
|
263
|
+
"""Filename for Content-Disposition header (defaults to basename of filePath)."""
|
|
200
264
|
|
|
201
265
|
mimeType: NotRequired[str]
|
|
202
|
-
"""MIME type for Content-Type header."""
|
|
266
|
+
"""MIME type for Content-Type header (defaults to application/octet-stream)."""
|
|
203
267
|
|
|
204
268
|
ttlMs: NotRequired[int]
|
|
205
|
-
"""Time-to-live in milliseconds."""
|
|
269
|
+
"""Time-to-live in milliseconds (defaults to 10 minutes)."""
|
|
206
270
|
|
|
207
271
|
cleanup: NotRequired[Literal["never", "on-expiry", "on-download"]]
|
|
208
272
|
"""When the file on disk is deleted (registry always expires at TTL).
|
|
209
273
|
|
|
210
274
|
- ``never`` (default): file persists; caller manages it.
|
|
211
275
|
- ``on-expiry``: deleted at TTL. Can be fetched N times during the
|
|
212
|
-
window
|
|
213
|
-
multiple devices
|
|
276
|
+
window, the right mode for notification images that fan out to
|
|
277
|
+
multiple devices or recipients.
|
|
214
278
|
- ``on-download``: deleted after first successful download OR on TTL,
|
|
215
279
|
whichever first. One-shot mode for things like backup exports."""
|
|
216
280
|
|
|
@@ -235,10 +299,10 @@ class DownloadToken(TypedDict):
|
|
|
235
299
|
publicUrl: str
|
|
236
300
|
"""Externally-reachable, session-less URL the server publishes for
|
|
237
301
|
out-of-band fetchers (push-notification image attachments, FCM / APNs
|
|
238
|
-
payloads, share recipients). Shape: ``<externalUrl>/api/download/<token
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
302
|
+
payloads, share recipients). Shape: ``<externalUrl>/api/download/<token>``,
|
|
303
|
+
where the token is the auth. Empty string when the server has no external
|
|
304
|
+
URL configured (LAN-only deployments); fall back to ``url`` for in-app
|
|
305
|
+
callers."""
|
|
242
306
|
|
|
243
307
|
expiresAt: int
|
|
244
308
|
"""Unix timestamp (ms) when the token expires."""
|
|
@@ -249,8 +313,8 @@ class DownloadManager(Protocol):
|
|
|
249
313
|
"""
|
|
250
314
|
Download manager interface for token-based file downloads.
|
|
251
315
|
|
|
252
|
-
|
|
253
|
-
|
|
316
|
+
Plugins register a file and get back a token URL. No JWT is involved, the
|
|
317
|
+
token itself is the auth.
|
|
254
318
|
|
|
255
319
|
Accessed via ``api.downloadManager`` in plugins.
|
|
256
320
|
|
|
@@ -310,11 +374,10 @@ class NotificationManager(Protocol):
|
|
|
310
374
|
"""
|
|
311
375
|
Notification manager interface for publishing notifications into the host.
|
|
312
376
|
|
|
313
|
-
Plugins call ``publish`` to ask the host to fan a Notification out to
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
calls from plugins without
|
|
377
|
+
Plugins call ``publish`` to ask the host to fan a Notification out to every
|
|
378
|
+
installed Notifier-plugin and the in-app UI. The host applies user settings
|
|
379
|
+
(master toggle, per-source toggle, quiet hours) and the publishing plugin's
|
|
380
|
+
declared capabilities; calls from plugins without
|
|
318
381
|
:attr:`PluginCapability.PublishNotifications` are silently dropped.
|
|
319
382
|
|
|
320
383
|
Accessed via ``api.notificationManager`` in plugins.
|
|
@@ -339,8 +402,7 @@ class NotificationManager(Protocol):
|
|
|
339
402
|
Notifier-plugin and the in-app UI.
|
|
340
403
|
|
|
341
404
|
Resolves once the publish was handed to the transport. Downstream
|
|
342
|
-
delivery is async and failures there never
|
|
343
|
-
propagate back here.
|
|
405
|
+
delivery is async and failures there never propagate back here.
|
|
344
406
|
|
|
345
407
|
Args:
|
|
346
408
|
notification: Notification payload to publish.
|
|
@@ -355,7 +417,7 @@ __all__ = [
|
|
|
355
417
|
"DeviceManager",
|
|
356
418
|
"DownloadManager",
|
|
357
419
|
"NotificationManager",
|
|
358
|
-
|
|
420
|
+
"SensorManager",
|
|
359
421
|
# Download types
|
|
360
422
|
"CreateDownloadOptions",
|
|
361
423
|
"CreateStreamDownloadOptions",
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
"""Lightweight reactive primitives for camera.ui.
|
|
2
|
-
|
|
3
|
-
Provides cold Observables, multicast Subjects (Subject, BehaviorSubject,
|
|
4
|
-
ReplaySubject) and a small set of composable operators for building
|
|
5
|
-
property-change notifications and event streams throughout the SDK.
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
1
|
from __future__ import annotations
|
|
9
2
|
|
|
10
3
|
import asyncio
|
|
@@ -36,15 +29,25 @@ class Disposable:
|
|
|
36
29
|
|
|
37
30
|
@property
|
|
38
31
|
def closed(self) -> bool:
|
|
32
|
+
"""Whether the subscription has already been disposed."""
|
|
39
33
|
return self._closed
|
|
40
34
|
|
|
41
35
|
def dispose(self) -> None:
|
|
36
|
+
"""Detach the listener and run the producer teardown. Disposing twice is a no-op.
|
|
37
|
+
|
|
38
|
+
Example:
|
|
39
|
+
```python
|
|
40
|
+
sub = sensor.onPropertyChanged.subscribe(handle)
|
|
41
|
+
sub.dispose()
|
|
42
|
+
```
|
|
43
|
+
"""
|
|
42
44
|
if self._closed:
|
|
43
45
|
return
|
|
44
46
|
self._closed = True
|
|
45
47
|
self._teardown()
|
|
46
48
|
|
|
47
49
|
def unsubscribe(self) -> None:
|
|
50
|
+
"""Alias for :meth:`dispose`, for rxjs-shaped call sites."""
|
|
48
51
|
self.dispose()
|
|
49
52
|
|
|
50
53
|
|
|
@@ -61,10 +64,38 @@ class Observable(Generic[T]):
|
|
|
61
64
|
self._subscribe_fn = subscribe_fn
|
|
62
65
|
|
|
63
66
|
def subscribe(self, callback: Callable[[T], None]) -> Disposable:
|
|
64
|
-
"""Start the producer for this subscriber and route emitted values to ``callback``.
|
|
67
|
+
"""Start the producer for this subscriber and route emitted values to ``callback``.
|
|
68
|
+
|
|
69
|
+
Args:
|
|
70
|
+
callback: Receiver invoked once per emitted value.
|
|
71
|
+
|
|
72
|
+
Returns:
|
|
73
|
+
Disposable that stops the stream and runs the producer teardown.
|
|
74
|
+
|
|
75
|
+
Example:
|
|
76
|
+
```python
|
|
77
|
+
sub = sensor.onPropertyChanged.subscribe(handle)
|
|
78
|
+
```
|
|
79
|
+
"""
|
|
65
80
|
return self._subscribe_fn(callback)
|
|
66
81
|
|
|
67
82
|
def pipe(self, *operators: OperatorFn) -> Observable[Any]:
|
|
83
|
+
"""Chain operators into a new Observable, each one fed by the previous.
|
|
84
|
+
|
|
85
|
+
Args:
|
|
86
|
+
operators: Operators applied left to right.
|
|
87
|
+
|
|
88
|
+
Returns:
|
|
89
|
+
Observable emitting the transformed values.
|
|
90
|
+
|
|
91
|
+
Example:
|
|
92
|
+
```python
|
|
93
|
+
sensor.onPropertyChanged.pipe(
|
|
94
|
+
filter_op(lambda e: e["property"] == "detected"),
|
|
95
|
+
map_op(lambda e: e["value"]),
|
|
96
|
+
).subscribe(handle)
|
|
97
|
+
```
|
|
98
|
+
"""
|
|
68
99
|
result: Observable[Any] = self
|
|
69
100
|
for op in operators:
|
|
70
101
|
result = op(result)
|
|
@@ -75,7 +106,23 @@ class Observable(Generic[T]):
|
|
|
75
106
|
on_next: Callable[[T], Awaitable[Any]] | None = None,
|
|
76
107
|
on_error: Callable[[Exception], Awaitable[Any]] | None = None,
|
|
77
108
|
) -> Disposable:
|
|
78
|
-
"""Subscribe
|
|
109
|
+
"""Subscribe with coroutine handlers. Each value spawns a task running ``on_next``.
|
|
110
|
+
|
|
111
|
+
A failing ``on_next`` disposes the subscription and hands the exception to
|
|
112
|
+
``on_error``.
|
|
113
|
+
|
|
114
|
+
Args:
|
|
115
|
+
on_next: Coroutine invoked per emitted value.
|
|
116
|
+
on_error: Coroutine invoked once with the first exception raised.
|
|
117
|
+
|
|
118
|
+
Returns:
|
|
119
|
+
Disposable that cancels the pending tasks and the subscription.
|
|
120
|
+
|
|
121
|
+
Example:
|
|
122
|
+
```python
|
|
123
|
+
sub = camera.onDetection.asubscribe(handle_detection)
|
|
124
|
+
```
|
|
125
|
+
"""
|
|
79
126
|
error_future: asyncio.Future[Exception] = asyncio.Future()
|
|
80
127
|
next_task: asyncio.Task[Any] | None = None
|
|
81
128
|
error_task: asyncio.Task[Any] | None = None
|
|
@@ -113,7 +160,7 @@ class Observable(Generic[T]):
|
|
|
113
160
|
return Disposable(cancel_subscription)
|
|
114
161
|
|
|
115
162
|
async def __aiter__(self) -> AsyncIterator[T]:
|
|
116
|
-
"""
|
|
163
|
+
"""Iterate emitted values. Values are buffered in a queue of 100; overflow is dropped."""
|
|
117
164
|
queue: asyncio.Queue[T | None] = asyncio.Queue(maxsize=100)
|
|
118
165
|
done = False
|
|
119
166
|
|
|
@@ -152,15 +199,27 @@ class Subject(Generic[T]):
|
|
|
152
199
|
|
|
153
200
|
@property
|
|
154
201
|
def closed(self) -> bool:
|
|
202
|
+
"""Whether :meth:`complete` has already run."""
|
|
155
203
|
return self._completed
|
|
156
204
|
|
|
157
205
|
def next(self, value: T) -> None:
|
|
206
|
+
"""Dispatch a value to every current subscriber, synchronously. No-op once completed.
|
|
207
|
+
|
|
208
|
+
Args:
|
|
209
|
+
value: Value to multicast.
|
|
210
|
+
|
|
211
|
+
Example:
|
|
212
|
+
```python
|
|
213
|
+
subject.next("armed")
|
|
214
|
+
```
|
|
215
|
+
"""
|
|
158
216
|
if self._completed:
|
|
159
217
|
return
|
|
160
218
|
for cb in list(self._subscribers):
|
|
161
219
|
cb(value)
|
|
162
220
|
|
|
163
221
|
def complete(self) -> None:
|
|
222
|
+
"""Release every subscriber and lock the Subject. Later :meth:`next` calls are ignored."""
|
|
164
223
|
if self._completed:
|
|
165
224
|
return
|
|
166
225
|
self._completed = True
|
|
@@ -170,29 +229,53 @@ class Subject(Generic[T]):
|
|
|
170
229
|
for handler in handlers:
|
|
171
230
|
handler()
|
|
172
231
|
|
|
173
|
-
def _on_complete(self, handler: Callable[[], None]) -> Disposable:
|
|
174
|
-
"""Register a handler invoked once when this Subject completes. Runs
|
|
175
|
-
immediately if already completed. Used by :func:`first_value_from`.
|
|
176
|
-
"""
|
|
177
|
-
if self._completed:
|
|
178
|
-
handler()
|
|
179
|
-
return Disposable(lambda: None)
|
|
180
|
-
self._complete_handlers.add(handler)
|
|
181
|
-
return Disposable(lambda: self._complete_handlers.discard(handler))
|
|
182
|
-
|
|
183
232
|
def subscribe(self, callback: Callable[[T], None]) -> Disposable:
|
|
233
|
+
"""Register ``callback`` for every following value.
|
|
234
|
+
|
|
235
|
+
Args:
|
|
236
|
+
callback: Receiver invoked once per emitted value.
|
|
237
|
+
|
|
238
|
+
Returns:
|
|
239
|
+
Disposable that unregisters the callback.
|
|
240
|
+
"""
|
|
184
241
|
if self._completed:
|
|
185
242
|
return Disposable(lambda: None)
|
|
186
243
|
self._subscribers.add(callback)
|
|
187
244
|
return Disposable(lambda: self._subscribers.discard(callback))
|
|
188
245
|
|
|
189
246
|
def pipe(self, *operators: OperatorFn) -> Observable[Any]:
|
|
247
|
+
"""Chain operators onto this Subject's read-only view.
|
|
248
|
+
|
|
249
|
+
Args:
|
|
250
|
+
operators: Operators applied left to right.
|
|
251
|
+
|
|
252
|
+
Returns:
|
|
253
|
+
Observable emitting the transformed values.
|
|
254
|
+
"""
|
|
190
255
|
return self.as_observable().pipe(*operators)
|
|
191
256
|
|
|
192
257
|
def as_observable(self) -> Observable[T]:
|
|
193
|
-
"""Return a read-only :class:`Observable` that mirrors this Subject without exposing :meth:`next` or :meth:`complete`.
|
|
258
|
+
"""Return a read-only :class:`Observable` that mirrors this Subject without exposing :meth:`next` or :meth:`complete`.
|
|
259
|
+
|
|
260
|
+
Returns:
|
|
261
|
+
Read-only view of this Subject.
|
|
262
|
+
|
|
263
|
+
Example:
|
|
264
|
+
```python
|
|
265
|
+
def on_event(self) -> Observable[Event]:
|
|
266
|
+
return self._events.as_observable()
|
|
267
|
+
```
|
|
268
|
+
"""
|
|
194
269
|
return Observable(lambda cb: self.subscribe(cb))
|
|
195
270
|
|
|
271
|
+
def _on_complete(self, handler: Callable[[], None]) -> Disposable:
|
|
272
|
+
"""Register a handler run once on completion, immediately if already completed."""
|
|
273
|
+
if self._completed:
|
|
274
|
+
handler()
|
|
275
|
+
return Disposable(lambda: None)
|
|
276
|
+
self._complete_handlers.add(handler)
|
|
277
|
+
return Disposable(lambda: self._complete_handlers.discard(handler))
|
|
278
|
+
|
|
196
279
|
|
|
197
280
|
class BehaviorSubject(Subject[T]):
|
|
198
281
|
"""Subject seeded with an initial value that always remembers the latest emission.
|
|
@@ -207,18 +290,37 @@ class BehaviorSubject(Subject[T]):
|
|
|
207
290
|
super().__init__()
|
|
208
291
|
self._value = initial_value
|
|
209
292
|
|
|
293
|
+
@property
|
|
294
|
+
def value(self) -> T:
|
|
295
|
+
"""The most recently emitted value."""
|
|
296
|
+
return self._value
|
|
297
|
+
|
|
210
298
|
def next(self, value: T) -> None:
|
|
299
|
+
"""Store ``value`` as the current one and dispatch it to every subscriber.
|
|
300
|
+
|
|
301
|
+
Args:
|
|
302
|
+
value: New current value.
|
|
303
|
+
"""
|
|
211
304
|
self._value = value
|
|
212
305
|
super().next(value)
|
|
213
306
|
|
|
214
307
|
def get_value(self) -> T:
|
|
215
|
-
|
|
308
|
+
"""Read the current value without subscribing.
|
|
216
309
|
|
|
217
|
-
|
|
218
|
-
|
|
310
|
+
Returns:
|
|
311
|
+
The most recently emitted value.
|
|
312
|
+
"""
|
|
219
313
|
return self._value
|
|
220
314
|
|
|
221
315
|
def subscribe(self, callback: Callable[[T], None]) -> Disposable:
|
|
316
|
+
"""Register ``callback`` and invoke it immediately with the current value.
|
|
317
|
+
|
|
318
|
+
Args:
|
|
319
|
+
callback: Receiver invoked once per emitted value.
|
|
320
|
+
|
|
321
|
+
Returns:
|
|
322
|
+
Disposable that unregisters the callback.
|
|
323
|
+
"""
|
|
222
324
|
disposable = super().subscribe(callback)
|
|
223
325
|
if not self.closed:
|
|
224
326
|
callback(self._value)
|
|
@@ -226,11 +328,10 @@ class BehaviorSubject(Subject[T]):
|
|
|
226
328
|
|
|
227
329
|
|
|
228
330
|
class ReplaySubject(Subject[T]):
|
|
229
|
-
"""Subject that buffers
|
|
230
|
-
(configurable, defaults to ``1``).
|
|
331
|
+
"""Subject that buffers the last ``buffer_size`` values, 1 by default.
|
|
231
332
|
|
|
232
|
-
New subscribers immediately receive every buffered value in order
|
|
233
|
-
|
|
333
|
+
New subscribers immediately receive every buffered value in order before
|
|
334
|
+
continuing with live emissions.
|
|
234
335
|
"""
|
|
235
336
|
|
|
236
337
|
def __init__(self, buffer_size: int = 1) -> None:
|
|
@@ -239,6 +340,11 @@ class ReplaySubject(Subject[T]):
|
|
|
239
340
|
self._buffer_size = buffer_size
|
|
240
341
|
|
|
241
342
|
def next(self, value: T) -> None:
|
|
343
|
+
"""Append ``value`` to the buffer, dropping the oldest entry past ``buffer_size``, then dispatch it.
|
|
344
|
+
|
|
345
|
+
Args:
|
|
346
|
+
value: Value to buffer and multicast.
|
|
347
|
+
"""
|
|
242
348
|
if self.closed:
|
|
243
349
|
return
|
|
244
350
|
self._buffer.append(value)
|
|
@@ -247,14 +353,19 @@ class ReplaySubject(Subject[T]):
|
|
|
247
353
|
super().next(value)
|
|
248
354
|
|
|
249
355
|
def subscribe(self, callback: Callable[[T], None]) -> Disposable:
|
|
356
|
+
"""Replay the buffered values in order, then register ``callback`` for live emissions.
|
|
357
|
+
|
|
358
|
+
Args:
|
|
359
|
+
callback: Receiver invoked once per emitted value.
|
|
360
|
+
|
|
361
|
+
Returns:
|
|
362
|
+
Disposable that unregisters the callback.
|
|
363
|
+
"""
|
|
250
364
|
for value in self._buffer:
|
|
251
365
|
callback(value)
|
|
252
366
|
return super().subscribe(callback)
|
|
253
367
|
|
|
254
368
|
|
|
255
|
-
# ── Operators ──────────────────────────────────────────────────────
|
|
256
|
-
|
|
257
|
-
|
|
258
369
|
def _default_comparator(a: Any, b: Any) -> bool:
|
|
259
370
|
return cast(bool, a == b)
|
|
260
371
|
|
|
@@ -479,17 +590,14 @@ def merge_map(project: Callable[[Any, int], list[Any]]) -> OperatorFn:
|
|
|
479
590
|
return operator
|
|
480
591
|
|
|
481
592
|
|
|
482
|
-
# ── Utilities ──────────────────────────────────────────────────────
|
|
483
|
-
|
|
484
|
-
|
|
485
593
|
async def first_value_from(observable: Observable[T] | Subject[T]) -> T:
|
|
486
594
|
"""Subscribe to the source and return its first emitted value as a
|
|
487
595
|
coroutine, then dispose the subscription.
|
|
488
596
|
|
|
489
597
|
Raises ``RuntimeError`` if the source completes before emitting (Subject,
|
|
490
598
|
BehaviorSubject, ReplaySubject). A bare :class:`Observable` has no
|
|
491
|
-
completion signal, so the coroutine stays pending until it emits
|
|
492
|
-
such calls with :func:`asyncio.wait_for`
|
|
599
|
+
completion signal, so the coroutine stays pending until it emits; guard
|
|
600
|
+
such calls with :func:`asyncio.wait_for` or another timeout.
|
|
493
601
|
|
|
494
602
|
Args:
|
|
495
603
|
observable: Source observable or subject to read once.
|
|
@@ -530,7 +638,7 @@ async def first_value_from(observable: Observable[T] | Subject[T]) -> T:
|
|
|
530
638
|
|
|
531
639
|
sub = observable.subscribe(on_next)
|
|
532
640
|
|
|
533
|
-
#
|
|
641
|
+
# already resolved synchronously (BehaviorSubject / ReplaySubject)
|
|
534
642
|
if future.done():
|
|
535
643
|
cleanup()
|
|
536
644
|
return await future
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from .api import API_EVENT, APIListener, PluginAPI
|
|
4
|
-
from .contract import
|
|
4
|
+
from .contract import (
|
|
5
|
+
PROTOCOL_LEVEL,
|
|
6
|
+
PluginCapability,
|
|
7
|
+
PluginContract,
|
|
8
|
+
PluginInfo,
|
|
9
|
+
PluginInterface,
|
|
10
|
+
PluginRole,
|
|
11
|
+
PythonVersion,
|
|
12
|
+
)
|
|
5
13
|
from .helper import (
|
|
6
14
|
can_create_cameras,
|
|
7
15
|
can_provide_sensors_to_any_cameras,
|
|
@@ -52,6 +60,7 @@ from .oauth import (
|
|
|
52
60
|
)
|
|
53
61
|
|
|
54
62
|
__all__ = [
|
|
63
|
+
"PROTOCOL_LEVEL",
|
|
55
64
|
"PythonVersion",
|
|
56
65
|
"PluginInfo",
|
|
57
66
|
"APIListener",
|