@camera.ui/server 2.0.4 → 2.0.6
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-B8P9h05I.js → 404-ekmIpFW1.js} +1 -1
- package/dist/interface/assets/About-CvajU0JT.js +1 -0
- package/dist/interface/assets/Adminpanel-DrKaMQqd.js +1 -0
- package/dist/interface/assets/Automation-Dn1ZXmhy.js +2 -0
- package/dist/interface/assets/AutomationImport-U7r6BcW_.js +2 -0
- package/dist/interface/assets/{AutomationStore-qLsO1tHb.js → AutomationStore-DZBtLuIs.js} +2 -2
- package/dist/interface/assets/{AutomationStoreDetail-BAW2nfPd.js → AutomationStoreDetail-BXpOtPMl.js} +2 -2
- package/dist/interface/assets/{Automations-CUCVYZSr.js → Automations-DGHcWJ0h.js} +2 -2
- package/dist/interface/assets/Camera-CVJ-46dw.js +2 -0
- package/dist/interface/assets/Camera-Da5zEitE.css +1 -0
- package/dist/interface/assets/{CameraConsole-t6nY7h-V.js → CameraConsole-DPI9LjVK.js} +1 -1
- package/dist/interface/assets/Cameras-2kM76WUB.css +1 -0
- package/dist/interface/assets/Cameras-DsZ7VINe.js +652 -0
- package/dist/interface/assets/Camview-Lnxd3oe8.js +1 -0
- package/dist/interface/assets/Config-B1ZKVfMn.js +2 -0
- package/dist/interface/assets/ConfigActionCameraControl-BHKVJQqx.js +1 -0
- package/dist/interface/assets/{ConfigActionDelay-Rnxk--Qt.js → ConfigActionDelay-BS1vLvDQ.js} +1 -1
- package/dist/interface/assets/ConfigActionHttp-BKlRdtJr.js +1 -0
- package/dist/interface/assets/{ConfigActionImageInput-C8_H3ubM.js → ConfigActionImageInput-DveJ7oK8.js} +1 -1
- package/dist/interface/assets/{ConfigActionNotification-4VYN5Hkr.js → ConfigActionNotification-Cn3qFFiK.js} +1 -1
- package/dist/interface/assets/ConfigActionOutput-Bg6d4zFD.js +1 -0
- package/dist/interface/assets/{ConfigActionPlugin-DrPmBv9V.js → ConfigActionPlugin-u-_sCQs9.js} +1 -1
- package/dist/interface/assets/{ConfigActionSensor-CyaEZRfx.js → ConfigActionSensor-Cx1Q9VtS.js} +1 -1
- package/dist/interface/assets/{ConfigActionSnapshot-l7VvnulO.js → ConfigActionSnapshot-DN4UC9jz.js} +1 -1
- package/dist/interface/assets/{ConfigActionVariable-DIlUMHDy.js → ConfigActionVariable-Yufao52p.js} +1 -1
- package/dist/interface/assets/{ConfigConditionIfElse-0XRDQcTw.js → ConfigConditionIfElse-X9Sf0RwG.js} +1 -1
- package/dist/interface/assets/ConfigConditionSensorState-DQkz0FC6.js +1 -0
- package/dist/interface/assets/{ConfigConditionSwitch-C7pp1EZI.js → ConfigConditionSwitch-B4OICWxL.js} +1 -1
- package/dist/interface/assets/ConfigConditionTime-DRhAEuuC.js +1 -0
- package/dist/interface/assets/{ConfigTriggerDetection-CKw-fo2n.js → ConfigTriggerDetection-CzI4hgRA.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerGeofence-DjBRl2tE.js → ConfigTriggerGeofence-RUlZmXAo.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerManual-BpBTh3CS.js → ConfigTriggerManual-Jjh7ZhyC.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSchedule-DZG10NcA.js → ConfigTriggerSchedule-Dr6ALguI.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSensor-CpFa6nUj.js → ConfigTriggerSensor-DLxdw9Fd.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSystem-BsQElCAL.js → ConfigTriggerSystem-DYDpUWwi.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerWebhook-BKPOGAs3.js → ConfigTriggerWebhook-DiW3cwjT.js} +1 -1
- package/dist/interface/assets/Console-B55HKp9M.js +1 -0
- package/dist/interface/assets/{CuiActionButton-BSy6VaJ6.js → CuiActionButton-iNuXCl7_.js} +1 -1
- package/dist/interface/assets/{CuiAvatar-8AhiddF1.js → CuiAvatar-B1PdXoLS.js} +1 -1
- package/dist/interface/assets/{CuiBBoxPlayground-BUPzZ0sI.js → CuiBBoxPlayground-BJYeyVTF.js} +1 -1
- package/dist/interface/assets/{CuiBottomSheet-BNCym-11.js → CuiBottomSheet-B57WDcr5.js} +1 -1
- package/dist/interface/assets/CuiBottomSheet-Da0yy5zi.js +1 -0
- package/dist/interface/assets/CuiCameraCard-Dix4Iyrv.js +1 -0
- package/dist/interface/assets/{CuiCameraPipCard-CUPWEo3r.js → CuiCameraPipCard-BAOlD5uq.js} +1 -1
- package/dist/interface/assets/CuiCameraRecordings-ET-hbDL9.js +1 -0
- package/dist/interface/assets/{CuiCameraShares-oA3ockIQ.js → CuiCameraShares-CMzYmZt7.js} +1 -1
- package/dist/interface/assets/CuiCameraSnapshot-BcJfNxnj.js +1 -0
- package/dist/interface/assets/CuiCameraTable-CmyHU7oP.js +2 -0
- package/dist/interface/assets/{CuiDataTable-DhnQRMXG.js → CuiDataTable-Cd1jvrN0.js} +1 -1
- package/dist/interface/assets/{CuiFloatingButton-YIEmTfno.js → CuiFloatingButton-B3_fNyCP.js} +1 -1
- package/dist/interface/assets/{CuiImage-CzYVSrkC.js → CuiImage-BupeZIam.js} +1 -1
- package/dist/interface/assets/{CuiMarkdownContent-ecpe3mHA.js → CuiMarkdownContent-B4fVlO8h.js} +1 -1
- package/dist/interface/assets/CuiMarkdownContent-CMPFzD-0.js +1 -0
- package/dist/interface/assets/{CuiMenu-CEaJl-MF.js → CuiMenu-C-rnBf9W.js} +1 -1
- package/dist/interface/assets/{CuiPluginCard-BBV_hV1R.css → CuiPluginCard-C9zsmIaC.css} +1 -1
- package/dist/interface/assets/CuiPluginCard-Cs3gCugA.js +2 -0
- package/dist/interface/assets/{CuiPluginCategoryChip-BwL2qCTM.js → CuiPluginCategoryChip-D_ICXcvd.js} +1 -1
- package/dist/interface/assets/{CuiPluginOAuthButton-BmBW2Pdf.js → CuiPluginOAuthButton-B1e0NCmA.js} +2 -2
- package/dist/interface/assets/{CuiPluginTrustBadge-KcOasEJH.js → CuiPluginTrustBadge-CuxXssET.js} +1 -1
- package/dist/interface/assets/{CuiQRCode-BUSzb3ek.js → CuiQRCode-46CN267y.js} +1 -1
- package/dist/interface/assets/{CuiRecordingsGrid-lcLty5PV.css → CuiRecordingsGrid-DRBC07wN.css} +1 -1
- package/dist/interface/assets/CuiRecordingsGrid-FObjS4y5.js +1 -0
- package/dist/interface/assets/CuiSchema-BvjMb-mO.js +1 -0
- package/dist/interface/assets/{CuiTopNavbarItem-DVwItfbG.js → CuiTopNavbarItem-CmnJEc_r.js} +1 -1
- package/dist/interface/assets/{CuiTopbarSlot-h5_1cb9v.js → CuiTopbarSlot-T_pdxsit.js} +1 -1
- package/dist/interface/assets/Faces-DHk9Jq3T.js +1 -0
- package/dist/interface/assets/FirstSteps-Bb3XOidA.js +1 -0
- package/dist/interface/assets/{Instances-BNasTbK_.js → Instances-CXPH9NdC.js} +1 -1
- package/dist/interface/assets/Logs-jN6cBnCk.js +6 -0
- package/dist/interface/assets/{Menu-DTC3IWLc.js → Menu-BhWV3vKB.js} +1 -1
- package/dist/interface/assets/{OAuthDeviceFlow-BOIY4kBt.js → OAuthDeviceFlow-XfU0jZ6x.js} +1 -1
- package/dist/interface/assets/Plugin-BF0VMRby.js +1 -0
- package/dist/interface/assets/Plugin-DbSiTjYn.css +1 -0
- package/dist/interface/assets/{PluginConsole-DwNRvKqW.js → PluginConsole-DoeboO_n.js} +1 -1
- package/dist/interface/assets/PluginDetail-C2UBJlKS.js +2 -0
- package/dist/interface/assets/{PluginSchema-DWnYqRll.js → PluginSchema-BD-rLvro.js} +1 -1
- package/dist/interface/assets/PluginSearch-CTIiYmP4.js +1 -0
- package/dist/interface/assets/PluginSearch-NnCJ7vG2.js +2 -0
- package/dist/interface/assets/Plugins-BLtk8Off.js +1 -0
- package/dist/interface/assets/Recordings-CMO0UwaS.js +1 -0
- package/dist/interface/assets/{Settings-CfiNEl95.js → Settings-BAVtA47G2.js} +1 -1
- package/dist/interface/assets/SettingsAccount-Iz4WalaS.js +1 -0
- package/dist/interface/assets/SettingsAccount-NUdKG4ow.js +1 -0
- package/dist/interface/assets/SettingsAppearance-Ck1O2w3P.js +1 -0
- package/dist/interface/assets/{SettingsAppearance-Ck4VcB-w.js → SettingsAppearance-SLzxaqjN.js} +1 -1
- package/dist/interface/assets/SettingsBackup-CPC0aLD3.js +1 -0
- package/dist/interface/assets/SettingsNotifications-DB4CcddP.js +2 -0
- package/dist/interface/assets/SettingsRecordings-C15sTnLd.js +1 -0
- package/dist/interface/assets/SettingsRemote-5nVdezk3.js +1 -0
- package/dist/interface/assets/SettingsSystem-FqKuLssS.js +2 -0
- package/dist/interface/assets/SettingsUsers-CCp_3xlV.js +1 -0
- package/dist/interface/assets/Terminal-BHvfL8kE.js +4 -0
- package/dist/interface/assets/{VariableInput-DmE1m9Il.js → VariableInput-BnNttSx9.js} +1 -1
- package/dist/interface/assets/{VariableSuggestions-eII-1Bd_.js → VariableSuggestions-BbT0U9F0.js} +1 -1
- package/dist/interface/assets/VersionsHandler-jleSwMVy.js +7 -0
- package/dist/interface/assets/{Workers-Bj_tLx-1.js → Workers-ELW90lll.js} +2 -2
- package/dist/interface/assets/{account-CMuSWY7R.js → account-DqyKcqe6.js} +1 -1
- package/dist/interface/assets/ace-6JpPWRIj.js +1 -0
- package/dist/interface/assets/{ace.config-D884GuRj.js → ace.config-BnKJ0Xjj.js} +1 -1
- package/dist/interface/assets/{alert-circle-BBVlWmUb.js → alert-circle-DeKKKwiu.js} +1 -1
- package/dist/interface/assets/{alert-outline-MJaaWeWU.js → alert-outline-C4_42ECn.js} +1 -1
- package/dist/interface/assets/{api-CltBUyci.js → api-BRin642H.js} +1 -1
- package/dist/interface/assets/api-ByvWBLH3.js +2 -0
- package/dist/interface/assets/api-dcK5urq7.css +2 -0
- package/dist/interface/assets/{arrow-left-Bzo6lbMk.js → arrow-left-DroMCfOc.js} +1 -1
- package/dist/interface/assets/{arrow-right-outline-DU6p5Mjp.js → arrow-right-outline-CvgD4nuT.js} +1 -1
- package/dist/interface/assets/auth-D5gzm869.js +1 -0
- package/dist/interface/assets/{automation-BjkFcQH9.js → automation-BjZc8WL7.js} +1 -1
- package/dist/interface/assets/{automations-73X55Wxy.js → automations-B9KDzbWq.js} +1 -1
- package/dist/interface/assets/automations-CmA6Yx5B.js +1 -0
- package/dist/interface/assets/{back-filled-DI8fXlRr.js → back-filled-LVLhJP7G.js} +1 -1
- package/dist/interface/assets/{bell-Xdsks-42.js → bell-_E2Lq4ub.js} +1 -1
- package/dist/interface/assets/{bell-outline-Cy3lRQBX.js → bell-outline-CHhIZudN.js} +1 -1
- package/dist/interface/assets/{bell-ring-DR_BFore.js → bell-ring-DgLkBDcU.js} +1 -1
- package/dist/interface/assets/{bug-BkbVdwX_.js → bug-Eq4PDwA4.js} +1 -1
- package/dist/interface/assets/{cameras-Crvf7J3t.js → cameras-CYwpMvA8.js} +1 -1
- package/dist/interface/assets/{cameras.schema-CQPF4BCK.js → cameras.schema-neefhBQz.js} +1 -1
- package/dist/interface/assets/{cctv-D8gURS6i.js → cctv-BZIDJlxZ.js} +1 -1
- package/dist/interface/assets/{cctv-izLKpHLU.js → cctv-DbFrrwEm.js} +1 -1
- package/dist/interface/assets/{check-vQdlfVb0.js → check-COWE52r_.js} +1 -1
- package/dist/interface/assets/{check-circle-pC6Mk9ok.js → check-circle-CAbOGJc_.js} +1 -1
- package/dist/interface/assets/{chevron-down-5hhpriLd.js → chevron-down-Bu7d-Y9N.js} +1 -1
- package/dist/interface/assets/{chevron-right-B8jZK42K.js → chevron-right-90_Zn7fJ.js} +1 -1
- package/dist/interface/assets/{circular-connection-CShziQTj.js → circular-connection-Fq-Vqe3X.js} +1 -1
- package/dist/interface/assets/{clock-outline-C1Qoi42Q.js → clock-outline-CqPKrGj2.js} +1 -1
- package/dist/interface/assets/{close-CunDSika.js → close-BTPBtoEq.js} +1 -1
- package/dist/interface/assets/{close-circle-ClO0DCH3.js → close-circle-BAE2M1UZ.js} +1 -1
- package/dist/interface/assets/{cloud-check-DH_MvuMa.js → cloud-check-C2zK34QI.js} +1 -1
- package/dist/interface/assets/{cloud-outline-C6S72e1A.js → cloud-outline-64fdhdhh.js} +1 -1
- package/dist/interface/assets/{cloud-outline-CNhBvx4x.js → cloud-outline-BooRVJGO.js} +1 -1
- package/dist/interface/assets/cloudHandoff-CdYAKJPM.js +1 -0
- package/dist/interface/assets/{cog-Bgvz011z.js → cog-BOiZ8Brk.js} +1 -1
- package/dist/interface/assets/{cog-outline-uZ6J7_NJ.js → cog-outline-CXjehRoX.js} +1 -1
- package/dist/interface/assets/config-BLaep_I5.js +1 -0
- package/dist/interface/assets/{copy-16-filled-I80UlDbg.js → copy-16-filled-DfOe7jyi.js} +1 -1
- package/dist/interface/assets/{copy-B4-Xsyae.js → copy-D1B4K3K8.js} +1 -1
- package/dist/interface/assets/{delete-BdZ-cqP2.js → delete-BEupTYe7.js} +1 -1
- package/dist/interface/assets/{deviceId-BJm8lmpp.js → deviceId-B7SNJduj.js} +1 -1
- package/dist/interface/assets/{dist-D7Ztbw2o.js → dist-PhgrarGW.js} +1 -1
- package/dist/interface/assets/{download-C1GMtykU.js → download-BKGJ_BFg.js} +1 -1
- package/dist/interface/assets/{download-CNVBKEUL.js → download-DLRWZxWu.js} +1 -1
- package/dist/interface/assets/esm-2cKQcsYl.js +1 -0
- package/dist/interface/assets/esm-BC-ykYHP.js +1 -0
- package/dist/interface/assets/esm-BQAccPYQ2.js +1 -0
- package/dist/interface/assets/esm-B_RAh7V8.js +1 -0
- package/dist/interface/assets/esm-BsEkUnid.js +1 -0
- package/dist/interface/assets/esm-C1u--4jU.js +1 -0
- package/dist/interface/assets/esm-Cmrq9Tli.js +1 -0
- package/dist/interface/assets/esm-CrZMuT0_.js +1 -0
- package/dist/interface/assets/esm-CxS-x_QY.js +1 -0
- package/dist/interface/assets/esm-D-xtFbBs.js +1 -0
- package/dist/interface/assets/esm-D6PR9MbI.js +1 -0
- package/dist/interface/assets/esm-DTxHX_m3.js +1 -0
- package/dist/interface/assets/esm-Dzks7cY7.js +1 -0
- package/dist/interface/assets/esm-nCaFxJ36.js +1 -0
- package/dist/interface/assets/{eventIcons-GmV5zC8O.js → eventIcons-OxuOsPp8.js} +1 -1
- package/dist/interface/assets/{face-recognition-CS2Rf6Zc.js → face-recognition-CPwwcApe.js} +1 -1
- package/dist/interface/assets/{github-BrijWwqw.js → github-CWr5rTTh.js} +1 -1
- package/dist/interface/assets/{grid-fill-vdgMWTlf.js → grid-fill-DepYpY1i.js} +1 -1
- package/dist/interface/assets/{hasPermission-LUHh3i2_.js → hasPermission-FP_aMe9r.js} +1 -1
- package/dist/interface/assets/{home-By41XQGy.js → home-DTNk2yog.js} +1 -1
- package/dist/interface/assets/{information-outline-Kgo_4wPg.js → information-outline-BaVRQ1WL.js} +1 -1
- package/dist/interface/assets/{instances-A-hAMJRC.js → instances-DWzDpyhw.js} +1 -1
- package/dist/interface/assets/{lightbulb-outline-XVFprQ8f.js → lightbulb-outline-DPjpJn5F.js} +1 -1
- package/dist/interface/assets/main-7zIUc9Mt.css +1 -0
- package/dist/interface/assets/main-eaoHjmUh.js +3 -0
- package/dist/interface/assets/{microphone-GG_JO-aa.js → microphone-DJsihw9n.js} +1 -1
- package/dist/interface/assets/{motion-sensor-BvWcG84o.js → motion-sensor-D9ErhY-p.js} +1 -1
- package/dist/interface/assets/native-BK8vZMAo.js +1 -0
- package/dist/interface/assets/native-Z2MQ5D82.js +1 -0
- package/dist/interface/assets/{nodeDefinitions-BSLOZMDt.js → nodeDefinitions-kqqBPelM.js} +1 -1
- package/dist/interface/assets/{notifications-eX5p2YaS.js → notifications-Dae9EImK.js} +1 -1
- package/dist/interface/assets/{play-solid-BtIose8X.js → play-solid-cginGSgT.js} +1 -1
- package/dist/interface/assets/plugin-DHenq6mQ.js +1 -0
- package/dist/interface/assets/{plugins-DfuM5k5Q.js → plugins-bWz9yaCS.js} +1 -1
- package/dist/interface/assets/{plus-CPMfvO5i.js → plus-CJ2GnX_q.js} +1 -1
- package/dist/interface/assets/{plus-BKTSMYeY.js → plus-CJzoaVfR.js} +1 -1
- package/dist/interface/assets/{power-M2I2_fCM.js → power-CH_DVgfm.js} +1 -1
- package/dist/interface/assets/{puzzle-filled-C2Lcmza4.js → puzzle-filled-BsJvAZrD.js} +1 -1
- package/dist/interface/assets/{refresh-rounded-B-PvjcAK.js → refresh-rounded-D9PcUR6I.js} +1 -1
- package/dist/interface/assets/{ring-resize-CdUkE4zr.js → ring-resize-QxO72Hs5.js} +1 -1
- package/dist/interface/assets/{round-alt-arrow-left-bold-MIf6gSgD.js → round-alt-arrow-left-bold-C57m543l.js} +1 -1
- package/dist/interface/assets/{round-restart-alt-rDMgoX7-.js → round-restart-alt-C6zOLIvt.js} +1 -1
- package/dist/interface/assets/router-jxQ55Ssp.js +2 -0
- package/dist/interface/assets/{routerState-DxipV4mY.js → routerState-D1WXHNt5.js} +1 -1
- package/dist/interface/assets/{search-CHjonsLq.js → search-BgYt2zqA.js} +1 -1
- package/dist/interface/assets/{server-CoQ6jFok.js → server-Uk7xnHXH.js} +1 -1
- package/dist/interface/assets/{settings-CJjCbQsx.js → settings-DHy64jsU.js} +1 -1
- package/dist/interface/assets/shares-Cz4zuZa_.js +1 -0
- package/dist/interface/assets/{shield-check-oKTXgAfr.js → shield-check-0hUJRszq.js} +1 -1
- package/dist/interface/assets/{source-branch-aFYjLKkc.js → source-branch-Dv9Du0bc.js} +1 -1
- package/dist/interface/assets/{terminal-B8qmxarl.js → terminal-CNEjR0aR.js} +1 -1
- package/dist/interface/assets/{theme-BzXEv5Er.js → theme-GXDCnY_7.js} +1 -1
- package/dist/interface/assets/{trash-2-rEVmOxCl.js → trash-2-CAa4rD_d.js} +1 -1
- package/dist/interface/assets/{trash-fill-DfnCMe3h.js → trash-fill-Br00Vept.js} +1 -1
- package/dist/interface/assets/{trash2-BvyW-bOK.js → trash2-tuK9V5bO.js} +1 -1
- package/dist/interface/assets/{types-Ds4g4ynm.js → types-BpBkaZ8S.js} +1 -1
- package/dist/interface/assets/{types-CAW47AJe.js → types-jpiqSoyF.js} +1 -1
- package/dist/interface/assets/{ui-Dg-QtLMl.js → ui-DzCa9zWL.js} +1 -1
- package/dist/interface/assets/{upload-DkFN5YK-.js → upload-DAasFa9r.js} +1 -1
- package/dist/interface/assets/useAppVersion-CqnE2uYa.js +1 -0
- package/dist/interface/assets/useBackupRestore-Dm7jUOC-.js +1 -0
- package/dist/interface/assets/{useBiometricCredentials-Buylkybs.js → useBiometricCredentials-DJqfT1lk.js} +1 -1
- package/dist/interface/assets/useCameraOptions-Dv3QCMBK.js +1 -0
- package/dist/interface/assets/{useCuiCameraDrawer-DwlhaZ2i.js → useCuiCameraDrawer-D1zCpVbQ.js} +1 -1
- package/dist/interface/assets/useCuiDialog-C02Or5oR.js +2 -0
- package/dist/interface/assets/{useFileDownload-Bhdbhy_2.js → useFileDownload-CwxydJkw.js} +1 -1
- package/dist/interface/assets/{useLogsSocket-81hTPkwS.js → useLogsSocket-CunaH_T7.js} +2 -2
- package/dist/interface/assets/{useServerRestart-3pT0h7CH.js → useServerRestart-BQO5FbNN.js} +1 -1
- package/dist/interface/assets/{useSharedComposables-Ki01kFNJ.js → useSharedComposables-BrdI_nDH.js} +1 -1
- package/dist/interface/assets/{useStreamStatus-CHITNYE7.js → useStreamStatus-e7l-QLmI.js} +1 -1
- package/dist/interface/assets/useUpdateChannel-CW45dNAk.js +1 -0
- package/dist/interface/assets/useUserOptions-EhjyVt4P.js +1 -0
- package/dist/interface/assets/users.schema-4d5Hcv-l.js +1 -0
- package/dist/interface/assets/vendor-ClrOISZp.js +22 -0
- package/dist/interface/assets/{vendor-ace-DdrK3_G3.js → vendor-ace-BlP3GAWI.js} +4 -4
- package/dist/interface/assets/vendor-cameraui-E9E7fP4y.js +1978 -0
- package/dist/interface/assets/{vendor-capacitor-Cmm68VPg.js → vendor-capacitor-DWVJM4o8.js} +2 -2
- package/dist/interface/assets/vendor-chart-Cn72DQnu.js +3 -0
- package/dist/interface/assets/{vendor-core-DnC_SdtD.js → vendor-core-D2PMTaN3.js} +1 -1
- package/dist/interface/assets/{vendor-dnd-BAVhbK8Q.js → vendor-dnd-B9-e5xxH.js} +1 -1
- package/dist/interface/assets/{vendor-draggabilly-C56V4WL_.js → vendor-draggabilly-CPB8E5_r.js} +1 -1
- package/dist/interface/assets/{vendor-leaflet-_2Z0GiOD.js → vendor-leaflet-BMMJO5Nd.js} +1 -1
- package/dist/interface/assets/{vendor-markdown-D8dkSMBf.js → vendor-markdown-D7EhExwE.js} +2 -2
- package/dist/interface/assets/{vendor-primevue-OV61z06m.js → vendor-primevue-Ba4XR6PC.js} +301 -301
- package/dist/interface/assets/vendor-vueflow-Ci6VMxDa.js +26 -0
- package/dist/interface/assets/vendor-xterm-IIYDrBG1.js +142 -0
- package/dist/interface/assets/view-grid-Bs5Mc3pI.js +1 -0
- package/dist/interface/assets/view-grid-CWZLWCco.css +1 -0
- package/dist/interface/assets/web-1H50tiqZ.js +1 -0
- package/dist/interface/assets/web-BBRAFu75.js +1 -0
- package/dist/interface/assets/web-BQqZ-0se.js +1 -0
- package/dist/interface/assets/web-BgDADYuL.js +1 -0
- package/dist/interface/assets/web-BjKL51lK-DF7_OzmH.js +1 -0
- package/dist/interface/assets/web-C3oASmFS.js +1 -0
- package/dist/interface/assets/web-CQIOnZbD.js +1 -0
- package/dist/interface/assets/web-CW6kIZQg.js +1 -0
- package/dist/interface/assets/web-CXLWILCn.js +1 -0
- package/dist/interface/assets/web-Cz9RS9vK.js +1 -0
- package/dist/interface/assets/web-D7_BjGke.js +1 -0
- package/dist/interface/assets/web-Dn-uR4FN.js +1 -0
- package/dist/interface/assets/web-GsFXaCFL.js +1 -0
- package/dist/interface/assets/web-kh2rHftO.js +1 -0
- package/dist/interface/assets/{webhook-nx5ZDIQ-.js → webhook-BCBlzc3z.js} +1 -1
- package/dist/interface/assets/workbox-window.prod.es5-CQTy-jf8.js +1 -0
- package/dist/interface/assets/{zoom-in-wM6G8w-4.js → zoom-in-CKM5nWQX.js} +1 -1
- package/dist/interface/index.html +88 -85
- package/dist/interface/sw.js +1 -1
- package/dist/server/package.json +36 -19
- package/dist/server/requirements.txt +4 -3
- package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/signal_handler.py +17 -9
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/detection.py +10 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/event_emitter.py +45 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/manager/__init__.py +3 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/storage/__init__.py +47 -12
- package/dist/server/src/api/controllers/plugins.controller.js +11 -3
- package/dist/server/src/api/controllers/plugins.controller.js.map +1 -1
- package/dist/server/src/api/controllers/remote.controller.d.ts +1 -0
- package/dist/server/src/api/controllers/remote.controller.js +9 -2
- package/dist/server/src/api/controllers/remote.controller.js.map +1 -1
- package/dist/server/src/api/database/index.d.ts +2 -1
- package/dist/server/src/api/database/index.js +22 -3
- package/dist/server/src/api/database/index.js.map +1 -1
- package/dist/server/src/api/middlewares/authValidation.middleware.js +1 -1
- package/dist/server/src/api/middlewares/authValidation.middleware.js.map +1 -1
- package/dist/server/src/api/schemas/cameras.schema.d.ts +27 -0
- package/dist/server/src/api/schemas/cameras.schema.js +6 -0
- package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
- package/dist/server/src/api/schemas/config.schema.d.ts +2 -0
- package/dist/server/src/api/schemas/config.schema.js +1 -0
- package/dist/server/src/api/schemas/config.schema.js.map +1 -1
- package/dist/server/src/api/services/backup.service.d.ts +4 -0
- package/dist/server/src/api/services/backup.service.js +35 -4
- package/dist/server/src/api/services/backup.service.js.map +1 -1
- package/dist/server/src/api/services/plugins.service.js +1 -1
- package/dist/server/src/api/services/plugins.service.js.map +1 -1
- package/dist/server/src/api/services/remote.service.d.ts +0 -1
- package/dist/server/src/api/services/remote.service.js +6 -13
- package/dist/server/src/api/services/remote.service.js.map +1 -1
- package/dist/server/src/api/types/index.d.ts +1 -0
- package/dist/server/src/api.d.ts +1 -0
- package/dist/server/src/api.js +11 -3
- package/dist/server/src/api.js.map +1 -1
- package/dist/server/src/camera/decoder/audio-source.d.ts +2 -0
- package/dist/server/src/camera/decoder/audio-source.js +12 -0
- package/dist/server/src/camera/decoder/audio-source.js.map +1 -1
- package/dist/server/src/camera/decoder/detection-coordinator.js +16 -2
- package/dist/server/src/camera/decoder/detection-coordinator.js.map +1 -1
- package/dist/server/src/camera/decoder/frame-source.d.ts +2 -0
- package/dist/server/src/camera/decoder/frame-source.js +23 -2
- package/dist/server/src/camera/decoder/frame-source.js.map +1 -1
- package/dist/server/src/camera/decoder/ptz-autotracker.js +51 -78
- package/dist/server/src/camera/decoder/ptz-autotracker.js.map +1 -1
- package/dist/server/src/camera/streaming/fmp4-session.js +9 -0
- package/dist/server/src/camera/streaming/fmp4-session.js.map +1 -1
- package/dist/server/src/camera/streaming/rtp-session.js +0 -13
- package/dist/server/src/camera/streaming/rtp-session.js.map +1 -1
- package/dist/server/src/go2rtc/api/routes/streams.js +5 -6
- package/dist/server/src/go2rtc/api/routes/streams.js.map +1 -1
- package/dist/server/src/go2rtc/index.js +1 -1
- package/dist/server/src/go2rtc/index.js.map +1 -1
- package/dist/server/src/go2rtc/types.d.ts +3 -0
- package/dist/server/src/go2rtc/types.js.map +1 -1
- package/dist/server/src/main.js +1 -1
- package/dist/server/src/main.js.map +1 -1
- package/dist/server/src/manager/deviceManager.js +4 -1
- package/dist/server/src/manager/deviceManager.js.map +1 -1
- package/dist/server/src/manager/discoveryManager.d.ts +3 -2
- package/dist/server/src/manager/discoveryManager.js +60 -29
- package/dist/server/src/manager/discoveryManager.js.map +1 -1
- package/dist/server/src/plugins/config-store.d.ts +1 -1
- package/dist/server/src/plugins/config-store.js +17 -10
- package/dist/server/src/plugins/config-store.js.map +1 -1
- package/dist/server/src/plugins/index.d.ts +1 -0
- package/dist/server/src/plugins/index.js +38 -2
- package/dist/server/src/plugins/index.js.map +1 -1
- package/dist/server/src/plugins/plugin.js +2 -2
- package/dist/server/src/plugins/plugin.js.map +1 -1
- package/dist/server/src/plugins/runtime/base.js +10 -5
- package/dist/server/src/plugins/runtime/base.js.map +1 -1
- package/dist/server/src/plugins/runtime/go/index.js +1 -0
- package/dist/server/src/plugins/runtime/go/index.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/child.d.ts +1 -0
- package/dist/server/src/plugins/runtime/node/child.js +62 -19
- package/dist/server/src/plugins/runtime/node/child.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/configDb.d.ts +8 -0
- package/dist/server/src/plugins/runtime/node/configDb.js +15 -0
- package/dist/server/src/plugins/runtime/node/configDb.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/index.js +2 -0
- package/dist/server/src/plugins/runtime/node/index.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/pluginApi.d.ts +4 -0
- package/dist/server/src/plugins/runtime/node/pluginApi.js +13 -5
- package/dist/server/src/plugins/runtime/node/pluginApi.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.d.ts +1 -2
- package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js +2 -8
- package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/proxy/coreManager.d.ts +3 -2
- package/dist/server/src/plugins/runtime/node/proxy/coreManager.js +9 -13
- package/dist/server/src/plugins/runtime/node/proxy/coreManager.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/proxy/deviceManager.d.ts +3 -2
- package/dist/server/src/plugins/runtime/node/proxy/deviceManager.js +14 -12
- package/dist/server/src/plugins/runtime/node/proxy/deviceManager.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/proxy/fileServe.js +4 -9
- package/dist/server/src/plugins/runtime/node/proxy/fileServe.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/proxy/notificationManager.js +3 -0
- package/dist/server/src/plugins/runtime/node/proxy/notificationManager.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/storage.d.ts +5 -2
- package/dist/server/src/plugins/runtime/node/storage.js +92 -67
- package/dist/server/src/plugins/runtime/node/storage.js.map +1 -1
- package/dist/server/src/plugins/runtime/node/storageController.d.ts +2 -0
- package/dist/server/src/plugins/runtime/node/storageController.js +12 -4
- package/dist/server/src/plugins/runtime/node/storageController.js.map +1 -1
- package/dist/server/src/plugins/runtime/python/child.py +50 -38
- package/dist/server/src/plugins/runtime/python/config_db.py +28 -17
- package/dist/server/src/plugins/runtime/python/index.js +1 -0
- package/dist/server/src/plugins/runtime/python/index.js.map +1 -1
- package/dist/server/src/plugins/runtime/python/plugin_api.py +5 -5
- package/dist/server/src/plugins/runtime/python/proxy/camera_device.py +14 -13
- package/dist/server/src/plugins/runtime/python/proxy/core_manager.py +11 -14
- package/dist/server/src/plugins/runtime/python/proxy/device_manager.py +23 -18
- package/dist/server/src/plugins/runtime/python/remote_urls.py +3 -7
- package/dist/server/src/plugins/runtime/python/storage.py +157 -126
- package/dist/server/src/plugins/runtime/python/storage_controller.py +28 -13
- package/dist/server/src/plugins/runtime/python/store.py +513 -0
- package/dist/server/src/plugins/runtime/python/store_migrate.py +59 -0
- package/dist/server/src/plugins/store/coalescingWriter.d.ts +7 -0
- package/dist/server/src/plugins/store/coalescingWriter.js +52 -0
- package/dist/server/src/plugins/store/coalescingWriter.js.map +1 -0
- package/dist/server/src/plugins/store/envelope.d.ts +5 -0
- package/dist/server/src/plugins/store/envelope.js +40 -0
- package/dist/server/src/plugins/store/envelope.js.map +1 -0
- package/dist/server/src/plugins/store/layout.d.ts +2 -0
- package/dist/server/src/plugins/store/layout.js +60 -0
- package/dist/server/src/plugins/store/layout.js.map +1 -0
- package/dist/server/src/plugins/store/location.d.ts +14 -0
- package/dist/server/src/plugins/store/location.js +55 -0
- package/dist/server/src/plugins/store/location.js.map +1 -0
- package/dist/server/src/plugins/store/migrate.d.ts +1 -0
- package/dist/server/src/plugins/store/migrate.js +22 -0
- package/dist/server/src/plugins/store/migrate.js.map +1 -0
- package/dist/server/src/plugins/store/pluginStoreFile.d.ts +14 -0
- package/dist/server/src/plugins/store/pluginStoreFile.js +58 -0
- package/dist/server/src/plugins/store/pluginStoreFile.js.map +1 -0
- package/dist/server/src/plugins/store/storeFile.d.ts +5 -0
- package/dist/server/src/plugins/store/storeFile.js +112 -0
- package/dist/server/src/plugins/store/storeFile.js.map +1 -0
- package/dist/server/src/plugins/store/validate.d.ts +1 -0
- package/dist/server/src/plugins/store/validate.js +49 -0
- package/dist/server/src/plugins/store/validate.js.map +1 -0
- package/dist/server/src/plugins/worker.js +9 -8
- package/dist/server/src/plugins/worker.js.map +1 -1
- package/dist/server/src/remote/services/cloudflare-managed.js +2 -2
- package/dist/server/src/remote/services/cloudflare-managed.js.map +1 -1
- package/dist/server/src/remote/services/cloudflare.js +1 -0
- package/dist/server/src/remote/services/cloudflare.js.map +1 -1
- package/dist/server/src/remote/tunnel/client.js +1 -1
- package/dist/server/src/remote/tunnel/client.js.map +1 -1
- package/dist/server/src/rpc/interfaces/discovery.d.ts +1 -0
- package/dist/server/src/rpc/server.js +12 -5
- package/dist/server/src/rpc/server.js.map +1 -1
- package/dist/server/src/services/config/defaults.js +1 -0
- package/dist/server/src/services/config/defaults.js.map +1 -1
- package/dist/server/src/services/config/index.d.ts +1 -0
- package/dist/server/src/services/config/index.js +2 -0
- package/dist/server/src/services/config/index.js.map +1 -1
- package/dist/server/src/services/config/types.d.ts +1 -0
- package/dist/server/src/utils/npm/index.d.ts +1 -1
- package/dist/server/src/utils/npm/index.js +7 -4
- package/dist/server/src/utils/npm/index.js.map +1 -1
- package/dist/server/src/workers/capabilities/plugin-host.js +1 -1
- package/dist/server/src/workers/capabilities/plugin-host.js.map +1 -1
- package/package.json +36 -19
- package/dist/interface/assets/About-CjQs3rZw.js +0 -1
- package/dist/interface/assets/Adminpanel-BTIcUxWm.js +0 -1
- package/dist/interface/assets/Automation-BNbTehB5.js +0 -2
- package/dist/interface/assets/AutomationImport-BEm0hc0d.js +0 -2
- package/dist/interface/assets/Camera-BG8K5bH_.css +0 -1
- package/dist/interface/assets/Camera-eIsFEdVo.js +0 -2
- package/dist/interface/assets/Cameras-54LaZPN3.css +0 -1
- package/dist/interface/assets/Cameras-Bswv6ojJ.js +0 -652
- package/dist/interface/assets/Camview-DMywoy_4.js +0 -1
- package/dist/interface/assets/Config-C7H5amm4.js +0 -2
- package/dist/interface/assets/ConfigActionCameraControl-C0hvC4QW.js +0 -1
- package/dist/interface/assets/ConfigActionHttp-BF8vrrHR.js +0 -1
- package/dist/interface/assets/ConfigActionOutput-CxB3eLLl.js +0 -1
- package/dist/interface/assets/ConfigConditionSensorState-BvygRJ79.js +0 -1
- package/dist/interface/assets/ConfigConditionTime-B0zctDc4.js +0 -1
- package/dist/interface/assets/Console-DHlNpv-R.js +0 -1
- package/dist/interface/assets/CuiBottomSheet-ChG_av5z.js +0 -1
- package/dist/interface/assets/CuiCameraCard-BGAQxNHs.js +0 -1
- package/dist/interface/assets/CuiCameraRecordings-B25441dH.js +0 -1
- package/dist/interface/assets/CuiCameraSnapshot-BLM8v7rY.js +0 -1
- package/dist/interface/assets/CuiCameraTable-3joRnfiM.js +0 -2
- package/dist/interface/assets/CuiMarkdownContent-5LJK4h8V.js +0 -1
- package/dist/interface/assets/CuiPluginCard-De_cbBBe.js +0 -2
- package/dist/interface/assets/CuiRecordingsGrid-DHSABYJb.js +0 -1
- package/dist/interface/assets/CuiSchema-D35n-DE5.js +0 -1
- package/dist/interface/assets/Faces-BJlHL3gp.js +0 -1
- package/dist/interface/assets/FirstSteps-D1Zf1CYN.js +0 -1
- package/dist/interface/assets/Logs-CW5EqpAL.js +0 -6
- package/dist/interface/assets/Plugin-DHhrlRqP.css +0 -1
- package/dist/interface/assets/Plugin-DIPGTrNi.js +0 -1
- package/dist/interface/assets/PluginDetail-D1TJZJhY.js +0 -2
- package/dist/interface/assets/PluginSearch-C5bkQgYA.js +0 -1
- package/dist/interface/assets/PluginSearch-DqwgO886.js +0 -2
- package/dist/interface/assets/Plugins-o7IfSFjd.js +0 -1
- package/dist/interface/assets/Recordings-DTw5IG8W.js +0 -1
- package/dist/interface/assets/SettingsAccount-Ch2SR80X.js +0 -1
- package/dist/interface/assets/SettingsAccount-DIwWUyp6.js +0 -1
- package/dist/interface/assets/SettingsAppearance-CkF7biyP.js +0 -1
- package/dist/interface/assets/SettingsBackup-BigThNuk.js +0 -1
- package/dist/interface/assets/SettingsNotifications-XLBjwgwX.js +0 -2
- package/dist/interface/assets/SettingsRecordings-Dp9tJdHk.js +0 -1
- package/dist/interface/assets/SettingsRemote-B5jm7MdB.js +0 -1
- package/dist/interface/assets/SettingsSystem-Isy5hiDl.js +0 -2
- package/dist/interface/assets/SettingsUsers-QuUercEC.js +0 -1
- package/dist/interface/assets/Terminal-BTfYdYuv.js +0 -4
- package/dist/interface/assets/VersionsHandler-BYj7-lpw.js +0 -7
- package/dist/interface/assets/ace-DQ1lNH50.js +0 -1
- package/dist/interface/assets/api-D7tGlI-z.css +0 -2
- package/dist/interface/assets/api-DoPgGqHU.js +0 -2
- package/dist/interface/assets/auth-BiWutL3Z.js +0 -1
- package/dist/interface/assets/automations-hsi5MCtT.js +0 -1
- package/dist/interface/assets/backup-CHJIDGvl.js +0 -1
- package/dist/interface/assets/cloudHandoff-lLBGqrXl.js +0 -1
- package/dist/interface/assets/esm-0fUwrSGA2.js +0 -1
- package/dist/interface/assets/esm-50afX45o.js +0 -1
- package/dist/interface/assets/esm-B0VLR4af.js +0 -1
- package/dist/interface/assets/esm-BfZLgtrg.js +0 -1
- package/dist/interface/assets/esm-Bnmu7wlp.js +0 -1
- package/dist/interface/assets/esm-CG1dvQ4U.js +0 -1
- package/dist/interface/assets/esm-CZTaj2CB.js +0 -1
- package/dist/interface/assets/esm-CxRM74Bx.js +0 -1
- package/dist/interface/assets/esm-DBpRougC.js +0 -1
- package/dist/interface/assets/esm-DQ7OYRdT.js +0 -1
- package/dist/interface/assets/esm-DVYEXBOA.js +0 -1
- package/dist/interface/assets/esm-DdCbmz73.js +0 -1
- package/dist/interface/assets/esm-DiryHoSP.js +0 -1
- package/dist/interface/assets/esm-DyoMjqMI.js +0 -1
- package/dist/interface/assets/main-BjuXWRyJ.css +0 -1
- package/dist/interface/assets/main-DEbfQmxF.js +0 -3
- package/dist/interface/assets/native-Dg-M0-9s.js +0 -1
- package/dist/interface/assets/native-DyQXBqB9.js +0 -1
- package/dist/interface/assets/plugin-_eNpRpqe.js +0 -1
- package/dist/interface/assets/router-D1e_o7wa.js +0 -2
- package/dist/interface/assets/shares-VWzmq1V-.js +0 -1
- package/dist/interface/assets/useCameraOptions-GAeXCTvO.js +0 -1
- package/dist/interface/assets/useCuiDialog-yRn5B1oO.js +0 -2
- package/dist/interface/assets/useUserOptions-CUvE4OL9.js +0 -1
- package/dist/interface/assets/users.schema-DWL8-tZN.js +0 -1
- package/dist/interface/assets/vendor-c9Zhw4pk.js +0 -22
- package/dist/interface/assets/vendor-cameraui-DhctzD3V.js +0 -1978
- package/dist/interface/assets/vendor-chart-BjXPY6za.js +0 -3
- package/dist/interface/assets/vendor-vueflow-CJdb-8KZ.js +0 -26
- package/dist/interface/assets/vendor-xterm-BRN-hOYD.js +0 -145
- package/dist/interface/assets/view-grid-D04t817d.css +0 -1
- package/dist/interface/assets/view-grid-_whxsqcn.js +0 -1
- package/dist/interface/assets/web-B9o4PkxX.js +0 -1
- package/dist/interface/assets/web-BDuGOqy7.js +0 -1
- package/dist/interface/assets/web-BUVPtx3X.js +0 -1
- package/dist/interface/assets/web-B_hO9nzV.js +0 -1
- package/dist/interface/assets/web-BjKL51lK-CV2GxIDK.js +0 -1
- package/dist/interface/assets/web-CCgyqWSl.js +0 -1
- package/dist/interface/assets/web-Cm_fnqV2.js +0 -1
- package/dist/interface/assets/web-CsSSdPVW.js +0 -1
- package/dist/interface/assets/web-D2AMa4qD.js +0 -1
- package/dist/interface/assets/web-D2vwufvW.js +0 -1
- package/dist/interface/assets/web-D86U7zR6.js +0 -1
- package/dist/interface/assets/web-DilWncpX.js +0 -1
- package/dist/interface/assets/web-OjqOEI0k.js +0 -1
- package/dist/interface/assets/web-mrIKbnbx.js +0 -1
- package/dist/interface/assets/workbox-window.prod.es5-CsKLpYYC.js +0 -1
- /package/dist/interface/assets/{error-256-DLKVOU2S.png → logo-512-DLKVOU2S.png} +0 -0
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import TYPE_CHECKING, Any, Literal, Protocol
|
|
4
|
+
|
|
5
|
+
if TYPE_CHECKING:
|
|
6
|
+
from plugins.runtime.python.store import PluginStoreFile
|
|
3
7
|
|
|
4
8
|
|
|
5
9
|
class PluginConfigStoreRPC(Protocol):
|
|
@@ -9,11 +13,25 @@ class PluginConfigStoreRPC(Protocol):
|
|
|
9
13
|
|
|
10
14
|
|
|
11
15
|
class PluginConfigDb(Protocol):
|
|
12
|
-
def get(self, key: Literal["config"]) -> dict[str, Any] | None: ...
|
|
16
|
+
def get(self, key: Literal["config"], /) -> dict[str, Any] | None: ...
|
|
17
|
+
|
|
18
|
+
async def put(self, key: Literal["config"], value: dict[str, Any], /) -> None: ...
|
|
13
19
|
|
|
14
|
-
def
|
|
20
|
+
async def close(self) -> None: ...
|
|
15
21
|
|
|
16
|
-
|
|
22
|
+
|
|
23
|
+
class LocalPluginConfigDb:
|
|
24
|
+
def __init__(self, store: PluginStoreFile) -> None:
|
|
25
|
+
self._store = store
|
|
26
|
+
|
|
27
|
+
def get(self, key: Literal["config"], /) -> dict[str, Any]:
|
|
28
|
+
return self._store.get()
|
|
29
|
+
|
|
30
|
+
async def put(self, key: Literal["config"], value: dict[str, Any], /) -> None:
|
|
31
|
+
await self._store.put(value)
|
|
32
|
+
|
|
33
|
+
async def close(self) -> None:
|
|
34
|
+
await self._store.close()
|
|
17
35
|
|
|
18
36
|
|
|
19
37
|
class RemotePluginConfigDb:
|
|
@@ -24,19 +42,12 @@ class RemotePluginConfigDb:
|
|
|
24
42
|
async def init(self) -> None:
|
|
25
43
|
self._cache = (await self._store.get()) or {}
|
|
26
44
|
|
|
27
|
-
def get(self,
|
|
45
|
+
def get(self, key: Literal["config"], /) -> dict[str, Any]:
|
|
28
46
|
return self._cache
|
|
29
47
|
|
|
30
|
-
def
|
|
31
|
-
|
|
32
|
-
self.
|
|
33
|
-
# Lmdb-compatible sync signature — persistence is fire-and-forget; the
|
|
34
|
-
# cache is already current and errors only cost durability of this write.
|
|
35
|
-
task = asyncio.create_task(self._persist(dict(config)))
|
|
36
|
-
task.add_done_callback(lambda t: t.exception())
|
|
48
|
+
async def put(self, key: Literal["config"], value: dict[str, Any], /) -> None:
|
|
49
|
+
self._cache = value
|
|
50
|
+
await self._store.put(value)
|
|
37
51
|
|
|
38
|
-
def close(self) -> None:
|
|
52
|
+
async def close(self) -> None:
|
|
39
53
|
return None
|
|
40
|
-
|
|
41
|
-
async def _persist(self, config: dict[str, Any]) -> None:
|
|
42
|
-
await self._store.put(config)
|
|
@@ -29,6 +29,7 @@ export class PythonPluginRuntime extends BasePluginRuntime {
|
|
|
29
29
|
...this.getEnv(),
|
|
30
30
|
},
|
|
31
31
|
cwd: this.plugin.mainPath,
|
|
32
|
+
windowsHide: true,
|
|
32
33
|
});
|
|
33
34
|
this.worker.on('spawn', this.onSpawn.bind(this, this.worker.pid, command, args, processNames, resolve));
|
|
34
35
|
this.worker.on('error', this.onError.bind(this, reject));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/plugins/runtime/python/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAI/C,MAAM,OAAO,mBAAoB,SAAQ,iBAAiB;IAChD,EAAE,CAAkB;IAE5B,YAAY,MAAqB;QAC/B,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,IAAI,CAAC,EAAE,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACxI,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAE1B,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,CAAC;YAEnI,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC;YACzC,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACvE,MAAM,IAAI,GAAa,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,YAAY,CAAC,CAAC;YAEjE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YAEhE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,IAAI,EAAE;gBAClD,GAAG,EAAE;oBACH,gBAAgB,EAAE,GAAG;oBACrB,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE;oBACnC,GAAG,IAAI,CAAC,MAAM,EAAE;iBACjB;gBACD,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/plugins/runtime/python/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
from typing import Any,
|
|
2
|
-
|
|
3
|
-
from plugins.runtime.python.config_db import PluginConfigDb
|
|
1
|
+
from typing import Any, cast
|
|
4
2
|
|
|
5
3
|
from _camera_ui_tools.camera_ui_common import LoggerService
|
|
6
4
|
from _camera_ui_tools.camera_ui_rpc import RPCClient
|
|
@@ -14,6 +12,7 @@ from _camera_ui_tools.camera_ui_sdk import (
|
|
|
14
12
|
)
|
|
15
13
|
from _camera_ui_tools.camera_ui_sdk import PluginAPI as PluginAPIInterface
|
|
16
14
|
from _camera_ui_tools.camera_ui_sdk.internal import AsyncEventEmitter
|
|
15
|
+
from plugins.runtime.python.config_db import PluginConfigDb
|
|
17
16
|
from plugins.runtime.python.proxy.core_manager import CoreManagerProxy
|
|
18
17
|
from plugins.runtime.python.proxy.device_manager import DeviceManagerProxy
|
|
19
18
|
from plugins.runtime.python.proxy.download_manager import DownloadManagerProxy
|
|
@@ -33,10 +32,11 @@ class PluginAPI(AsyncEventEmitter, PluginAPIInterface):
|
|
|
33
32
|
) -> None:
|
|
34
33
|
super().__init__()
|
|
35
34
|
|
|
35
|
+
self.logger = logger
|
|
36
36
|
self.storage_path = storage_path
|
|
37
37
|
self.storage_controller = StorageController(self, proxy, plugin, plugin_db)
|
|
38
|
-
self.core_manager = CoreManagerProxy(proxy,
|
|
39
|
-
self.device_manager = DeviceManagerProxy(proxy, self
|
|
38
|
+
self.core_manager = CoreManagerProxy(proxy, logger, plugin)
|
|
39
|
+
self.device_manager = DeviceManagerProxy(proxy, self.storage_controller, logger, plugin)
|
|
40
40
|
self.download_manager = DownloadManagerProxy(proxy)
|
|
41
41
|
self.notification_manager = NotificationManagerProxy(proxy, plugin)
|
|
42
42
|
|
|
@@ -9,7 +9,6 @@ from deepdiff.diff import DeepDiff
|
|
|
9
9
|
from _camera_ui_tools.camera_ui_common import Subscribed, TaskSet
|
|
10
10
|
from _camera_ui_tools.camera_ui_rpc import CloseHandler, RPCClient
|
|
11
11
|
from _camera_ui_tools.camera_ui_sdk import (
|
|
12
|
-
API_EVENT,
|
|
13
12
|
BehaviorSubject,
|
|
14
13
|
Camera,
|
|
15
14
|
CameraDetectionSettings,
|
|
@@ -53,7 +52,6 @@ from _camera_ui_tools.camera_ui_sdk import (
|
|
|
53
52
|
from _camera_ui_tools.camera_ui_sdk import CameraDevice as CameraDeviceInterface
|
|
54
53
|
from _camera_ui_tools.camera_ui_sdk.internal import SensorJSON
|
|
55
54
|
from plugins.runtime.python.camera.utils import build_snapshot_url, build_target_url
|
|
56
|
-
from plugins.runtime.python.remote_urls import rewrite_source_urls_for_remote
|
|
57
55
|
from plugins.runtime.python.namespaces import (
|
|
58
56
|
CameraNamespaces,
|
|
59
57
|
FrameWorkerDetectionNamespaces,
|
|
@@ -67,6 +65,7 @@ from plugins.runtime.python.proxy.sensor import (
|
|
|
67
65
|
SensorControllerInterface,
|
|
68
66
|
SensorProxy,
|
|
69
67
|
)
|
|
68
|
+
from plugins.runtime.python.remote_urls import rewrite_source_urls_for_remote
|
|
70
69
|
from plugins.runtime.python.typings import (
|
|
71
70
|
CameraEventMessage,
|
|
72
71
|
PluginInfo,
|
|
@@ -78,7 +77,6 @@ from plugins.runtime.python.typings import (
|
|
|
78
77
|
)
|
|
79
78
|
|
|
80
79
|
if TYPE_CHECKING:
|
|
81
|
-
from plugins.runtime.python.plugin_api import PluginAPI
|
|
82
80
|
from plugins.runtime.python.storage_controller import StorageController
|
|
83
81
|
|
|
84
82
|
|
|
@@ -99,7 +97,10 @@ class CameraControllerInterface(Protocol):
|
|
|
99
97
|
async def disconnect(self) -> None: ...
|
|
100
98
|
async def snapshot(self, source_id: str, force_new: bool | None = None) -> bytes | None: ...
|
|
101
99
|
async def probeStream(
|
|
102
|
-
self,
|
|
100
|
+
self,
|
|
101
|
+
source_id: str,
|
|
102
|
+
probe_config: ProbeConfig | None = None,
|
|
103
|
+
refresh: bool | None = False,
|
|
103
104
|
) -> ProbeStream | None: ...
|
|
104
105
|
async def refreshStates(self) -> dict[str, Any]: ...
|
|
105
106
|
async def registerSensor(self, sensor: SensorJSON, plugin_id: str) -> bool: ...
|
|
@@ -144,7 +145,6 @@ class CameraDeviceProxy(Subscribed, CameraDeviceInterface):
|
|
|
144
145
|
def __init__(
|
|
145
146
|
self,
|
|
146
147
|
proxy: RPCClient,
|
|
147
|
-
api: PluginAPI,
|
|
148
148
|
storage_controller: StorageController,
|
|
149
149
|
camera: Camera,
|
|
150
150
|
plugin: PluginInfo,
|
|
@@ -163,7 +163,6 @@ class CameraDeviceProxy(Subscribed, CameraDeviceInterface):
|
|
|
163
163
|
)
|
|
164
164
|
|
|
165
165
|
self._logger = logger
|
|
166
|
-
self._api: PluginAPI = api
|
|
167
166
|
self._proxy = proxy
|
|
168
167
|
self._plugin = plugin
|
|
169
168
|
self._contract: PluginContract = plugin["contract"]
|
|
@@ -199,8 +198,6 @@ class CameraDeviceProxy(Subscribed, CameraDeviceInterface):
|
|
|
199
198
|
NamespaceManager.frame_worker_detection_namespaces(self.id),
|
|
200
199
|
)
|
|
201
200
|
|
|
202
|
-
self._api.once(API_EVENT.SHUTDOWN.value, self.cleanup)
|
|
203
|
-
|
|
204
201
|
@property
|
|
205
202
|
def _cameraObject(self) -> Camera:
|
|
206
203
|
return deepcopy(self._camera_subject.value)
|
|
@@ -345,7 +342,7 @@ class CameraDeviceProxy(Subscribed, CameraDeviceInterface):
|
|
|
345
342
|
return self._proxy.create_proxy(self._namespaces[4].detection_rpc)
|
|
346
343
|
|
|
347
344
|
def getSourceById(self, id: str) -> CameraDeviceSource | None:
|
|
348
|
-
return next((s for s in self.sources if s._id == id), None)
|
|
345
|
+
return next((s for s in self.sources if s._id == id), None) # pyright: ignore[reportPrivateUsage]
|
|
349
346
|
|
|
350
347
|
def _can_access_sensor(self, sensor: StoredSensorData) -> bool:
|
|
351
348
|
# Own sensors are always accessible
|
|
@@ -609,7 +606,10 @@ class CameraDeviceProxy(Subscribed, CameraDeviceInterface):
|
|
|
609
606
|
return await self._camera_controller_proxy.snapshot(source_id, force_new)
|
|
610
607
|
|
|
611
608
|
async def _probe_stream(
|
|
612
|
-
self,
|
|
609
|
+
self,
|
|
610
|
+
source_id: str,
|
|
611
|
+
probe_config: ProbeConfig | None = None,
|
|
612
|
+
refresh: bool | None = False,
|
|
613
613
|
) -> ProbeStream | None:
|
|
614
614
|
return await self._camera_controller_proxy.probeStream(source_id, probe_config, refresh)
|
|
615
615
|
|
|
@@ -624,8 +624,6 @@ class CameraDeviceProxy(Subscribed, CameraDeviceInterface):
|
|
|
624
624
|
|
|
625
625
|
self.unsubscribe()
|
|
626
626
|
|
|
627
|
-
self._api.removeListener(API_EVENT.SHUTDOWN.value, self.cleanup)
|
|
628
|
-
|
|
629
627
|
self._tasks.remove_all()
|
|
630
628
|
|
|
631
629
|
if self._close_subscription:
|
|
@@ -772,7 +770,10 @@ class CameraDeviceProxy(Subscribed, CameraDeviceInterface):
|
|
|
772
770
|
self._sensors.pop(removed_data["sensorId"], None)
|
|
773
771
|
|
|
774
772
|
self._sensor_removed_subject.next(
|
|
775
|
-
{
|
|
773
|
+
{
|
|
774
|
+
"sensorId": removed_data["sensorId"],
|
|
775
|
+
"sensorType": removed_data["sensorType"],
|
|
776
|
+
}
|
|
776
777
|
)
|
|
777
778
|
|
|
778
779
|
elif event_type == "sensor:assignment:changed":
|
|
@@ -2,12 +2,11 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import asyncio
|
|
4
4
|
import os
|
|
5
|
-
from typing import
|
|
5
|
+
from typing import Any, TypedDict
|
|
6
6
|
|
|
7
7
|
from _camera_ui_tools.camera_ui_common import LoggerService
|
|
8
8
|
from _camera_ui_tools.camera_ui_rpc import CloseHandler, RPCClient
|
|
9
9
|
from _camera_ui_tools.camera_ui_sdk import (
|
|
10
|
-
API_EVENT,
|
|
11
10
|
BasePlugin,
|
|
12
11
|
CoreManager,
|
|
13
12
|
CoreManagerEvent,
|
|
@@ -15,13 +14,14 @@ from _camera_ui_tools.camera_ui_sdk import (
|
|
|
15
14
|
PluginInterface,
|
|
16
15
|
Subject,
|
|
17
16
|
)
|
|
18
|
-
from plugins.runtime.python.namespaces import
|
|
17
|
+
from plugins.runtime.python.namespaces import (
|
|
18
|
+
CoreManagerNamespaces,
|
|
19
|
+
NamespaceManager,
|
|
20
|
+
PluginNamespaces,
|
|
21
|
+
)
|
|
19
22
|
from plugins.runtime.python.rpc.typings import CoreManagerInterface
|
|
20
23
|
from plugins.runtime.python.typings import PluginInfo
|
|
21
24
|
|
|
22
|
-
if TYPE_CHECKING:
|
|
23
|
-
from plugins.runtime.python.plugin_api import PluginAPI
|
|
24
|
-
|
|
25
25
|
|
|
26
26
|
class RPCConnection(TypedDict):
|
|
27
27
|
proxy: BasePlugin
|
|
@@ -32,13 +32,11 @@ class CoreManagerProxy(CoreManager):
|
|
|
32
32
|
def __init__(
|
|
33
33
|
self,
|
|
34
34
|
proxy: RPCClient,
|
|
35
|
-
api: PluginAPI,
|
|
36
35
|
logger: LoggerService,
|
|
37
36
|
plugin: PluginInfo,
|
|
38
37
|
):
|
|
39
38
|
self.__initialized = False
|
|
40
39
|
|
|
41
|
-
self.__api: PluginAPI = api
|
|
42
40
|
self.__proxy = proxy
|
|
43
41
|
self.__logger = logger
|
|
44
42
|
self.__plugin = plugin
|
|
@@ -52,8 +50,6 @@ class CoreManagerProxy(CoreManager):
|
|
|
52
50
|
self.__rpc_connections: dict[str, RPCConnection] = {}
|
|
53
51
|
self.__event_subject: Subject[CoreManagerEvent] = Subject()
|
|
54
52
|
|
|
55
|
-
self.__api.once(API_EVENT.SHUTDOWN.value, self.__close)
|
|
56
|
-
|
|
57
53
|
@property
|
|
58
54
|
def __core_manager_proxy(self) -> CoreManagerInterface:
|
|
59
55
|
return self.__proxy.create_proxy(
|
|
@@ -112,6 +108,11 @@ class CoreManagerProxy(CoreManager):
|
|
|
112
108
|
async def getPluginsByInterface(self, interfaceName: PluginInterface) -> list[PluginInfo]:
|
|
113
109
|
return await self.__core_manager_proxy.getPluginsByInterface(interfaceName)
|
|
114
110
|
|
|
111
|
+
async def close(self) -> None:
|
|
112
|
+
"""Internal method to close the core manager proxy."""
|
|
113
|
+
self.__initialized = False
|
|
114
|
+
self.__event_subject.complete()
|
|
115
|
+
|
|
115
116
|
async def __on_event_message(self, event: dict[str, Any]) -> None:
|
|
116
117
|
event_type = event.get("type")
|
|
117
118
|
if not event_type:
|
|
@@ -119,10 +120,6 @@ class CoreManagerProxy(CoreManager):
|
|
|
119
120
|
data = event.get("data")
|
|
120
121
|
self.__event_subject.next({"type": event_type, "data": data})
|
|
121
122
|
|
|
122
|
-
async def __close(self) -> None:
|
|
123
|
-
self.__initialized = False
|
|
124
|
-
self.__event_subject.complete()
|
|
125
|
-
self.__api.removeListener(API_EVENT.SHUTDOWN.value, self.__close)
|
|
126
123
|
if self.__close_subscription:
|
|
127
124
|
await self.__close_subscription()
|
|
128
125
|
self.__close_subscription = None
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import asyncio
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Any
|
|
5
5
|
|
|
6
6
|
from _camera_ui_tools.camera_ui_common import (
|
|
7
7
|
LoggerService,
|
|
8
8
|
)
|
|
9
9
|
from _camera_ui_tools.camera_ui_rpc import CloseHandler, RPCClient
|
|
10
10
|
from _camera_ui_tools.camera_ui_sdk import (
|
|
11
|
-
API_EVENT,
|
|
12
11
|
BasePlugin,
|
|
13
12
|
Camera,
|
|
14
13
|
DeviceManager,
|
|
@@ -20,21 +19,20 @@ from plugins.runtime.python.namespaces import (
|
|
|
20
19
|
NamespaceManager,
|
|
21
20
|
PluginNamespaces,
|
|
22
21
|
)
|
|
23
|
-
from plugins.runtime.python.rpc.typings import
|
|
22
|
+
from plugins.runtime.python.rpc.typings import (
|
|
23
|
+
DeviceManagerInterface,
|
|
24
|
+
DiscoveryManagerInterface,
|
|
25
|
+
)
|
|
24
26
|
from plugins.runtime.python.storage_controller import StorageController
|
|
25
27
|
from plugins.runtime.python.typings import PluginInfo
|
|
26
28
|
|
|
27
29
|
from .camera_device import CameraDeviceProxy
|
|
28
30
|
|
|
29
|
-
if TYPE_CHECKING:
|
|
30
|
-
from plugins.runtime.python.plugin_api import PluginAPI
|
|
31
|
-
|
|
32
31
|
|
|
33
32
|
class DeviceManagerProxy(DeviceManager):
|
|
34
33
|
def __init__(
|
|
35
34
|
self,
|
|
36
35
|
proxy: RPCClient,
|
|
37
|
-
api: PluginAPI,
|
|
38
36
|
storage_controller: StorageController,
|
|
39
37
|
logger: LoggerService,
|
|
40
38
|
plugin: PluginInfo,
|
|
@@ -42,7 +40,6 @@ class DeviceManagerProxy(DeviceManager):
|
|
|
42
40
|
self.__initialized = False
|
|
43
41
|
self.__plugin_instance: BasePlugin | None = None
|
|
44
42
|
|
|
45
|
-
self.__api: PluginAPI = api
|
|
46
43
|
self.__proxy = proxy
|
|
47
44
|
self.__storage_controller = storage_controller
|
|
48
45
|
self.__logger = logger
|
|
@@ -56,8 +53,6 @@ class DeviceManagerProxy(DeviceManager):
|
|
|
56
53
|
NamespaceManager.discovery_manager_namespaces(),
|
|
57
54
|
)
|
|
58
55
|
|
|
59
|
-
self.__api.once(API_EVENT.SHUTDOWN.value, self.__close)
|
|
60
|
-
|
|
61
56
|
@property
|
|
62
57
|
def __device_manager_proxy(self) -> DeviceManagerInterface:
|
|
63
58
|
return self.__proxy.create_proxy(self.__namespaces[0].device_manager_rpc, DeviceManagerInterface)
|
|
@@ -97,6 +92,16 @@ class DeviceManagerProxy(DeviceManager):
|
|
|
97
92
|
async def configureCameras(self, camera_devices: list[CameraDeviceProxy]) -> None:
|
|
98
93
|
await asyncio.gather(*[self.__get_camera_device(camera_device) for camera_device in camera_devices])
|
|
99
94
|
|
|
95
|
+
async def close(self) -> None:
|
|
96
|
+
"""Internal method to close the device manager proxy and cleanup resources."""
|
|
97
|
+
self.__initialized = False
|
|
98
|
+
if self.__close_request:
|
|
99
|
+
await self.__close_request()
|
|
100
|
+
|
|
101
|
+
for device in self.__devices.values():
|
|
102
|
+
await device.cleanup()
|
|
103
|
+
self.__devices.clear()
|
|
104
|
+
|
|
100
105
|
async def __on_event_message(self, event: Any) -> None:
|
|
101
106
|
if not self.__plugin_instance:
|
|
102
107
|
self.__logger.warn("Plugin instance not set, cannot handle lifecycle event")
|
|
@@ -107,6 +112,9 @@ class DeviceManagerProxy(DeviceManager):
|
|
|
107
112
|
|
|
108
113
|
if event_type == "cameraAdded":
|
|
109
114
|
camera: Camera = data.get("camera")
|
|
115
|
+
if camera["_id"] in self.__devices:
|
|
116
|
+
return
|
|
117
|
+
|
|
110
118
|
camera_device = await self.__get_camera_device(camera)
|
|
111
119
|
|
|
112
120
|
if camera_device:
|
|
@@ -153,11 +161,14 @@ class DeviceManagerProxy(DeviceManager):
|
|
|
153
161
|
camera_device = self.__devices[camera["_id"]]
|
|
154
162
|
else:
|
|
155
163
|
camera_logger = self.__logger.create_logger(
|
|
156
|
-
{
|
|
164
|
+
{
|
|
165
|
+
"suffix": camera["name"],
|
|
166
|
+
"target_id": camera["_id"],
|
|
167
|
+
"target_type": "camera",
|
|
168
|
+
}
|
|
157
169
|
)
|
|
158
170
|
camera_device = CameraDeviceProxy(
|
|
159
171
|
self.__proxy,
|
|
160
|
-
self.__api,
|
|
161
172
|
self.__storage_controller,
|
|
162
173
|
camera,
|
|
163
174
|
self.__plugin,
|
|
@@ -177,9 +188,3 @@ class DeviceManagerProxy(DeviceManager):
|
|
|
177
188
|
|
|
178
189
|
async def __remove_camera_storage(self, camera_id: str) -> None:
|
|
179
190
|
await self.__storage_controller.removeStorage("camera", camera_id)
|
|
180
|
-
|
|
181
|
-
async def __close(self) -> None:
|
|
182
|
-
self.__initialized = False
|
|
183
|
-
self.__api.removeListener(API_EVENT.SHUTDOWN.value, self.__close)
|
|
184
|
-
if self.__close_request:
|
|
185
|
-
await self.__close_request()
|
|
@@ -8,11 +8,7 @@ _LOCALHOST = re.compile(r"127\.0\.0\.1|localhost")
|
|
|
8
8
|
def _rewrite_url(url: str, master: str, user: str | None, password: str | None) -> str:
|
|
9
9
|
rewritten = _LOCALHOST.sub(master, url)
|
|
10
10
|
|
|
11
|
-
if (
|
|
12
|
-
user
|
|
13
|
-
and rewritten.startswith("rtsp://")
|
|
14
|
-
and "@" not in rewritten[7:].split("/")[0]
|
|
15
|
-
):
|
|
11
|
+
if user and rewritten.startswith("rtsp://") and "@" not in rewritten[7:].split("/")[0]:
|
|
16
12
|
rewritten = rewritten.replace("rtsp://", f"rtsp://{user}:{password or ''}@", 1)
|
|
17
13
|
|
|
18
14
|
return rewritten
|
|
@@ -22,9 +18,9 @@ def _walk(value: Any, master: str, user: str | None, password: str | None) -> An
|
|
|
22
18
|
if isinstance(value, str):
|
|
23
19
|
return _rewrite_url(value, master, user, password)
|
|
24
20
|
if isinstance(value, list):
|
|
25
|
-
return [_walk(v, master, user, password) for v in value]
|
|
21
|
+
return [_walk(v, master, user, password) for v in value] # pyright: ignore[reportUnknownVariableType]
|
|
26
22
|
if isinstance(value, dict):
|
|
27
|
-
return {k: _walk(v, master, user, password) for k, v in value.items()}
|
|
23
|
+
return {k: _walk(v, master, user, password) for k, v in value.items()} # pyright: ignore[reportUnknownVariableType]
|
|
28
24
|
return value
|
|
29
25
|
|
|
30
26
|
|