@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
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
import { orderBy } from '@camera.ui/common';
|
|
2
2
|
import TTLCache from '@isaacs/ttlcache';
|
|
3
|
-
import { pathExists
|
|
4
|
-
import { createReadStream,
|
|
5
|
-
import {
|
|
6
|
-
import { tmpdir } from 'node:os';
|
|
3
|
+
import { pathExists } from 'fs-extra/esm';
|
|
4
|
+
import { createReadStream, truncate } from 'node:fs';
|
|
5
|
+
import { readFile } from 'node:fs/promises';
|
|
7
6
|
import { join } from 'node:path';
|
|
8
7
|
import { Readable } from 'node:stream';
|
|
9
8
|
import { gt, parse as parseVersion } from 'semver';
|
|
10
9
|
import sharp from 'sharp';
|
|
11
10
|
import { container } from 'tsyringe';
|
|
12
11
|
import { PluginManager } from '../../plugins/index.js';
|
|
13
|
-
import { MAX_AUDIO_FILE_SIZE, MAX_MOTION_FILE_SIZE, MAX_OBJECT_FILE_SIZE } from '../schemas/plugins.schema.js';
|
|
14
12
|
import { CamerasService } from '../services/cameras.service.js';
|
|
15
13
|
import { PluginsService } from '../services/plugins.service.js';
|
|
16
14
|
import { fetchWithTimeout } from '../utils/fetch.js';
|
|
@@ -155,51 +153,64 @@ export class PluginsController {
|
|
|
155
153
|
try {
|
|
156
154
|
const pluginName = this.resolvePluginName(req.params);
|
|
157
155
|
const plugin = this.service.getPluginByName(pluginName);
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
message: 'Plugin not exists',
|
|
162
|
-
});
|
|
163
|
-
}
|
|
156
|
+
const pluginInfo = plugin?.info ?? (await this.searchNpmRegistrySingle(pluginName));
|
|
157
|
+
const version = req.query.pluginversion ?? 'latest';
|
|
158
|
+
// GITHUB API
|
|
164
159
|
try {
|
|
165
|
-
const
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
160
|
+
const repoMatch = pluginInfo?.links?.homepage?.match(/https:\/\/github.com\/([^/]+)\/([^/#]+)/);
|
|
161
|
+
const bugsMatch = pluginInfo?.links?.bugs?.match(/https:\/\/github.com\/([^/]+)\/([^/#]+)/);
|
|
162
|
+
const match = repoMatch ?? bugsMatch;
|
|
163
|
+
if (match) {
|
|
164
|
+
const response = await fetchWithTimeout(`https://api.github.com/repos/${match[1]}/${match[2]}/releases`, {
|
|
165
|
+
method: 'GET',
|
|
166
|
+
});
|
|
167
|
+
if (!response.ok) {
|
|
168
|
+
throw new Error(`Failed to fetch changelog from GitHub API - ${response.statusText}`);
|
|
169
|
+
}
|
|
170
|
+
const data = (await response.json());
|
|
171
|
+
const release = version === 'latest' ? data[0] : data.find((x) => x.tag_name === version);
|
|
172
|
+
if (release) {
|
|
173
|
+
reply.header('Content-Type', 'text/plain');
|
|
174
|
+
return reply.code(200).send(release.body);
|
|
175
|
+
}
|
|
170
176
|
}
|
|
171
177
|
}
|
|
172
178
|
catch {
|
|
173
179
|
//
|
|
174
180
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
const data = await response.text();
|
|
180
|
-
return reply.code(200).send(data);
|
|
181
|
-
}
|
|
182
|
-
catch (error) {
|
|
183
|
-
return reply.code(500).send({
|
|
184
|
-
statusCode: 500,
|
|
185
|
-
message: error.message,
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
async getConfigJsonByName(req, reply) {
|
|
190
|
-
try {
|
|
191
|
-
const pluginName = this.resolvePluginName(req.params);
|
|
192
|
-
const plugin = this.service.getPluginByName(pluginName);
|
|
193
|
-
const configFile = plugin?.configFile;
|
|
194
|
-
if (!plugin || !configFile) {
|
|
195
|
-
return reply.code(404).send({
|
|
196
|
-
statusCode: 404,
|
|
197
|
-
message: 'Plugin or Plugin Config not exists',
|
|
181
|
+
// UNPKG
|
|
182
|
+
try {
|
|
183
|
+
const response = await fetchWithTimeout(`https://unpkg.com/${pluginName}@${version}/CHANGELOG.md`, {
|
|
184
|
+
method: 'GET',
|
|
198
185
|
});
|
|
186
|
+
if (!response.ok) {
|
|
187
|
+
throw new Error(`Failed to fetch changelog from UNPKG - ${response.statusText}`);
|
|
188
|
+
}
|
|
189
|
+
const data = await response.text();
|
|
190
|
+
reply.header('Content-Type', 'text/plain');
|
|
191
|
+
return reply.code(200).send(data);
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
//
|
|
195
|
+
}
|
|
196
|
+
// LOCAL
|
|
197
|
+
if (plugin) {
|
|
198
|
+
try {
|
|
199
|
+
const changelog = join(plugin.installPath, 'CHANGELOG.md');
|
|
200
|
+
if (await pathExists(changelog)) {
|
|
201
|
+
const file = await readFile(`${plugin.installPath}/CHANGELOG.md`, 'utf8');
|
|
202
|
+
reply.header('Content-Type', 'text/plain');
|
|
203
|
+
return reply.code(200).send(file);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
catch {
|
|
207
|
+
//
|
|
208
|
+
}
|
|
199
209
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
210
|
+
return reply.code(404).send({
|
|
211
|
+
statusCode: 404,
|
|
212
|
+
message: 'Changelog not found',
|
|
213
|
+
});
|
|
203
214
|
}
|
|
204
215
|
catch (error) {
|
|
205
216
|
return reply.code(500).send({
|
|
@@ -230,7 +241,7 @@ export class PluginsController {
|
|
|
230
241
|
pluginLogoCache.set(pluginName, base64Logo);
|
|
231
242
|
}
|
|
232
243
|
reply.header('Content-Type', 'image/png');
|
|
233
|
-
return reply.code(200).send(base64Logo);
|
|
244
|
+
return reply.code(200).send(`data:image/png;base64,${base64Logo}`);
|
|
234
245
|
}
|
|
235
246
|
catch (error) {
|
|
236
247
|
return reply.code(500).send({
|
|
@@ -239,23 +250,25 @@ export class PluginsController {
|
|
|
239
250
|
});
|
|
240
251
|
}
|
|
241
252
|
}
|
|
242
|
-
async
|
|
253
|
+
async getConfigByName(req, reply) {
|
|
243
254
|
try {
|
|
244
255
|
const pluginName = this.resolvePluginName(req.params);
|
|
245
|
-
const
|
|
246
|
-
if (!
|
|
256
|
+
const pluginWorker = this.service.getPluginProcessByName(pluginName);
|
|
257
|
+
if (!pluginWorker) {
|
|
247
258
|
return reply.code(404).send({
|
|
248
259
|
statusCode: 404,
|
|
249
260
|
message: 'Plugin not exists',
|
|
250
261
|
});
|
|
251
262
|
}
|
|
252
|
-
const
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
263
|
+
const proxy = await pluginWorker.storageProxy();
|
|
264
|
+
const schemaConfig = await proxy.getConfig();
|
|
265
|
+
const cameraExtension = {
|
|
266
|
+
pluginName: pluginWorker.plugin.pluginName,
|
|
267
|
+
displayName: pluginWorker.plugin.displayName,
|
|
268
|
+
type: pluginWorker.plugin.contract.extensions,
|
|
269
|
+
...schemaConfig,
|
|
270
|
+
};
|
|
271
|
+
return reply.code(200).send(cameraExtension);
|
|
259
272
|
}
|
|
260
273
|
catch (error) {
|
|
261
274
|
return reply.code(500).send({
|
|
@@ -264,20 +277,19 @@ export class PluginsController {
|
|
|
264
277
|
});
|
|
265
278
|
}
|
|
266
279
|
}
|
|
267
|
-
async
|
|
280
|
+
async patchConfigByName(req, reply) {
|
|
268
281
|
try {
|
|
269
282
|
const pluginName = this.resolvePluginName(req.params);
|
|
270
|
-
const
|
|
271
|
-
if (!
|
|
283
|
+
const pluginWorker = this.service.getPluginProcessByName(pluginName);
|
|
284
|
+
if (!pluginWorker) {
|
|
272
285
|
return reply.code(404).send({
|
|
273
286
|
statusCode: 404,
|
|
274
287
|
message: 'Plugin not exists',
|
|
275
288
|
});
|
|
276
289
|
}
|
|
277
|
-
const
|
|
278
|
-
|
|
279
|
-
reply.
|
|
280
|
-
return reply.code(200).send(schemaJson);
|
|
290
|
+
const proxy = await pluginWorker.storageProxy();
|
|
291
|
+
await proxy.setConfig(req.body);
|
|
292
|
+
return reply.code(200).send(req.body);
|
|
281
293
|
}
|
|
282
294
|
catch (error) {
|
|
283
295
|
return reply.code(500).send({
|
|
@@ -286,46 +298,67 @@ export class PluginsController {
|
|
|
286
298
|
});
|
|
287
299
|
}
|
|
288
300
|
}
|
|
289
|
-
async
|
|
301
|
+
async setConfigByName(req, reply) {
|
|
290
302
|
try {
|
|
291
303
|
const pluginName = this.resolvePluginName(req.params);
|
|
292
|
-
const
|
|
293
|
-
if (!
|
|
304
|
+
const pluginWorker = this.service.getPluginProcessByName(pluginName);
|
|
305
|
+
if (!pluginWorker) {
|
|
294
306
|
return reply.code(404).send({
|
|
295
307
|
statusCode: 404,
|
|
296
308
|
message: 'Plugin not exists',
|
|
297
309
|
});
|
|
298
310
|
}
|
|
299
|
-
|
|
300
|
-
|
|
311
|
+
const proxy = await pluginWorker.storageProxy();
|
|
312
|
+
await proxy.setValue(req.body.key, undefined);
|
|
313
|
+
return reply.code(204).send();
|
|
314
|
+
}
|
|
315
|
+
catch (error) {
|
|
316
|
+
return reply.code(500).send({
|
|
317
|
+
statusCode: 500,
|
|
318
|
+
message: error.message,
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
async submitConfigByName(req, reply) {
|
|
323
|
+
try {
|
|
324
|
+
const pluginName = this.resolvePluginName(req.params);
|
|
325
|
+
const pluginWorker = this.service.getPluginProcessByName(pluginName);
|
|
326
|
+
if (!pluginWorker) {
|
|
327
|
+
return reply.code(404).send({
|
|
328
|
+
statusCode: 404,
|
|
329
|
+
message: 'Plugin not exists',
|
|
330
|
+
});
|
|
301
331
|
}
|
|
302
|
-
const
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
332
|
+
const proxy = await pluginWorker.storageProxy();
|
|
333
|
+
const response = await proxy.submitValue(req.body.key, req.body.payload);
|
|
334
|
+
return reply.code(200).send(response);
|
|
335
|
+
}
|
|
336
|
+
catch (error) {
|
|
337
|
+
return reply.code(500).send({
|
|
338
|
+
statusCode: 500,
|
|
339
|
+
message: error.message,
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
async getPluginInterface(req, reply) {
|
|
344
|
+
try {
|
|
345
|
+
const pluginName = this.resolvePluginName(req.params);
|
|
346
|
+
const pluginWorker = this.service.getPluginProcessByName(pluginName);
|
|
347
|
+
const pluginProxy = await pluginWorker?.pluginProxy();
|
|
348
|
+
if (!pluginProxy) {
|
|
349
|
+
return reply.code(404).send({
|
|
350
|
+
statusCode: 404,
|
|
351
|
+
message: 'Plugin not exists or not running',
|
|
307
352
|
});
|
|
308
353
|
}
|
|
309
|
-
|
|
310
|
-
const fileName = file.filename;
|
|
311
|
-
const tempFilePath = join(tempDir, fileName);
|
|
312
|
-
const fileBuffer = await file.toBuffer();
|
|
313
|
-
await writeFile(tempFilePath, fileBuffer);
|
|
314
|
-
const response = await this.proxyServer.requestPluginFn('objectDetection', plugin.id, 'detectObjects', [tempFilePath, req.body.metadata, req.body.config], 15000);
|
|
354
|
+
let schemaJson;
|
|
315
355
|
try {
|
|
316
|
-
|
|
317
|
-
if (tempFilePath) {
|
|
318
|
-
promises.push(unlink(tempFilePath));
|
|
319
|
-
}
|
|
320
|
-
if (tempDir) {
|
|
321
|
-
promises.push(rmdir(tempDir));
|
|
322
|
-
}
|
|
323
|
-
await Promise.allSettled(promises);
|
|
356
|
+
schemaJson = await pluginProxy.interfaceSchema?.();
|
|
324
357
|
}
|
|
325
358
|
catch {
|
|
326
359
|
//
|
|
327
360
|
}
|
|
328
|
-
return reply.code(
|
|
361
|
+
return reply.code(200).send(schemaJson);
|
|
329
362
|
}
|
|
330
363
|
catch (error) {
|
|
331
364
|
return reply.code(500).send({
|
|
@@ -334,46 +367,30 @@ export class PluginsController {
|
|
|
334
367
|
});
|
|
335
368
|
}
|
|
336
369
|
}
|
|
337
|
-
async
|
|
370
|
+
async detectObjects(req, reply) {
|
|
338
371
|
try {
|
|
339
372
|
const pluginName = this.resolvePluginName(req.params);
|
|
340
|
-
const
|
|
341
|
-
|
|
373
|
+
const pluginWorker = this.service.getPluginProcessByName(pluginName);
|
|
374
|
+
const pluginProxy = await pluginWorker?.pluginProxy();
|
|
375
|
+
if (!pluginProxy) {
|
|
342
376
|
return reply.code(404).send({
|
|
343
377
|
statusCode: 404,
|
|
344
|
-
message: 'Plugin not exists',
|
|
378
|
+
message: 'Plugin not exists or not running',
|
|
345
379
|
});
|
|
346
380
|
}
|
|
347
381
|
if (!req.isMultipart()) {
|
|
348
382
|
throw new Error('No multipart request!');
|
|
349
383
|
}
|
|
350
|
-
const file =
|
|
384
|
+
const file = req.body.upload;
|
|
351
385
|
if (!file) {
|
|
352
386
|
return reply.code(400).send({
|
|
353
387
|
statusCode: 400,
|
|
354
388
|
message: 'No file uploaded',
|
|
355
389
|
});
|
|
356
390
|
}
|
|
357
|
-
const tempDir = await mkdtemp(join(tmpdir(), 'cameraui-audio-detection-'));
|
|
358
|
-
const fileName = file.filename;
|
|
359
|
-
const tempFilePath = join(tempDir, fileName);
|
|
360
391
|
const fileBuffer = await file.toBuffer();
|
|
361
|
-
await
|
|
362
|
-
|
|
363
|
-
try {
|
|
364
|
-
const promises = [];
|
|
365
|
-
if (tempFilePath) {
|
|
366
|
-
promises.push(unlink(tempFilePath));
|
|
367
|
-
}
|
|
368
|
-
if (tempDir) {
|
|
369
|
-
promises.push(rmdir(tempDir));
|
|
370
|
-
}
|
|
371
|
-
await Promise.allSettled(promises);
|
|
372
|
-
}
|
|
373
|
-
catch {
|
|
374
|
-
//
|
|
375
|
-
}
|
|
376
|
-
return reply.code(201).send(response.detected);
|
|
392
|
+
const response = await pluginProxy.detectObjects?.(fileBuffer, req.body.metadata, req.body.config);
|
|
393
|
+
return reply.code(201).send(response?.detections);
|
|
377
394
|
}
|
|
378
395
|
catch (error) {
|
|
379
396
|
return reply.code(500).send({
|
|
@@ -382,57 +399,30 @@ export class PluginsController {
|
|
|
382
399
|
});
|
|
383
400
|
}
|
|
384
401
|
}
|
|
385
|
-
async
|
|
402
|
+
async detectAudio(req, reply) {
|
|
386
403
|
try {
|
|
387
404
|
const pluginName = this.resolvePluginName(req.params);
|
|
388
|
-
const
|
|
389
|
-
|
|
405
|
+
const pluginWorker = this.service.getPluginProcessByName(pluginName);
|
|
406
|
+
const pluginProxy = await pluginWorker?.pluginProxy();
|
|
407
|
+
if (!pluginProxy) {
|
|
390
408
|
return reply.code(404).send({
|
|
391
409
|
statusCode: 404,
|
|
392
|
-
message: 'Plugin not exists',
|
|
410
|
+
message: 'Plugin not exists or not running',
|
|
393
411
|
});
|
|
394
412
|
}
|
|
395
413
|
if (!req.isMultipart()) {
|
|
396
414
|
throw new Error('No multipart request!');
|
|
397
415
|
}
|
|
398
|
-
const file =
|
|
416
|
+
const file = req.body.upload;
|
|
399
417
|
if (!file) {
|
|
400
418
|
return reply.code(400).send({
|
|
401
419
|
statusCode: 400,
|
|
402
420
|
message: 'No file uploaded',
|
|
403
421
|
});
|
|
404
422
|
}
|
|
405
|
-
const tempDir = await mkdtemp(join(tmpdir(), 'cameraui-motion-detection-'));
|
|
406
|
-
const fileName = file.filename;
|
|
407
|
-
const tempFilePath = join(tempDir, fileName);
|
|
408
423
|
const fileBuffer = await file.toBuffer();
|
|
409
|
-
await
|
|
410
|
-
|
|
411
|
-
readFileSync(response.filePath, async (error, fileBuffer) => {
|
|
412
|
-
if (error) {
|
|
413
|
-
this.logger.error(error);
|
|
414
|
-
}
|
|
415
|
-
try {
|
|
416
|
-
const promises = [];
|
|
417
|
-
if (tempFilePath) {
|
|
418
|
-
promises.push(unlink(tempFilePath));
|
|
419
|
-
}
|
|
420
|
-
if (response.filePath && response.filePath !== tempFilePath) {
|
|
421
|
-
promises.push(unlink(response.filePath));
|
|
422
|
-
}
|
|
423
|
-
if (tempDir) {
|
|
424
|
-
promises.push(rmdir(tempDir));
|
|
425
|
-
}
|
|
426
|
-
await Promise.allSettled(promises);
|
|
427
|
-
}
|
|
428
|
-
catch {
|
|
429
|
-
//
|
|
430
|
-
}
|
|
431
|
-
reply.send(error ?? fileBuffer);
|
|
432
|
-
});
|
|
433
|
-
reply.header('Content-Type', 'application/octet-stream');
|
|
434
|
-
reply.header('Content-Disposition', 'attachment; filename=video.mp4');
|
|
435
|
-
return reply;
|
|
424
|
+
const response = await pluginProxy.detectAudio?.(fileBuffer, req.body.metadata, req.body.config);
|
|
425
|
+
return reply.code(201).send(response?.detected);
|
|
436
426
|
}
|
|
437
427
|
catch (error) {
|
|
438
428
|
return reply.code(500).send({
|
|
@@ -441,19 +431,32 @@ export class PluginsController {
|
|
|
441
431
|
});
|
|
442
432
|
}
|
|
443
433
|
}
|
|
444
|
-
async
|
|
434
|
+
async detectMotion(req, reply) {
|
|
445
435
|
try {
|
|
446
436
|
const pluginName = this.resolvePluginName(req.params);
|
|
447
|
-
const
|
|
448
|
-
const
|
|
449
|
-
if (!
|
|
437
|
+
const pluginWorker = this.service.getPluginProcessByName(pluginName);
|
|
438
|
+
const pluginProxy = await pluginWorker?.pluginProxy();
|
|
439
|
+
if (!pluginProxy) {
|
|
450
440
|
return reply.code(404).send({
|
|
451
441
|
statusCode: 404,
|
|
452
|
-
message: 'Plugin
|
|
442
|
+
message: 'Plugin not exists or not running',
|
|
443
|
+
});
|
|
444
|
+
}
|
|
445
|
+
if (!req.isMultipart()) {
|
|
446
|
+
throw new Error('No multipart request!');
|
|
447
|
+
}
|
|
448
|
+
const file = req.body.upload;
|
|
449
|
+
if (!file) {
|
|
450
|
+
return reply.code(400).send({
|
|
451
|
+
statusCode: 400,
|
|
452
|
+
message: 'No file uploaded',
|
|
453
453
|
});
|
|
454
454
|
}
|
|
455
|
-
const
|
|
456
|
-
|
|
455
|
+
const fileBuffer = await file.toBuffer();
|
|
456
|
+
const response = await pluginProxy.detectMotion?.(fileBuffer, req.body.config);
|
|
457
|
+
reply.header('Content-Type', 'video/mp4');
|
|
458
|
+
reply.header('Content-Length', response?.videoData.toString().length ?? 0);
|
|
459
|
+
return reply.send(response?.videoData);
|
|
457
460
|
}
|
|
458
461
|
catch (error) {
|
|
459
462
|
return reply.code(500).send({
|
|
@@ -473,7 +476,7 @@ export class PluginsController {
|
|
|
473
476
|
});
|
|
474
477
|
}
|
|
475
478
|
const contract = plugin.contract;
|
|
476
|
-
const camerasList =
|
|
479
|
+
const camerasList = contract.extensions.length === 1 && contract.extensions[0] === 'cameraController' ? this.camerasService.listByPluginId(plugin.id) : this.camerasService.list();
|
|
477
480
|
const cameras = camerasList?.map((camera) => {
|
|
478
481
|
return {
|
|
479
482
|
name: camera.name,
|
|
@@ -514,6 +517,9 @@ export class PluginsController {
|
|
|
514
517
|
const response = await fetchWithTimeout(`https://unpkg.com/${plugin.pluginName}@${version}/README.md`, {
|
|
515
518
|
method: 'GET',
|
|
516
519
|
});
|
|
520
|
+
if (!response.ok) {
|
|
521
|
+
throw new Error(`Failed to fetch readme from UNPKG - ${response.statusText}`);
|
|
522
|
+
}
|
|
517
523
|
const data = await response.text();
|
|
518
524
|
return reply.code(200).send(data);
|
|
519
525
|
}
|
|
@@ -524,39 +530,6 @@ export class PluginsController {
|
|
|
524
530
|
});
|
|
525
531
|
}
|
|
526
532
|
}
|
|
527
|
-
async getReleaseByName(req, reply) {
|
|
528
|
-
try {
|
|
529
|
-
const pluginName = this.resolvePluginName(req.params);
|
|
530
|
-
const plugin = this.service.getPluginByName(pluginName);
|
|
531
|
-
if (!plugin) {
|
|
532
|
-
return reply.code(404).send({
|
|
533
|
-
statusCode: 404,
|
|
534
|
-
message: 'Plugin not exists',
|
|
535
|
-
});
|
|
536
|
-
}
|
|
537
|
-
const repoMatch = plugin.info.links?.homepage?.match(/https:\/\/github.com\/([^/]+)\/([^/#]+)/);
|
|
538
|
-
if (!repoMatch) {
|
|
539
|
-
return reply.code(404).send({
|
|
540
|
-
statusCode: 404,
|
|
541
|
-
message: '"homepage" not exists in package.json or is not a github repo',
|
|
542
|
-
});
|
|
543
|
-
}
|
|
544
|
-
const response = await fetchWithTimeout(`https://api.github.com/repos/${repoMatch[1]}/${repoMatch[2]}/releases/latest`, {
|
|
545
|
-
method: 'GET',
|
|
546
|
-
});
|
|
547
|
-
const data = await response.json();
|
|
548
|
-
return reply.code(200).send({
|
|
549
|
-
name: data.name,
|
|
550
|
-
changelog: data.body,
|
|
551
|
-
});
|
|
552
|
-
}
|
|
553
|
-
catch (error) {
|
|
554
|
-
return reply.code(500).send({
|
|
555
|
-
statusCode: 500,
|
|
556
|
-
message: error.message,
|
|
557
|
-
});
|
|
558
|
-
}
|
|
559
|
-
}
|
|
560
533
|
list(req, reply) {
|
|
561
534
|
try {
|
|
562
535
|
const installedPlugins = this.service.listPlugins();
|
|
@@ -574,12 +547,10 @@ export class PluginsController {
|
|
|
574
547
|
listExtensions(req, reply) {
|
|
575
548
|
try {
|
|
576
549
|
const installedPlugins = this.service.listPlugins();
|
|
577
|
-
const allExtensions = installedPlugins
|
|
578
|
-
.filter((plugin) => plugin.contract.extension ?? plugin.contract.supportAdditionalCameras)
|
|
579
|
-
.map((plugin) => ({
|
|
550
|
+
const allExtensions = installedPlugins.map((plugin) => ({
|
|
580
551
|
pluginName: plugin.pluginName,
|
|
581
552
|
displayName: plugin.displayName,
|
|
582
|
-
type: plugin.contract.
|
|
553
|
+
type: plugin.contract.extensions,
|
|
583
554
|
}));
|
|
584
555
|
return orderBy(allExtensions, ['displayName'], ['asc']);
|
|
585
556
|
}
|
|
@@ -590,36 +561,6 @@ export class PluginsController {
|
|
|
590
561
|
});
|
|
591
562
|
}
|
|
592
563
|
}
|
|
593
|
-
async patchConfigJsonByName(req, reply) {
|
|
594
|
-
try {
|
|
595
|
-
const pluginName = this.resolvePluginName(req.params);
|
|
596
|
-
const plugin = this.service.getPluginByName(pluginName);
|
|
597
|
-
const configFile = plugin?.configFile;
|
|
598
|
-
if (!plugin || !configFile) {
|
|
599
|
-
return reply.code(404).send({
|
|
600
|
-
statusCode: 404,
|
|
601
|
-
message: 'Plugin or Plugin Config not exists',
|
|
602
|
-
});
|
|
603
|
-
}
|
|
604
|
-
let configData = req.body;
|
|
605
|
-
if (typeof req.body === 'string') {
|
|
606
|
-
try {
|
|
607
|
-
configData = JSON.parse(req.body);
|
|
608
|
-
}
|
|
609
|
-
catch {
|
|
610
|
-
//
|
|
611
|
-
}
|
|
612
|
-
}
|
|
613
|
-
await writeJson(configFile, configData, { spaces: 2 });
|
|
614
|
-
return reply.code(201).send(configData);
|
|
615
|
-
}
|
|
616
|
-
catch (error) {
|
|
617
|
-
return reply.code(500).send({
|
|
618
|
-
statusCode: 500,
|
|
619
|
-
message: error.message,
|
|
620
|
-
});
|
|
621
|
-
}
|
|
622
|
-
}
|
|
623
564
|
async restartByName(req, reply) {
|
|
624
565
|
try {
|
|
625
566
|
const pluginName = this.resolvePluginName(req.params);
|
|
@@ -709,16 +650,13 @@ export class PluginsController {
|
|
|
709
650
|
try {
|
|
710
651
|
const query = req.query.pluginname ?? '';
|
|
711
652
|
const q = (!query?.length ? '' : query + '+') + 'keywords:camera-ui-plugin+not:deprecated&size=30';
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
});
|
|
717
|
-
searchResults = await response.json();
|
|
718
|
-
}
|
|
719
|
-
catch (error) {
|
|
720
|
-
throw new Error(`Failed to search the npm registry - "${error.message}"`);
|
|
653
|
+
const response = await fetchWithTimeout(`https://registry.npmjs.org/-/v1/search?text=${q}`, {
|
|
654
|
+
method: 'GET',
|
|
655
|
+
});
|
|
656
|
+
if (!response.ok) {
|
|
657
|
+
throw new Error(`Failed to search the npm registry - ${response.statusText}`);
|
|
721
658
|
}
|
|
659
|
+
const searchResults = (await response.json());
|
|
722
660
|
const result = searchResults.objects
|
|
723
661
|
.filter((x) => x.package.name.startsWith('camera-ui-') || this.isScopedPlugin(x.package.name))
|
|
724
662
|
.filter((x) => !searchResultBlacklist.has(x.package.name))
|
|
@@ -731,7 +669,7 @@ export class PluginsController {
|
|
|
731
669
|
isPython: false,
|
|
732
670
|
isNode: true,
|
|
733
671
|
'camera.ui': {
|
|
734
|
-
|
|
672
|
+
extensions: [],
|
|
735
673
|
},
|
|
736
674
|
};
|
|
737
675
|
const installedPlugins = this.service.listPlugins();
|
|
@@ -752,7 +690,7 @@ export class PluginsController {
|
|
|
752
690
|
});
|
|
753
691
|
if (!result.length && (query.startsWith('camera-ui-') || this.isScopedPlugin(query)) && !searchResultBlacklist.has(query.toLowerCase())) {
|
|
754
692
|
const singlePluginQuey = await this.searchNpmRegistrySingle(query.toLowerCase());
|
|
755
|
-
return singlePluginQuey;
|
|
693
|
+
return singlePluginQuey ? [singlePluginQuey] : [];
|
|
756
694
|
}
|
|
757
695
|
return orderBy(result, ['displayName'], ['asc']);
|
|
758
696
|
}
|
|
@@ -829,9 +767,9 @@ export class PluginsController {
|
|
|
829
767
|
this.pluginManager.initializeInstalledPlugin(plugin);
|
|
830
768
|
}
|
|
831
769
|
else {
|
|
832
|
-
this.logger.log(`Plugin updated: ${plugin.pluginName}.${plugin.displayName} (${req.body.pluginversion})
|
|
833
|
-
const pluginProcess = this.service.getPluginProcessByName(req.body.pluginname);
|
|
834
|
-
pluginProcess?.restart();
|
|
770
|
+
this.logger.log(`Plugin updated: ${plugin.pluginName}.${plugin.displayName} (${req.body.pluginversion})`);
|
|
771
|
+
// const pluginProcess = this.service.getPluginProcessByName(req.body.pluginname);
|
|
772
|
+
// pluginProcess?.restart();
|
|
835
773
|
}
|
|
836
774
|
npmPluginCache.delete(plugin.pluginName);
|
|
837
775
|
plugin.reparsePackageJson();
|
|
@@ -846,6 +784,18 @@ export class PluginsController {
|
|
|
846
784
|
});
|
|
847
785
|
}
|
|
848
786
|
}
|
|
787
|
+
async installProgress(req, reply) {
|
|
788
|
+
try {
|
|
789
|
+
const pluginsInProgress = this.service.installingPlugins();
|
|
790
|
+
return orderBy(pluginsInProgress, ['pluginName'], ['asc']);
|
|
791
|
+
}
|
|
792
|
+
catch (error) {
|
|
793
|
+
return reply.code(500).send({
|
|
794
|
+
statusCode: 500,
|
|
795
|
+
message: error.message,
|
|
796
|
+
});
|
|
797
|
+
}
|
|
798
|
+
}
|
|
849
799
|
async uninstallByName(req, reply) {
|
|
850
800
|
try {
|
|
851
801
|
const pluginName = this.resolvePluginName(req.params);
|
|
@@ -903,6 +853,9 @@ export class PluginsController {
|
|
|
903
853
|
accept: 'application/vnd.npm.install-v1+json', // only return minimal information
|
|
904
854
|
},
|
|
905
855
|
});
|
|
856
|
+
if (!response.ok) {
|
|
857
|
+
throw new Error(`Failed to fetch versions from npm registry - ${response.statusText}`);
|
|
858
|
+
}
|
|
906
859
|
pkg = (await response.json());
|
|
907
860
|
}
|
|
908
861
|
if (!fromCache) {
|
|
@@ -918,6 +871,9 @@ export class PluginsController {
|
|
|
918
871
|
updateAvailable: false,
|
|
919
872
|
betaUpdateAvailable: false,
|
|
920
873
|
};
|
|
874
|
+
if (plugin.private) {
|
|
875
|
+
return pluginState;
|
|
876
|
+
}
|
|
921
877
|
try {
|
|
922
878
|
npmPluginCache.purgeStale();
|
|
923
879
|
// attempt to load from cache
|
|
@@ -927,10 +883,18 @@ export class PluginsController {
|
|
|
927
883
|
const response = await fetchWithTimeout(`https://registry.npmjs.org/${encodeURIComponent(plugin.pluginName).replace(/%40/g, '@')}/latest`, {
|
|
928
884
|
method: 'GET',
|
|
929
885
|
});
|
|
886
|
+
if (!response.ok) {
|
|
887
|
+
throw new Error(`Failed to check registry.npmjs.org for updates for plugin "${plugin.pluginName}" - ${response.statusText}`);
|
|
888
|
+
}
|
|
930
889
|
pkg = (await response.json());
|
|
931
890
|
}
|
|
932
891
|
pluginState.latestVersion = pkg.version;
|
|
933
|
-
|
|
892
|
+
try {
|
|
893
|
+
pluginState.updateAvailable = gt(pkg.version, plugin.installedVersion);
|
|
894
|
+
}
|
|
895
|
+
catch {
|
|
896
|
+
pluginState.updateAvailable = false;
|
|
897
|
+
}
|
|
934
898
|
// check for beta updates, if no latest version is available
|
|
935
899
|
if (!pluginState.updateAvailable) {
|
|
936
900
|
const pluginVersion = parseVersion(plugin.installedVersion);
|
|
@@ -948,16 +912,14 @@ export class PluginsController {
|
|
|
948
912
|
}
|
|
949
913
|
}
|
|
950
914
|
catch (error) {
|
|
951
|
-
|
|
952
|
-
this.logger.error(`[${plugin.pluginName}] Failed to check registry.npmjs.org for updates`, error);
|
|
953
|
-
}
|
|
915
|
+
this.logger.error(error);
|
|
954
916
|
pluginState.latestVersion = undefined;
|
|
955
917
|
pluginState.updateAvailable = false;
|
|
956
918
|
pluginState.betaUpdateAvailable = false;
|
|
957
919
|
}
|
|
958
920
|
return pluginState;
|
|
959
921
|
}
|
|
960
|
-
async searchNpmRegistrySingle(query) {
|
|
922
|
+
async searchNpmRegistrySingle(query, timeout) {
|
|
961
923
|
try {
|
|
962
924
|
npmPluginCache.purgeStale();
|
|
963
925
|
const fromCache = npmPluginCache.get(`lookup-${query}`);
|
|
@@ -965,14 +927,17 @@ export class PluginsController {
|
|
|
965
927
|
if (!pkg) {
|
|
966
928
|
const response = await fetchWithTimeout(`https://registry.npmjs.org/${encodeURIComponent(query).replace(/%40/g, '@')}`, {
|
|
967
929
|
method: 'GET',
|
|
968
|
-
});
|
|
930
|
+
}, timeout);
|
|
931
|
+
if (!response.ok) {
|
|
932
|
+
throw new Error(`Failed to search the npm registry - ${response.statusText}`);
|
|
933
|
+
}
|
|
969
934
|
pkg = (await response.json());
|
|
970
935
|
}
|
|
971
936
|
if (!fromCache) {
|
|
972
937
|
npmPluginCache.set(`lookup-${query}`, pkg, { ttl: 60 * 1000 });
|
|
973
938
|
}
|
|
974
939
|
if (!pkg.keywords?.includes('camera-ui-plugin')) {
|
|
975
|
-
return
|
|
940
|
+
return;
|
|
976
941
|
}
|
|
977
942
|
let plugin;
|
|
978
943
|
const installedPlugins = this.service.listPlugins();
|
|
@@ -980,7 +945,7 @@ export class PluginsController {
|
|
|
980
945
|
if (isInstalled) {
|
|
981
946
|
plugin = isInstalled.info;
|
|
982
947
|
plugin.lastUpdated = pkg.time.modified;
|
|
983
|
-
return
|
|
948
|
+
return plugin;
|
|
984
949
|
}
|
|
985
950
|
plugin = {
|
|
986
951
|
id: '0',
|
|
@@ -999,16 +964,15 @@ export class PluginsController {
|
|
|
999
964
|
},
|
|
1000
965
|
author: pkg.maintainers[0]?.name,
|
|
1001
966
|
'camera.ui': {
|
|
1002
|
-
|
|
967
|
+
extensions: [],
|
|
1003
968
|
},
|
|
1004
969
|
};
|
|
1005
|
-
return
|
|
970
|
+
return plugin;
|
|
1006
971
|
}
|
|
1007
972
|
catch (error) {
|
|
1008
973
|
if (error.response?.status !== 404) {
|
|
1009
974
|
this.logger.error('Failed to search the npm registry', error);
|
|
1010
975
|
}
|
|
1011
|
-
return [];
|
|
1012
976
|
}
|
|
1013
977
|
}
|
|
1014
978
|
resolvePluginName(params) {
|