camera.ui3 0.0.3-1.alpha.0
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/@babel.l0sNRNKZ.0.0.31.alpha.0.js +1 -0
- package/dist/interface/@camera.ui.DiVLAlWa.0.0.31.alpha.0.js +3 -0
- package/dist/interface/@intlify.D-zKcAzQ.0.0.31.alpha.0.js +19 -0
- package/dist/interface/@mdi.DVdKciOk.0.0.31.alpha.0.js +1 -0
- package/dist/interface/@popperjs.BQBsAJpH.0.0.31.alpha.0.js +1 -0
- package/dist/interface/@react-dnd.CcwRs9xb.0.0.31.alpha.0.js +1 -0
- package/dist/interface/@socket.io.Dkula2eQ.0.0.31.alpha.0.js +1 -0
- package/dist/interface/@tanstack.JA82H5vk.0.0.31.alpha.0.js +1 -0
- package/dist/interface/@vee-validate.CA1ZbSb8.0.0.31.alpha.0.js +5 -0
- package/dist/interface/@vue.DawUEI-_.0.0.31.alpha.0.js +17 -0
- package/dist/interface/@vueform.7BwteSAI.0.0.31.alpha.0.js +1 -0
- package/dist/interface/@vueuse.CxhADbVS.0.0.31.alpha.0.js +1 -0
- package/dist/interface/@xterm.DEGikZnR.0.0.31.alpha.0.js +66 -0
- package/dist/interface/Account.BWV7axVK.0.0.31.alpha.0.js +1 -0
- package/dist/interface/Adminpanel.Cat3Re-m.0.0.31.alpha.0.js +2 -0
- package/dist/interface/Appearance.Cy-OjBQU.0.0.31.alpha.0.js +1 -0
- package/dist/interface/Backup.DT-lEb0w.0.0.31.alpha.0.js +1 -0
- package/dist/interface/Camera.BA2pdfOk.0.0.31.alpha.0.js +1 -0
- package/dist/interface/Cameras.Cd5PwZGj.0.0.31.alpha.0.js +1 -0
- package/dist/interface/Camview.B_SYtZBE.0.0.31.alpha.0.js +1 -0
- package/dist/interface/Config.lwJ4SPlI.0.0.31.alpha.0.js +1 -0
- package/dist/interface/Console.DcB6i6K8.0.0.31.alpha.0.js +4 -0
- package/dist/interface/FirstSteps.T_0B6C8R.0.0.31.alpha.0.js +1 -0
- package/dist/interface/NewCamera.DHO1TCd9.0.0.31.alpha.0.js +448 -0
- package/dist/interface/Plugin.DDu7vOMq.0.0.31.alpha.0.js +1 -0
- package/dist/interface/Plugins.Bd6tuB3h.0.0.31.alpha.0.js +1 -0
- package/dist/interface/Recordings.BD3bPJtl.0.0.31.alpha.0.js +1 -0
- package/dist/interface/Recordings.DHA-Tow3.0.0.31.alpha.0.js +1 -0
- package/dist/interface/Settings.DfhNSXuH.0.0.31.alpha.0.js +1 -0
- package/dist/interface/System.DG6Xdmy5.0.0.31.alpha.0.js +4 -0
- package/dist/interface/User.DZlqgjtQ.0.0.31.alpha.0.js +1 -0
- package/dist/interface/VConfigEditor.vue_vue_type_script_setup_true_lang.DTxqNgDe.0.0.31.alpha.0.js +2 -0
- package/dist/interface/VConsole.AQlLk_M_.0.0.31.alpha.0.js +1 -0
- package/dist/interface/VPlayer.S4oDmoQc.0.0.31.alpha.0.js +1 -0
- package/dist/interface/VPluginCard.CSvdGcaM.0.0.31.alpha.0.js +4 -0
- package/dist/interface/ace-builds.C-7gpKoK.0.0.31.alpha.0.js +970 -0
- package/dist/interface/apexcharts.DQhLo52f.0.0.31.alpha.0.js +795 -0
- package/dist/interface/assets/@vueform.0.0.31.alpha.0.h7tNX9p6.css +1 -0
- package/dist/interface/assets/@xterm.0.0.31.alpha.0.CGrrDQr5.css +32 -0
- package/dist/interface/assets/Account.0.0.31.alpha.0.Ce3OmKrC.css +1 -0
- package/dist/interface/assets/Adminpanel.0.0.31.alpha.0.CXsTAXPL.css +1 -0
- package/dist/interface/assets/Backup.0.0.31.alpha.0.BIwaSlv3.css +1 -0
- package/dist/interface/assets/Camera.0.0.31.alpha.0.BDtUJ-lA.css +1 -0
- package/dist/interface/assets/Cameras.0.0.31.alpha.0.Djx0F2MM.css +1 -0
- package/dist/interface/assets/Camview.0.0.31.alpha.0.Ce_V-Nxj.css +1 -0
- package/dist/interface/assets/Config.0.0.31.alpha.0.xOTKGJ5Y.css +1 -0
- package/dist/interface/assets/Console.0.0.31.alpha.0.DWrfRWs9.css +1 -0
- package/dist/interface/assets/FirstSteps.0.0.31.alpha.0.CCo2y-sU.css +1 -0
- package/dist/interface/assets/NewCamera.0.0.31.alpha.0.BWK7TkdY.css +1 -0
- package/dist/interface/assets/Plugin.0.0.31.alpha.0.BtRA6zDt.css +1 -0
- package/dist/interface/assets/Plugins.0.0.31.alpha.0.Cwu0aGUO.css +1 -0
- package/dist/interface/assets/Settings.0.0.31.alpha.0.DC_-E3CR.css +1 -0
- package/dist/interface/assets/User.0.0.31.alpha.0.DPDcJbx8.css +1 -0
- package/dist/interface/assets/VConsole.0.0.31.alpha.0.BZT1WyS-.css +1 -0
- package/dist/interface/assets/VPlayer.0.0.31.alpha.0.BQMP8JwH.css +1 -0
- package/dist/interface/assets/VPluginCard.0.0.31.alpha.0.CyNvwFGk.css +1 -0
- package/dist/interface/assets/highlight.0.0.31.alpha.0.DgoK_Xib.css +1 -0
- package/dist/interface/assets/logo-256.0.0.31.alpha.0.BCQk9H1-.png +0 -0
- package/dist/interface/assets/logo-512.0.0.31.alpha.0.DLKVOU2S.png +0 -0
- package/dist/interface/assets/logo.0.0.31.alpha.0.DmEiRk0z.png +0 -0
- package/dist/interface/assets/main.0.0.31.alpha.0.CqDyfc1x.css +1 -0
- package/dist/interface/assets/mode-json.0.0.31.alpha.0.Br7xisR1.js +275 -0
- package/dist/interface/assets/mode-yaml.0.0.31.alpha.0.CIYL8U3d.js +395 -0
- package/dist/interface/assets/v-calendar.0.0.31.alpha.0.CtSuDYZU.css +1 -0
- package/dist/interface/assets/vue3-toastify.0.0.31.alpha.0.DTY1DMRs.css +1 -0
- package/dist/interface/assets/vuetify.0.0.31.alpha.0.Cd1awv3t.css +5 -0
- package/dist/interface/axios.C-n2IhIP.0.0.31.alpha.0.js +6 -0
- package/dist/interface/browserconfig.xml +11 -0
- package/dist/interface/compare-versions.DqEOhma6.0.0.31.alpha.0.js +1 -0
- package/dist/interface/dijkstrajs.D_NXgYpA.0.0.31.alpha.0.js +1 -0
- package/dist/interface/dnd-core.ulJ0mknj.0.0.31.alpha.0.js +1 -0
- package/dist/interface/draggabilly.eq53ylJ3.0.0.31.alpha.0.js +6 -0
- package/dist/interface/engine.io-client.BWNiR0rU.0.0.31.alpha.0.js +1 -0
- package/dist/interface/engine.io-parser.BiEtp6m2.0.0.31.alpha.0.js +1 -0
- package/dist/interface/entities.C20TfXL6.0.0.31.alpha.0.js +1 -0
- package/dist/interface/ev-emitter.s441qML4.0.0.31.alpha.0.js +1 -0
- package/dist/interface/fast-deep-equal.D-ZniTWc.0.0.31.alpha.0.js +1 -0
- package/dist/interface/fonts/Inter/Inter-Regular.ttf +0 -0
- package/dist/interface/get-size.D1dS-IaP.0.0.31.alpha.0.js +5 -0
- package/dist/interface/highlight.js.BPsCA8BI.0.0.31.alpha.0.js +2 -0
- package/dist/interface/index.html +376 -0
- package/dist/interface/linkify-it.CYQWol_J.0.0.31.alpha.0.js +1 -0
- package/dist/interface/main.BF6AA77k.0.0.31.alpha.0.js +2 -0
- package/dist/interface/manifest.webmanifest +1 -0
- package/dist/interface/markdown-it.1DZlV4JT.0.0.31.alpha.0.js +15 -0
- package/dist/interface/mdurl.k9Sl0PQj.0.0.31.alpha.0.js +2 -0
- package/dist/interface/nprogress.B9MKHEWD.0.0.31.alpha.0.js +2 -0
- package/dist/interface/pinia.DTboBXXN.0.0.31.alpha.0.js +5 -0
- package/dist/interface/plugins.DQaBHq32.0.0.31.alpha.0.js +1 -0
- package/dist/interface/punycode.js.Dj65hjkv.0.0.31.alpha.0.js +1 -0
- package/dist/interface/pwa/apple-splash-landscape-dark-1136x640.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-dark-1334x750.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-dark-1792x828.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-dark-2048x1536.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-dark-2160x1620.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-dark-2208x1242.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-dark-2224x1668.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-dark-2388x1668.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-dark-2436x1125.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-dark-2532x1170.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-dark-2556x1179.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-dark-2688x1242.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-dark-2732x2048.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-dark-2778x1284.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-dark-2796x1290.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-light-1136x640.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-light-1334x750.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-light-1792x828.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-light-2048x1536.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-light-2160x1620.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-light-2208x1242.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-light-2224x1668.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-light-2388x1668.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-light-2436x1125.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-light-2532x1170.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-light-2556x1179.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-light-2688x1242.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-light-2732x2048.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-light-2778x1284.png +0 -0
- package/dist/interface/pwa/apple-splash-landscape-light-2796x1290.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-dark-1125x2436.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-dark-1170x2532.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-dark-1179x2556.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-dark-1242x2208.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-dark-1242x2688.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-dark-1284x2778.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-dark-1290x2796.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-dark-1536x2048.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-dark-1620x2160.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-dark-1668x2224.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-dark-1668x2388.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-dark-2048x2732.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-dark-640x1136.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-dark-750x1334.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-dark-828x1792.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-light-1125x2436.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-light-1170x2532.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-light-1179x2556.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-light-1242x2208.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-light-1242x2688.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-light-1284x2778.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-light-1290x2796.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-light-1536x2048.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-light-1620x2160.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-light-1668x2224.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-light-1668x2388.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-light-2048x2732.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-light-640x1136.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-light-750x1334.png +0 -0
- package/dist/interface/pwa/apple-splash-portrait-light-828x1792.png +0 -0
- package/dist/interface/pwa/apple-touch-icon-180x180.png +0 -0
- package/dist/interface/pwa/favicon-16.ico +0 -0
- package/dist/interface/pwa/favicon-32.ico +0 -0
- package/dist/interface/pwa/favicon-48.ico +0 -0
- package/dist/interface/pwa/favicon-64.ico +0 -0
- package/dist/interface/pwa/logo.svg +1 -0
- package/dist/interface/pwa/maskable-icon-1240x600.png +0 -0
- package/dist/interface/pwa/maskable-icon-512x512.png +0 -0
- package/dist/interface/pwa/maskable-icon-620x300.png +0 -0
- package/dist/interface/pwa/pwa-1024x1024.png +0 -0
- package/dist/interface/pwa/pwa-120x120.png +0 -0
- package/dist/interface/pwa/pwa-144x144.png +0 -0
- package/dist/interface/pwa/pwa-152x152.png +0 -0
- package/dist/interface/pwa/pwa-167x167.png +0 -0
- package/dist/interface/pwa/pwa-180x180.png +0 -0
- package/dist/interface/pwa/pwa-192x192.png +0 -0
- package/dist/interface/pwa/pwa-24x24.png +0 -0
- package/dist/interface/pwa/pwa-300x300.png +0 -0
- package/dist/interface/pwa/pwa-36x36.png +0 -0
- package/dist/interface/pwa/pwa-48x48.png +0 -0
- package/dist/interface/pwa/pwa-50x50.png +0 -0
- package/dist/interface/pwa/pwa-64x64.png +0 -0
- package/dist/interface/pwa/pwa-72x72.png +0 -0
- package/dist/interface/pwa/pwa-88x88.png +0 -0
- package/dist/interface/pwa/pwa-96x96.png +0 -0
- package/dist/interface/qrcode.DIpB2cN9.0.0.31.alpha.0.js +8 -0
- package/dist/interface/react-dnd-html5-backend.1HQjlkwI.0.0.31.alpha.0.js +2 -0
- package/dist/interface/react-dnd-touch-backend.B1qQXtk5.0.0.31.alpha.0.js +1 -0
- package/dist/interface/redux.CuxFRhX_.0.0.31.alpha.0.js +1 -0
- package/dist/interface/registerSW.js +1 -0
- package/dist/interface/robots.txt +2 -0
- package/dist/interface/rxjs.D3x1dEbj.0.0.31.alpha.0.js +3 -0
- package/dist/interface/socket.io-client.Bb26UC3A.0.0.31.alpha.0.js +1 -0
- package/dist/interface/socket.io-parser.Cg20fkq3.0.0.31.alpha.0.js +1 -0
- package/dist/interface/sw.js +1 -0
- package/dist/interface/system.z_YWfuXO.0.0.31.alpha.0.js +1 -0
- package/dist/interface/tslib.9k7AwCpt.0.0.31.alpha.0.js +1 -0
- package/dist/interface/types.Cz9TaZAP.0.0.31.alpha.0.js +1 -0
- package/dist/interface/uc.micro.kMc2yuuw.0.0.31.alpha.0.js +1 -0
- package/dist/interface/ui.EWScThRV.0.0.31.alpha.0.js +1 -0
- package/dist/interface/unidragger.CFLVmDeU.0.0.31.alpha.0.js +5 -0
- package/dist/interface/utils.mAKpSMLY.0.0.31.alpha.0.js +1 -0
- package/dist/interface/uuid.DvF23Exx.0.0.31.alpha.0.js +1 -0
- package/dist/interface/v-calendar.C7xnHLY1.0.0.31.alpha.0.js +1 -0
- package/dist/interface/vee-validate.CIbc50Ub.0.0.31.alpha.0.js +5 -0
- package/dist/interface/vue-i18n.DR91v838.0.0.31.alpha.0.js +9 -0
- package/dist/interface/vue-inline-svg.BfskkdgC.0.0.31.alpha.0.js +1 -0
- package/dist/interface/vue-router.ZwJI20Fm.0.0.31.alpha.0.js +5 -0
- package/dist/interface/vue.l0sNRNKZ.0.0.31.alpha.0.js +1 -0
- package/dist/interface/vue3-apexcharts.D_cl2oKo.0.0.31.alpha.0.js +1 -0
- package/dist/interface/vue3-dnd.ImnQytSf.0.0.31.alpha.0.js +1 -0
- package/dist/interface/vue3-toastify.DB_3YzbA.0.0.31.alpha.0.js +1 -0
- package/dist/interface/vuetify.DSEe9Drp.0.0.31.alpha.0.js +5 -0
- package/dist/interface/workbox-3e911b1d.js +1 -0
- package/dist/interface/zod.DnW1_kUe.0.0.31.alpha.0.js +1 -0
- package/dist/server/bin/cameraui.d.ts +54 -0
- package/dist/server/bin/cameraui.js +625 -0
- package/dist/server/bin/cameraui.js.map +1 -0
- package/dist/server/bin/fork.d.ts +2 -0
- package/dist/server/bin/fork.js +13 -0
- package/dist/server/bin/fork.js.map +1 -0
- package/dist/server/bin/installer/base.d.ts +17 -0
- package/dist/server/bin/installer/base.js +45 -0
- package/dist/server/bin/installer/base.js.map +1 -0
- package/dist/server/bin/installer/darwin.d.ts +61 -0
- package/dist/server/bin/installer/darwin.js +249 -0
- package/dist/server/bin/installer/darwin.js.map +1 -0
- package/dist/server/bin/installer/freebsd.d.ts +64 -0
- package/dist/server/bin/installer/freebsd.js +254 -0
- package/dist/server/bin/installer/freebsd.js.map +1 -0
- package/dist/server/bin/installer/linux.d.ts +103 -0
- package/dist/server/bin/installer/linux.js +482 -0
- package/dist/server/bin/installer/linux.js.map +1 -0
- package/dist/server/bin/installer/win32.d.ts +45 -0
- package/dist/server/bin/installer/win32.js +178 -0
- package/dist/server/bin/installer/win32.js.map +1 -0
- package/dist/server/package.json +137 -0
- package/dist/server/requirements.txt +13 -0
- package/dist/server/src/api/controllers/api.controller.d.ts +7 -0
- package/dist/server/src/api/controllers/api.controller.js +14 -0
- package/dist/server/src/api/controllers/api.controller.js.map +1 -0
- package/dist/server/src/api/controllers/auth.controller.d.ts +16 -0
- package/dist/server/src/api/controllers/auth.controller.js +233 -0
- package/dist/server/src/api/controllers/auth.controller.js.map +1 -0
- package/dist/server/src/api/controllers/backup.controller.d.ts +10 -0
- package/dist/server/src/api/controllers/backup.controller.js +52 -0
- package/dist/server/src/api/controllers/backup.controller.js.map +1 -0
- package/dist/server/src/api/controllers/cameras.controller.d.ts +36 -0
- package/dist/server/src/api/controllers/cameras.controller.js +586 -0
- package/dist/server/src/api/controllers/cameras.controller.js.map +1 -0
- package/dist/server/src/api/controllers/config.controller.d.ts +14 -0
- package/dist/server/src/api/controllers/config.controller.js +89 -0
- package/dist/server/src/api/controllers/config.controller.js.map +1 -0
- package/dist/server/src/api/controllers/files.controller.d.ts +8 -0
- package/dist/server/src/api/controllers/files.controller.js +28 -0
- package/dist/server/src/api/controllers/files.controller.js.map +1 -0
- package/dist/server/src/api/controllers/frameWorkers.controller.d.ts +11 -0
- package/dist/server/src/api/controllers/frameWorkers.controller.js +85 -0
- package/dist/server/src/api/controllers/frameWorkers.controller.js.map +1 -0
- package/dist/server/src/api/controllers/plugins.controller.d.ts +58 -0
- package/dist/server/src/api/controllers/plugins.controller.js +1282 -0
- package/dist/server/src/api/controllers/plugins.controller.js.map +1 -0
- package/dist/server/src/api/controllers/system.controller.d.ts +21 -0
- package/dist/server/src/api/controllers/system.controller.js +228 -0
- package/dist/server/src/api/controllers/system.controller.js.map +1 -0
- package/dist/server/src/api/controllers/users.controller.d.ts +28 -0
- package/dist/server/src/api/controllers/users.controller.js +507 -0
- package/dist/server/src/api/controllers/users.controller.js.map +1 -0
- package/dist/server/src/api/database/constants.d.ts +8 -0
- package/dist/server/src/api/database/constants.js +9 -0
- package/dist/server/src/api/database/constants.js.map +1 -0
- package/dist/server/src/api/database/index.d.ts +32 -0
- package/dist/server/src/api/database/index.js +274 -0
- package/dist/server/src/api/database/index.js.map +1 -0
- package/dist/server/src/api/database/migration.d.ts +12 -0
- package/dist/server/src/api/database/migration.js +48 -0
- package/dist/server/src/api/database/migration.js.map +1 -0
- package/dist/server/src/api/database/types.d.ts +105 -0
- package/dist/server/src/api/database/types.js +2 -0
- package/dist/server/src/api/database/types.js.map +1 -0
- package/dist/server/src/api/go2rtc/api/application.d.ts +9 -0
- package/dist/server/src/api/go2rtc/api/application.js +38 -0
- package/dist/server/src/api/go2rtc/api/application.js.map +1 -0
- package/dist/server/src/api/go2rtc/api/config.d.ts +8 -0
- package/dist/server/src/api/go2rtc/api/config.js +44 -0
- package/dist/server/src/api/go2rtc/api/config.js.map +1 -0
- package/dist/server/src/api/go2rtc/api/index.d.ts +1 -0
- package/dist/server/src/api/go2rtc/api/index.js +28 -0
- package/dist/server/src/api/go2rtc/api/index.js.map +1 -0
- package/dist/server/src/api/go2rtc/api/snapshot.d.ts +8 -0
- package/dist/server/src/api/go2rtc/api/snapshot.js +34 -0
- package/dist/server/src/api/go2rtc/api/snapshot.js.map +1 -0
- package/dist/server/src/api/go2rtc/api/streams.d.ts +11 -0
- package/dist/server/src/api/go2rtc/api/streams.js +57 -0
- package/dist/server/src/api/go2rtc/api/streams.js.map +1 -0
- package/dist/server/src/api/go2rtc/index.d.ts +13 -0
- package/dist/server/src/api/go2rtc/index.js +25 -0
- package/dist/server/src/api/go2rtc/index.js.map +1 -0
- package/dist/server/src/api/go2rtc/queue.d.ts +10 -0
- package/dist/server/src/api/go2rtc/queue.js +38 -0
- package/dist/server/src/api/go2rtc/queue.js.map +1 -0
- package/dist/server/src/api/go2rtc/types.d.ts +108 -0
- package/dist/server/src/api/go2rtc/types.js +2 -0
- package/dist/server/src/api/go2rtc/types.js.map +1 -0
- package/dist/server/src/api/index.d.ts +20 -0
- package/dist/server/src/api/index.js +223 -0
- package/dist/server/src/api/index.js.map +1 -0
- package/dist/server/src/api/middlewares/authPermission.middleware.d.ts +5 -0
- package/dist/server/src/api/middlewares/authPermission.middleware.js +28 -0
- package/dist/server/src/api/middlewares/authPermission.middleware.js.map +1 -0
- package/dist/server/src/api/middlewares/authValidation.middleware.d.ts +4 -0
- package/dist/server/src/api/middlewares/authValidation.middleware.js +129 -0
- package/dist/server/src/api/middlewares/authValidation.middleware.js.map +1 -0
- package/dist/server/src/api/middlewares/pagination.middleware.d.ts +3 -0
- package/dist/server/src/api/middlewares/pagination.middleware.js +65 -0
- package/dist/server/src/api/middlewares/pagination.middleware.js.map +1 -0
- package/dist/server/src/api/middlewares/socketAuth.middleware.d.ts +41 -0
- package/dist/server/src/api/middlewares/socketAuth.middleware.js +81 -0
- package/dist/server/src/api/middlewares/socketAuth.middleware.js.map +1 -0
- package/dist/server/src/api/plugins/cameraui.plugin.d.ts +11 -0
- package/dist/server/src/api/plugins/cameraui.plugin.js +6 -0
- package/dist/server/src/api/plugins/cameraui.plugin.js.map +1 -0
- package/dist/server/src/api/plugins/database.plugin.d.ts +11 -0
- package/dist/server/src/api/plugins/database.plugin.js +12 -0
- package/dist/server/src/api/plugins/database.plugin.js.map +1 -0
- package/dist/server/src/api/plugins/go2rtc.plugin.d.ts +11 -0
- package/dist/server/src/api/plugins/go2rtc.plugin.js +11 -0
- package/dist/server/src/api/plugins/go2rtc.plugin.js.map +1 -0
- package/dist/server/src/api/plugins/logger.plugin.d.ts +7 -0
- package/dist/server/src/api/plugins/logger.plugin.js +29 -0
- package/dist/server/src/api/plugins/logger.plugin.js.map +1 -0
- package/dist/server/src/api/plugins/socket.plugin.d.ts +11 -0
- package/dist/server/src/api/plugins/socket.plugin.js +12 -0
- package/dist/server/src/api/plugins/socket.plugin.js.map +1 -0
- package/dist/server/src/api/plugins/system.plugin.d.ts +18 -0
- package/dist/server/src/api/plugins/system.plugin.js +22 -0
- package/dist/server/src/api/plugins/system.plugin.js.map +1 -0
- package/dist/server/src/api/plugins/useragent.plugin.d.ts +8 -0
- package/dist/server/src/api/plugins/useragent.plugin.js +10 -0
- package/dist/server/src/api/plugins/useragent.plugin.js.map +1 -0
- package/dist/server/src/api/routes/api.routes.d.ts +2 -0
- package/dist/server/src/api/routes/api.routes.js +7 -0
- package/dist/server/src/api/routes/api.routes.js.map +1 -0
- package/dist/server/src/api/routes/auth.routes.d.ts +2 -0
- package/dist/server/src/api/routes/auth.routes.js +47 -0
- package/dist/server/src/api/routes/auth.routes.js.map +1 -0
- package/dist/server/src/api/routes/backup.routes.d.ts +2 -0
- package/dist/server/src/api/routes/backup.routes.js +23 -0
- package/dist/server/src/api/routes/backup.routes.js.map +1 -0
- package/dist/server/src/api/routes/cameras.routes.d.ts +2 -0
- package/dist/server/src/api/routes/cameras.routes.js +205 -0
- package/dist/server/src/api/routes/cameras.routes.js.map +1 -0
- package/dist/server/src/api/routes/config.routes.d.ts +2 -0
- package/dist/server/src/api/routes/config.routes.js +55 -0
- package/dist/server/src/api/routes/config.routes.js.map +1 -0
- package/dist/server/src/api/routes/files.routes.d.ts +2 -0
- package/dist/server/src/api/routes/files.routes.js +12 -0
- package/dist/server/src/api/routes/files.routes.js.map +1 -0
- package/dist/server/src/api/routes/frameWorkers.routes.d.ts +2 -0
- package/dist/server/src/api/routes/frameWorkers.routes.js +33 -0
- package/dist/server/src/api/routes/frameWorkers.routes.js.map +1 -0
- package/dist/server/src/api/routes/index.d.ts +6 -0
- package/dist/server/src/api/routes/index.js +32 -0
- package/dist/server/src/api/routes/index.js.map +1 -0
- package/dist/server/src/api/routes/plugins.routes.d.ts +2 -0
- package/dist/server/src/api/routes/plugins.routes.js +339 -0
- package/dist/server/src/api/routes/plugins.routes.js.map +1 -0
- package/dist/server/src/api/routes/system.routes.d.ts +2 -0
- package/dist/server/src/api/routes/system.routes.js +83 -0
- package/dist/server/src/api/routes/system.routes.js.map +1 -0
- package/dist/server/src/api/routes/users.routes.d.ts +2 -0
- package/dist/server/src/api/routes/users.routes.js +139 -0
- package/dist/server/src/api/routes/users.routes.js.map +1 -0
- package/dist/server/src/api/schemas/backup.schema.d.ts +118 -0
- package/dist/server/src/api/schemas/backup.schema.js +75 -0
- package/dist/server/src/api/schemas/backup.schema.js.map +1 -0
- package/dist/server/src/api/schemas/cameras.schema.d.ts +960 -0
- package/dist/server/src/api/schemas/cameras.schema.js +316 -0
- package/dist/server/src/api/schemas/cameras.schema.js.map +1 -0
- package/dist/server/src/api/schemas/config.schema.d.ts +122 -0
- package/dist/server/src/api/schemas/config.schema.js +44 -0
- package/dist/server/src/api/schemas/config.schema.js.map +1 -0
- package/dist/server/src/api/schemas/go2rtc.schema.d.ts +703 -0
- package/dist/server/src/api/schemas/go2rtc.schema.js +180 -0
- package/dist/server/src/api/schemas/go2rtc.schema.js.map +1 -0
- package/dist/server/src/api/schemas/plugins.schema.d.ts +72 -0
- package/dist/server/src/api/schemas/plugins.schema.js +103 -0
- package/dist/server/src/api/schemas/plugins.schema.js.map +1 -0
- package/dist/server/src/api/schemas/system.schema.d.ts +9 -0
- package/dist/server/src/api/schemas/system.schema.js +8 -0
- package/dist/server/src/api/schemas/system.schema.js.map +1 -0
- package/dist/server/src/api/schemas/users.schema.d.ts +1013 -0
- package/dist/server/src/api/schemas/users.schema.js +157 -0
- package/dist/server/src/api/schemas/users.schema.js.map +1 -0
- package/dist/server/src/api/services/auth.service.d.ts +24 -0
- package/dist/server/src/api/services/auth.service.js +191 -0
- package/dist/server/src/api/services/auth.service.js.map +1 -0
- package/dist/server/src/api/services/backup.service.d.ts +11 -0
- package/dist/server/src/api/services/backup.service.js +109 -0
- package/dist/server/src/api/services/backup.service.js.map +1 -0
- package/dist/server/src/api/services/cameras.service.d.ts +53 -0
- package/dist/server/src/api/services/cameras.service.js +743 -0
- package/dist/server/src/api/services/cameras.service.js.map +1 -0
- package/dist/server/src/api/services/plugins.service.d.ts +25 -0
- package/dist/server/src/api/services/plugins.service.js +143 -0
- package/dist/server/src/api/services/plugins.service.js.map +1 -0
- package/dist/server/src/api/services/system.service.d.ts +7 -0
- package/dist/server/src/api/services/system.service.js +23 -0
- package/dist/server/src/api/services/system.service.js.map +1 -0
- package/dist/server/src/api/services/users.service.d.ts +25 -0
- package/dist/server/src/api/services/users.service.js +198 -0
- package/dist/server/src/api/services/users.service.js.map +1 -0
- package/dist/server/src/api/types/index.d.ts +599 -0
- package/dist/server/src/api/types/index.js +9 -0
- package/dist/server/src/api/types/index.js.map +1 -0
- package/dist/server/src/api/utils/cameraSource.d.ts +2 -0
- package/dist/server/src/api/utils/cameraSource.js +34 -0
- package/dist/server/src/api/utils/cameraSource.js.map +1 -0
- package/dist/server/src/api/utils/cert.d.ts +11 -0
- package/dist/server/src/api/utils/cert.js +411 -0
- package/dist/server/src/api/utils/cert.js.map +1 -0
- package/dist/server/src/api/utils/constants.d.ts +15 -0
- package/dist/server/src/api/utils/constants.js +17 -0
- package/dist/server/src/api/utils/constants.js.map +1 -0
- package/dist/server/src/api/utils/fetch.d.ts +2 -0
- package/dist/server/src/api/utils/fetch.js +24 -0
- package/dist/server/src/api/utils/fetch.js.map +1 -0
- package/dist/server/src/api/utils/moveFiles.d.ts +1 -0
- package/dist/server/src/api/utils/moveFiles.js +39 -0
- package/dist/server/src/api/utils/moveFiles.js.map +1 -0
- package/dist/server/src/api/utils/parse.d.ts +2 -0
- package/dist/server/src/api/utils/parse.js +12 -0
- package/dist/server/src/api/utils/parse.js.map +1 -0
- package/dist/server/src/api/websocket/index.d.ts +16 -0
- package/dist/server/src/api/websocket/index.js +75 -0
- package/dist/server/src/api/websocket/index.js.map +1 -0
- package/dist/server/src/api/websocket/nsp/logs.d.ts +11 -0
- package/dist/server/src/api/websocket/nsp/logs.js +114 -0
- package/dist/server/src/api/websocket/nsp/logs.js.map +1 -0
- package/dist/server/src/api/websocket/nsp/main.d.ts +7 -0
- package/dist/server/src/api/websocket/nsp/main.js +8 -0
- package/dist/server/src/api/websocket/nsp/main.js.map +1 -0
- package/dist/server/src/api/websocket/nsp/metrics.d.ts +24 -0
- package/dist/server/src/api/websocket/nsp/metrics.js +166 -0
- package/dist/server/src/api/websocket/nsp/metrics.js.map +1 -0
- package/dist/server/src/api/websocket/nsp/notifications.d.ts +12 -0
- package/dist/server/src/api/websocket/nsp/notifications.js +30 -0
- package/dist/server/src/api/websocket/nsp/notifications.js.map +1 -0
- package/dist/server/src/api/websocket/nsp/plugins.d.ts +13 -0
- package/dist/server/src/api/websocket/nsp/plugins.js +29 -0
- package/dist/server/src/api/websocket/nsp/plugins.js.map +1 -0
- package/dist/server/src/api/websocket/nsp/server.d.ts +21 -0
- package/dist/server/src/api/websocket/nsp/server.js +134 -0
- package/dist/server/src/api/websocket/nsp/server.js.map +1 -0
- package/dist/server/src/api/websocket/nsp/status.d.ts +15 -0
- package/dist/server/src/api/websocket/nsp/status.js +53 -0
- package/dist/server/src/api/websocket/nsp/status.js.map +1 -0
- package/dist/server/src/api/websocket/types.d.ts +47 -0
- package/dist/server/src/api/websocket/types.js +2 -0
- package/dist/server/src/api/websocket/types.js.map +1 -0
- package/dist/server/src/api.d.ts +37 -0
- package/dist/server/src/api.js +90 -0
- package/dist/server/src/api.js.map +1 -0
- package/dist/server/src/camera/controller.d.ts +49 -0
- package/dist/server/src/camera/controller.js +454 -0
- package/dist/server/src/camera/controller.js.map +1 -0
- package/dist/server/src/camera/types.d.ts +11 -0
- package/dist/server/src/camera/types.js +2 -0
- package/dist/server/src/camera/types.js.map +1 -0
- package/dist/server/src/decoder/index.d.ts +11 -0
- package/dist/server/src/decoder/index.js +32 -0
- package/dist/server/src/decoder/index.js.map +1 -0
- package/dist/server/src/decoder/types.d.ts +7 -0
- package/dist/server/src/decoder/types.js +2 -0
- package/dist/server/src/decoder/types.js.map +1 -0
- package/dist/server/src/decoder/worker.d.ts +40 -0
- package/dist/server/src/decoder/worker.js +233 -0
- package/dist/server/src/decoder/worker.js.map +1 -0
- package/dist/server/src/go2rtc/index.d.ts +25 -0
- package/dist/server/src/go2rtc/index.js +220 -0
- package/dist/server/src/go2rtc/index.js.map +1 -0
- package/dist/server/src/go2rtc/types.d.ts +14 -0
- package/dist/server/src/go2rtc/types.js +73 -0
- package/dist/server/src/go2rtc/types.js.map +1 -0
- package/dist/server/src/main.d.ts +1 -0
- package/dist/server/src/main.js +132 -0
- package/dist/server/src/main.js.map +1 -0
- package/dist/server/src/nats/index.d.ts +39 -0
- package/dist/server/src/nats/index.js +162 -0
- package/dist/server/src/nats/index.js.map +1 -0
- package/dist/server/src/nats/proxy/cameraDevice.d.ts +21 -0
- package/dist/server/src/nats/proxy/cameraDevice.js +262 -0
- package/dist/server/src/nats/proxy/cameraDevice.js.map +1 -0
- package/dist/server/src/nats/proxy/coreManager.d.ts +14 -0
- package/dist/server/src/nats/proxy/coreManager.js +70 -0
- package/dist/server/src/nats/proxy/coreManager.js.map +1 -0
- package/dist/server/src/nats/proxy/deviceManager.d.ts +14 -0
- package/dist/server/src/nats/proxy/deviceManager.js +101 -0
- package/dist/server/src/nats/proxy/deviceManager.js.map +1 -0
- package/dist/server/src/nats/server.d.ts +38 -0
- package/dist/server/src/nats/server.js +316 -0
- package/dist/server/src/nats/server.js.map +1 -0
- package/dist/server/src/nats/types.d.ts +18 -0
- package/dist/server/src/nats/types.js +2 -0
- package/dist/server/src/nats/types.js.map +1 -0
- package/dist/server/src/nats/utils.d.ts +2 -0
- package/dist/server/src/nats/utils.js +12 -0
- package/dist/server/src/nats/utils.js.map +1 -0
- package/dist/server/src/nats/websocket.d.ts +27 -0
- package/dist/server/src/nats/websocket.js +217 -0
- package/dist/server/src/nats/websocket.js.map +1 -0
- package/dist/server/src/plugins/index.d.ts +30 -0
- package/dist/server/src/plugins/index.js +244 -0
- package/dist/server/src/plugins/index.js.map +1 -0
- package/dist/server/src/plugins/plugin.d.ts +33 -0
- package/dist/server/src/plugins/plugin.js +159 -0
- package/dist/server/src/plugins/plugin.js.map +1 -0
- package/dist/server/src/plugins/types.d.ts +7 -0
- package/dist/server/src/plugins/types.js +3 -0
- package/dist/server/src/plugins/types.js.map +1 -0
- package/dist/server/src/plugins/worker.d.ts +36 -0
- package/dist/server/src/plugins/worker.js +293 -0
- package/dist/server/src/plugins/worker.js.map +1 -0
- package/dist/server/src/services/config/constants.d.ts +5 -0
- package/dist/server/src/services/config/constants.js +59 -0
- package/dist/server/src/services/config/constants.js.map +1 -0
- package/dist/server/src/services/config/index.d.ts +62 -0
- package/dist/server/src/services/config/index.js +399 -0
- package/dist/server/src/services/config/index.js.map +1 -0
- package/dist/server/src/services/config/types.d.ts +157 -0
- package/dist/server/src/services/config/types.js +11 -0
- package/dist/server/src/services/config/types.js.map +1 -0
- package/dist/server/src/services/logger/index.d.ts +11 -0
- package/dist/server/src/services/logger/index.js +35 -0
- package/dist/server/src/services/logger/index.js.map +1 -0
- package/dist/server/src/types.d.ts +7 -0
- package/dist/server/src/types.js +2 -0
- package/dist/server/src/types.js.map +1 -0
- package/localdeps.txt +5 -0
- package/package.json +137 -0
- package/upgrade-server.sh +205 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/api/websocket/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Namespace, Server, Socket } from 'socket.io';
|
|
2
|
+
import type { SocketNsp } from '../types.js';
|
|
3
|
+
export declare class LogsNamespace {
|
|
4
|
+
nsp: Namespace;
|
|
5
|
+
nspName: SocketNsp;
|
|
6
|
+
private nativeTail?;
|
|
7
|
+
private configService;
|
|
8
|
+
constructor(io: Server);
|
|
9
|
+
connect(socket: Socket, filter?: string[]): void;
|
|
10
|
+
private tailLogFromFileNative;
|
|
11
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { cyan, red, strip } from 'ansicolor';
|
|
2
|
+
import { createReadStream, existsSync } from 'node:fs';
|
|
3
|
+
import { stat } from 'node:fs/promises';
|
|
4
|
+
import { Tail } from 'tail';
|
|
5
|
+
import { container } from 'tsyringe';
|
|
6
|
+
export class LogsNamespace {
|
|
7
|
+
nsp;
|
|
8
|
+
nspName = '/logs';
|
|
9
|
+
nativeTail;
|
|
10
|
+
configService;
|
|
11
|
+
constructor(io) {
|
|
12
|
+
this.configService = container.resolve('configService');
|
|
13
|
+
this.nsp = io.of(this.nspName);
|
|
14
|
+
this.nsp.on('connection', (socket) => {
|
|
15
|
+
socket.on('get-log', (filter) => this.connect(socket, filter));
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
connect(socket, filter) {
|
|
19
|
+
socket.emit('stdout', cyan('Loading logs using native method...\r\n'));
|
|
20
|
+
if (filter)
|
|
21
|
+
socket.emit('stdout', cyan(`Filter: ${filter}\r\n`));
|
|
22
|
+
socket.emit('stdout', cyan(`File: ${this.configService.LOG_FILE}\r\n\r\n`));
|
|
23
|
+
this.tailLogFromFileNative(socket, filter);
|
|
24
|
+
}
|
|
25
|
+
async tailLogFromFileNative(socket, filter) {
|
|
26
|
+
if (!existsSync(this.configService.LOG_FILE)) {
|
|
27
|
+
socket.emit('stdout', '\n\r');
|
|
28
|
+
socket.emit('stdout', red(`No log file exists at path: ${this.configService.LOG_FILE}\n\r`));
|
|
29
|
+
}
|
|
30
|
+
let isRelatedToFilter = false;
|
|
31
|
+
const filterRegex = /(?:\\x1B\[\d+(?:;\d+)*m|\x1B\[\d+(?:;\d+)*m)*\[camera\.ui\](?:\\x1B\[\d+(?:;\d+)*m|\x1B\[\d+(?:;\d+)*m)*\s*/g;
|
|
32
|
+
const isNewEntry = (line) => {
|
|
33
|
+
return /^\[\d{2}\.\d{2}\.\d{4}, \d{2}:\d{2}:\d{2}\]/.test(line);
|
|
34
|
+
};
|
|
35
|
+
// read the first 50000 bytes of the log and emit to the client
|
|
36
|
+
try {
|
|
37
|
+
const logStats = await stat(this.configService.LOG_FILE);
|
|
38
|
+
const logStartPosition = logStats.size <= 50000 ? 0 : logStats.size - 50000;
|
|
39
|
+
const logStream = createReadStream(this.configService.LOG_FILE, { start: logStartPosition });
|
|
40
|
+
logStream.on('data', (buffer) => {
|
|
41
|
+
if (filter) {
|
|
42
|
+
const lines = buffer.toString('utf8').replace(filterRegex, '').split('\n');
|
|
43
|
+
const filteredLines = lines.filter((line) => {
|
|
44
|
+
const clearLine = strip(line);
|
|
45
|
+
if (isNewEntry(clearLine)) {
|
|
46
|
+
isRelatedToFilter = filter.some((key) => clearLine.includes(key));
|
|
47
|
+
}
|
|
48
|
+
if (isRelatedToFilter) {
|
|
49
|
+
return line;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
socket.emit('stdout', filteredLines.join('\n\r') + '\n\r');
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
socket.emit('stdout', buffer.toString('utf8').split('\n').join('\n\r') + '\n\r');
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
logStream.on('end', () => {
|
|
59
|
+
logStream.close();
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
socket.emit('stdout', red(`Failed to read log file: ${error.message}\n\r`));
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (!this.nativeTail) {
|
|
67
|
+
this.nativeTail = new Tail(this.configService.LOG_FILE, {
|
|
68
|
+
fromBeginning: false,
|
|
69
|
+
useWatchFile: true,
|
|
70
|
+
fsWatchOptions: {
|
|
71
|
+
interval: 200,
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
else if (this.nativeTail?.listenerCount('line') === 0) {
|
|
76
|
+
this.nativeTail.watch();
|
|
77
|
+
}
|
|
78
|
+
// watch for lines and emit to client
|
|
79
|
+
const onLine = (line) => {
|
|
80
|
+
if (filter) {
|
|
81
|
+
const newLine = line.replace(filterRegex, '');
|
|
82
|
+
const clearLine = strip(line);
|
|
83
|
+
if (isNewEntry(clearLine)) {
|
|
84
|
+
isRelatedToFilter = filter.some((key) => clearLine.includes(key));
|
|
85
|
+
}
|
|
86
|
+
if (isRelatedToFilter) {
|
|
87
|
+
socket.emit('stdout', newLine + '\n\r');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
socket.emit('stdout', line + '\n\r');
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
const onError = (err) => {
|
|
95
|
+
socket.emit('stdout', err.message + '\n\r');
|
|
96
|
+
};
|
|
97
|
+
this.nativeTail?.on('line', onLine);
|
|
98
|
+
this.nativeTail?.on('error', onError);
|
|
99
|
+
// cleanup on disconnect
|
|
100
|
+
const onEnd = () => {
|
|
101
|
+
this.nativeTail?.removeListener('line', onLine);
|
|
102
|
+
this.nativeTail?.removeListener('error', onError);
|
|
103
|
+
// stop watching the file if there are no other watchers
|
|
104
|
+
if (this.nativeTail?.listenerCount('line') === 0) {
|
|
105
|
+
this.nativeTail.unwatch();
|
|
106
|
+
}
|
|
107
|
+
socket.removeAllListeners('end');
|
|
108
|
+
socket.removeAllListeners('disconnect');
|
|
109
|
+
};
|
|
110
|
+
socket.on('end', onEnd.bind(this));
|
|
111
|
+
socket.on('disconnect', onEnd.bind(this));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../../../../src/api/websocket/nsp/logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../../../../src/api/websocket/nsp/main.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,aAAa;IACjB,GAAG,CAAY;IACf,OAAO,GAAc,YAAY,CAAC;IAEzC,YAAY,EAAU;QACpB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;CACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Namespace, Server } from 'socket.io';
|
|
2
|
+
import type { ProcessInfo, ServerProcesses, SocketNsp, WorkerProcesses } from '../types.js';
|
|
3
|
+
export declare class MetricsNamespace {
|
|
4
|
+
nsp: Namespace;
|
|
5
|
+
nspName: SocketNsp;
|
|
6
|
+
private pluginManager;
|
|
7
|
+
private frameManager;
|
|
8
|
+
private go2rtc;
|
|
9
|
+
private natsServer;
|
|
10
|
+
private processServerHistory;
|
|
11
|
+
private processGo2RtcHistory;
|
|
12
|
+
private processNatHistory;
|
|
13
|
+
private processPluginsHistory;
|
|
14
|
+
private processFrameWorkerHistory;
|
|
15
|
+
private systemHistory;
|
|
16
|
+
constructor(io: Server);
|
|
17
|
+
getSystemInfos(payload: any, callback?: Function): Promise<ProcessInfo[]>;
|
|
18
|
+
getServerProcessesInfos(payload: any, callback?: Function): Promise<ServerProcesses>;
|
|
19
|
+
getPluginsProcessesInfo(payload: any, callback?: Function): Promise<WorkerProcesses>;
|
|
20
|
+
getFrameWorkerProcessesInfo(payload: any, callback?: Function): Promise<WorkerProcesses>;
|
|
21
|
+
private getProcesses;
|
|
22
|
+
private getSystemLoad;
|
|
23
|
+
private getSystemLoadAlt;
|
|
24
|
+
}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { cpus, loadavg, platform } from 'node:os';
|
|
2
|
+
import { currentLoad, mem, processes } from 'systeminformation';
|
|
3
|
+
import { container } from 'tsyringe';
|
|
4
|
+
export class MetricsNamespace {
|
|
5
|
+
nsp;
|
|
6
|
+
nspName = '/metrics';
|
|
7
|
+
pluginManager;
|
|
8
|
+
frameManager;
|
|
9
|
+
go2rtc;
|
|
10
|
+
natsServer;
|
|
11
|
+
processServerHistory = [];
|
|
12
|
+
processGo2RtcHistory = [];
|
|
13
|
+
processNatHistory = [];
|
|
14
|
+
processPluginsHistory = {};
|
|
15
|
+
processFrameWorkerHistory = {};
|
|
16
|
+
systemHistory = [];
|
|
17
|
+
constructor(io) {
|
|
18
|
+
this.pluginManager = container.resolve('pluginManager');
|
|
19
|
+
this.frameManager = container.resolve('frameManager');
|
|
20
|
+
this.go2rtc = container.resolve('go2rtc');
|
|
21
|
+
this.natsServer = container.resolve('natsServer');
|
|
22
|
+
this.nsp = io.of(this.nspName);
|
|
23
|
+
this.nsp.on('connection', (socket) => {
|
|
24
|
+
socket.on('get-system-info', this.getSystemInfos.bind(this));
|
|
25
|
+
socket.on('get-server-process-info', this.getServerProcessesInfos.bind(this));
|
|
26
|
+
socket.on('get-plugins-process-info', this.getPluginsProcessesInfo.bind(this));
|
|
27
|
+
socket.on('get-frameworker-process-info', this.getFrameWorkerProcessesInfo.bind(this));
|
|
28
|
+
});
|
|
29
|
+
if (platform() === 'freebsd') {
|
|
30
|
+
this.getSystemLoad = this.getSystemLoadAlt;
|
|
31
|
+
}
|
|
32
|
+
setInterval(async () => {
|
|
33
|
+
this.getProcesses();
|
|
34
|
+
this.getSystemLoad();
|
|
35
|
+
}, 60000);
|
|
36
|
+
}
|
|
37
|
+
async getSystemInfos(payload, callback) {
|
|
38
|
+
if (!this.systemHistory.length) {
|
|
39
|
+
await this.getSystemLoad();
|
|
40
|
+
}
|
|
41
|
+
callback?.(this.systemHistory);
|
|
42
|
+
return this.systemHistory;
|
|
43
|
+
}
|
|
44
|
+
async getServerProcessesInfos(payload, callback) {
|
|
45
|
+
if (!this.processServerHistory.length || !this.processGo2RtcHistory.length || !this.processNatHistory.length) {
|
|
46
|
+
await this.getProcesses();
|
|
47
|
+
}
|
|
48
|
+
const data = {
|
|
49
|
+
server: this.processServerHistory,
|
|
50
|
+
go2rtc: this.processGo2RtcHistory,
|
|
51
|
+
nats: this.processNatHistory,
|
|
52
|
+
};
|
|
53
|
+
callback?.(data);
|
|
54
|
+
return data;
|
|
55
|
+
}
|
|
56
|
+
async getPluginsProcessesInfo(payload, callback) {
|
|
57
|
+
if (this.pluginManager.pluginWorkers.size > 0 && !Object.keys(this.processPluginsHistory).length) {
|
|
58
|
+
await this.getProcesses();
|
|
59
|
+
}
|
|
60
|
+
callback?.(this.processPluginsHistory);
|
|
61
|
+
return this.processPluginsHistory;
|
|
62
|
+
}
|
|
63
|
+
async getFrameWorkerProcessesInfo(payload, callback) {
|
|
64
|
+
if (this.frameManager.frameWorkers.size > 0 && !Object.keys(this.processFrameWorkerHistory).length) {
|
|
65
|
+
await this.getProcesses();
|
|
66
|
+
}
|
|
67
|
+
callback?.(this.processFrameWorkerHistory);
|
|
68
|
+
return this.processFrameWorkerHistory;
|
|
69
|
+
}
|
|
70
|
+
async getProcesses() {
|
|
71
|
+
const allProcesses = await processes();
|
|
72
|
+
const currentTime = Date.now();
|
|
73
|
+
const updateProcessHistory = (process, name, history) => {
|
|
74
|
+
const processInfo = {
|
|
75
|
+
name,
|
|
76
|
+
pid: process.pid,
|
|
77
|
+
cpuLoad: (process.cpu || 0.1).toFixed(2),
|
|
78
|
+
memLoad: (process.mem || 0.1).toFixed(2),
|
|
79
|
+
timestamp: currentTime,
|
|
80
|
+
};
|
|
81
|
+
history.push(processInfo);
|
|
82
|
+
history.splice(0, Math.max(0, history.length - 60)); // Keep only the last 60 entries
|
|
83
|
+
};
|
|
84
|
+
const updateWorkerHistory = (process, name, history) => {
|
|
85
|
+
if (!history[name]) {
|
|
86
|
+
history[name] = [];
|
|
87
|
+
}
|
|
88
|
+
updateProcessHistory(process, name, history[name]);
|
|
89
|
+
};
|
|
90
|
+
const processList = allProcesses.list;
|
|
91
|
+
const pluginWorkers = Array.from(this.pluginManager.pluginWorkers);
|
|
92
|
+
const frameWorkers = Array.from(this.frameManager.frameWorkers);
|
|
93
|
+
// Update server process
|
|
94
|
+
const serverProcess = processList.find((p) => p.pid === process.pid);
|
|
95
|
+
if (serverProcess)
|
|
96
|
+
updateProcessHistory(serverProcess, 'server', this.processServerHistory);
|
|
97
|
+
// Update go2rtc process
|
|
98
|
+
const go2rtcProcess = processList.find((p) => p.pid === this.go2rtc.getPID());
|
|
99
|
+
if (go2rtcProcess)
|
|
100
|
+
updateProcessHistory(go2rtcProcess, 'go2rtc', this.processGo2RtcHistory);
|
|
101
|
+
// Update NATS process
|
|
102
|
+
const natsProcess = processList.find((p) => p.pid === this.natsServer.getPID());
|
|
103
|
+
if (natsProcess)
|
|
104
|
+
updateProcessHistory(natsProcess, 'nats', this.processNatHistory);
|
|
105
|
+
// Update plugin processes
|
|
106
|
+
pluginWorkers.forEach(([pluginName, worker]) => {
|
|
107
|
+
const pluginProcess = processList.find((p) => p.pid === worker.getPID());
|
|
108
|
+
if (pluginProcess)
|
|
109
|
+
updateWorkerHistory(pluginProcess, pluginName, this.processPluginsHistory);
|
|
110
|
+
});
|
|
111
|
+
// Clean up old plugin entries
|
|
112
|
+
Object.keys(this.processPluginsHistory).forEach((name) => {
|
|
113
|
+
if (!pluginWorkers.some(([pluginName]) => pluginName === name)) {
|
|
114
|
+
delete this.processPluginsHistory[name];
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
// Update frame worker processes
|
|
118
|
+
frameWorkers.forEach(([, worker]) => {
|
|
119
|
+
const frameProcess = processList.find((p) => p.pid === worker.getPID());
|
|
120
|
+
if (frameProcess)
|
|
121
|
+
updateWorkerHistory(frameProcess, worker.name, this.processFrameWorkerHistory);
|
|
122
|
+
});
|
|
123
|
+
// Clean up old frame worker entries
|
|
124
|
+
Object.keys(this.processFrameWorkerHistory).forEach((name) => {
|
|
125
|
+
if (!frameWorkers.some(([, worker]) => worker.name === name)) {
|
|
126
|
+
delete this.processFrameWorkerHistory[name];
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
// Prepare data for emission
|
|
130
|
+
const data = {
|
|
131
|
+
server: this.processServerHistory[this.processServerHistory.length - 1],
|
|
132
|
+
go2rtc: this.processGo2RtcHistory[this.processGo2RtcHistory.length - 1],
|
|
133
|
+
nats: this.processNatHistory[this.processNatHistory.length - 1],
|
|
134
|
+
plugins: Object.fromEntries(Object.entries(this.processPluginsHistory).map(([name, history]) => [name, history[history.length - 1]])),
|
|
135
|
+
workers: Object.fromEntries(Object.entries(this.processFrameWorkerHistory).map(([name, history]) => [name, history[history.length - 1]])),
|
|
136
|
+
};
|
|
137
|
+
this.nsp.emit('process-infos', data);
|
|
138
|
+
}
|
|
139
|
+
async getSystemLoad() {
|
|
140
|
+
const load = (await currentLoad()).currentLoad;
|
|
141
|
+
const memory = await mem();
|
|
142
|
+
const memoryFreePercent = ((memory.total - memory.available) / memory.total) * 100;
|
|
143
|
+
this.systemHistory.push({
|
|
144
|
+
name: 'system',
|
|
145
|
+
cpuLoad: load.toFixed(2),
|
|
146
|
+
memLoad: memoryFreePercent.toFixed(2),
|
|
147
|
+
timestamp: Date.now(),
|
|
148
|
+
});
|
|
149
|
+
this.systemHistory.splice(0, Math.max(0, this.systemHistory.length - 60)); // Keep only the last 60 entries
|
|
150
|
+
this.nsp.emit('system-infos', this.systemHistory[this.systemHistory.length - 1]);
|
|
151
|
+
}
|
|
152
|
+
async getSystemLoadAlt() {
|
|
153
|
+
const load = (loadavg()[0] * 100) / cpus().length;
|
|
154
|
+
const memory = await mem();
|
|
155
|
+
const memoryFreePercent = ((memory.total - memory.available) / memory.total) * 100;
|
|
156
|
+
this.systemHistory.push({
|
|
157
|
+
name: 'system',
|
|
158
|
+
cpuLoad: load.toFixed(2),
|
|
159
|
+
memLoad: memoryFreePercent.toFixed(2),
|
|
160
|
+
timestamp: Date.now(),
|
|
161
|
+
});
|
|
162
|
+
this.systemHistory.splice(0, Math.max(0, this.systemHistory.length - 60)); // Keep only the last 60 entries
|
|
163
|
+
this.nsp.emit('system-infos', this.systemHistory[this.systemHistory.length - 1]);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../../../../src/api/websocket/nsp/metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Namespace, Server } from 'socket.io';
|
|
2
|
+
import type { UiNotification } from '../../types/index.js';
|
|
3
|
+
import type { SocketNsp } from '../types.js';
|
|
4
|
+
export declare class NotificationsNamespace {
|
|
5
|
+
nsp: Namespace;
|
|
6
|
+
nspName: SocketNsp;
|
|
7
|
+
private logger;
|
|
8
|
+
constructor(io: Server);
|
|
9
|
+
clearNotifications(): void;
|
|
10
|
+
getNotifications(payload: any, callback?: Function): UiNotification[];
|
|
11
|
+
removeNotification(id?: string): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { container } from 'tsyringe';
|
|
2
|
+
export class NotificationsNamespace {
|
|
3
|
+
nsp;
|
|
4
|
+
nspName = '/notifications';
|
|
5
|
+
logger;
|
|
6
|
+
constructor(io) {
|
|
7
|
+
this.logger = container.resolve('logger');
|
|
8
|
+
this.nsp = io.of(this.nspName);
|
|
9
|
+
this.nsp.on('connection', (socket) => {
|
|
10
|
+
socket.on('clear-notifications', this.clearNotifications.bind(this));
|
|
11
|
+
socket.on('get-notifications', this.getNotifications.bind(this));
|
|
12
|
+
socket.on('remove-notification', (id) => this.removeNotification(id));
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
clearNotifications() {
|
|
16
|
+
this.logger.notifications.splice(0, this.logger.notifications.length);
|
|
17
|
+
}
|
|
18
|
+
getNotifications(payload, callback) {
|
|
19
|
+
const notifications = this.logger.notifications;
|
|
20
|
+
callback?.(notifications);
|
|
21
|
+
return notifications;
|
|
22
|
+
}
|
|
23
|
+
removeNotification(id) {
|
|
24
|
+
const notificationIndex = this.logger.notifications.findIndex((notification) => notification._id === id);
|
|
25
|
+
if (notificationIndex !== -1) {
|
|
26
|
+
this.logger.notifications.splice(notificationIndex, 1);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=notifications.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../../../../../src/api/websocket/nsp/notifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAOrC,MAAM,OAAO,sBAAsB;IAC1B,GAAG,CAAY;IACf,OAAO,GAAc,gBAAgB,CAAC;IAErC,MAAM,CAAgB;IAE9B,YAAY,EAAU;QACpB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,OAAO,CAAgB,QAAQ,CAAC,CAAC;QAEzD,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAc,EAAE,EAAE;YAC3C,MAAM,CAAC,EAAE,CAAC,qBAAqB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACrE,MAAM,CAAC,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACjE,MAAM,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,kBAAkB;QACvB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC;IAEM,gBAAgB,CAAC,OAAY,EAAE,QAAmB;QACvD,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;QAEhD,QAAQ,EAAE,CAAC,aAAa,CAAC,CAAC;QAC1B,OAAO,aAAa,CAAC;IACvB,CAAC;IAEM,kBAAkB,CAAC,EAAW;QACnC,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;QAEzG,IAAI,iBAAiB,KAAK,CAAC,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { PLUGIN_STATUS } from '@camera.ui/plugineer';
|
|
2
|
+
import type { Namespace, Server } from 'socket.io';
|
|
3
|
+
import type { SocketNsp } from '../types.js';
|
|
4
|
+
export declare class PluginsNamespace {
|
|
5
|
+
nsp: Namespace;
|
|
6
|
+
nspName: SocketNsp;
|
|
7
|
+
private pluginManager;
|
|
8
|
+
constructor(io: Server);
|
|
9
|
+
pluginStatus(pluginName: string, callback?: Function): Promise<void | {
|
|
10
|
+
pluginName: string;
|
|
11
|
+
status: PLUGIN_STATUS;
|
|
12
|
+
}>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { container } from 'tsyringe';
|
|
2
|
+
export class PluginsNamespace {
|
|
3
|
+
nsp;
|
|
4
|
+
nspName = '/plugins';
|
|
5
|
+
pluginManager;
|
|
6
|
+
constructor(io) {
|
|
7
|
+
this.pluginManager = container.resolve('pluginManager');
|
|
8
|
+
this.nsp = io.of(this.nspName);
|
|
9
|
+
this.nsp.on('connection', (socket) => {
|
|
10
|
+
// socket.on('get-plugin-info', () => this.pluginInfo(socket));
|
|
11
|
+
socket.on('get-plugin-status', this.pluginStatus.bind(this));
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
15
|
+
// public async pluginInfo(socket: Socket) {}
|
|
16
|
+
async pluginStatus(pluginName, callback) {
|
|
17
|
+
const pluginWorker = this.pluginManager.pluginWorkers.get(pluginName);
|
|
18
|
+
if (pluginWorker) {
|
|
19
|
+
const status = pluginWorker.status;
|
|
20
|
+
const data = {
|
|
21
|
+
pluginName,
|
|
22
|
+
status,
|
|
23
|
+
};
|
|
24
|
+
callback?.(data);
|
|
25
|
+
return data;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=plugins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../../../../src/api/websocket/nsp/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAOrC,MAAM,OAAO,gBAAgB;IACpB,GAAG,CAAY;IACf,OAAO,GAAc,UAAU,CAAC;IAE/B,aAAa,CAAgB;IAErC,YAAY,EAAU;QACpB,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,OAAO,CAAgB,eAAe,CAAC,CAAC;QAEvE,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAc,EAAE,EAAE;YAC3C,+DAA+D;YAC/D,MAAM,CAAC,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,6DAA6D;IAC7D,6CAA6C;IAEtC,KAAK,CAAC,YAAY,CAAC,UAAkB,EAAE,QAAmB;QAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAEtE,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;YACnC,MAAM,IAAI,GAAG;gBACX,UAAU;gBACV,MAAM;aACP,CAAC;YAEF,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Namespace, Server } from 'socket.io';
|
|
2
|
+
import type { INpmPluginState } from '../../types/index.js';
|
|
3
|
+
import type { SocketNsp } from '../types.js';
|
|
4
|
+
export declare class ServerNamespace {
|
|
5
|
+
nsp: Namespace;
|
|
6
|
+
nspName: SocketNsp;
|
|
7
|
+
private logger;
|
|
8
|
+
private pluginsService;
|
|
9
|
+
private serverUpdate;
|
|
10
|
+
private pluginUpdates;
|
|
11
|
+
constructor(io: Server);
|
|
12
|
+
getUpdates(payload: any, callback?: Function): {
|
|
13
|
+
server?: INpmPluginState;
|
|
14
|
+
plugins: INpmPluginState[];
|
|
15
|
+
};
|
|
16
|
+
checkUpdate(): Promise<void>;
|
|
17
|
+
checkServerUpdate(): Promise<void>;
|
|
18
|
+
checkPluginUpdates(): Promise<void>;
|
|
19
|
+
private getPluginFromNpm;
|
|
20
|
+
private getAvailablePluginVersions;
|
|
21
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { getNpmPath } from '@camera.ui/common/npm';
|
|
2
|
+
import { compareVersions } from 'compare-versions';
|
|
3
|
+
import { exec } from 'node:child_process';
|
|
4
|
+
import { promisify } from 'node:util';
|
|
5
|
+
import { gt, parse } from 'semver';
|
|
6
|
+
import { container } from 'tsyringe';
|
|
7
|
+
import { ConfigService } from '../../../services/config/index.js';
|
|
8
|
+
import { PluginsService } from '../../services/plugins.service.js';
|
|
9
|
+
import fetchInstance from '../../utils/fetch.js';
|
|
10
|
+
const execAsync = promisify(exec);
|
|
11
|
+
export class ServerNamespace {
|
|
12
|
+
nsp;
|
|
13
|
+
nspName = '/server';
|
|
14
|
+
logger;
|
|
15
|
+
pluginsService;
|
|
16
|
+
serverUpdate;
|
|
17
|
+
pluginUpdates = [];
|
|
18
|
+
constructor(io) {
|
|
19
|
+
this.logger = container.resolve('logger');
|
|
20
|
+
this.pluginsService = new PluginsService();
|
|
21
|
+
this.nsp = io.of(this.nspName);
|
|
22
|
+
this.nsp.on('connection', (socket) => {
|
|
23
|
+
socket.on('get-updates', this.getUpdates.bind(this));
|
|
24
|
+
});
|
|
25
|
+
setInterval(() => {
|
|
26
|
+
this.checkUpdate();
|
|
27
|
+
}, 60000);
|
|
28
|
+
this.checkUpdate();
|
|
29
|
+
}
|
|
30
|
+
getUpdates(payload, callback) {
|
|
31
|
+
const data = {
|
|
32
|
+
server: this.serverUpdate,
|
|
33
|
+
plugins: this.pluginUpdates,
|
|
34
|
+
};
|
|
35
|
+
callback?.(data);
|
|
36
|
+
return data;
|
|
37
|
+
}
|
|
38
|
+
async checkUpdate() {
|
|
39
|
+
await Promise.allSettled([this.checkServerUpdate(), this.checkPluginUpdates()]);
|
|
40
|
+
this.nsp.emit('updates', this.getUpdates({}));
|
|
41
|
+
}
|
|
42
|
+
async checkServerUpdate() {
|
|
43
|
+
try {
|
|
44
|
+
// TODO: Change on release
|
|
45
|
+
const npmPath = getNpmPath().join(' ');
|
|
46
|
+
const { stdout, stderr } = await execAsync(`${npmPath} view camera.ui3 versions dist-tags --json`);
|
|
47
|
+
if (stderr) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const data = JSON.parse(stdout);
|
|
51
|
+
const currentVersion = ConfigService.VERSION;
|
|
52
|
+
const latestVersion = data['dist-tags'].latest;
|
|
53
|
+
const latestAlpha = data['dist-tags'].alpha;
|
|
54
|
+
const updateAvailableLatest = compareVersions(latestVersion, currentVersion) === 1;
|
|
55
|
+
const updateAvailableAlpha = compareVersions(latestAlpha, currentVersion) === 1;
|
|
56
|
+
const updateAvailable = updateAvailableLatest ? latestVersion : updateAvailableAlpha ? latestAlpha : undefined;
|
|
57
|
+
this.serverUpdate = {
|
|
58
|
+
updateAvailable: updateAvailableLatest,
|
|
59
|
+
betaUpdateAvailable: updateAvailableAlpha,
|
|
60
|
+
latestVersion: updateAvailable,
|
|
61
|
+
};
|
|
62
|
+
if (updateAvailable) {
|
|
63
|
+
this.logger.notify('Update', 'New system update available', 'info', '/settings/system');
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
//
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async checkPluginUpdates() {
|
|
71
|
+
try {
|
|
72
|
+
const plugins = this.pluginsService.listPlugins();
|
|
73
|
+
const pluginStates = [];
|
|
74
|
+
for (const plugin of plugins) {
|
|
75
|
+
const pluginState = await this.getPluginFromNpm(plugin.info);
|
|
76
|
+
if (pluginState.updateAvailable || pluginState.betaUpdateAvailable) {
|
|
77
|
+
pluginStates.push(pluginState);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
this.pluginUpdates = pluginStates;
|
|
81
|
+
if (pluginStates.length > 0) {
|
|
82
|
+
this.logger.notify('Plugin Update', 'New plugin updates available', 'info', '/plugins');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
//
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
async getPluginFromNpm(plugin) {
|
|
90
|
+
const pluginState = {
|
|
91
|
+
updateAvailable: false,
|
|
92
|
+
betaUpdateAvailable: false,
|
|
93
|
+
};
|
|
94
|
+
try {
|
|
95
|
+
const response = await fetchInstance(`https://registry.npmjs.org/${encodeURIComponent(plugin.pluginName).replace(/%40/g, '@')}/latest`, {
|
|
96
|
+
method: 'GET',
|
|
97
|
+
});
|
|
98
|
+
const pkg = (await response.json());
|
|
99
|
+
pluginState.latestVersion = pkg.version;
|
|
100
|
+
pluginState.updateAvailable = gt(pkg.version, plugin.installedVersion);
|
|
101
|
+
// check for beta updates, if no latest version is available
|
|
102
|
+
if (!pluginState.updateAvailable) {
|
|
103
|
+
const pluginVersion = parse(plugin.installedVersion);
|
|
104
|
+
if (pluginVersion?.prerelease[0] === 'beta' && gt(plugin.installedVersion, pluginState.latestVersion || '0.0.1')) {
|
|
105
|
+
const versions = await this.getAvailablePluginVersions(plugin.pluginName);
|
|
106
|
+
if (versions.tags.beta && gt(versions.tags.beta, plugin.installedVersion)) {
|
|
107
|
+
pluginState.betaUpdateAvailable = true;
|
|
108
|
+
pluginState.latestVersion = versions.tags.beta;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
pluginState.latestVersion = undefined;
|
|
115
|
+
pluginState.updateAvailable = false;
|
|
116
|
+
pluginState.betaUpdateAvailable = false;
|
|
117
|
+
}
|
|
118
|
+
return pluginState;
|
|
119
|
+
}
|
|
120
|
+
async getAvailablePluginVersions(pluginName) {
|
|
121
|
+
const response = await fetchInstance(`https://registry.npmjs.org/${encodeURIComponent(pluginName).replace(/%40/g, '@')}`, {
|
|
122
|
+
method: 'GET',
|
|
123
|
+
headers: {
|
|
124
|
+
accept: 'application/vnd.npm.install-v1+json', // only return minimal information
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
const pkg = (await response.json());
|
|
128
|
+
return {
|
|
129
|
+
tags: pkg['dist-tags'],
|
|
130
|
+
versions: Object.keys(pkg.versions).reverse(),
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../../../src/api/websocket/nsp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,aAAa,MAAM,sBAAsB,CAAC;AAOjD,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC,MAAM,OAAO,eAAe;IACnB,GAAG,CAAY;IACf,OAAO,GAAc,SAAS,CAAC;IAE9B,MAAM,CAAgB;IACtB,cAAc,CAAiB;IAE/B,YAAY,CAA8B;IAC1C,aAAa,GAAsB,EAAE,CAAC;IAE9C,YAAY,EAAU;QACpB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,OAAO,CAAgB,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;QAE3C,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAc,EAAE,EAAE;YAC3C,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,WAAW,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEM,UAAU,CAAC,OAAY,EAAE,QAAmB;QACjD,MAAM,IAAI,GAAG;YACX,MAAM,EAAE,IAAI,CAAC,YAAY;YACzB,OAAO,EAAE,IAAI,CAAC,aAAa;SAC5B,CAAC;QAEF,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,WAAW;QACtB,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,iBAAiB;QAC5B,IAAI,CAAC;YACH,0BAA0B;YAC1B,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,OAAO,4CAA4C,CAAC,CAAC;YAEnG,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO;YACT,CAAC;YAED,MAAM,IAAI,GAA2E,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAExG,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC;YAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;YAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;YAE5C,MAAM,qBAAqB,GAAG,eAAe,CAAC,aAAa,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;YACnF,MAAM,oBAAoB,GAAG,eAAe,CAAC,WAAW,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;YAEhF,MAAM,eAAe,GAAG,qBAAqB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YAE/G,IAAI,CAAC,YAAY,GAAG;gBAClB,eAAe,EAAE,qBAAqB;gBACtC,mBAAmB,EAAE,oBAAoB;gBACzC,aAAa,EAAE,eAAe;aAC/B,CAAC;YAEF,IAAI,eAAe,EAAE,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,6BAA6B,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,EAAE;QACJ,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,kBAAkB;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;YAClD,MAAM,YAAY,GAAsB,EAAE,CAAC;YAE3C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAE7D,IAAI,WAAW,CAAC,eAAe,IAAI,WAAW,CAAC,mBAAmB,EAAE,CAAC;oBACnE,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;YAED,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;YAElC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,8BAA8B,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,EAAE;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,MAAsB;QACnD,MAAM,WAAW,GAAoB;YACnC,eAAe,EAAE,KAAK;YACtB,mBAAmB,EAAE,KAAK;SAC3B,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,8BAA8B,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE;gBACtI,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YAEH,MAAM,GAAG,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAiB,CAAC;YAEpD,WAAW,CAAC,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC;YACxC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,gBAAiB,CAAC,CAAC;YAExE,4DAA4D;YAC5D,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;gBACjC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;gBACrD,IAAI,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC,gBAAiB,EAAE,WAAW,CAAC,aAAa,IAAI,OAAO,CAAC,EAAE,CAAC;oBAClH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;oBAC1E,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,gBAAiB,CAAC,EAAE,CAAC;wBAC3E,WAAW,CAAC,mBAAmB,GAAG,IAAI,CAAC;wBACvC,WAAW,CAAC,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;oBACjD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,WAAW,CAAC,aAAa,GAAG,SAAS,CAAC;YACtC,WAAW,CAAC,eAAe,GAAG,KAAK,CAAC;YACpC,WAAW,CAAC,mBAAmB,GAAG,KAAK,CAAC;QAC1C,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,0BAA0B,CAAC,UAAkB;QACzD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,8BAA8B,kBAAkB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE;YACxH,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,MAAM,EAAE,qCAAqC,EAAE,kCAAkC;aAClF;SACF,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuB,CAAC;QAE1D,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC;YACtB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;SAC9C,CAAC;IACJ,CAAC;CACF"}
|