@camera.ui/server 0.0.49 → 0.0.50-internal.1
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/@xterm.DYP7pi_n.0.0.50-internal.1.css +32 -0
- package/dist/interface/assets/Adminpanel.BKek2EMH.0.0.50-internal.1.css +1 -0
- package/dist/interface/assets/Cameras.BDWZJqPN.0.0.50-internal.1.css +1 -0
- package/dist/interface/assets/Camview.BFUFMoNX.0.0.50-internal.1.css +1 -0
- package/dist/interface/assets/CuiConsole.DCYyxdVg.0.0.50-internal.1.css +1 -0
- package/dist/interface/assets/CuiPluginCard.yF8V0SZY.0.0.50-internal.1.css +1 -0
- package/dist/interface/assets/CuiTimeline.BkIwlYtw.0.0.50-internal.1.css +1 -0
- package/dist/interface/assets/Plugin.DJElsAn5.0.0.50-internal.1.css +1 -0
- package/dist/interface/assets/Plugins.0h77qnmN.0.0.50-internal.1.css +1 -0
- package/dist/interface/assets/Settings.CkgfRkQr.0.0.50-internal.1.css +1 -0
- package/dist/interface/assets/SettingsAccount.DeFul3eQ.0.0.50-internal.1.css +1 -0
- package/dist/interface/assets/main.Cip9LkS3.0.0.50-internal.1.css +1 -0
- package/dist/interface/assets/worker-base.jEXLGV2h.0.0.50-internal.1.js +1332 -0
- package/dist/interface/assets/worker-json.DgwNIOck.0.0.50-internal.1.js +1626 -0
- package/dist/interface/assets/worker-yaml.B3uUYINB.0.0.50-internal.1.js +5819 -0
- package/dist/interface/fonts/InterVariable.woff2 +0 -0
- package/dist/interface/index.html +48 -38
- package/dist/interface/js/@intlify.BkGPX90O.0.0.50-internal.1.js +15 -0
- package/dist/interface/js/@kurkle.D8fDXNIl.0.0.50-internal.1.js +6 -0
- package/dist/interface/js/@primeuix.BFAY2Bk9.0.0.50-internal.1.js +5722 -0
- package/dist/interface/js/@primevue.CiB2EGly.0.0.50-internal.1.js +57 -0
- package/dist/interface/js/@tanstack.DxMw_rJn.0.0.50-internal.1.js +1 -0
- package/dist/interface/{@vee-validate.DHkwupr6.0.0.49.js → js/@vee-validate.RxZ3hn6V.0.0.50-internal.1.js} +2 -2
- package/dist/interface/js/@vue.B5vqhCp2.0.0.50-internal.1.js +17 -0
- package/dist/interface/js/@vueuse.C-k73ACm.0.0.50-internal.1.js +1 -0
- package/dist/interface/{@xterm.D6R4zI7m.0.0.49.js → js/@xterm.DIUBesyz.0.0.50-internal.1.js} +8 -8
- package/dist/interface/js/Adminpanel.DumNu6GD.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/Camera.BuosoqFl.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/Cameras.A7NJflGG.0.0.50-internal.1.js +482 -0
- package/dist/interface/js/Cammesh.Dv3C0UiR.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/Camview.GgjJp7JR.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/Config.BL3L-BFE.0.0.50-internal.1.js +2 -0
- package/dist/interface/js/Console.CxwRmUVF.0.0.50-internal.1.js +4 -0
- package/dist/interface/js/CuiConsole.D16kkT6R.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/CuiPluginCard.Bkp__d8n.0.0.50-internal.1.js +4 -0
- package/dist/interface/js/CuiTimeline.C9HKvo0G.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/FirstSteps.QuJjtAtF.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/Plugin.BLUUbEej.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/Plugins.DviCIk7w.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/Recordings.Dsp07cHs.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/Settings.Clx4y9gP.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/SettingsAccount.cfY4-PYd.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/SettingsAppearance.CBGZAazb.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/SettingsAppearance.vue_vue_type_script_setup_true_lang.kxAPXcBy.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/SettingsBackup.DOaJA4pp.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/SettingsRecordings.BGcwL6tk.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/SettingsRemote.BVU_w1Jm.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/SettingsSystem.P0vy90vA.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/SettingsUsers.DaP5m7eo.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/VersionsHandler.vue_vue_type_script_setup_true_lang.MmrWYW3K.0.0.50-internal.1.js +4 -0
- package/dist/interface/js/ace-builds.C0aqA_3x.0.0.50-internal.1.js +1090 -0
- package/dist/interface/js/ace.config.C9wgzklI.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/axios.DHr9lByg.0.0.50-internal.1.js +6 -0
- package/dist/interface/js/backup.BeH6lJ5t.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/chart.js.BQHSWV_g.0.0.50-internal.1.js +13 -0
- package/dist/interface/js/close-circle.DDKMxauw.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/dnd-core.dWz9rJqH.0.0.50-internal.1.js +1 -0
- package/dist/interface/{draggabilly.C0hZWkL0.0.0.49.js → js/draggabilly.D-iZIS1n.0.0.50-internal.1.js} +1 -1
- package/dist/interface/js/engine.io-client.BwxOddB_.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/fast-deep-equal.Dz96RC_N.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/highlight.js.CmcM8OM6.0.0.50-internal.1.js +3 -0
- package/dist/interface/js/linkify-it.BgLcBzlw.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/main.6bOgRV7D.0.0.50-internal.1.js +31 -0
- package/dist/interface/{markdown-it.64FJJcTG.0.0.49.js → js/markdown-it.CTgfs-3p.0.0.50-internal.1.js} +1 -1
- package/dist/interface/{nprogress.DkWvUoHh.0.0.49.js → js/nprogress.CMhnq8jS.0.0.50-internal.1.js} +1 -1
- package/dist/interface/js/perfect-debounce.l0sNRNKZ.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/pinia.CuC5ZfNs.0.0.50-internal.1.js +5 -0
- package/dist/interface/js/primelocale.Bga3dOQu.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/primevue.DmwjJ4xV.0.0.50-internal.1.js +142 -0
- package/dist/interface/{qrcode.BixA_YE2.0.0.49.js → js/qrcode.DGZO3j1c.0.0.50-internal.1.js} +1 -1
- package/dist/interface/js/react-dnd-touch-backend.CEGHlD-T.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/refresh-rounded.D0keXzBc.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/rxjs.CiDbFOB0.0.0.50-internal.1.js +3 -0
- package/dist/interface/js/socket.io-client.BPcXPAHG.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/socket.io-parser.DSGzrW_l.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/system.BKlEObmx.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/trash-fill.BDFILs86.0.0.50-internal.1.js +1 -0
- package/dist/interface/{unidragger.C8ueS-PW.0.0.49.js → js/unidragger.DcxsxHCS.0.0.50-internal.1.js} +1 -1
- package/dist/interface/js/uuid.C6aID195.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/vee-validate.BGRg3oQ8.0.0.50-internal.1.js +5 -0
- package/dist/interface/js/vue-chartjs.B9yk2de7.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/vue-i18n.DXDZITpf.0.0.50-internal.1.js +5 -0
- package/dist/interface/js/vue-inline-svg.BDYaTfbi.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/vue-router.CFEDA008.0.0.50-internal.1.js +5 -0
- package/dist/interface/js/vue-zoomable.zqTafMgD.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/vue.l0sNRNKZ.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/vue3-dnd.BxM3dbYs.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/zod.SKKegNRO.0.0.50-internal.1.js +1 -0
- package/dist/interface/js/zoom-out.B6SY9IIj.0.0.50-internal.1.js +1 -0
- package/dist/interface/manifest.webmanifest +1 -1
- package/dist/interface/pwa/favicon-32.ico +0 -0
- package/dist/interface/pwa/favicon-48.ico +0 -0
- package/dist/interface/sw.js +1 -1
- package/dist/server/package.json +57 -45
- package/dist/server/requirements.txt +12 -11
- package/dist/server/src/__init__.py +0 -0
- package/dist/server/src/_camera_ui_tools/__init__.py +0 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_common/__init__.py +28 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_common/camera_utils/utils.py +52 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/__init__.py +0 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/object_path.py +198 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/reactive.py +42 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/signal_handler.py +92 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/subscribed.py +21 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/task.py +39 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/thread.py +10 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/utils.py +91 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_common/logger_service/__init__.py +0 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_common/logger_service/ansicolor.py +62 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_common/logger_service/logger.py +178 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_common/logger_service/test.py +116 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/__init__.py +350 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/__init__.py +0 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/base.py +237 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/client.py +256 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/connection.py +784 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/errors.py +745 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/messaging.py +57 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/rpc.py +227 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/rpc_generator.py +584 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/constants.py +96 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/typings.py +218 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/__init__.py +0 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/connection_state.py +86 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/logger.py +30 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/metrics.py +152 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/packer.py +20 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/routing.py +75 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/rpc.py +177 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/subscriptions.py +24 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/tasks.py +39 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/uid.py +37 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/validate.py +119 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_types/__init__.py +1360 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_types/hybrid_observer.py +338 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_types/test.py +196 -0
- package/dist/server/src/api/controllers/auth.controller.d.ts +2 -2
- package/dist/server/src/api/controllers/auth.controller.js +49 -43
- package/dist/server/src/api/controllers/auth.controller.js.map +1 -1
- package/dist/server/src/api/controllers/backup.controller.js +1 -2
- package/dist/server/src/api/controllers/backup.controller.js.map +1 -1
- package/dist/server/src/api/controllers/cameras.controller.d.ts +13 -11
- package/dist/server/src/api/controllers/cameras.controller.js +314 -105
- package/dist/server/src/api/controllers/cameras.controller.js.map +1 -1
- package/dist/server/src/api/controllers/plugins.controller.d.ts +8 -8
- package/dist/server/src/api/controllers/plugins.controller.js +208 -244
- package/dist/server/src/api/controllers/plugins.controller.js.map +1 -1
- package/dist/server/src/api/controllers/system.controller.d.ts +1 -0
- package/dist/server/src/api/controllers/system.controller.js +22 -8
- package/dist/server/src/api/controllers/system.controller.js.map +1 -1
- package/dist/server/src/api/controllers/users.controller.d.ts +2 -2
- package/dist/server/src/api/controllers/users.controller.js +13 -25
- package/dist/server/src/api/controllers/users.controller.js.map +1 -1
- package/dist/server/src/api/database/checks.js +2 -2
- package/dist/server/src/api/database/checks.js.map +1 -1
- package/dist/server/src/api/database/index.d.ts +4 -7
- package/dist/server/src/api/database/index.js +59 -86
- package/dist/server/src/api/database/index.js.map +1 -1
- package/dist/server/src/api/database/migration.js +5 -141
- package/dist/server/src/api/database/migration.js.map +1 -1
- package/dist/server/src/api/database/selfcheck.js +5 -5
- package/dist/server/src/api/database/selfcheck.js.map +1 -1
- package/dist/server/src/api/database/types.d.ts +17 -25
- package/dist/server/src/api/go2rtc/api/discover.d.ts +30 -0
- package/dist/server/src/api/go2rtc/api/discover.js +162 -0
- package/dist/server/src/api/go2rtc/api/discover.js.map +1 -0
- package/dist/server/src/api/go2rtc/api/index.d.ts +1 -1
- package/dist/server/src/api/go2rtc/api/index.js +15 -4
- package/dist/server/src/api/go2rtc/api/index.js.map +1 -1
- package/dist/server/src/api/go2rtc/api/streams.d.ts +3 -1
- package/dist/server/src/api/go2rtc/api/streams.js +66 -9
- package/dist/server/src/api/go2rtc/api/streams.js.map +1 -1
- package/dist/server/src/api/go2rtc/index.d.ts +2 -0
- package/dist/server/src/api/go2rtc/index.js +3 -0
- package/dist/server/src/api/go2rtc/index.js.map +1 -1
- package/dist/server/src/api/go2rtc/queue.js +3 -3
- package/dist/server/src/api/go2rtc/queue.js.map +1 -1
- package/dist/server/src/api/go2rtc/types.d.ts +66 -11
- package/dist/server/src/api/index.d.ts +4 -0
- package/dist/server/src/api/index.js +45 -9
- package/dist/server/src/api/index.js.map +1 -1
- package/dist/server/src/api/middlewares/authPermission.middleware.d.ts +1 -0
- package/dist/server/src/api/middlewares/authPermission.middleware.js +11 -2
- package/dist/server/src/api/middlewares/authPermission.middleware.js.map +1 -1
- package/dist/server/src/api/middlewares/authValidation.middleware.js +20 -12
- package/dist/server/src/api/middlewares/authValidation.middleware.js.map +1 -1
- package/dist/server/src/api/middlewares/pagination.middleware.js +45 -53
- package/dist/server/src/api/middlewares/pagination.middleware.js.map +1 -1
- package/dist/server/src/api/plugins/proxy.plugin.d.ts +14 -0
- package/dist/server/src/api/plugins/proxy.plugin.js +200 -0
- package/dist/server/src/api/plugins/proxy.plugin.js.map +1 -0
- package/dist/server/src/api/routes/cameras.routes.js +56 -30
- package/dist/server/src/api/routes/cameras.routes.js.map +1 -1
- package/dist/server/src/api/routes/plugins.routes.js +65 -63
- package/dist/server/src/api/routes/plugins.routes.js.map +1 -1
- package/dist/server/src/api/routes/system.routes.js +7 -1
- package/dist/server/src/api/routes/system.routes.js.map +1 -1
- package/dist/server/src/api/routes/users.routes.js +8 -8
- package/dist/server/src/api/routes/users.routes.js.map +1 -1
- package/dist/server/src/api/schemas/backup.schema.d.ts +3 -3
- package/dist/server/src/api/schemas/backup.schema.js +1 -1
- package/dist/server/src/api/schemas/backup.schema.js.map +1 -1
- package/dist/server/src/api/schemas/cameras.schema.d.ts +1413 -529
- package/dist/server/src/api/schemas/cameras.schema.js +228 -182
- package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
- package/dist/server/src/api/schemas/config.schema.d.ts +29 -41
- package/dist/server/src/api/schemas/config.schema.js +10 -21
- package/dist/server/src/api/schemas/config.schema.js.map +1 -1
- package/dist/server/src/api/schemas/go2rtc.schema.d.ts +194 -162
- package/dist/server/src/api/schemas/go2rtc.schema.js +33 -58
- package/dist/server/src/api/schemas/go2rtc.schema.js.map +1 -1
- package/dist/server/src/api/schemas/plugins.schema.d.ts +17 -17
- package/dist/server/src/api/schemas/plugins.schema.js +1 -1
- package/dist/server/src/api/schemas/plugins.schema.js.map +1 -1
- package/dist/server/src/api/schemas/storage.schema.d.ts +22 -0
- package/dist/server/src/api/schemas/storage.schema.js +5 -0
- package/dist/server/src/api/schemas/storage.schema.js.map +1 -0
- package/dist/server/src/api/schemas/system.schema.d.ts +171 -3
- package/dist/server/src/api/schemas/system.schema.js +30 -3
- package/dist/server/src/api/schemas/system.schema.js.map +1 -1
- package/dist/server/src/api/schemas/users.schema.d.ts +98 -254
- package/dist/server/src/api/schemas/users.schema.js +6 -6
- package/dist/server/src/api/schemas/users.schema.js.map +1 -1
- package/dist/server/src/api/services/auth.service.d.ts +5 -5
- package/dist/server/src/api/services/auth.service.js +26 -35
- package/dist/server/src/api/services/auth.service.js.map +1 -1
- package/dist/server/src/api/services/cameras.service.d.ts +11 -16
- package/dist/server/src/api/services/cameras.service.js +143 -310
- package/dist/server/src/api/services/cameras.service.js.map +1 -1
- package/dist/server/src/api/services/plugins.service.d.ts +3 -1
- package/dist/server/src/api/services/plugins.service.js +48 -50
- package/dist/server/src/api/services/plugins.service.js.map +1 -1
- package/dist/server/src/api/services/users.service.d.ts +1 -0
- package/dist/server/src/api/services/users.service.js +20 -14
- package/dist/server/src/api/services/users.service.js.map +1 -1
- package/dist/server/src/api/types/index.d.ts +57 -46
- package/dist/server/src/api/types/index.js +0 -4
- package/dist/server/src/api/types/index.js.map +1 -1
- package/dist/server/src/api/utils/cert.d.ts +5 -1
- package/dist/server/src/api/utils/cert.js +24 -26
- package/dist/server/src/api/utils/cert.js.map +1 -1
- package/dist/server/src/api/utils/constants.d.ts +4 -2
- package/dist/server/src/api/utils/constants.js +4 -2
- package/dist/server/src/api/utils/constants.js.map +1 -1
- package/dist/server/src/api/utils/fetch.d.ts +1 -1
- package/dist/server/src/api/utils/fetch.js +2 -2
- package/dist/server/src/api/utils/fetch.js.map +1 -1
- package/dist/server/src/api/websocket/index.d.ts +1 -0
- package/dist/server/src/api/websocket/index.js +14 -9
- package/dist/server/src/api/websocket/index.js.map +1 -1
- package/dist/server/src/api/websocket/nsp/logs.d.ts +10 -2
- package/dist/server/src/api/websocket/nsp/logs.js +75 -27
- package/dist/server/src/api/websocket/nsp/logs.js.map +1 -1
- package/dist/server/src/api/websocket/nsp/metrics.d.ts +20 -12
- package/dist/server/src/api/websocket/nsp/metrics.js +188 -117
- package/dist/server/src/api/websocket/nsp/metrics.js.map +1 -1
- package/dist/server/src/api/websocket/nsp/plugins.d.ts +1 -1
- package/dist/server/src/api/websocket/nsp/plugins.js +3 -5
- package/dist/server/src/api/websocket/nsp/plugins.js.map +1 -1
- package/dist/server/src/api/websocket/nsp/server.js +6 -0
- package/dist/server/src/api/websocket/nsp/server.js.map +1 -1
- package/dist/server/src/api/websocket/types.d.ts +4 -2
- package/dist/server/src/api.d.ts +3 -4
- package/dist/server/src/api.js +13 -13
- package/dist/server/src/api.js.map +1 -1
- package/dist/server/src/camera/classes.d.ts +2 -0
- package/dist/server/src/camera/classes.js +24 -0
- package/dist/server/src/camera/classes.js.map +1 -0
- package/dist/server/src/camera/controller.d.ts +30 -18
- package/dist/server/src/camera/controller.js +236 -202
- package/dist/server/src/camera/controller.js.map +1 -1
- package/dist/server/src/camera/device.d.ts +34 -0
- package/dist/server/src/camera/device.js +327 -0
- package/dist/server/src/camera/device.js.map +1 -0
- package/dist/server/src/camera/frameWorker.d.ts +32 -31
- package/dist/server/src/camera/frameWorker.js +257 -247
- package/dist/server/src/camera/frameWorker.js.map +1 -1
- package/dist/server/src/camera/index.d.ts +92 -0
- package/dist/server/src/camera/index.js +531 -0
- package/dist/server/src/camera/index.js.map +1 -0
- package/dist/server/src/camera/interfaces.d.ts +17 -0
- package/dist/server/src/camera/interfaces.js +99 -0
- package/dist/server/src/camera/interfaces.js.map +1 -0
- package/dist/server/src/camera/iou.d.ts +2 -0
- package/dist/server/src/camera/iou.js +123 -0
- package/dist/server/src/camera/iou.js.map +1 -0
- package/dist/server/src/camera/polygon.d.ts +4 -0
- package/dist/server/src/camera/polygon.js +192 -0
- package/dist/server/src/camera/polygon.js.map +1 -0
- package/dist/server/src/camera/python/__init__.py +0 -0
- package/dist/server/src/camera/python/classes.py +41 -0
- package/dist/server/src/camera/python/interfaces.py +130 -0
- package/dist/server/src/camera/python/iou.py +158 -0
- package/dist/server/src/camera/python/polygon.py +230 -0
- package/dist/server/src/camera/python/typings.py +50 -0
- package/dist/server/src/camera/python/video_frame.py +143 -0
- package/dist/server/src/camera/session.d.ts +37 -0
- package/dist/server/src/camera/session.js +160 -0
- package/dist/server/src/camera/session.js.map +1 -0
- package/dist/server/src/camera/streaming/fmp4-session.d.ts +17 -0
- package/dist/server/src/camera/streaming/fmp4-session.js +308 -0
- package/dist/server/src/camera/streaming/fmp4-session.js.map +1 -0
- package/dist/server/src/camera/streaming/peer-connection.d.ts +26 -0
- package/dist/server/src/camera/streaming/peer-connection.js +213 -0
- package/dist/server/src/camera/streaming/peer-connection.js.map +1 -0
- package/dist/server/src/camera/streaming/rtsp-session.d.ts +19 -0
- package/dist/server/src/camera/streaming/rtsp-session.js +253 -0
- package/dist/server/src/camera/streaming/rtsp-session.js.map +1 -0
- package/dist/server/src/camera/streaming/webrtc-connection.d.ts +44 -0
- package/dist/server/src/camera/streaming/webrtc-connection.js +177 -0
- package/dist/server/src/camera/streaming/webrtc-connection.js.map +1 -0
- package/dist/server/src/camera/streaming/werift-session.d.ts +19 -0
- package/dist/server/src/camera/streaming/werift-session.js +246 -0
- package/dist/server/src/camera/streaming/werift-session.js.map +1 -0
- package/dist/server/src/camera/types.d.ts +16 -10
- package/dist/server/src/camera/utils.d.ts +9 -0
- package/dist/server/src/camera/utils.js +416 -0
- package/dist/server/src/camera/utils.js.map +1 -0
- package/dist/server/src/camera/videoFrame.d.ts +18 -0
- package/dist/server/src/camera/videoFrame.js +88 -0
- package/dist/server/src/camera/videoFrame.js.map +1 -0
- package/dist/server/src/cloud/index.d.ts +12 -0
- package/dist/server/src/cloud/index.js +49 -0
- package/dist/server/src/cloud/index.js.map +1 -0
- package/dist/server/src/cloud/remote/cloudflare.d.ts +7 -0
- package/dist/server/src/cloud/remote/cloudflare.js +12 -0
- package/dist/server/src/cloud/remote/cloudflare.js.map +1 -0
- package/dist/server/src/cloud/remote/upnp.d.ts +7 -0
- package/dist/server/src/cloud/remote/upnp.js +12 -0
- package/dist/server/src/cloud/remote/upnp.js.map +1 -0
- package/dist/server/src/cloud/remote/utils.d.ts +3 -0
- package/dist/server/src/cloud/remote/utils.js +20 -0
- package/dist/server/src/cloud/remote/utils.js.map +1 -0
- package/dist/server/src/cloud/types.d.ts +15 -0
- package/dist/server/src/cloud/types.js +11 -0
- package/dist/server/src/cloud/types.js.map +1 -0
- package/dist/server/src/decoder/child.d.ts +1 -0
- package/dist/server/src/decoder/child.js +749 -0
- package/dist/server/src/decoder/child.js.map +1 -0
- package/dist/server/src/decoder/imageUtils.d.ts +22 -0
- package/dist/server/src/decoder/imageUtils.js +196 -0
- package/dist/server/src/decoder/imageUtils.js.map +1 -0
- package/dist/server/src/decoder/manager.d.ts +19 -0
- package/dist/server/src/decoder/manager.js +208 -0
- package/dist/server/src/decoder/manager.js.map +1 -0
- package/dist/server/src/decoder/python/__init__.py +0 -0
- package/dist/server/src/decoder/python/child.py +903 -0
- package/dist/server/src/decoder/python/image_utils.py +196 -0
- package/dist/server/src/decoder/python/pool.py +45 -0
- package/dist/server/src/decoder/python/typings.py +57 -0
- package/dist/server/src/decoder/python/utils.py +70 -0
- package/dist/server/src/decoder/types.d.ts +23 -0
- package/dist/server/src/decoder/types.js.map +1 -0
- package/dist/server/src/decoder/utils.d.ts +13 -0
- package/dist/server/src/decoder/utils.js +45 -0
- package/dist/server/src/decoder/utils.js.map +1 -0
- package/dist/server/src/decoder/wasm/build/decoder.d.ts +43 -0
- package/dist/server/src/decoder/wasm/build/decoder.js +108 -0
- package/dist/server/src/decoder/wasm/build/decoder.wasm +0 -0
- package/dist/server/src/decoder/worker.d.ts +1 -0
- package/dist/server/src/decoder/worker.js +79 -0
- package/dist/server/src/decoder/worker.js.map +1 -0
- package/dist/server/src/go2rtc/index.d.ts +1 -0
- package/dist/server/src/go2rtc/index.js +27 -9
- package/dist/server/src/go2rtc/index.js.map +1 -1
- package/dist/server/src/go2rtc/types.d.ts +5 -4
- package/dist/server/src/go2rtc/types.js +6 -2
- package/dist/server/src/go2rtc/types.js.map +1 -1
- package/dist/server/src/main.js +19 -5
- package/dist/server/src/main.js.map +1 -1
- package/dist/server/src/manager/coreManager.d.ts +16 -0
- package/dist/server/src/manager/coreManager.js +95 -0
- package/dist/server/src/manager/coreManager.js.map +1 -0
- package/dist/server/src/manager/deviceManager.d.ts +12 -0
- package/dist/server/src/manager/deviceManager.js +130 -0
- package/dist/server/src/manager/deviceManager.js.map +1 -0
- package/dist/server/src/manager/types.d.ts +15 -0
- package/dist/server/src/manager/types.js +2 -0
- package/dist/server/src/manager/types.js.map +1 -0
- package/dist/server/src/plugins/index.d.ts +3 -1
- package/dist/server/src/plugins/index.js +42 -21
- package/dist/server/src/plugins/index.js.map +1 -1
- package/dist/server/src/plugins/plugin.d.ts +3 -3
- package/dist/server/src/plugins/plugin.js +13 -20
- package/dist/server/src/plugins/plugin.js.map +1 -1
- package/dist/server/src/plugins/runtime/base.d.ts +54 -0
- package/dist/server/src/plugins/runtime/base.js +223 -0
- package/dist/server/src/plugins/runtime/base.js.map +1 -0
- package/dist/server/src/plugins/runtime/index.d.ts +5 -0
- package/dist/server/src/plugins/runtime/index.js +13 -0
- package/dist/server/src/plugins/runtime/index.js.map +1 -0
- package/dist/server/src/plugins/runtime/node/child.d.ts +22 -0
- package/dist/server/src/plugins/runtime/node/child.js +152 -0
- package/dist/server/src/plugins/runtime/node/child.js.map +1 -0
- package/dist/server/src/plugins/runtime/node/index.d.ts +7 -0
- package/dist/server/src/plugins/runtime/node/index.js +54 -0
- package/dist/server/src/plugins/runtime/node/index.js.map +1 -0
- package/dist/server/src/plugins/runtime/node/plugin.d.ts +24 -0
- package/dist/server/src/plugins/runtime/node/plugin.js +128 -0
- package/dist/server/src/plugins/runtime/node/plugin.js.map +1 -0
- package/dist/server/src/plugins/runtime/node/pluginApi.d.ts +16 -0
- package/dist/server/src/plugins/runtime/node/pluginApi.js +18 -0
- package/dist/server/src/plugins/runtime/node/pluginApi.js.map +1 -0
- package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.d.ts +25 -0
- package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js +230 -0
- package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js.map +1 -0
- package/dist/server/src/plugins/runtime/node/proxy/coreManager.d.ts +16 -0
- package/dist/server/src/plugins/runtime/node/proxy/coreManager.js +98 -0
- package/dist/server/src/plugins/runtime/node/proxy/coreManager.js.map +1 -0
- package/dist/server/src/plugins/runtime/node/proxy/deviceManager.d.ts +19 -0
- package/dist/server/src/plugins/runtime/node/proxy/deviceManager.js +144 -0
- package/dist/server/src/plugins/runtime/node/proxy/deviceManager.js.map +1 -0
- package/dist/server/src/plugins/runtime/node/storage.d.ts +34 -0
- package/dist/server/src/plugins/runtime/node/storage.js +313 -0
- package/dist/server/src/plugins/runtime/node/storage.js.map +1 -0
- package/dist/server/src/plugins/runtime/node/storageController.d.ts +18 -0
- package/dist/server/src/plugins/runtime/node/storageController.js +67 -0
- package/dist/server/src/plugins/runtime/node/storageController.js.map +1 -0
- package/dist/server/src/plugins/runtime/python/__init__.py +0 -0
- package/dist/server/src/plugins/runtime/python/child.py +248 -0
- package/dist/server/src/plugins/runtime/python/index.d.ts +9 -0
- package/dist/server/src/plugins/runtime/python/index.js +57 -0
- package/dist/server/src/plugins/runtime/python/index.js.map +1 -0
- package/dist/server/src/plugins/runtime/python/namespaces.py +101 -0
- package/dist/server/src/plugins/runtime/python/plugin.py +155 -0
- package/dist/server/src/plugins/runtime/python/plugin_api.py +29 -0
- package/dist/server/src/plugins/runtime/python/proxy/camera_device.py +1732 -0
- package/dist/server/src/plugins/runtime/python/proxy/core_manager.py +126 -0
- package/dist/server/src/plugins/runtime/python/proxy/device_manager.py +197 -0
- package/dist/server/src/plugins/runtime/python/schema.py +99 -0
- package/dist/server/src/plugins/runtime/python/storage.py +353 -0
- package/dist/server/src/plugins/runtime/python/storage_controller.py +102 -0
- package/dist/server/src/plugins/runtime/python/typings.py +195 -0
- package/dist/server/src/plugins/schema.d.ts +27 -34
- package/dist/server/src/plugins/schema.js +358 -369
- package/dist/server/src/plugins/schema.js.map +1 -1
- package/dist/server/src/plugins/types.d.ts +43 -1
- package/dist/server/src/plugins/types.js +16 -0
- package/dist/server/src/plugins/types.js.map +1 -1
- package/dist/server/src/plugins/worker.d.ts +12 -31
- package/dist/server/src/plugins/worker.js +89 -343
- package/dist/server/src/plugins/worker.js.map +1 -1
- package/dist/server/src/rpc/index.d.ts +32 -0
- package/dist/server/src/rpc/index.js +103 -0
- package/dist/server/src/rpc/index.js.map +1 -0
- package/dist/server/src/rpc/namespaces.d.ts +35 -0
- package/dist/server/src/rpc/namespaces.js +42 -0
- package/dist/server/src/rpc/namespaces.js.map +1 -0
- package/dist/server/src/{nats → rpc}/server.d.ts +6 -2
- package/dist/server/src/{nats → rpc}/server.js +76 -55
- package/dist/server/src/rpc/server.js.map +1 -0
- package/dist/server/src/rpc/types.d.ts +111 -0
- package/dist/server/src/rpc/types.js +2 -0
- package/dist/server/src/{nats → rpc}/types.js.map +1 -1
- package/dist/server/src/{nats → rpc}/utils.d.ts +1 -1
- package/dist/server/src/rpc/utils.js.map +1 -0
- package/dist/server/src/services/config/constants.js +12 -48
- package/dist/server/src/services/config/constants.js.map +1 -1
- package/dist/server/src/services/config/defaults.d.ts +12 -0
- package/dist/server/src/services/config/defaults.js +55 -0
- package/dist/server/src/services/config/defaults.js.map +1 -0
- package/dist/server/src/services/config/index.d.ts +57 -9
- package/dist/server/src/services/config/index.js +277 -130
- package/dist/server/src/services/config/index.js.map +1 -1
- package/dist/server/src/services/config/types.d.ts +10 -4
- package/dist/server/src/types.d.ts +3 -0
- package/dist/server/src/utils/path.d.ts +5 -0
- package/dist/server/src/utils/path.js +12 -0
- package/dist/server/src/utils/path.js.map +1 -0
- package/dist/server/src/utils/pythonInstaller.d.ts +46 -0
- package/dist/server/src/utils/pythonInstaller.js +463 -0
- package/dist/server/src/utils/pythonInstaller.js.map +1 -0
- package/package.json +57 -45
- package/types/fastify.d.ts +14 -0
- package/dist/interface/@intlify.Do1-T-x0.0.0.49.js +0 -15
- package/dist/interface/@mdi.CbjpODVZ.0.0.49.js +0 -1
- package/dist/interface/@tanstack.CgZ4BVuY.0.0.49.js +0 -1
- package/dist/interface/@vue.DeX8WChi.0.0.49.js +0 -17
- package/dist/interface/@vueform.WCJNykTK.0.0.49.js +0 -1
- package/dist/interface/@vueuse.fmA4o7MO.0.0.49.js +0 -1
- package/dist/interface/Account.D_hgF7as.0.0.49.js +0 -1
- package/dist/interface/Adminpanel.Cr2ysRnk.0.0.49.js +0 -2
- package/dist/interface/Appearance.DJPnnakw.0.0.49.js +0 -1
- package/dist/interface/Backup.DWrnTw65.0.0.49.js +0 -1
- package/dist/interface/Camera.Cm8bv5Jw.0.0.49.js +0 -1
- package/dist/interface/Cameras.BdMnnB_B.0.0.49.js +0 -1
- package/dist/interface/Camview.CvyTACeS.0.0.49.js +0 -1
- package/dist/interface/Config.R58trs6R.0.0.49.js +0 -1
- package/dist/interface/Console.ByS6OcfG.0.0.49.js +0 -4
- package/dist/interface/FirstSteps.BSZVBND8.0.0.49.js +0 -1
- package/dist/interface/NewCamera.CpKY8-_z.0.0.49.js +0 -469
- package/dist/interface/Plugin.ucDXXC6d.0.0.49.js +0 -1
- package/dist/interface/Plugins.Bl6Yy3fd.0.0.49.js +0 -1
- package/dist/interface/Recordings.Bm-_HDqk.0.0.49.js +0 -1
- package/dist/interface/Recordings.CVFqRJTQ.0.0.49.js +0 -1
- package/dist/interface/Settings.ClbXnv3j.0.0.49.js +0 -1
- package/dist/interface/System.BE0hX95Q.0.0.49.js +0 -4
- package/dist/interface/User.Ih1R_8u4.0.0.49.js +0 -1
- package/dist/interface/VConfigEditor.vue_vue_type_script_setup_true_lang.CAHg6HiL.0.0.49.js +0 -2
- package/dist/interface/VConsole.B9yVZ89i.0.0.49.js +0 -1
- package/dist/interface/VPlayer.DWJVzwuw.0.0.49.js +0 -4
- package/dist/interface/VPluginCard.pJNHjHpP.0.0.49.js +0 -4
- package/dist/interface/ace-builds.S1varnlI.0.0.49.js +0 -970
- package/dist/interface/apexcharts.BQn4Fbzn.0.0.49.js +0 -838
- package/dist/interface/assets/@vueform.0.0.49.CroAHJs8.css +0 -1
- package/dist/interface/assets/@xterm.0.0.49.CFbL2ovg.css +0 -32
- package/dist/interface/assets/Account.0.0.49.Bnw6Lbtd.css +0 -1
- package/dist/interface/assets/Adminpanel.0.0.49.a3t1v3MB.css +0 -1
- package/dist/interface/assets/Camera.0.0.49.Br9s6-lM.css +0 -1
- package/dist/interface/assets/Cameras.0.0.49.Buf1Dgce.css +0 -1
- package/dist/interface/assets/Camview.0.0.49.B7Cja2ry.css +0 -1
- package/dist/interface/assets/Config.0.0.49.DNGo2krN.css +0 -1
- package/dist/interface/assets/Console.0.0.49.Bh8l9QnM.css +0 -1
- package/dist/interface/assets/FirstSteps.0.0.49.Mu8VPl13.css +0 -1
- package/dist/interface/assets/NewCamera.0.0.49.DtjxW0Pf.css +0 -1
- package/dist/interface/assets/Plugin.0.0.49.YIpAU1_n.css +0 -1
- package/dist/interface/assets/Plugins.0.0.49.DXSoO9M1.css +0 -1
- package/dist/interface/assets/Settings.0.0.49.CVmui2kE.css +0 -1
- package/dist/interface/assets/User.0.0.49.BiGtIFqt.css +0 -1
- package/dist/interface/assets/VConsole.0.0.49.BCqKHpmJ.css +0 -1
- package/dist/interface/assets/VPlayer.0.0.49.C4lm2rVR.css +0 -1
- package/dist/interface/assets/VPluginCard.0.0.49.C8Lj6X-J.css +0 -1
- package/dist/interface/assets/main.0.0.49.OJngntGT.css +0 -1
- package/dist/interface/assets/vue3-toastify.0.0.49.DHXAGmwn.css +0 -1
- package/dist/interface/assets/vuetify.0.0.49.Dua9WSqa.css +0 -5
- package/dist/interface/axios.DIsA03vz.0.0.49.js +0 -6
- package/dist/interface/backup.DO02r0Uq.0.0.49.js +0 -1
- package/dist/interface/dnd-core.De50QAoi.0.0.49.js +0 -1
- package/dist/interface/engine.io-client.BkCVneko.0.0.49.js +0 -1
- package/dist/interface/fast-deep-equal.Cba0yG7P.0.0.49.js +0 -1
- package/dist/interface/fonts/Inter/Inter-Regular.ttf +0 -0
- package/dist/interface/highlight.js.B_E0LW5C.0.0.49.js +0 -2
- package/dist/interface/hookable.B8xFkYCm.0.0.49.js +0 -1
- package/dist/interface/linkify-it.B6s2BWlj.0.0.49.js +0 -1
- package/dist/interface/main.BBe3SGhH.0.0.49.js +0 -4
- package/dist/interface/perfect-debounce.Cp2ysxOb.0.0.49.js +0 -1
- package/dist/interface/pinia.ggULzsrQ.0.0.49.js +0 -5
- package/dist/interface/plugins.D11FBqVV.0.0.49.js +0 -1
- package/dist/interface/react-dnd-touch-backend.Bu6wFEmw.0.0.49.js +0 -1
- package/dist/interface/rxjs.BoFuGUYG.0.0.49.js +0 -3
- package/dist/interface/socket.io-client.DkEQDv7C.0.0.49.js +0 -1
- package/dist/interface/socket.io-parser.DIURoCw8.0.0.49.js +0 -1
- package/dist/interface/system.D_LabhBl.0.0.49.js +0 -1
- package/dist/interface/types.Cz9TaZAP.0.0.49.js +0 -1
- package/dist/interface/utils.mAKpSMLY.0.0.49.js +0 -1
- package/dist/interface/uuid.Ch9TGLTe.0.0.49.js +0 -1
- package/dist/interface/vee-validate.8pUAwQ7T.0.0.49.js +0 -5
- package/dist/interface/vue-i18n.CBqdKRmG.0.0.49.js +0 -5
- package/dist/interface/vue-inline-svg.ZWpe_tFT.0.0.49.js +0 -1
- package/dist/interface/vue-router.DvFvaoP2.0.0.49.js +0 -5
- package/dist/interface/vue3-apexcharts.BHSDC9pf.0.0.49.js +0 -1
- package/dist/interface/vue3-dnd.DbCy3Qbj.0.0.49.js +0 -1
- package/dist/interface/vue3-toastify.JJyrPHKk.0.0.49.js +0 -1
- package/dist/interface/vuetify.kkqUjVJA.0.0.49.js +0 -5
- package/dist/interface/zod.bkdEMpUp.0.0.49.js +0 -1
- package/dist/server/src/api/utils/cameraSource.d.ts +0 -6
- package/dist/server/src/api/utils/cameraSource.js +0 -51
- package/dist/server/src/api/utils/cameraSource.js.map +0 -1
- package/dist/server/src/api/websocket/go2rtc.d.ts +0 -21
- package/dist/server/src/api/websocket/go2rtc.js +0 -88
- package/dist/server/src/api/websocket/go2rtc.js.map +0 -1
- package/dist/server/src/api/websocket/nsp/proxy.d.ts +0 -27
- package/dist/server/src/api/websocket/nsp/proxy.js +0 -127
- package/dist/server/src/api/websocket/nsp/proxy.js.map +0 -1
- package/dist/server/src/nats/index.d.ts +0 -40
- package/dist/server/src/nats/index.js +0 -164
- package/dist/server/src/nats/index.js.map +0 -1
- package/dist/server/src/nats/proxy/cameraDevice.d.ts +0 -22
- package/dist/server/src/nats/proxy/cameraDevice.js +0 -249
- package/dist/server/src/nats/proxy/cameraDevice.js.map +0 -1
- package/dist/server/src/nats/proxy/coreManager.d.ts +0 -14
- package/dist/server/src/nats/proxy/coreManager.js +0 -68
- package/dist/server/src/nats/proxy/coreManager.js.map +0 -1
- package/dist/server/src/nats/proxy/deviceManager.d.ts +0 -14
- package/dist/server/src/nats/proxy/deviceManager.js +0 -101
- package/dist/server/src/nats/proxy/deviceManager.js.map +0 -1
- package/dist/server/src/nats/server.js.map +0 -1
- package/dist/server/src/nats/types.d.ts +0 -18
- package/dist/server/src/nats/utils.js.map +0 -1
- /package/dist/interface/assets/{Backup.0.0.49.CX0rT0QJ.css → SettingsBackup.CX0rT0QJ.0.0.50-internal.1.css} +0 -0
- /package/dist/interface/assets/{highlight.0.0.49.Ch2EwETz.css → highlight.Ch2EwETz.0.0.50-internal.1.css} +0 -0
- /package/dist/interface/assets/{logo-256.0.0.49.BCQk9H1-.png → logo-256.BCQk9H1-.0.0.50-internal.1.png} +0 -0
- /package/dist/interface/assets/{logo-512.0.0.49.DLKVOU2S.png → logo-512.DLKVOU2S.0.0.50-internal.1.png} +0 -0
- /package/dist/interface/assets/{logo.0.0.49.DmEiRk0z.png → logo.DmEiRk0z.0.0.50-internal.1.png} +0 -0
- /package/dist/interface/assets/{mode-json.0.0.49.Br7xisR1.js → mode-json.Br7xisR1.0.0.50-internal.1.js} +0 -0
- /package/dist/interface/assets/{mode-yaml.0.0.49.CIYL8U3d.js → mode-yaml.CIYL8U3d.0.0.50-internal.1.js} +0 -0
- /package/dist/interface/{@babel.l0sNRNKZ.0.0.49.js → js/@babel.l0sNRNKZ.0.0.50-internal.1.js} +0 -0
- /package/dist/interface/{@react-dnd.CcwRs9xb.0.0.49.js → js/@react-dnd.CcwRs9xb.0.0.50-internal.1.js} +0 -0
- /package/dist/interface/{@socket.io.Dkula2eQ.0.0.49.js → js/@socket.io.Dkula2eQ.0.0.50-internal.1.js} +0 -0
- /package/dist/interface/{birpc.l0sNRNKZ.0.0.49.js → js/birpc.l0sNRNKZ.0.0.50-internal.1.js} +0 -0
- /package/dist/interface/{compare-versions.DqEOhma6.0.0.49.js → js/compare-versions.DqEOhma6.0.0.50-internal.1.js} +0 -0
- /package/dist/interface/{dijkstrajs.C00ieaqj.0.0.49.js → js/dijkstrajs.C00ieaqj.0.0.50-internal.1.js} +0 -0
- /package/dist/interface/{engine.io-parser.BiEtp6m2.0.0.49.js → js/engine.io-parser.BiEtp6m2.0.0.50-internal.1.js} +0 -0
- /package/dist/interface/{entities.C20TfXL6.0.0.49.js → js/entities.C20TfXL6.0.0.50-internal.1.js} +0 -0
- /package/dist/interface/{ev-emitter.X5f1qa-c.0.0.49.js → js/ev-emitter.X5f1qa-c.0.0.50-internal.1.js} +0 -0
- /package/dist/interface/{get-size.D1dS-IaP.0.0.49.js → js/get-size.D1dS-IaP.0.0.50-internal.1.js} +0 -0
- /package/dist/interface/{vue.l0sNRNKZ.0.0.49.js → js/hookable.l0sNRNKZ.0.0.50-internal.1.js} +0 -0
- /package/dist/interface/{mdurl.k9Sl0PQj.0.0.49.js → js/mdurl.k9Sl0PQj.0.0.50-internal.1.js} +0 -0
- /package/dist/interface/{punycode.js.Dj65hjkv.0.0.49.js → js/punycode.js.Dj65hjkv.0.0.50-internal.1.js} +0 -0
- /package/dist/interface/{react-dnd-html5-backend.1HQjlkwI.0.0.49.js → js/react-dnd-html5-backend.1HQjlkwI.0.0.50-internal.1.js} +0 -0
- /package/dist/interface/{redux.BFxtlG_c.0.0.49.js → js/redux.BFxtlG_c.0.0.50-internal.1.js} +0 -0
- /package/dist/interface/{tslib.9k7AwCpt.0.0.49.js → js/tslib.9k7AwCpt.0.0.50-internal.1.js} +0 -0
- /package/dist/interface/{uc.micro.kMc2yuuw.0.0.49.js → js/uc.micro.kMc2yuuw.0.0.50-internal.1.js} +0 -0
- /package/dist/server/src/{nats → decoder}/types.js +0 -0
- /package/dist/server/src/{nats → rpc}/utils.js +0 -0
package/dist/server/package.json
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camera.ui/server",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.50-internal.1",
|
|
4
4
|
"description": "camera.ui",
|
|
5
5
|
"author": "seydx (https://github.com/seydx/camera.ui)",
|
|
6
6
|
"type": "module",
|
|
7
|
+
"main": "dist/server/bin/cameraui-server.js",
|
|
7
8
|
"bin": {
|
|
8
9
|
"cameraui-server": "./dist/server/bin/cameraui-server.js"
|
|
9
10
|
},
|
|
10
11
|
"scripts": {
|
|
11
|
-
"build": "rimraf ./dist/server && tsc &&
|
|
12
|
+
"build": "rimraf ./dist/server && npm run build:wasm && mypy src && tsc && npm run copy:files && npm run clean",
|
|
13
|
+
"build:wasm": "cd src/decoder/wasm && asc assembly/index.ts assembly/console.ts --config asconfig.json && cd ../../../../../",
|
|
12
14
|
"check": "tsc --noEmit",
|
|
15
|
+
"clean": "rimraf dist/server/src/decoder/python/test && rimraf dist/server/src/camera/python/test",
|
|
16
|
+
"copy:files": "cpy package.json dist/server && cpy requirements.txt dist/server && cpy 'src/**/*.py' dist/server/src --parents && cpy src/decoder/wasm/build/**/* ./dist/server/src/decoder/wasm/build",
|
|
13
17
|
"format": "prettier --write 'src/' 'bin/' --ignore-unknown --no-error-on-unmatched-pattern",
|
|
14
18
|
"install-updates": "npm i --save",
|
|
15
19
|
"lint": "eslint .",
|
|
@@ -17,89 +21,97 @@
|
|
|
17
21
|
"update": "updates --update ./",
|
|
18
22
|
"prepublishOnly": "node -e \"if(!process.env.SAFE_PUBLISH){console.error('Error: Use npm run publish:latest or npm run publish:alpha to publish');process.exit(1)}\"",
|
|
19
23
|
"publish:latest": "tsx ../scripts/publish.ts -p ./ -m ./localdeps.txt --cameraui",
|
|
20
|
-
"publish:alpha": "tsx ../scripts/publish.ts -p ./ -m ./localdeps.txt --cameraui --npm-args --tag alpha"
|
|
24
|
+
"publish:alpha": "tsx ../scripts/publish.ts -p ./ -m ./localdeps.txt --cameraui --npm-args --tag alpha",
|
|
25
|
+
"publish:internal": "tsx ../scripts/publish.ts -p ./ -m ./localdeps.txt --cameraui --npm-args --tag internal"
|
|
21
26
|
},
|
|
22
27
|
"dependencies": {
|
|
23
|
-
"@
|
|
24
|
-
"@
|
|
25
|
-
"@camera.ui/
|
|
26
|
-
"@camera.ui/
|
|
27
|
-
"@camera.ui/
|
|
28
|
-
"@camera.ui/
|
|
29
|
-
"@
|
|
30
|
-
"@
|
|
31
|
-
"@
|
|
32
|
-
"@
|
|
33
|
-
"@
|
|
28
|
+
"@assemblyscript/loader": "^0.27.36",
|
|
29
|
+
"@bjia56/portable-python": "^0.1.114",
|
|
30
|
+
"@camera.ui/common": "^0.0.40",
|
|
31
|
+
"@camera.ui/ffmpeg": "^0.0.7",
|
|
32
|
+
"@camera.ui/go2rtc": "^0.0.50",
|
|
33
|
+
"@camera.ui/nats": "^0.0.22",
|
|
34
|
+
"@camera.ui/rpc-client": "^0.0.3",
|
|
35
|
+
"@camera.ui/rpc-common": "^0.0.3",
|
|
36
|
+
"@camera.ui/rpc-server": "^0.0.3",
|
|
37
|
+
"@camera.ui/rtsp": "^0.0.49",
|
|
38
|
+
"@camera.ui/rust-decoder": "^0.0.5",
|
|
39
|
+
"@fastify/cors": "^11.0.1",
|
|
40
|
+
"@fastify/formbody": "^8.0.2",
|
|
41
|
+
"@fastify/helmet": "^13.0.1",
|
|
42
|
+
"@fastify/multipart": "^9.0.3",
|
|
43
|
+
"@fastify/static": "^8.1.1",
|
|
34
44
|
"@isaacs/ttlcache": "^1.4.1",
|
|
35
|
-
"@scrypted/node-pty": "1.0.18",
|
|
36
45
|
"adm-zip": "^0.5.16",
|
|
37
46
|
"ansicolor": "^2.0.3",
|
|
38
|
-
"
|
|
47
|
+
"cloudflared": "^0.7.0",
|
|
48
|
+
"compare-versions": "^6.1.1",
|
|
49
|
+
"dotenv": "^16.5.0",
|
|
39
50
|
"express-useragent": "^1.0.15",
|
|
40
|
-
"fastify": "^5.2
|
|
51
|
+
"fastify": "^5.3.2",
|
|
41
52
|
"fastify-plugin": "^5.0.1",
|
|
42
53
|
"fastify-type-provider-zod": "^4.0.2",
|
|
43
54
|
"fkill": "^9.0.0",
|
|
44
|
-
"fs-extra": "^11.
|
|
55
|
+
"fs-extra": "^11.3.0",
|
|
45
56
|
"get-port": "^7.1.0",
|
|
46
57
|
"js-yaml": "^4.1.0",
|
|
47
58
|
"jsonwebtoken": "^9.0.2",
|
|
48
|
-
"lmdb": "^3.2.
|
|
49
|
-
"msgpackr": "^1.11.2",
|
|
50
|
-
"nats": "^2.28.2",
|
|
59
|
+
"lmdb": "^3.2.6",
|
|
51
60
|
"node-forge": "^1.3.1",
|
|
52
61
|
"object-path": "^0.11.8",
|
|
53
62
|
"ps-list": "^8.1.1",
|
|
54
|
-
"qs": "^6.
|
|
63
|
+
"qs": "^6.14.0",
|
|
55
64
|
"reflect-metadata": "^0.2.2",
|
|
56
|
-
"rxjs": "^7.8.
|
|
65
|
+
"rxjs": "^7.8.2",
|
|
57
66
|
"safe-timers": "^1.1.0",
|
|
58
|
-
"semver": "^7.
|
|
59
|
-
"sharp": "^0.
|
|
67
|
+
"semver": "^7.7.1",
|
|
68
|
+
"sharp": "^0.34.1",
|
|
60
69
|
"socket.io": "^4.8.1",
|
|
61
|
-
"systeminformation": "^5.
|
|
70
|
+
"systeminformation": "^5.25.11",
|
|
62
71
|
"tail": "^2.2.6",
|
|
63
72
|
"tar": "^7.4.3",
|
|
64
|
-
"tsyringe": "^4.
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
73
|
+
"tsyringe": "^4.10.0",
|
|
74
|
+
"undici": "^7.8.0",
|
|
75
|
+
"uuid": "^11.1.0",
|
|
76
|
+
"werift": "^0.22.1",
|
|
77
|
+
"ws": "^8.18.1",
|
|
78
|
+
"zod": "^3.24.3"
|
|
69
79
|
},
|
|
70
80
|
"devDependencies": {
|
|
71
|
-
"@
|
|
81
|
+
"@camera.ui/types": "^0.0.87",
|
|
82
|
+
"@stylistic/eslint-plugin": "^4.2.0",
|
|
72
83
|
"@types/adm-zip": "^0.5.7",
|
|
73
84
|
"@types/express-useragent": "^1.0.5",
|
|
74
85
|
"@types/fs-extra": "^11.0.4",
|
|
75
86
|
"@types/js-yaml": "^4.0.9",
|
|
76
|
-
"@types/jsonwebtoken": "^9.0.
|
|
77
|
-
"@types/node": "^22.
|
|
87
|
+
"@types/jsonwebtoken": "^9.0.9",
|
|
88
|
+
"@types/node": "^22.15.3",
|
|
78
89
|
"@types/node-forge": "^1.3.11",
|
|
79
90
|
"@types/object-path": "^0.11.4",
|
|
80
91
|
"@types/safe-timers": "^1.1.2",
|
|
81
|
-
"@types/semver": "^7.
|
|
92
|
+
"@types/semver": "^7.7.0",
|
|
82
93
|
"@types/tail": "^2.2.3",
|
|
83
94
|
"@types/tar": "^6.1.13",
|
|
84
95
|
"@types/uuid": "^10.0.0",
|
|
85
|
-
"@types/ws": "^8.
|
|
86
|
-
"@typescript-eslint/parser": "^8.
|
|
87
|
-
"assemblyscript": "^0.27.
|
|
96
|
+
"@types/ws": "^8.18.1",
|
|
97
|
+
"@typescript-eslint/parser": "^8.31.1",
|
|
98
|
+
"assemblyscript": "^0.27.36",
|
|
88
99
|
"cpy-cli": "^5.0.0",
|
|
89
100
|
"cross-env": "^7.0.3",
|
|
90
|
-
"eslint": "^9.
|
|
91
|
-
"globals": "^
|
|
92
|
-
"prettier": "^3.
|
|
101
|
+
"eslint": "^9.25.1",
|
|
102
|
+
"globals": "^16.0.0",
|
|
103
|
+
"prettier": "^3.5.3",
|
|
93
104
|
"rimraf": "^6.0.1",
|
|
94
|
-
"typescript": "^5.
|
|
95
|
-
"typescript-eslint": "^8.
|
|
96
|
-
"updates": "^16.4.
|
|
105
|
+
"typescript": "^5.8.3",
|
|
106
|
+
"typescript-eslint": "^8.31.1",
|
|
107
|
+
"updates": "^16.4.2",
|
|
108
|
+
"vitest": "^3.1.2"
|
|
97
109
|
},
|
|
98
110
|
"bugs": {
|
|
99
111
|
"url": "https://github.com/seydx/camera.ui/issues"
|
|
100
112
|
},
|
|
101
113
|
"engines": {
|
|
102
|
-
"node": ">=
|
|
114
|
+
"node": ">=22.0.0"
|
|
103
115
|
},
|
|
104
116
|
"homepage": "https://github.com/seydx/camera.ui#readme",
|
|
105
117
|
"keywords": [
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
camera-ui-python-types==0.
|
|
2
|
-
camera-ui-python-common==0.
|
|
3
|
-
nats-py==2.
|
|
4
|
-
deepdiff==
|
|
5
|
-
pyeecui==
|
|
1
|
+
camera-ui-python-types==2.0.3
|
|
2
|
+
camera-ui-python-common==2.0.2
|
|
3
|
+
nats-py==2.10.0
|
|
4
|
+
deepdiff==8.4.2
|
|
5
|
+
pyeecui==12.1.4
|
|
6
6
|
reactivex==4.0.4
|
|
7
7
|
numpy==1.26.4
|
|
8
8
|
lmdbm==0.0.6
|
|
9
|
-
lmdb==1.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
lmdb==1.6.2
|
|
10
|
+
msgpack==1.1.0
|
|
11
|
+
cachetools==5.5.2
|
|
12
|
+
aiohttp==3.11.18
|
|
13
|
+
Pillow==11.2.1
|
|
14
|
+
virtualenv==20.30.0
|
|
15
|
+
setproctitle==1.3.6
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from .camera_utils.utils import build_target_url
|
|
2
|
+
from .common_utils.object_path import ObjectPath, Path
|
|
3
|
+
from .common_utils.reactive import ReactiveProperty
|
|
4
|
+
from .common_utils.signal_handler import SignalHandler, SignalHandlerOptions
|
|
5
|
+
from .common_utils.subscribed import Subscribed
|
|
6
|
+
from .common_utils.task import TaskSet
|
|
7
|
+
from .common_utils.thread import to_thread
|
|
8
|
+
from .common_utils.utils import make_sync, merge, merge_with
|
|
9
|
+
from .logger_service.ansicolor import Ansicolor
|
|
10
|
+
from .logger_service.logger import LoggerOptions, LoggerService
|
|
11
|
+
|
|
12
|
+
__all__ = [
|
|
13
|
+
"build_target_url",
|
|
14
|
+
"ObjectPath",
|
|
15
|
+
"Path",
|
|
16
|
+
"SignalHandler",
|
|
17
|
+
"SignalHandlerOptions",
|
|
18
|
+
"Subscribed",
|
|
19
|
+
"TaskSet",
|
|
20
|
+
"to_thread",
|
|
21
|
+
"make_sync",
|
|
22
|
+
"merge",
|
|
23
|
+
"merge_with",
|
|
24
|
+
"ReactiveProperty",
|
|
25
|
+
"Ansicolor",
|
|
26
|
+
"LoggerOptions",
|
|
27
|
+
"LoggerService",
|
|
28
|
+
]
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
from urllib.parse import urlparse
|
|
3
|
+
|
|
4
|
+
from camera_ui_python_types import RTSPUrlOptions
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def build_target_url(rtsp_url: str, options: Optional[RTSPUrlOptions] = None) -> str:
|
|
8
|
+
if options is None:
|
|
9
|
+
options = {}
|
|
10
|
+
|
|
11
|
+
parsed_url = urlparse(rtsp_url)
|
|
12
|
+
base_url = f"{parsed_url.scheme}://{parsed_url.netloc}{parsed_url.path}"
|
|
13
|
+
|
|
14
|
+
video = options.get("video", True)
|
|
15
|
+
audio = options.get("audio", True)
|
|
16
|
+
audio_single_track = options.get("audioSingleTrack", True)
|
|
17
|
+
backchannel = options.get("backchannel", False)
|
|
18
|
+
timeout = options.get("timeout", 15)
|
|
19
|
+
|
|
20
|
+
validated_timeout = min(max(5, timeout), 30)
|
|
21
|
+
params: list[tuple[str, Optional[str]]] = []
|
|
22
|
+
|
|
23
|
+
# Video Parameter
|
|
24
|
+
if video:
|
|
25
|
+
params.append(("video", None))
|
|
26
|
+
|
|
27
|
+
# Audio Parameter
|
|
28
|
+
if audio:
|
|
29
|
+
if isinstance(audio, bool):
|
|
30
|
+
if audio:
|
|
31
|
+
params.append(("audio", None))
|
|
32
|
+
elif isinstance(audio, list):
|
|
33
|
+
if audio_single_track:
|
|
34
|
+
# One Track with multiple codec options: audio=codec1,codec2
|
|
35
|
+
params.append(("audio", ",".join(audio)))
|
|
36
|
+
else:
|
|
37
|
+
# Multiple Audio Tracks: audio=codec1&audio=codec2
|
|
38
|
+
for codec in audio:
|
|
39
|
+
params.append(("audio", codec))
|
|
40
|
+
else: # String
|
|
41
|
+
params.append(("audio", audio))
|
|
42
|
+
|
|
43
|
+
# Backchannel Parameter
|
|
44
|
+
if backchannel:
|
|
45
|
+
params.append(("backchannel", "1"))
|
|
46
|
+
|
|
47
|
+
# Timeout Parameter
|
|
48
|
+
params.append(("timeout", str(validated_timeout)))
|
|
49
|
+
|
|
50
|
+
query_string = "&".join([f"{key}" if value is None else f"{key}={value}" for key, value in params])
|
|
51
|
+
|
|
52
|
+
return f"{base_url}?{query_string}"
|
|
File without changes
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
from collections.abc import Sequence
|
|
2
|
+
from typing import Any, Optional, TypeVar, Union, cast
|
|
3
|
+
|
|
4
|
+
Path = Union[Sequence[Union[int, str]], str, int]
|
|
5
|
+
T = TypeVar("T")
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def is_empty(value: list[int] | list[str] | Sequence[int | str] | None) -> bool:
|
|
9
|
+
if value is None:
|
|
10
|
+
return True
|
|
11
|
+
return len(value) == 0
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def get_key(key: Union[str, int]) -> Union[int, str]:
|
|
15
|
+
if isinstance(key, int):
|
|
16
|
+
return key
|
|
17
|
+
if key.isdigit():
|
|
18
|
+
return int(key)
|
|
19
|
+
return key
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class ObjectPath:
|
|
23
|
+
@staticmethod
|
|
24
|
+
def delete(obj: Union[dict[Any, Any], list[Any]], path: Path) -> Union[dict[Any, Any], list[Any]]:
|
|
25
|
+
if isinstance(path, int):
|
|
26
|
+
path = [path]
|
|
27
|
+
elif isinstance(path, str):
|
|
28
|
+
path = path.split(".")
|
|
29
|
+
|
|
30
|
+
if is_empty(path):
|
|
31
|
+
return obj
|
|
32
|
+
|
|
33
|
+
current_path = get_key(path[0])
|
|
34
|
+
|
|
35
|
+
if isinstance(obj, list):
|
|
36
|
+
if isinstance(current_path, int) and 0 <= current_path < len(obj):
|
|
37
|
+
if len(path) == 1:
|
|
38
|
+
obj.pop(current_path)
|
|
39
|
+
else:
|
|
40
|
+
next_obj = obj[current_path]
|
|
41
|
+
if isinstance(next_obj, (dict, list)):
|
|
42
|
+
ObjectPath.delete(cast(Any, next_obj), path[1:])
|
|
43
|
+
elif current_path in obj:
|
|
44
|
+
if len(path) == 1:
|
|
45
|
+
del obj[current_path]
|
|
46
|
+
else:
|
|
47
|
+
next_obj = obj[current_path]
|
|
48
|
+
if isinstance(next_obj, (dict, list)):
|
|
49
|
+
ObjectPath.delete(cast(Any, next_obj), path[1:])
|
|
50
|
+
|
|
51
|
+
return obj
|
|
52
|
+
|
|
53
|
+
@staticmethod
|
|
54
|
+
def has(obj: Union[dict[Any, Any], list[Any]], path: Path) -> bool:
|
|
55
|
+
if isinstance(path, int):
|
|
56
|
+
path = [path]
|
|
57
|
+
elif isinstance(path, str):
|
|
58
|
+
path = path.split(".")
|
|
59
|
+
|
|
60
|
+
if not path:
|
|
61
|
+
return bool(obj)
|
|
62
|
+
|
|
63
|
+
current: Any = obj
|
|
64
|
+
for item in path:
|
|
65
|
+
key = get_key(item)
|
|
66
|
+
|
|
67
|
+
if isinstance(current, list):
|
|
68
|
+
if isinstance(key, int) and 0 <= key < len(cast(list[str], current)):
|
|
69
|
+
current = current[key]
|
|
70
|
+
else:
|
|
71
|
+
return False
|
|
72
|
+
elif isinstance(current, dict):
|
|
73
|
+
if key in current:
|
|
74
|
+
current = current[key]
|
|
75
|
+
else:
|
|
76
|
+
return False
|
|
77
|
+
else:
|
|
78
|
+
return False
|
|
79
|
+
|
|
80
|
+
return True
|
|
81
|
+
|
|
82
|
+
@staticmethod
|
|
83
|
+
def get(obj: Union[dict[Any, Any], list[Any]], path: Path, default_value: Any = None) -> Any:
|
|
84
|
+
# Handle leere Pfade
|
|
85
|
+
if isinstance(path, str) and not path or isinstance(path, Sequence) and not path:
|
|
86
|
+
return obj
|
|
87
|
+
|
|
88
|
+
# Konvertiere einzelne Zahlen oder Strings in eine Liste
|
|
89
|
+
if isinstance(path, int):
|
|
90
|
+
path = [path]
|
|
91
|
+
elif isinstance(path, str):
|
|
92
|
+
path = path.split(".")
|
|
93
|
+
|
|
94
|
+
# Ab hier wie gehabt
|
|
95
|
+
current_path = get_key(path[0])
|
|
96
|
+
next_obj = None
|
|
97
|
+
|
|
98
|
+
if isinstance(obj, list):
|
|
99
|
+
if isinstance(current_path, int) and 0 <= current_path < len(obj):
|
|
100
|
+
next_obj = obj[current_path]
|
|
101
|
+
else:
|
|
102
|
+
next_obj = obj.get(current_path)
|
|
103
|
+
|
|
104
|
+
if next_obj is None:
|
|
105
|
+
return default_value
|
|
106
|
+
|
|
107
|
+
if len(path) == 1:
|
|
108
|
+
return next_obj
|
|
109
|
+
|
|
110
|
+
return ObjectPath.get(next_obj, path[1:], default_value)
|
|
111
|
+
|
|
112
|
+
@staticmethod
|
|
113
|
+
def set(
|
|
114
|
+
obj: Union[dict[Any, Any], list[Any]], path: Path, value: Any, do_not_replace: bool = False
|
|
115
|
+
) -> Any:
|
|
116
|
+
if isinstance(path, int):
|
|
117
|
+
path = [path]
|
|
118
|
+
elif isinstance(path, str):
|
|
119
|
+
path = [get_key(key) for key in path.split(".") if key]
|
|
120
|
+
|
|
121
|
+
if not path:
|
|
122
|
+
return obj
|
|
123
|
+
|
|
124
|
+
current_path = path[0]
|
|
125
|
+
|
|
126
|
+
if isinstance(obj, list):
|
|
127
|
+
if isinstance(current_path, int):
|
|
128
|
+
while len(obj) <= current_path:
|
|
129
|
+
obj.append(None)
|
|
130
|
+
if len(path) == 1:
|
|
131
|
+
if not do_not_replace or obj[current_path] is None:
|
|
132
|
+
obj[current_path] = value
|
|
133
|
+
else:
|
|
134
|
+
if obj[current_path] is None:
|
|
135
|
+
obj[current_path] = [] if isinstance(path[1], int) else {}
|
|
136
|
+
return ObjectPath.set(obj[current_path], path[1:], value, do_not_replace)
|
|
137
|
+
return None
|
|
138
|
+
|
|
139
|
+
if len(path) == 1:
|
|
140
|
+
if not do_not_replace or current_path not in obj:
|
|
141
|
+
obj[current_path] = value
|
|
142
|
+
return obj.get(current_path)
|
|
143
|
+
|
|
144
|
+
if current_path not in obj:
|
|
145
|
+
obj[current_path] = [] if isinstance(path[1], int) else {}
|
|
146
|
+
|
|
147
|
+
return ObjectPath.set(obj[current_path], path[1:], value, do_not_replace)
|
|
148
|
+
|
|
149
|
+
@staticmethod
|
|
150
|
+
def push(obj: Union[dict[Any, Any], list[Any]], path: Path, *items: Any) -> None:
|
|
151
|
+
target = ObjectPath.get(obj, path)
|
|
152
|
+
if not isinstance(target, list):
|
|
153
|
+
target = []
|
|
154
|
+
ObjectPath.set(obj, path, target)
|
|
155
|
+
target.extend(items)
|
|
156
|
+
|
|
157
|
+
@staticmethod
|
|
158
|
+
def coalesce(
|
|
159
|
+
obj: Union[dict[Any, Any], list[Any]],
|
|
160
|
+
paths: Union[Path, list[Path]],
|
|
161
|
+
default_value: Optional[Any] = None,
|
|
162
|
+
) -> Any:
|
|
163
|
+
paths_list = paths if isinstance(paths, list) else [paths]
|
|
164
|
+
for path in paths_list:
|
|
165
|
+
value = ObjectPath.get(obj, path)
|
|
166
|
+
if value is not None:
|
|
167
|
+
return value
|
|
168
|
+
return default_value
|
|
169
|
+
|
|
170
|
+
@staticmethod
|
|
171
|
+
def empty(obj: Union[dict[Any, Any], list[Any]], path: Path) -> Any:
|
|
172
|
+
value = ObjectPath.get(obj, path)
|
|
173
|
+
|
|
174
|
+
if value is None:
|
|
175
|
+
return None
|
|
176
|
+
|
|
177
|
+
if isinstance(value, str):
|
|
178
|
+
return ObjectPath.set(obj, path, "")
|
|
179
|
+
if isinstance(value, bool):
|
|
180
|
+
return ObjectPath.set(obj, path, False)
|
|
181
|
+
if isinstance(value, (int, float)):
|
|
182
|
+
return ObjectPath.set(obj, path, 0)
|
|
183
|
+
if isinstance(value, (list, dict)):
|
|
184
|
+
value.clear()
|
|
185
|
+
return cast(Any, value)
|
|
186
|
+
return ObjectPath.set(obj, path, None)
|
|
187
|
+
|
|
188
|
+
@staticmethod
|
|
189
|
+
def ensure_exists(obj: Union[dict[Any, Any], list[Any]], path: Path, value: Any) -> Any:
|
|
190
|
+
return ObjectPath.set(obj, path, value, True)
|
|
191
|
+
|
|
192
|
+
@staticmethod
|
|
193
|
+
def insert(obj: Union[dict[Any, Any], list[Any]], path: Path, value: Any, at: int = 0) -> None:
|
|
194
|
+
target = ObjectPath.get(obj, path)
|
|
195
|
+
if not isinstance(target, list):
|
|
196
|
+
target = []
|
|
197
|
+
ObjectPath.set(obj, path, target)
|
|
198
|
+
target.insert(at, value)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
from copy import deepcopy
|
|
2
|
+
from typing import Generic, Optional, TypeVar, Union, cast
|
|
3
|
+
|
|
4
|
+
from camera_ui_python_types.hybrid_observer import HybridObservable
|
|
5
|
+
from reactivex import operators as ops
|
|
6
|
+
from reactivex.subject import BehaviorSubject
|
|
7
|
+
|
|
8
|
+
T = TypeVar("T")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ReactiveProperty(Generic[T]):
|
|
12
|
+
__subject: BehaviorSubject[T]
|
|
13
|
+
observable: HybridObservable[T]
|
|
14
|
+
|
|
15
|
+
def __init__(
|
|
16
|
+
self, initial_value: Union[T, BehaviorSubject[T]], observable: Optional[HybridObservable[T]] = None
|
|
17
|
+
):
|
|
18
|
+
if isinstance(initial_value, BehaviorSubject):
|
|
19
|
+
self.__subject = cast(BehaviorSubject[T], initial_value)
|
|
20
|
+
else:
|
|
21
|
+
self.__subject = BehaviorSubject(initial_value)
|
|
22
|
+
|
|
23
|
+
self.observable = observable or self.__create_state_observable(self.__subject)
|
|
24
|
+
|
|
25
|
+
@property
|
|
26
|
+
def value(self) -> T:
|
|
27
|
+
val = self.__subject.value
|
|
28
|
+
|
|
29
|
+
if isinstance(val, (dict, list)) or hasattr(val, "__dict__"):
|
|
30
|
+
val = cast(T, val)
|
|
31
|
+
return deepcopy(val)
|
|
32
|
+
|
|
33
|
+
return val
|
|
34
|
+
|
|
35
|
+
def next(self, value: T) -> None:
|
|
36
|
+
self.__subject.on_next(value)
|
|
37
|
+
|
|
38
|
+
def complete(self) -> None:
|
|
39
|
+
self.__subject.on_completed()
|
|
40
|
+
|
|
41
|
+
def __create_state_observable(self, state_subject: BehaviorSubject[T]) -> HybridObservable[T]:
|
|
42
|
+
return HybridObservable(state_subject.pipe(ops.distinct_until_changed(), ops.share()))
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
import contextlib
|
|
3
|
+
import signal
|
|
4
|
+
import traceback
|
|
5
|
+
from collections.abc import Coroutine
|
|
6
|
+
from typing import Any, Callable, TypedDict
|
|
7
|
+
|
|
8
|
+
from camera_ui_python_types import LoggerService
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class SignalHandlerOptions(TypedDict):
|
|
12
|
+
display_name: str
|
|
13
|
+
logger: LoggerService
|
|
14
|
+
timeout_duration: int
|
|
15
|
+
close_function: Callable[..., Coroutine[Any, Any, Any]]
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class SignalHandler:
|
|
19
|
+
display_name: str
|
|
20
|
+
logger: LoggerService
|
|
21
|
+
timeout_duration: int
|
|
22
|
+
close_function: Callable[..., Coroutine[Any, Any, Any]]
|
|
23
|
+
is_shutting_down: bool
|
|
24
|
+
shutdown_event: asyncio.Event
|
|
25
|
+
|
|
26
|
+
def __init__(self, options: SignalHandlerOptions):
|
|
27
|
+
self.display_name: str = options["display_name"]
|
|
28
|
+
self.logger = options["logger"]
|
|
29
|
+
self.timeout_duration = options.get("timeout_duration", 5)
|
|
30
|
+
self.close_function = options["close_function"]
|
|
31
|
+
self.is_shutting_down = False
|
|
32
|
+
self.shutdown_event = asyncio.Event()
|
|
33
|
+
|
|
34
|
+
def setup_handlers(self) -> None:
|
|
35
|
+
loop = asyncio.get_running_loop()
|
|
36
|
+
with contextlib.suppress(NotImplementedError):
|
|
37
|
+
for signame in ("SIGINT", "SIGTERM"):
|
|
38
|
+
|
|
39
|
+
def signal_callback() -> None:
|
|
40
|
+
with contextlib.suppress(asyncio.CancelledError):
|
|
41
|
+
asyncio.create_task(self.gracefully_close(signame))
|
|
42
|
+
|
|
43
|
+
sig = getattr(signal, signame)
|
|
44
|
+
loop.add_signal_handler(sig, signal_callback)
|
|
45
|
+
|
|
46
|
+
loop.set_exception_handler(self.handle_exception)
|
|
47
|
+
|
|
48
|
+
async def gracefully_close(self, signame: str) -> None:
|
|
49
|
+
if self.is_shutting_down:
|
|
50
|
+
return
|
|
51
|
+
|
|
52
|
+
self.is_shutting_down = True
|
|
53
|
+
self.logger.log(f"{self.display_name} Received {signame}. Stopping...")
|
|
54
|
+
|
|
55
|
+
try:
|
|
56
|
+
close_task = asyncio.create_task(self.close_function())
|
|
57
|
+
await asyncio.wait_for(close_task, timeout=self.timeout_duration)
|
|
58
|
+
except asyncio.TimeoutError:
|
|
59
|
+
self.logger.warn(
|
|
60
|
+
f"{self.display_name} Failed to gracefully close before timeout. Force quitting!"
|
|
61
|
+
)
|
|
62
|
+
except Exception as e:
|
|
63
|
+
self.logger.error(f"Error during shutdown: {str(e)}\n{traceback.format_exc()}")
|
|
64
|
+
finally:
|
|
65
|
+
self.shutdown_event.set()
|
|
66
|
+
|
|
67
|
+
def handle_exception(self, loop: asyncio.AbstractEventLoop, context: dict[str, Any]) -> None:
|
|
68
|
+
exception = context.get("exception")
|
|
69
|
+
message = context.get("message")
|
|
70
|
+
task = context.get("task") # Das Task Objekt
|
|
71
|
+
|
|
72
|
+
if isinstance(exception, asyncio.CancelledError) and self.is_shutting_down:
|
|
73
|
+
return
|
|
74
|
+
|
|
75
|
+
error_message = f"{self.display_name} Caught exception: {message}"
|
|
76
|
+
if task:
|
|
77
|
+
# Task Stack ausgeben
|
|
78
|
+
stack = task.get_stack()
|
|
79
|
+
if stack:
|
|
80
|
+
error_message += "\nTask Stack:"
|
|
81
|
+
for frame in stack:
|
|
82
|
+
error_message += f"\n File {frame.f_code.co_filename}, line {frame.f_lineno}, in {frame.f_code.co_name}"
|
|
83
|
+
|
|
84
|
+
if exception:
|
|
85
|
+
error_message += f"\n{type(exception).__name__}: {str(exception)}"
|
|
86
|
+
if not isinstance(exception, asyncio.CancelledError):
|
|
87
|
+
error_message += f"\n{traceback.format_exc()}"
|
|
88
|
+
|
|
89
|
+
self.logger.error(error_message)
|
|
90
|
+
|
|
91
|
+
if not self.is_shutting_down:
|
|
92
|
+
asyncio.create_task(self.gracefully_close("uncaughtException"))
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from typing import Protocol
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Unsubscribable(Protocol):
|
|
5
|
+
def dispose(self) -> None: ...
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Subscribed:
|
|
9
|
+
_subscriptions: list[Unsubscribable]
|
|
10
|
+
_additional_subscriptions: list[Unsubscribable]
|
|
11
|
+
|
|
12
|
+
def __init__(self) -> None:
|
|
13
|
+
self._subscriptions = []
|
|
14
|
+
self._additional_subscriptions = []
|
|
15
|
+
|
|
16
|
+
def add_subscriptions(self, *subscriptions: Unsubscribable) -> None:
|
|
17
|
+
self._subscriptions.extend(subscriptions)
|
|
18
|
+
|
|
19
|
+
def unsubscribe(self) -> None:
|
|
20
|
+
for subscription in self._subscriptions:
|
|
21
|
+
subscription.dispose()
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
from collections.abc import Coroutine
|
|
3
|
+
from typing import Any, Optional
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class TaskSet:
|
|
7
|
+
tasks: set[asyncio.Task[Any]]
|
|
8
|
+
name: Optional[str]
|
|
9
|
+
|
|
10
|
+
def __init__(self, name: Optional[str] = None) -> None:
|
|
11
|
+
self.tasks = set[asyncio.Task[Any]]()
|
|
12
|
+
self.name = name
|
|
13
|
+
|
|
14
|
+
def log_prefix(self) -> str:
|
|
15
|
+
return f"[{self.name}]"
|
|
16
|
+
|
|
17
|
+
def add(self, coroutine: Coroutine[Any, Any, Any]) -> asyncio.Task[Any]:
|
|
18
|
+
task = asyncio.create_task(coroutine, name=self.name)
|
|
19
|
+
self.tasks.add(task)
|
|
20
|
+
task.add_done_callback(lambda _: self.remove(task))
|
|
21
|
+
|
|
22
|
+
return task
|
|
23
|
+
|
|
24
|
+
def remove(self, task: asyncio.Task[Any]) -> None:
|
|
25
|
+
if task in self.tasks:
|
|
26
|
+
if not task.cancelled():
|
|
27
|
+
task.cancel()
|
|
28
|
+
|
|
29
|
+
self.tasks.remove(task)
|
|
30
|
+
|
|
31
|
+
def remove_all(self) -> None:
|
|
32
|
+
tasks = self.tasks.copy()
|
|
33
|
+
for task in tasks:
|
|
34
|
+
self.remove(task)
|
|
35
|
+
|
|
36
|
+
self.tasks.clear()
|
|
37
|
+
|
|
38
|
+
def __await__(self) -> Any:
|
|
39
|
+
return asyncio.gather(*self.tasks).__await__()
|