@camera.ui/server 2.0.3 → 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/interface/assets/{404-4kT4tezJ.js → 404-DRRPa9Hr.js} +1 -1
- package/dist/interface/assets/About-Db5MifHo.js +1 -0
- package/dist/interface/assets/{Adminpanel-B38Z5X54.js → Adminpanel-ByDZ8Xpn.js} +1 -1
- package/dist/interface/assets/{Automation-BbX3-xf_.js → Automation-BqJ8PyPa.js} +2 -2
- package/dist/interface/assets/{AutomationImport-D5Ov1XoG.js → AutomationImport-BvuLSZcZ.js} +2 -2
- package/dist/interface/assets/{AutomationStore-CVQpLFae.js → AutomationStore-Ca07W8uH.js} +2 -2
- package/dist/interface/assets/{AutomationStoreDetail-NNXJ16cM.js → AutomationStoreDetail-DmFvT2az.js} +2 -2
- package/dist/interface/assets/{Automations-w8GvcQRP.js → Automations-Dr8K-cDz.js} +2 -2
- package/dist/interface/assets/{Camera-Bx-Fc8Rk.js → Camera-Bu1U8Oal.js} +2 -2
- package/dist/interface/assets/{CameraConsole-Br1Ot4HR.js → CameraConsole-BcvP76iJ.js} +1 -1
- package/dist/interface/assets/{Cameras-C-NQYdbQ.js → Cameras-Dwr5fbzg.js} +2 -2
- package/dist/interface/assets/{Camview-DWgaBueW.js → Camview-F0vVBWeZ.js} +1 -1
- package/dist/interface/assets/Config-CIAVylkc.js +2 -0
- package/dist/interface/assets/{ConfigActionCameraControl-Cvjyd2Rq.js → ConfigActionCameraControl-C1dsQnYF.js} +1 -1
- package/dist/interface/assets/{ConfigActionDelay-Rnxk--Qt.js → ConfigActionDelay-DTjjadCG.js} +1 -1
- package/dist/interface/assets/{ConfigActionHttp-BF8vrrHR.js → ConfigActionHttp-IFqZaHDZ.js} +1 -1
- package/dist/interface/assets/{ConfigActionImageInput-C8_H3ubM.js → ConfigActionImageInput-DY8RQJ2h.js} +1 -1
- package/dist/interface/assets/{ConfigActionNotification-T35A9o6f.js → ConfigActionNotification-CJL8uNR-.js} +1 -1
- package/dist/interface/assets/{ConfigActionOutput-CxB3eLLl.js → ConfigActionOutput-Butmz0jI.js} +1 -1
- package/dist/interface/assets/{ConfigActionPlugin-BHdyn9Te.js → ConfigActionPlugin-D5oE8oXm.js} +1 -1
- package/dist/interface/assets/{ConfigActionSensor-CMrg6h2b.js → ConfigActionSensor-CJ-mk6eS.js} +1 -1
- package/dist/interface/assets/{ConfigActionSnapshot-Dz6LdZsA.js → ConfigActionSnapshot-DCCiYu-s.js} +1 -1
- package/dist/interface/assets/{ConfigActionVariable-DIlUMHDy.js → ConfigActionVariable-F28sicqK.js} +1 -1
- package/dist/interface/assets/{ConfigConditionIfElse-0XRDQcTw.js → ConfigConditionIfElse-BJhRgP7t.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSensorState-BzFQHkML.js → ConfigConditionSensorState-B6MdgPfo.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSwitch-C7pp1EZI.js → ConfigConditionSwitch-BKToCaFK.js} +1 -1
- package/dist/interface/assets/{ConfigConditionTime-B0zctDc4.js → ConfigConditionTime-ChXeDbZB.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerDetection-DOS-gNhG.js → ConfigTriggerDetection-BWd3QqYf.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerGeofence-YggfZUFH.js → ConfigTriggerGeofence-BoT9t-8V.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerManual-BpBTh3CS.js → ConfigTriggerManual-Bt62nmi8.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSchedule-DZG10NcA.js → ConfigTriggerSchedule-oBDIqAMo.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSensor-Cu657NGX.js → ConfigTriggerSensor-BlTHlstZ.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSystem-BfIHn9AZ.js → ConfigTriggerSystem--nEg_iQ0.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerWebhook-BKPOGAs3.js → ConfigTriggerWebhook-83rLUOjQ.js} +1 -1
- package/dist/interface/assets/{Console-C6A7MqYh.js → Console-2sHljg8h.js} +1 -1
- package/dist/interface/assets/{CuiActionButton-BSy6VaJ6.js → CuiActionButton-CNjL01gn.js} +1 -1
- package/dist/interface/assets/{CuiAvatar-BwAVgBUB.js → CuiAvatar-BDT9c-UI.js} +1 -1
- package/dist/interface/assets/{CuiBBoxPlayground-BUPzZ0sI.js → CuiBBoxPlayground-CMnBcPwI.js} +1 -1
- package/dist/interface/assets/CuiBottomSheet-WuxFsOrw.js +1 -0
- package/dist/interface/assets/{CuiBottomSheet-CxYeW_sq.js → CuiBottomSheet-h5sjwTf4.js} +1 -1
- package/dist/interface/assets/{CuiCameraCard-Ci09TTwg.js → CuiCameraCard-Bip9OIZO.js} +1 -1
- package/dist/interface/assets/{CuiCameraPipCard-fYyJQ9DL.js → CuiCameraPipCard-DElQvAB0.js} +1 -1
- package/dist/interface/assets/{CuiCameraRecordings-75jdIwEG.js → CuiCameraRecordings-Bf5IG7OM.js} +1 -1
- package/dist/interface/assets/{CuiCameraShares-C2HDYSGy.js → CuiCameraShares-Cw-Mffg8.js} +1 -1
- package/dist/interface/assets/{CuiCameraSnapshot-Cz8aYjoo.js → CuiCameraSnapshot-BS-_U34M.js} +1 -1
- package/dist/interface/assets/{CuiCameraTable-DrIhSgmU.js → CuiCameraTable-DY_unr4m.js} +1 -1
- package/dist/interface/assets/{CuiDataTable-DhnQRMXG.js → CuiDataTable-C5qi7zpz.js} +1 -1
- package/dist/interface/assets/{CuiFloatingButton-DRKyDsPh.js → CuiFloatingButton-Pmur2pAJ.js} +1 -1
- package/dist/interface/assets/{CuiImage-i_fTDsHd.js → CuiImage-DVoYtgtl.js} +1 -1
- package/dist/interface/assets/{CuiMenu-DSTlEsg9.js → CuiMenu-B7AhQbgB.js} +1 -1
- package/dist/interface/assets/{CuiPluginCard-XmOOko_4.js → CuiPluginCard-B5PhaGoF.js} +2 -2
- package/dist/interface/assets/{CuiPluginCategoryChip-BwL2qCTM.js → CuiPluginCategoryChip-nEwIiKiK.js} +1 -1
- package/dist/interface/assets/{CuiPluginOAuthButton-CmW7OY0L.js → CuiPluginOAuthButton-CJGsl-89.js} +2 -2
- package/dist/interface/assets/{CuiPluginTrustBadge-KcOasEJH.js → CuiPluginTrustBadge-DExKttfC.js} +1 -1
- package/dist/interface/assets/{CuiQRCode-DgaxwrkH.js → CuiQRCode-DkRZ5hfS.js} +1 -1
- package/dist/interface/assets/{CuiRecordingsGrid-BxoJSn6Z.js → CuiRecordingsGrid-mFXSsuG8.js} +1 -1
- package/dist/interface/assets/{CuiSchema-BDrsTIqf.js → CuiSchema-BSv1nUun.js} +1 -1
- package/dist/interface/assets/{CuiTopNavbarItem-DVwItfbG.js → CuiTopNavbarItem-w21c3xtQ.js} +1 -1
- package/dist/interface/assets/{CuiTopbarSlot-BT6XOANB.js → CuiTopbarSlot-CYPUqVPx.js} +1 -1
- package/dist/interface/assets/{Faces-DvYCASPC.js → Faces-DLpVsIkY.js} +1 -1
- package/dist/interface/assets/{FirstSteps-DAsmDJJE.js → FirstSteps-BDDy9x_6.js} +1 -1
- package/dist/interface/assets/{Instances-D4fzQrI3.js → Instances-FeIAnJix.js} +1 -1
- package/dist/interface/assets/{Logs-DYXtlueg.js → Logs-CIUyuGwj.js} +1 -1
- package/dist/interface/assets/{Menu-BcBthWK9.js → Menu-Gqs2UiSW.js} +1 -1
- package/dist/interface/assets/{OAuthDeviceFlow-C70vC26b.js → OAuthDeviceFlow-hNJ_UrdG.js} +1 -1
- package/dist/interface/assets/{Plugin-Ek8CJHb3.js → Plugin-BKItJas0.js} +1 -1
- package/dist/interface/assets/{PluginConsole-n1wMznj9.js → PluginConsole-Bwd5Mktk.js} +1 -1
- package/dist/interface/assets/PluginDetail-BBh5y9qU.js +2 -0
- package/dist/interface/assets/{PluginSchema-DDpK-w_q.js → PluginSchema-D92qcqf9.js} +1 -1
- package/dist/interface/assets/PluginSearch-BN3U3NY6.js +2 -0
- package/dist/interface/assets/PluginSearch-nHAFKMX0.js +1 -0
- package/dist/interface/assets/Plugins-gxyxkQ5i.js +1 -0
- package/dist/interface/assets/Recordings-B3Xw23vh.js +1 -0
- package/dist/interface/assets/{Settings-DqA1TU3I.js → Settings-D2LHMohy2.js} +1 -1
- package/dist/interface/assets/SettingsAccount-DUN1oTTn.js +1 -0
- package/dist/interface/assets/{SettingsAccount-BEVxkPFS.js → SettingsAccount-b4eVxI3M.js} +1 -1
- package/dist/interface/assets/{SettingsAppearance-B9KzFCdx.js → SettingsAppearance--Eidr-fz.js} +1 -1
- package/dist/interface/assets/SettingsAppearance-CLVMmnR_.js +1 -0
- package/dist/interface/assets/{SettingsBackup-j_z4sOId.js → SettingsBackup-DUYVdKjD.js} +1 -1
- package/dist/interface/assets/{SettingsNotifications-D2WgP9Pd.js → SettingsNotifications-xYOuLZsr.js} +1 -1
- package/dist/interface/assets/SettingsRecordings-BQDf4Zeg.js +1 -0
- package/dist/interface/assets/{SettingsRemote-C7wTY9EH.js → SettingsRemote-BXr1HLHm.js} +1 -1
- package/dist/interface/assets/SettingsSystem-DAjNwp4I.js +2 -0
- package/dist/interface/assets/{SettingsUsers-CdVrMc0h.js → SettingsUsers-DJ-eMMWe.js} +1 -1
- package/dist/interface/assets/{Terminal-pyMSi5jh.js → Terminal-P3yVGG8s.js} +1 -1
- package/dist/interface/assets/{VariableInput-DmE1m9Il.js → VariableInput-DdVw4SIR.js} +1 -1
- package/dist/interface/assets/{VariableSuggestions-eII-1Bd_.js → VariableSuggestions-SJPd5c8d.js} +1 -1
- package/dist/interface/assets/VersionsHandler-DcZ3RtHV.js +7 -0
- package/dist/interface/assets/{Workers-KL_fb-Ki.js → Workers-DWSJsRko.js} +1 -1
- package/dist/interface/assets/api-CKqAhmSC.css +2 -0
- package/dist/interface/assets/{api-DVDZCfaM.js → api-Cv3vt1pa.js} +1 -1
- package/dist/interface/assets/api-Ex2VUVD1.js +2 -0
- package/dist/interface/assets/{auth-pmpjgGBQ.js → auth-W-JA6GOD.js} +1 -1
- package/dist/interface/assets/{automations-xpnVYpRH.js → automations-d_B5L3sO.js} +1 -1
- package/dist/interface/assets/{automations-73X55Wxy.js → automations-irBgx9Ew.js} +1 -1
- package/dist/interface/assets/{backup-G0wpvhtl.js → backup-BT-P0duG.js} +1 -1
- package/dist/interface/assets/{cameras-CURX5SWn.js → cameras-DxjpuzW1.js} +1 -1
- package/dist/interface/assets/{cameras.schema-UcmqaqCT.js → cameras.schema-7ex1wBck.js} +1 -1
- package/dist/interface/assets/cloudHandoff-Cu1sRatW.js +1 -0
- package/dist/interface/assets/config-DwlSsbcP.js +1 -0
- package/dist/interface/assets/{deviceId-DRtZsFhF.js → deviceId-I24oaPe6.js} +1 -1
- package/dist/interface/assets/{hasPermission-DKf8cjsF.js → hasPermission-Cz0dkfyp.js} +1 -1
- package/dist/interface/assets/{instances-DvkGEhQ9.js → instances-D6wHW9_0.js} +1 -1
- package/dist/interface/assets/{main-D8ZyVvgT.css → main-BjuXWRyJ.css} +1 -1
- package/dist/interface/assets/main-C-WCGnJh.js +3 -0
- package/dist/interface/assets/{notifications-CThoWQfW.js → notifications-DLNUbEKC.js} +1 -1
- package/dist/interface/assets/{plugins-DN9592Gw.js → plugins-D-tGC0mr.js} +1 -1
- package/dist/interface/assets/{round-restart-alt-C6cWOig8.js → round-restart-alt-CaOjUTav.js} +1 -1
- package/dist/interface/assets/router-Cbt2STjH.js +2 -0
- package/dist/interface/assets/{routerState-DxipV4mY.js → routerState-_BXrxePY.js} +1 -1
- package/dist/interface/assets/{server-BaJ0ampx.js → server-ACfR-bOw.js} +1 -1
- package/dist/interface/assets/{shares-B6eaflmY.js → shares-Ut3rTZUx.js} +1 -1
- package/dist/interface/assets/{theme-Dbkvi1e_.js → theme-CDU91XW5.js} +1 -1
- package/dist/interface/assets/{types-CAW47AJe.js → types-Blh_1COV.js} +1 -1
- package/dist/interface/assets/ui-SZnjYe2F.js +1 -0
- package/dist/interface/assets/useAppVersion-Bo_n0OVQ.js +1 -0
- package/dist/interface/assets/{useBiometricCredentials-BJheacnv.js → useBiometricCredentials-XyEQbPBo.js} +1 -1
- package/dist/interface/assets/{useCameraOptions-r_TT2WJk.js → useCameraOptions-C3-ZVV2A.js} +1 -1
- package/dist/interface/assets/{useCuiCameraDrawer-DwlhaZ2i.js → useCuiCameraDrawer-CebQFNWX.js} +1 -1
- package/dist/interface/assets/useCuiDialog-ClphnG79.js +2 -0
- package/dist/interface/assets/{useFileDownload-BE32i7R1.js → useFileDownload-CdDprX3v.js} +1 -1
- package/dist/interface/assets/{useLogsSocket-CLSJzN6z.js → useLogsSocket-DKU0kKe_.js} +1 -1
- package/dist/interface/assets/{useServerRestart-DCJcb-IB.js → useServerRestart-CgCmTap7.js} +1 -1
- package/dist/interface/assets/{useSharedComposables-CWxbvFAw.js → useSharedComposables-BcUR_c17.js} +1 -1
- package/dist/interface/assets/{useStreamStatus-DH9KQ7aE.js → useStreamStatus-BTa-XXZJ.js} +1 -1
- package/dist/interface/assets/useUpdateChannel-WznJBL9L.js +1 -0
- package/dist/interface/assets/{useUserOptions-GzbPgMnC.js → useUserOptions-DffxmIf7.js} +1 -1
- package/dist/interface/assets/{users.schema-DKf9LQAY.js → users.schema-BcwArBbH.js} +1 -1
- package/dist/interface/assets/{vendor-cameraui-DhctzD3V.js → vendor-cameraui-zHth8Pa5.js} +2 -2
- package/dist/interface/assets/{vendor-chart-BjXPY6za.js → vendor-chart-CTk1N5fJ.js} +1 -1
- package/dist/interface/assets/{vendor-core-DnC_SdtD.js → vendor-core-_UeC1YMQ.js} +1 -1
- package/dist/interface/assets/{vendor-primevue-OV61z06m.js → vendor-primevue-BXMgwPEu.js} +1 -1
- package/dist/interface/assets/{view-grid-Y-11W6nc.js → view-grid-CX0RwdlE.js} +1 -1
- package/dist/interface/index.html +45 -44
- package/dist/interface/sw.js +1 -1
- package/dist/server/package.json +26 -16
- package/dist/server/requirements.txt +3 -2
- 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/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/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/plugins.service.js +1 -1
- package/dist/server/src/api/services/plugins.service.js.map +1 -1
- package/dist/server/src/api/types/index.d.ts +1 -1
- 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/ptz-autotracker.js +51 -78
- package/dist/server/src/camera/decoder/ptz-autotracker.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 -0
- 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 +58 -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/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/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 +47 -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 -0
- package/dist/server/src/remote/tunnel/client.js.map +1 -1
- 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/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 +26 -16
- package/dist/interface/assets/About-CMxNy7no.js +0 -1
- package/dist/interface/assets/Config-CcQUpeLe.js +0 -2
- package/dist/interface/assets/CuiBottomSheet-CFGurpP0.js +0 -1
- package/dist/interface/assets/PluginDetail-COURDgOk.js +0 -2
- package/dist/interface/assets/PluginSearch-Czyt4or9.js +0 -2
- package/dist/interface/assets/PluginSearch-SpzDNe08.js +0 -1
- package/dist/interface/assets/Plugins-C0YqC8-O.js +0 -1
- package/dist/interface/assets/Recordings-CdJm5exh.js +0 -1
- package/dist/interface/assets/SettingsAccount-BZaLHEXI.js +0 -1
- package/dist/interface/assets/SettingsAppearance-DX4C4Xxw.js +0 -1
- package/dist/interface/assets/SettingsRecordings-DyMo9O0s.js +0 -1
- package/dist/interface/assets/SettingsSystem-CrrqIGPM.js +0 -2
- package/dist/interface/assets/VersionsHandler-C6NlIR5o.js +0 -7
- package/dist/interface/assets/api-BOvysXhM.js +0 -2
- package/dist/interface/assets/api-D7tGlI-z.css +0 -2
- package/dist/interface/assets/cloudHandoff-BFhzjzv4.js +0 -1
- package/dist/interface/assets/main-DL335xeQ.js +0 -3
- package/dist/interface/assets/router-UepCX3sI.js +0 -2
- package/dist/interface/assets/ui-CH55JEcY.js +0 -1
- package/dist/interface/assets/useCuiDialog-DSyAPuxQ.js +0 -2
- /package/dist/interface/assets/{logo-512-DLKVOU2S.png → error-256-DLKVOU2S.png} +0 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
const CANONICAL_SECTIONS = new Set(['plugin', 'cameras', 'sensors']);
|
|
2
|
+
const LEGACY_SENSOR_MARKER = ':sensor:';
|
|
3
|
+
export function isCanonicalLayout(payload) {
|
|
4
|
+
return Object.keys(payload).every((key) => CANONICAL_SECTIONS.has(key));
|
|
5
|
+
}
|
|
6
|
+
function isGoLegacyLayout(payload, pluginId) {
|
|
7
|
+
const keys = Object.keys(payload);
|
|
8
|
+
return keys.length > 0 && keys.every((key) => key.startsWith(`${pluginId}.`));
|
|
9
|
+
}
|
|
10
|
+
export function remapLegacyLayout(payload, pluginId) {
|
|
11
|
+
if (isCanonicalLayout(payload) || isGoLegacyLayout(payload, pluginId)) {
|
|
12
|
+
return payload;
|
|
13
|
+
}
|
|
14
|
+
const canonical = {};
|
|
15
|
+
for (const section of CANONICAL_SECTIONS) {
|
|
16
|
+
if (payload[section] !== undefined) {
|
|
17
|
+
canonical[section] = payload[section];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
for (const [key, values] of Object.entries(payload)) {
|
|
21
|
+
if (CANONICAL_SECTIONS.has(key)) {
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
if (key === 'storage') {
|
|
25
|
+
if (canonical.plugin !== undefined) {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
canonical.plugin = values;
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
const sensorIdx = key.indexOf(LEGACY_SENSOR_MARKER);
|
|
32
|
+
if (sensorIdx !== -1) {
|
|
33
|
+
// <camId>:sensor:<type>:<pluginId>:<name> — type and pluginId contain no
|
|
34
|
+
// colons; the name keeps everything after them verbatim.
|
|
35
|
+
const cameraId = key.slice(0, sensorIdx);
|
|
36
|
+
const rest = key.slice(sensorIdx + LEGACY_SENSOR_MARKER.length);
|
|
37
|
+
const typeEnd = rest.indexOf(':');
|
|
38
|
+
const pluginEnd = rest.indexOf(':', typeEnd + 1);
|
|
39
|
+
if (typeEnd !== -1 && pluginEnd !== -1) {
|
|
40
|
+
const sensorType = rest.slice(0, typeEnd);
|
|
41
|
+
const sensorName = rest.slice(pluginEnd + 1);
|
|
42
|
+
if (canonical.sensors?.[cameraId]?.[sensorType]?.[sensorName] !== undefined) {
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
canonical.sensors ??= {};
|
|
46
|
+
canonical.sensors[cameraId] ??= {};
|
|
47
|
+
canonical.sensors[cameraId][sensorType] ??= {};
|
|
48
|
+
canonical.sensors[cameraId][sensorType][sensorName] = values;
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (canonical.cameras?.[key] !== undefined) {
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
canonical.cameras ??= {};
|
|
56
|
+
canonical.cameras[key] = values;
|
|
57
|
+
}
|
|
58
|
+
return canonical;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../../../src/plugins/store/layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type StoreLocation = {
|
|
2
|
+
kind: 'plugin';
|
|
3
|
+
} | {
|
|
4
|
+
kind: 'camera';
|
|
5
|
+
cameraId: string;
|
|
6
|
+
} | {
|
|
7
|
+
kind: 'sensor';
|
|
8
|
+
cameraId: string;
|
|
9
|
+
sensorType: string;
|
|
10
|
+
sensorName: string;
|
|
11
|
+
};
|
|
12
|
+
export declare function readLocation(config: Record<string, any>, location: StoreLocation): Record<string, any> | undefined;
|
|
13
|
+
export declare function writeLocation(config: Record<string, any>, location: StoreLocation, values: Record<string, any>): void;
|
|
14
|
+
export declare function deleteLocation(config: Record<string, any>, location: StoreLocation): void;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export function readLocation(config, location) {
|
|
2
|
+
switch (location.kind) {
|
|
3
|
+
case 'plugin':
|
|
4
|
+
return config.plugin;
|
|
5
|
+
case 'camera':
|
|
6
|
+
return config.cameras?.[location.cameraId];
|
|
7
|
+
case 'sensor':
|
|
8
|
+
return config.sensors?.[location.cameraId]?.[location.sensorType]?.[location.sensorName];
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function writeLocation(config, location, values) {
|
|
12
|
+
switch (location.kind) {
|
|
13
|
+
case 'plugin':
|
|
14
|
+
config.plugin = values;
|
|
15
|
+
return;
|
|
16
|
+
case 'camera':
|
|
17
|
+
config.cameras ??= {};
|
|
18
|
+
config.cameras[location.cameraId] = values;
|
|
19
|
+
return;
|
|
20
|
+
case 'sensor':
|
|
21
|
+
config.sensors ??= {};
|
|
22
|
+
config.sensors[location.cameraId] ??= {};
|
|
23
|
+
config.sensors[location.cameraId][location.sensorType] ??= {};
|
|
24
|
+
config.sensors[location.cameraId][location.sensorType][location.sensorName] = values;
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export function deleteLocation(config, location) {
|
|
29
|
+
switch (location.kind) {
|
|
30
|
+
case 'plugin':
|
|
31
|
+
delete config.plugin;
|
|
32
|
+
return;
|
|
33
|
+
case 'camera':
|
|
34
|
+
delete config.cameras?.[location.cameraId];
|
|
35
|
+
pruneIfEmpty(config, 'cameras');
|
|
36
|
+
return;
|
|
37
|
+
case 'sensor': {
|
|
38
|
+
const byType = config.sensors?.[location.cameraId]?.[location.sensorType];
|
|
39
|
+
if (byType) {
|
|
40
|
+
delete byType[location.sensorName];
|
|
41
|
+
pruneIfEmpty(config.sensors[location.cameraId], location.sensorType);
|
|
42
|
+
pruneIfEmpty(config.sensors, location.cameraId);
|
|
43
|
+
pruneIfEmpty(config, 'sensors');
|
|
44
|
+
}
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function pruneIfEmpty(parent, key) {
|
|
50
|
+
const child = parent[key];
|
|
51
|
+
if (child && typeof child === 'object' && Object.keys(child).length === 0) {
|
|
52
|
+
delete parent[key];
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=location.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"location.js","sourceRoot":"","sources":["../../../../../src/plugins/store/location.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,YAAY,CAAC,MAA2B,EAAE,QAAuB;IAC/E,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC7C,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAA2B,EAAE,QAAuB,EAAE,MAA2B;IAC7G,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,QAAQ;YACX,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;YACvB,OAAO;QACT,KAAK,QAAQ;YACX,MAAM,CAAC,OAAO,KAAK,EAAE,CAAC;YACtB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;YAC3C,OAAO;QACT,KAAK,QAAQ;YACX,MAAM,CAAC,OAAO,KAAK,EAAE,CAAC;YACtB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACzC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;YACrF,OAAO;IACX,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAA2B,EAAE,QAAuB;IACjF,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,MAAM,CAAC;YACrB,OAAO;QACT,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC3C,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAChC,OAAO;QACT,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC1E,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACnC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACrE,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAChD,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAClC,CAAC;YACD,OAAO;QACT,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,MAA2B,EAAE,GAAW;IAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1E,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function migrateLmdbToStoreFile(volumeDir: string, storePath: string): Promise<boolean>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { open } from 'lmdb';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { writeStoreFile } from './storeFile.js';
|
|
5
|
+
export async function migrateLmdbToStoreFile(volumeDir, storePath) {
|
|
6
|
+
if (existsSync(storePath) || !existsSync(join(volumeDir, 'data.mdb'))) {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
const db = open(volumeDir, { name: 'plugins' });
|
|
10
|
+
try {
|
|
11
|
+
const config = db.get('config');
|
|
12
|
+
if (!config || Object.keys(config).length === 0) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
await writeStoreFile(storePath, config);
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
finally {
|
|
19
|
+
await db.close();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../../../src/plugins/store/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,SAAiB,EAAE,SAAiB;IAC/E,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;QACtE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAoC,CAAC;QACnE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const STORE_FILE_NAME = "store.cui";
|
|
2
|
+
export declare class PluginStoreFile {
|
|
3
|
+
private readonly volumeDir;
|
|
4
|
+
private readonly pluginId;
|
|
5
|
+
private readonly path;
|
|
6
|
+
private readonly writer;
|
|
7
|
+
private payload;
|
|
8
|
+
private closed;
|
|
9
|
+
constructor(volumeDir: string, pluginId: string);
|
|
10
|
+
open(): Promise<void>;
|
|
11
|
+
get(): Record<string, any>;
|
|
12
|
+
put(payload: Record<string, any>): Promise<void>;
|
|
13
|
+
close(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { mkdir } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { CoalescingWriter } from './coalescingWriter.js';
|
|
4
|
+
import { remapLegacyLayout } from './layout.js';
|
|
5
|
+
import { migrateLmdbToStoreFile } from './migrate.js';
|
|
6
|
+
import { backupStoreFile, readStoreFile, removeOrphanedTmpFiles, writeStoreFile } from './storeFile.js';
|
|
7
|
+
export const STORE_FILE_NAME = 'store.cui';
|
|
8
|
+
export class PluginStoreFile {
|
|
9
|
+
volumeDir;
|
|
10
|
+
pluginId;
|
|
11
|
+
path;
|
|
12
|
+
writer;
|
|
13
|
+
payload = {};
|
|
14
|
+
closed = true;
|
|
15
|
+
constructor(volumeDir, pluginId) {
|
|
16
|
+
this.volumeDir = volumeDir;
|
|
17
|
+
this.pluginId = pluginId;
|
|
18
|
+
this.path = join(volumeDir, STORE_FILE_NAME);
|
|
19
|
+
this.writer = new CoalescingWriter((snapshot) => writeStoreFile(this.path, snapshot));
|
|
20
|
+
}
|
|
21
|
+
async open() {
|
|
22
|
+
await mkdir(this.volumeDir, { recursive: true });
|
|
23
|
+
await removeOrphanedTmpFiles(this.path);
|
|
24
|
+
let payload = await readStoreFile(this.path);
|
|
25
|
+
if (payload === undefined) {
|
|
26
|
+
const migrated = await migrateLmdbToStoreFile(this.volumeDir, this.path);
|
|
27
|
+
payload = migrated ? await readStoreFile(this.path) : undefined;
|
|
28
|
+
if (payload === undefined) {
|
|
29
|
+
payload = {};
|
|
30
|
+
await writeStoreFile(this.path, payload);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const remapped = remapLegacyLayout(payload, this.pluginId);
|
|
34
|
+
if (remapped !== payload) {
|
|
35
|
+
await writeStoreFile(this.path, remapped);
|
|
36
|
+
}
|
|
37
|
+
this.payload = remapped;
|
|
38
|
+
await backupStoreFile(this.path);
|
|
39
|
+
this.closed = false;
|
|
40
|
+
}
|
|
41
|
+
get() {
|
|
42
|
+
return this.payload;
|
|
43
|
+
}
|
|
44
|
+
async put(payload) {
|
|
45
|
+
if (this.closed) {
|
|
46
|
+
// A silently "successful" no-op here would lose the write during
|
|
47
|
+
// shutdown windows. Fail loudly instead.
|
|
48
|
+
throw new Error(`store: put on closed store ${this.path}`);
|
|
49
|
+
}
|
|
50
|
+
this.payload = payload;
|
|
51
|
+
await this.writer.write(payload);
|
|
52
|
+
}
|
|
53
|
+
async close() {
|
|
54
|
+
this.closed = true;
|
|
55
|
+
await this.writer.idle();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=pluginStoreFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pluginStoreFile.js","sourceRoot":"","sources":["../../../../../src/plugins/store/pluginStoreFile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Logger } from '@camera.ui/common';
|
|
2
|
+
export declare function writeStoreFile(path: string, payload: Record<string, any>): Promise<void>;
|
|
3
|
+
export declare function readStoreFile(path: string): Promise<Record<string, any> | undefined>;
|
|
4
|
+
export declare function backupStoreFile(path: string, log?: Logger): Promise<void>;
|
|
5
|
+
export declare function removeOrphanedTmpFiles(path: string): Promise<void>;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { copyFile, open, readFile, readdir, rename, unlink } from 'node:fs/promises';
|
|
2
|
+
import { basename, dirname, join } from 'node:path';
|
|
3
|
+
import { setTimeout as delay } from 'node:timers/promises';
|
|
4
|
+
import { StoreCorruptError, decodeEnvelope, encodeEnvelope } from './envelope.js';
|
|
5
|
+
// Windows AV scanners / the search indexer transiently hold the rename target
|
|
6
|
+
// open; EPERM/EACCES there is retryable within a small budget (~0.5s total).
|
|
7
|
+
const RENAME_RETRY_DELAYS_MS = [10, 25, 60, 150, 300];
|
|
8
|
+
async function renameWithRetry(tmpPath, path) {
|
|
9
|
+
for (let attempt = 0;; attempt++) {
|
|
10
|
+
try {
|
|
11
|
+
await rename(tmpPath, path);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
const code = error.code;
|
|
16
|
+
const retryable = process.platform === 'win32' && (code === 'EPERM' || code === 'EACCES');
|
|
17
|
+
if (!retryable || attempt >= RENAME_RETRY_DELAYS_MS.length) {
|
|
18
|
+
throw error;
|
|
19
|
+
}
|
|
20
|
+
await delay(RENAME_RETRY_DELAYS_MS[attempt]);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export async function writeStoreFile(path, payload) {
|
|
25
|
+
const buf = encodeEnvelope(payload);
|
|
26
|
+
const tmpPath = `${path}.tmp-${process.pid}`;
|
|
27
|
+
try {
|
|
28
|
+
const handle = await open(tmpPath, 'w');
|
|
29
|
+
try {
|
|
30
|
+
await handle.writeFile(buf);
|
|
31
|
+
await handle.sync();
|
|
32
|
+
}
|
|
33
|
+
finally {
|
|
34
|
+
await handle.close();
|
|
35
|
+
}
|
|
36
|
+
await renameWithRetry(tmpPath, path);
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
await unlink(tmpPath).catch(() => { });
|
|
40
|
+
throw error;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export async function readStoreFile(path) {
|
|
44
|
+
let buf;
|
|
45
|
+
try {
|
|
46
|
+
buf = await readFile(path);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
if (error.code === 'ENOENT') {
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
const payload = decodeEnvelope(buf);
|
|
56
|
+
return payload;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
if (!(error instanceof StoreCorruptError)) {
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// A corrupt store must never silently become an empty one — that would
|
|
64
|
+
// wipe the plugin's persisted state. Recover from the backup generation or
|
|
65
|
+
// fail the open loudly.
|
|
66
|
+
const bakPath = `${path}.bak`;
|
|
67
|
+
let bakBuf;
|
|
68
|
+
try {
|
|
69
|
+
bakBuf = await readFile(bakPath);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
bakBuf = undefined;
|
|
73
|
+
}
|
|
74
|
+
if (bakBuf) {
|
|
75
|
+
const payload = decodeEnvelope(bakBuf);
|
|
76
|
+
await writeStoreFile(path, payload);
|
|
77
|
+
return payload;
|
|
78
|
+
}
|
|
79
|
+
throw new StoreCorruptError(`${path} unreadable and no usable backup`);
|
|
80
|
+
}
|
|
81
|
+
export async function backupStoreFile(path, log) {
|
|
82
|
+
// Copy to a temp sibling first — a crash mid-copy must never leave a
|
|
83
|
+
// truncated .bak, it may be the only recovery generation.
|
|
84
|
+
const tmpPath = `${path}.bak.tmp-${process.pid}`;
|
|
85
|
+
try {
|
|
86
|
+
await copyFile(path, tmpPath);
|
|
87
|
+
await renameWithRetry(tmpPath, `${path}.bak`);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
await unlink(tmpPath).catch(() => { });
|
|
91
|
+
if (error.code !== 'ENOENT') {
|
|
92
|
+
log?.warn(`store: backup for ${path} failed: ${error instanceof Error ? error.message : error}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
export async function removeOrphanedTmpFiles(path) {
|
|
97
|
+
const dir = dirname(path);
|
|
98
|
+
const prefix = basename(path);
|
|
99
|
+
let names;
|
|
100
|
+
try {
|
|
101
|
+
names = await readdir(dir);
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
for (const name of names) {
|
|
107
|
+
if (name.startsWith(prefix) && name.includes('.tmp-')) {
|
|
108
|
+
await unlink(join(dir, name)).catch(() => { });
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=storeFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storeFile.js","sourceRoot":"","sources":["../../../../../src/plugins/store/storeFile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function validateStoreValue(key: string, value: unknown): void;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Values must round-trip identically through all three runtimes' msgpack
|
|
2
|
+
// codecs — anything outside the shared domain is refused up front.
|
|
3
|
+
// Depth cap: rejects circular references (and absurd nesting) with a clear
|
|
4
|
+
// error instead of a stack overflow.
|
|
5
|
+
const MAX_DEPTH = 64;
|
|
6
|
+
export function validateStoreValue(key, value) {
|
|
7
|
+
walk(value, key, 0);
|
|
8
|
+
}
|
|
9
|
+
function walk(value, path, depth) {
|
|
10
|
+
if (depth > MAX_DEPTH) {
|
|
11
|
+
throw new Error(`store: value at '${path}' exceeds ${MAX_DEPTH} nesting levels — circular reference?`);
|
|
12
|
+
}
|
|
13
|
+
if (value === null || value === undefined) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
switch (typeof value) {
|
|
17
|
+
case 'number':
|
|
18
|
+
if (Number.isNaN(value) || !Number.isFinite(value)) {
|
|
19
|
+
throw new Error(`store: value at '${path}' is ${value} — NaN/Infinity are not storable`);
|
|
20
|
+
}
|
|
21
|
+
if (Number.isInteger(value) && !Number.isSafeInteger(value)) {
|
|
22
|
+
throw new Error(`store: value at '${path}' exceeds the float64-safe integer range (±2^53)`);
|
|
23
|
+
}
|
|
24
|
+
return;
|
|
25
|
+
case 'string':
|
|
26
|
+
case 'boolean':
|
|
27
|
+
return;
|
|
28
|
+
case 'bigint':
|
|
29
|
+
throw new Error(`store: value at '${path}' is a BigInt — numbers are float64 by contract`);
|
|
30
|
+
case 'function':
|
|
31
|
+
throw new Error(`store: value at '${path}' is a function`);
|
|
32
|
+
}
|
|
33
|
+
if (ArrayBuffer.isView(value) || value instanceof ArrayBuffer) {
|
|
34
|
+
throw new Error(`store: value at '${path}' is binary — large artifacts belong in files under the plugin storage dir`);
|
|
35
|
+
}
|
|
36
|
+
if (Array.isArray(value)) {
|
|
37
|
+
for (let i = 0; i < value.length; i++) {
|
|
38
|
+
walk(value[i], `${path}[${i}]`, depth + 1);
|
|
39
|
+
}
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null) {
|
|
43
|
+
throw new Error(`store: value at '${path}' is a ${value.constructor?.name ?? 'non-plain'} instance — only plain objects are storable`);
|
|
44
|
+
}
|
|
45
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
46
|
+
walk(entry, `${path}.${key}`, depth + 1);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../../src/plugins/store/validate.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,mEAAmE;AACnE,2EAA2E;AAC3E,qCAAqC;AACrC,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,KAAc;IAC5D,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,IAAI,CAAC,KAAc,EAAE,IAAY,EAAE,KAAa;IACvD,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,aAAa,SAAS,uCAAuC,CAAC,CAAC;IACzG,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,QAAQ,OAAO,KAAK,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,QAAQ,KAAK,kCAAkC,CAAC,CAAC;YAC3F,CAAC;YACD,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5D,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,kDAAkD,CAAC,CAAC;YAC9F,CAAC;YACD,OAAO;QACT,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACZ,OAAO;QACT,KAAK,QAAQ;YACX,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,iDAAiD,CAAC,CAAC;QAC7F,KAAK,UAAU;YACb,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,iBAAiB,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,4EAA4E,CAAC,CAAC;IACxH,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/F,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,UAAU,KAAK,CAAC,WAAW,EAAE,IAAI,IAAI,WAAW,6CAA6C,CAAC,CAAC;IACzI,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { sleep } from '@camera.ui/common/utils';
|
|
2
|
+
import { join } from 'node:path';
|
|
2
3
|
import { container } from 'tsyringe';
|
|
3
4
|
import { CamerasService } from '../api/services/cameras.service.js';
|
|
4
5
|
import { PLUGIN_COMMAND, PLUGIN_STATUS } from '../plugins/types.js';
|
|
@@ -7,6 +8,8 @@ import { isShuttingDown } from '../shutdown-state.js';
|
|
|
7
8
|
import { describePlatformRequirement } from '../utils/platform.js';
|
|
8
9
|
import { PluginConfigStore } from './config-store.js';
|
|
9
10
|
import { RuntimeFactory } from './runtime/index.js';
|
|
11
|
+
import { migrateLmdbToStoreFile } from './store/migrate.js';
|
|
12
|
+
import { STORE_FILE_NAME } from './store/pluginStoreFile.js';
|
|
10
13
|
const REMOTE_START_TIMEOUT_MS = 5 * 60_000;
|
|
11
14
|
export class PluginWorker {
|
|
12
15
|
plugin;
|
|
@@ -118,7 +121,8 @@ export class PluginWorker {
|
|
|
118
121
|
return;
|
|
119
122
|
}
|
|
120
123
|
if (this.plugin.isGo) {
|
|
121
|
-
|
|
124
|
+
const volumeDir = join(this.plugin.storagePath, 'volume');
|
|
125
|
+
await migrateLmdbToStoreFile(volumeDir, join(volumeDir, STORE_FILE_NAME));
|
|
122
126
|
}
|
|
123
127
|
this.runtime.once('exit', () => {
|
|
124
128
|
reject(new Error(`Plugin ${this.plugin.displayName} exited before it was ready`));
|
|
@@ -161,12 +165,10 @@ export class PluginWorker {
|
|
|
161
165
|
// Fresh channel so a late READY from the (now abandoned) remote child
|
|
162
166
|
// lands on the old, closed channel and can never trigger a second START.
|
|
163
167
|
await this.openChannel(resolve, reject);
|
|
164
|
-
//
|
|
165
|
-
//
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
this.configStore = undefined;
|
|
169
|
-
}
|
|
168
|
+
// Local plugins own their store file themselves — release the store
|
|
169
|
+
// opened for the remote attempt so the child can take ownership.
|
|
170
|
+
await this.configStore?.close();
|
|
171
|
+
this.configStore = undefined;
|
|
170
172
|
if (!this.plugin.info.compatible) {
|
|
171
173
|
this.setStatus(PLUGIN_STATUS.INCOMPATIBLE);
|
|
172
174
|
await this.channel?.close();
|
|
@@ -212,7 +214,6 @@ export class PluginWorker {
|
|
|
212
214
|
else {
|
|
213
215
|
await this.kill();
|
|
214
216
|
}
|
|
215
|
-
// Local Go plugins host a config store too — release the LMDB handle.
|
|
216
217
|
await this.configStore?.close();
|
|
217
218
|
this.configStore = undefined;
|
|
218
219
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../../src/plugins/worker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../../src/plugins/worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -207,7 +207,7 @@ export class CloudflareManagedService {
|
|
|
207
207
|
await writeFile(this.configPath(tunnelId), yaml, { mode: 0o600 });
|
|
208
208
|
const args = ['tunnel', '--no-autoupdate', '--config', this.configPath(tunnelId), 'run', tunnelId];
|
|
209
209
|
const env = { ...process.env, TUNNEL_ORIGIN_CERT: this.certPath() };
|
|
210
|
-
this.runProcess = spawn(this.cloudflaredBinaryPath(), args, { stdio: ['ignore', 'pipe', 'pipe'], env });
|
|
210
|
+
this.runProcess = spawn(this.cloudflaredBinaryPath(), args, { stdio: ['ignore', 'pipe', 'pipe'], env, windowsHide: true });
|
|
211
211
|
const pid = this.runProcess.pid;
|
|
212
212
|
if (pid) {
|
|
213
213
|
this.configService.addProcess({ pid, startTime: Date.now(), command: this.cloudflaredBinaryPath(), args });
|
|
@@ -228,7 +228,7 @@ export class CloudflareManagedService {
|
|
|
228
228
|
async runStep(args, timeoutMs, onLine) {
|
|
229
229
|
return new Promise((resolve, reject) => {
|
|
230
230
|
const env = { ...process.env, TUNNEL_ORIGIN_CERT: this.certPath() };
|
|
231
|
-
const proc = spawn(this.cloudflaredBinaryPath(), args, { stdio: ['ignore', 'pipe', 'pipe'], env });
|
|
231
|
+
const proc = spawn(this.cloudflaredBinaryPath(), args, { stdio: ['ignore', 'pipe', 'pipe'], env, windowsHide: true });
|
|
232
232
|
this.stepProcess = proc;
|
|
233
233
|
let output = '';
|
|
234
234
|
const handleData = (chunk) => {
|