@camera.ui/server 0.0.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/@babel-l0sNRNKZ.js +1 -0
- package/dist/interface/assets/@camera.ui-2NVnv26v.js +8 -0
- package/dist/interface/assets/@intlify-Ck2ZoCVz.js +15 -0
- package/dist/interface/assets/@mdi-C-QA1nE3.js +1 -0
- package/dist/interface/assets/@popperjs-BQBsAJpH.js +1 -0
- package/dist/interface/assets/@react-dnd-CcwRs9xb.js +1 -0
- package/dist/interface/assets/@socket.io-Dkula2eQ.js +1 -0
- package/dist/interface/assets/@tanstack-BqH4GyO-.js +1 -0
- package/dist/interface/assets/@vee-validate-DCBdnGo-.js +5 -0
- package/dist/interface/assets/@vue-C7-KaDG4.js +17 -0
- package/dist/interface/assets/@vueform-arggO0eF.js +1 -0
- package/dist/interface/assets/@vueform-h7tNX9p6.css +1 -0
- package/dist/interface/assets/@vueuse-C3WMTDqL.js +1 -0
- package/dist/interface/assets/@xterm-B4Ga69iL.js +9 -0
- package/dist/interface/assets/@xterm-CGrrDQr5.css +32 -0
- package/dist/interface/assets/Account-B_tHnXoX.css +1 -0
- package/dist/interface/assets/Account-gJpkf0nE.js +1 -0
- package/dist/interface/assets/Adminpanel-B_SY1GJM.css +0 -0
- package/dist/interface/assets/Adminpanel-Bge9nu5N.js +1 -0
- package/dist/interface/assets/Appearance-D22q-X_I.js +1 -0
- package/dist/interface/assets/Backup-DBv9xFPh.css +1 -0
- package/dist/interface/assets/Backup-pJm6s10G.js +1 -0
- package/dist/interface/assets/Camera-BgO2yRjb.js +1 -0
- package/dist/interface/assets/Camera-CWiLco3W.css +1 -0
- package/dist/interface/assets/Cameras-BM3vSM_R.css +1 -0
- package/dist/interface/assets/Cameras-DjeKruR_.js +1 -0
- package/dist/interface/assets/Camview-DfzlprzN.js +1 -0
- package/dist/interface/assets/Camview-vUAs5YHU.css +1 -0
- package/dist/interface/assets/Config-BKIOIkjC.js +1 -0
- package/dist/interface/assets/Config-DAiKsG7W.css +1 -0
- package/dist/interface/assets/Console-BsyX2S3R.css +1 -0
- package/dist/interface/assets/Console-Caz7y-T0.js +4 -0
- package/dist/interface/assets/FirstSteps-DNHhyDSw.css +1 -0
- package/dist/interface/assets/FirstSteps-mQK4XFTs.js +1 -0
- package/dist/interface/assets/NewCamera-B9t-0NCc.js +448 -0
- package/dist/interface/assets/NewCamera-CHMgUDbC.css +1 -0
- package/dist/interface/assets/Plugin-BSHKKjrl.css +1 -0
- package/dist/interface/assets/Plugin-Di_bBsg-.js +1 -0
- package/dist/interface/assets/Plugins-BsMITags.css +1 -0
- package/dist/interface/assets/Plugins-DhmzMNuO.js +1 -0
- package/dist/interface/assets/Recordings-Bu53bSBp.js +1 -0
- package/dist/interface/assets/Recordings-XY20w8yp.js +1 -0
- package/dist/interface/assets/Settings-JES2wb8p.css +1 -0
- package/dist/interface/assets/Settings-gGRBRVST.js +1 -0
- package/dist/interface/assets/System-ZDrcLNk0.js +1 -0
- package/dist/interface/assets/User-BXColIbU.css +1 -0
- package/dist/interface/assets/User-D4vEhhzi.js +1 -0
- package/dist/interface/assets/VConfigEditor.vue_vue_type_script_setup_true_lang-CXFI-IeE.js +2 -0
- package/dist/interface/assets/VConsole-BHo3xprq.js +1 -0
- package/dist/interface/assets/VConsole-f-nUkOuD.css +1 -0
- package/dist/interface/assets/VPlayer-D3KhRfx-.css +1 -0
- package/dist/interface/assets/VPlayer-YdRn97Bs.js +1 -0
- package/dist/interface/assets/VPluginCard--3bx6UJb.js +4 -0
- package/dist/interface/assets/VPluginCard-BJYMuCLk.css +1 -0
- package/dist/interface/assets/ace-builds-CigWTak4.js +956 -0
- package/dist/interface/assets/axios--Jv2L996.js +6 -0
- package/dist/interface/assets/dijkstrajs-D_NXgYpA.js +1 -0
- package/dist/interface/assets/dnd-core-SnWOpY0X.js +1 -0
- package/dist/interface/assets/draggabilly-Arakw9Dk.js +6 -0
- package/dist/interface/assets/encode-utf8-Cn5aGd7v.js +1 -0
- package/dist/interface/assets/engine.io-client-DBBxzneW.js +1 -0
- package/dist/interface/assets/engine.io-parser-BiEtp6m2.js +1 -0
- package/dist/interface/assets/entities-C20TfXL6.js +1 -0
- package/dist/interface/assets/ev-emitter-CXYwG0eJ.js +1 -0
- package/dist/interface/assets/fast-deep-equal-5pvsDbwX.js +1 -0
- package/dist/interface/assets/get-size-D1dS-IaP.js +5 -0
- package/dist/interface/assets/highlight-DgoK_Xib.css +1 -0
- package/dist/interface/assets/highlight.js-TxRCSjhv.js +2 -0
- package/dist/interface/assets/linkify-it-DmNjr4Kv.js +1 -0
- package/dist/interface/assets/logo-256-BCQk9H1-.png +0 -0
- package/dist/interface/assets/logo-512-DLKVOU2S.png +0 -0
- package/dist/interface/assets/logo-DmEiRk0z.png +0 -0
- package/dist/interface/assets/main-B3IVLctZ.css +1 -0
- package/dist/interface/assets/main-C4rYiRNz.js +2 -0
- package/dist/interface/assets/markdown-it-DI8MEbma.js +15 -0
- package/dist/interface/assets/mdurl-k9Sl0PQj.js +2 -0
- package/dist/interface/assets/mode-json-Br7xisR1.js +275 -0
- package/dist/interface/assets/mode-yaml-CIYL8U3d.js +395 -0
- package/dist/interface/assets/nprogress-DSyAi0LF.js +2 -0
- package/dist/interface/assets/pinia-D8MtiGcH.js +5 -0
- package/dist/interface/assets/plugins-Bf03y242.js +1 -0
- package/dist/interface/assets/punycode.js-Dj65hjkv.js +1 -0
- package/dist/interface/assets/qrcode-CGiDONbL.js +8 -0
- package/dist/interface/assets/react-dnd-html5-backend-1HQjlkwI.js +2 -0
- package/dist/interface/assets/react-dnd-touch-backend-NgACaG8W.js +1 -0
- package/dist/interface/assets/redux-CuxFRhX_.js +1 -0
- package/dist/interface/assets/rxjs-B53o3e_J.js +3 -0
- package/dist/interface/assets/socket.io-client-Bq_SHkin.js +1 -0
- package/dist/interface/assets/socket.io-parser-BBkuslX-.js +1 -0
- package/dist/interface/assets/system-BONnDA4y.js +1 -0
- package/dist/interface/assets/tslib-9k7AwCpt.js +1 -0
- package/dist/interface/assets/uc.micro-kMc2yuuw.js +1 -0
- package/dist/interface/assets/ui-CNpIJotI.js +1 -0
- package/dist/interface/assets/unidragger-BYtqgAQ0.js +5 -0
- package/dist/interface/assets/utils-BvINh1mj.js +1 -0
- package/dist/interface/assets/uuid-DvF23Exx.js +1 -0
- package/dist/interface/assets/v-calendar-CtSuDYZU.css +1 -0
- package/dist/interface/assets/v-calendar-uh0aTGqP.js +1 -0
- package/dist/interface/assets/vee-validate-D3FqbChK.js +5 -0
- package/dist/interface/assets/vue-i18n-1AU8MPys.js +5 -0
- package/dist/interface/assets/vue-inline-svg-2DDwYW6V.js +1 -0
- package/dist/interface/assets/vue-l0sNRNKZ.js +1 -0
- package/dist/interface/assets/vue-router-DfeQ8s4I.js +5 -0
- package/dist/interface/assets/vue3-dnd-BwxcSU9Z.js +1 -0
- package/dist/interface/assets/vue3-toastify-DTY1DMRs.css +1 -0
- package/dist/interface/assets/vue3-toastify-Ul-rf53I.js +1 -0
- package/dist/interface/assets/vuetify-B__3Y-at.css +5 -0
- package/dist/interface/assets/vuetify-_-Oqac3B.js +5 -0
- package/dist/interface/assets/zod-BaF2dDCd.js +1 -0
- package/dist/interface/browserconfig.xml +11 -0
- package/dist/interface/fonts/Inter/Inter-Regular.ttf +0 -0
- package/dist/interface/index.html +377 -0
- package/dist/interface/manifest.webmanifest +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/registerSW.js +1 -0
- package/dist/interface/robots.txt +2 -0
- package/dist/interface/sw.js +1 -0
- package/dist/interface/workbox-3e911b1d.js +1 -0
- package/dist/server/bin/cui-service.d.ts +43 -0
- package/dist/server/bin/cui-service.js +472 -0
- package/dist/server/bin/cui-service.js.map +1 -0
- package/dist/server/bin/cui.d.ts +2 -0
- package/dist/server/bin/cui.js +8 -0
- package/dist/server/bin/cui.js.map +1 -0
- package/dist/server/bin/installer/base.d.ts +16 -0
- package/dist/server/bin/installer/base.js +41 -0
- package/dist/server/bin/installer/base.js.map +1 -0
- package/dist/server/bin/installer/darwin.d.ts +49 -0
- package/dist/server/bin/installer/darwin.js +200 -0
- package/dist/server/bin/installer/darwin.js.map +1 -0
- package/dist/server/bin/installer/freebsd.d.ts +61 -0
- package/dist/server/bin/installer/freebsd.js +252 -0
- package/dist/server/bin/installer/freebsd.js.map +1 -0
- package/dist/server/bin/installer/linux.d.ts +92 -0
- package/dist/server/bin/installer/linux.js +386 -0
- package/dist/server/bin/installer/linux.js.map +1 -0
- package/dist/server/bin/installer/win32.d.ts +37 -0
- package/dist/server/bin/installer/win32.js +158 -0
- package/dist/server/bin/installer/win32.js.map +1 -0
- package/dist/server/package.json +142 -0
- package/dist/server/requirements.txt +13 -0
- package/dist/server/src/api/controllers/api.controller.d.ts +6 -0
- package/dist/server/src/api/controllers/api.controller.js +11 -0
- package/dist/server/src/api/controllers/api.controller.js.map +1 -0
- package/dist/server/src/api/controllers/auth.controller.d.ts +20 -0
- package/dist/server/src/api/controllers/auth.controller.js +263 -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 +34 -0
- package/dist/server/src/api/controllers/cameras.controller.js +522 -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 +16 -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 +59 -0
- package/dist/server/src/api/controllers/plugins.controller.js +1178 -0
- package/dist/server/src/api/controllers/plugins.controller.js.map +1 -0
- package/dist/server/src/api/controllers/system.controller.d.ts +14 -0
- package/dist/server/src/api/controllers/system.controller.js +149 -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 +463 -0
- package/dist/server/src/api/controllers/users.controller.js.map +1 -0
- package/dist/server/src/api/database/index.d.ts +34 -0
- package/dist/server/src/api/database/index.js +185 -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 +47 -0
- package/dist/server/src/api/database/migration.js.map +1 -0
- package/dist/server/src/api/database/types.d.ts +209 -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 +10 -0
- package/dist/server/src/api/go2rtc/api/streams.js +67 -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 +60 -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 +233 -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 +21 -0
- package/dist/server/src/api/plugins/system.plugin.js +33 -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 +6 -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 +181 -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 +43 -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 +932 -0
- package/dist/server/src/api/schemas/cameras.schema.js +271 -0
- package/dist/server/src/api/schemas/cameras.schema.js.map +1 -0
- package/dist/server/src/api/schemas/config.schema.d.ts +202 -0
- package/dist/server/src/api/schemas/config.schema.js +68 -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 +188 -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/users.schema.d.ts +1008 -0
- package/dist/server/src/api/schemas/users.schema.js +151 -0
- package/dist/server/src/api/schemas/users.schema.js.map +1 -0
- package/dist/server/src/api/services/auth.service.d.ts +19 -0
- package/dist/server/src/api/services/auth.service.js +115 -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 +108 -0
- package/dist/server/src/api/services/backup.service.js.map +1 -0
- package/dist/server/src/api/services/cameras.service.d.ts +55 -0
- package/dist/server/src/api/services/cameras.service.js +700 -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 +145 -0
- package/dist/server/src/api/services/plugins.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 +197 -0
- package/dist/server/src/api/services/users.service.js.map +1 -0
- package/dist/server/src/api/types/index.d.ts +580 -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/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 +38 -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 +15 -0
- package/dist/server/src/api/websocket/index.js +69 -0
- package/dist/server/src/api/websocket/index.js.map +1 -0
- package/dist/server/src/api/websocket/nsp/frameWorker.d.ts +13 -0
- package/dist/server/src/api/websocket/nsp/frameWorker.js +29 -0
- package/dist/server/src/api/websocket/nsp/frameWorker.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 +113 -0
- package/dist/server/src/api/websocket/nsp/logs.js.map +1 -0
- package/dist/server/src/api/websocket/nsp/metrics.d.ts +38 -0
- package/dist/server/src/api/websocket/nsp/metrics.js +266 -0
- package/dist/server/src/api/websocket/nsp/metrics.js.map +1 -0
- package/dist/server/src/api/websocket/nsp/notifications.d.ts +11 -0
- package/dist/server/src/api/websocket/nsp/notifications.js +35 -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 +9 -0
- package/dist/server/src/api/websocket/nsp/server.js +48 -0
- package/dist/server/src/api/websocket/nsp/server.js.map +1 -0
- package/dist/server/src/api/websocket/nsp/status.d.ts +26 -0
- package/dist/server/src/api/websocket/nsp/status.js +59 -0
- package/dist/server/src/api/websocket/nsp/status.js.map +1 -0
- package/dist/server/src/api/websocket/types.d.ts +86 -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 +43 -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 +41 -0
- package/dist/server/src/camera/controller.js +220 -0
- package/dist/server/src/camera/controller.js.map +1 -0
- package/dist/server/src/camera/device.d.ts +18 -0
- package/dist/server/src/camera/device.js +21 -0
- package/dist/server/src/camera/device.js.map +1 -0
- package/dist/server/src/camera/index.d.ts +121 -0
- package/dist/server/src/camera/index.js +643 -0
- package/dist/server/src/camera/index.js.map +1 -0
- package/dist/server/src/camera/interfaces/camera.d.ts +11 -0
- package/dist/server/src/camera/interfaces/camera.js +31 -0
- package/dist/server/src/camera/interfaces/camera.js.map +1 -0
- package/dist/server/src/camera/interfaces/prebuffer.d.ts +11 -0
- package/dist/server/src/camera/interfaces/prebuffer.js +26 -0
- package/dist/server/src/camera/interfaces/prebuffer.js.map +1 -0
- package/dist/server/src/camera/interfaces/ptz.d.ts +13 -0
- package/dist/server/src/camera/interfaces/ptz.js +47 -0
- package/dist/server/src/camera/interfaces/ptz.js.map +1 -0
- package/dist/server/src/camera/polygon.d.ts +6 -0
- package/dist/server/src/camera/polygon.js +151 -0
- package/dist/server/src/camera/polygon.js.map +1 -0
- package/dist/server/src/camera/streaming/peer-connection.d.ts +46 -0
- package/dist/server/src/camera/streaming/peer-connection.js +150 -0
- package/dist/server/src/camera/streaming/peer-connection.js.map +1 -0
- package/dist/server/src/camera/streaming/webrtc-connection.d.ts +34 -0
- package/dist/server/src/camera/streaming/webrtc-connection.js +152 -0
- package/dist/server/src/camera/streaming/webrtc-connection.js.map +1 -0
- package/dist/server/src/camera/streaming/werift-session.d.ts +31 -0
- package/dist/server/src/camera/streaming/werift-session.js +168 -0
- package/dist/server/src/camera/streaming/werift-session.js.map +1 -0
- package/dist/server/src/camera/types.d.ts +202 -0
- package/dist/server/src/camera/types.js +7 -0
- package/dist/server/src/camera/types.js.map +1 -0
- package/dist/server/src/camera/videoFrame.d.ts +24 -0
- package/dist/server/src/camera/videoFrame.js +105 -0
- package/dist/server/src/camera/videoFrame.js.map +1 -0
- package/dist/server/src/decoder/ffmpeg.d.ts +2 -0
- package/dist/server/src/decoder/ffmpeg.js +61 -0
- package/dist/server/src/decoder/ffmpeg.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 +156 -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 +42 -0
- package/dist/server/src/decoder/worker.js +273 -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 +211 -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/index.d.ts +16 -0
- package/dist/server/src/index.js +5 -0
- package/dist/server/src/index.js.map +1 -0
- package/dist/server/src/main.d.ts +18 -0
- package/dist/server/src/main.js +118 -0
- package/dist/server/src/main.js.map +1 -0
- package/dist/server/src/nats/constants.d.ts +1 -0
- package/dist/server/src/nats/constants.js +2 -0
- package/dist/server/src/nats/constants.js.map +1 -0
- package/dist/server/src/nats/index.d.ts +35 -0
- package/dist/server/src/nats/index.js +150 -0
- package/dist/server/src/nats/index.js.map +1 -0
- package/dist/server/src/nats/messageQueue.d.ts +17 -0
- package/dist/server/src/nats/messageQueue.js +148 -0
- package/dist/server/src/nats/messageQueue.js.map +1 -0
- package/dist/server/src/nats/proxy/cameraDevice.d.ts +30 -0
- package/dist/server/src/nats/proxy/cameraDevice.js +252 -0
- package/dist/server/src/nats/proxy/cameraDevice.js.map +1 -0
- package/dist/server/src/nats/proxy/deviceManager.d.ts +16 -0
- package/dist/server/src/nats/proxy/deviceManager.js +110 -0
- package/dist/server/src/nats/proxy/deviceManager.js.map +1 -0
- package/dist/server/src/nats/proxy/index.d.ts +2 -0
- package/dist/server/src/nats/proxy/index.js +3 -0
- package/dist/server/src/nats/proxy/index.js.map +1 -0
- package/dist/server/src/nats/server.d.ts +38 -0
- package/dist/server/src/nats/server.js +325 -0
- package/dist/server/src/nats/server.js.map +1 -0
- package/dist/server/src/nats/types.d.ts +125 -0
- package/dist/server/src/nats/types.js +11 -0
- package/dist/server/src/nats/types.js.map +1 -0
- package/dist/server/src/nats/utils.d.ts +4 -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 +214 -0
- package/dist/server/src/nats/websocket.js.map +1 -0
- package/dist/server/src/plugins/index.d.ts +32 -0
- package/dist/server/src/plugins/index.js +326 -0
- package/dist/server/src/plugins/index.js.map +1 -0
- package/dist/server/src/plugins/interfaces/audioDetection.d.ts +7 -0
- package/dist/server/src/plugins/interfaces/audioDetection.js +4 -0
- package/dist/server/src/plugins/interfaces/audioDetection.js.map +1 -0
- package/dist/server/src/plugins/interfaces/base.d.ts +6 -0
- package/dist/server/src/plugins/interfaces/base.js +3 -0
- package/dist/server/src/plugins/interfaces/base.js.map +1 -0
- package/dist/server/src/plugins/interfaces/motionDetection.d.ts +6 -0
- package/dist/server/src/plugins/interfaces/motionDetection.js +4 -0
- package/dist/server/src/plugins/interfaces/motionDetection.js.map +1 -0
- package/dist/server/src/plugins/interfaces/objectDetection.d.ts +7 -0
- package/dist/server/src/plugins/interfaces/objectDetection.js +4 -0
- package/dist/server/src/plugins/interfaces/objectDetection.js.map +1 -0
- package/dist/server/src/plugins/plugin.d.ts +42 -0
- package/dist/server/src/plugins/plugin.js +207 -0
- package/dist/server/src/plugins/plugin.js.map +1 -0
- package/dist/server/src/plugins/types.d.ts +181 -0
- package/dist/server/src/plugins/types.js +18 -0
- package/dist/server/src/plugins/types.js.map +1 -0
- package/dist/server/src/plugins/worker.d.ts +35 -0
- package/dist/server/src/plugins/worker.js +309 -0
- package/dist/server/src/plugins/worker.js.map +1 -0
- package/dist/server/src/polyglot/node/decoder/child.d.ts +1 -0
- package/dist/server/src/polyglot/node/decoder/child.js +703 -0
- package/dist/server/src/polyglot/node/decoder/child.js.map +1 -0
- package/dist/server/src/polyglot/node/decoder/imageUtils.d.ts +24 -0
- package/dist/server/src/polyglot/node/decoder/imageUtils.js +203 -0
- package/dist/server/src/polyglot/node/decoder/imageUtils.js.map +1 -0
- package/dist/server/src/polyglot/node/decoder/reader.d.ts +5 -0
- package/dist/server/src/polyglot/node/decoder/reader.js +41 -0
- package/dist/server/src/polyglot/node/decoder/reader.js.map +1 -0
- package/dist/server/src/polyglot/node/decoder/wasm/build/decoder.d.ts +144 -0
- package/dist/server/src/polyglot/node/decoder/wasm/build/decoder.js +65 -0
- package/dist/server/src/polyglot/node/decoder/wasm/build/decoder.wasm +0 -0
- package/dist/server/src/polyglot/node/decoder/wasm/test/imageUtils.py +106 -0
- package/dist/server/src/polyglot/node/plugins/api.d.ts +37 -0
- package/dist/server/src/polyglot/node/plugins/api.js +34 -0
- package/dist/server/src/polyglot/node/plugins/api.js.map +1 -0
- package/dist/server/src/polyglot/node/plugins/cameraStorage.d.ts +108 -0
- package/dist/server/src/polyglot/node/plugins/cameraStorage.js +310 -0
- package/dist/server/src/polyglot/node/plugins/cameraStorage.js.map +1 -0
- package/dist/server/src/polyglot/node/plugins/child.d.ts +25 -0
- package/dist/server/src/polyglot/node/plugins/child.js +206 -0
- package/dist/server/src/polyglot/node/plugins/child.js.map +1 -0
- package/dist/server/src/polyglot/node/plugins/config.d.ts +104 -0
- package/dist/server/src/polyglot/node/plugins/config.js +213 -0
- package/dist/server/src/polyglot/node/plugins/config.js.map +1 -0
- package/dist/server/src/polyglot/node/plugins/logger.d.ts +16 -0
- package/dist/server/src/polyglot/node/plugins/logger.js +128 -0
- package/dist/server/src/polyglot/node/plugins/logger.js.map +1 -0
- package/dist/server/src/polyglot/node/plugins/proxy/cameraDevice.d.ts +75 -0
- package/dist/server/src/polyglot/node/plugins/proxy/cameraDevice.js +474 -0
- package/dist/server/src/polyglot/node/plugins/proxy/cameraDevice.js.map +1 -0
- package/dist/server/src/polyglot/node/plugins/proxy/deviceManager.d.ts +49 -0
- package/dist/server/src/polyglot/node/plugins/proxy/deviceManager.js +194 -0
- package/dist/server/src/polyglot/node/plugins/proxy/deviceManager.js.map +1 -0
- package/dist/server/src/polyglot/node/plugins/proxy/index.d.ts +2 -0
- package/dist/server/src/polyglot/node/plugins/proxy/index.js +3 -0
- package/dist/server/src/polyglot/node/plugins/proxy/index.js.map +1 -0
- package/dist/server/src/polyglot/node/plugins/proxy/messageQueue.d.ts +20 -0
- package/dist/server/src/polyglot/node/plugins/proxy/messageQueue.js +152 -0
- package/dist/server/src/polyglot/node/plugins/proxy/messageQueue.js.map +1 -0
- package/dist/server/src/polyglot/node/plugins/schema.d.ts +280 -0
- package/dist/server/src/polyglot/node/plugins/schema.js +719 -0
- package/dist/server/src/polyglot/node/plugins/schema.js.map +1 -0
- package/dist/server/src/polyglot/node/plugins/storageController.d.ts +28 -0
- package/dist/server/src/polyglot/node/plugins/storageController.js +38 -0
- package/dist/server/src/polyglot/node/plugins/storageController.js.map +1 -0
- package/dist/server/src/polyglot/python/camera/interfaces/camera.py +26 -0
- package/dist/server/src/polyglot/python/camera/interfaces/prebuffer.py +25 -0
- package/dist/server/src/polyglot/python/camera/interfaces/ptz.py +38 -0
- package/dist/server/src/polyglot/python/camera/polygon.py +173 -0
- package/dist/server/src/polyglot/python/camera/video_frame.py +196 -0
- package/dist/server/src/polyglot/python/camera_ui_types/__init__.py +1221 -0
- package/dist/server/src/polyglot/python/decoder/child.py +922 -0
- package/dist/server/src/polyglot/python/decoder/image_utils.py +149 -0
- package/dist/server/src/polyglot/python/decoder/typings.py +99 -0
- package/dist/server/src/polyglot/python/plugins/camera_storage.py +459 -0
- package/dist/server/src/polyglot/python/plugins/child.py +267 -0
- package/dist/server/src/polyglot/python/plugins/config_service.py +180 -0
- package/dist/server/src/polyglot/python/plugins/constants.py +2 -0
- package/dist/server/src/polyglot/python/plugins/logger.py +111 -0
- package/dist/server/src/polyglot/python/plugins/plugin_api.py +114 -0
- package/dist/server/src/polyglot/python/plugins/proxy/camera_device.py +1722 -0
- package/dist/server/src/polyglot/python/plugins/proxy/device_manager.py +265 -0
- package/dist/server/src/polyglot/python/plugins/proxy/message_queue.py +213 -0
- package/dist/server/src/polyglot/python/plugins/schema.py +392 -0
- package/dist/server/src/polyglot/python/plugins/storage_controller.py +57 -0
- package/dist/server/src/polyglot/python/plugins/typings.py +248 -0
- package/dist/server/src/polyglot/python/utilities/object_path.py +187 -0
- package/dist/server/src/polyglot/python/utilities/packer.py +11 -0
- package/dist/server/src/polyglot/python/utilities/task.py +25 -0
- package/dist/server/src/polyglot/python/utilities/thread.py +10 -0
- package/dist/server/src/polyglot/python/utilities/utils.py +48 -0
- package/dist/server/src/services/config/constants.d.ts +4 -0
- package/dist/server/src/services/config/constants.js +58 -0
- package/dist/server/src/services/config/constants.js.map +1 -0
- package/dist/server/src/services/config/index.d.ts +54 -0
- package/dist/server/src/services/config/index.js +288 -0
- package/dist/server/src/services/config/index.js.map +1 -0
- package/dist/server/src/services/config/types.d.ts +162 -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 +30 -0
- package/dist/server/src/services/logger/index.js +179 -0
- package/dist/server/src/services/logger/index.js.map +1 -0
- package/dist/server/src/types.d.ts +4 -0
- package/dist/server/src/types.js +2 -0
- package/dist/server/src/types.js.map +1 -0
- package/dist/server/src/utils/packer.d.ts +2 -0
- package/dist/server/src/utils/packer.js +17 -0
- package/dist/server/src/utils/packer.js.map +1 -0
- package/dist/server/src/utils/pythonInstaller.d.ts +48 -0
- package/dist/server/src/utils/pythonInstaller.js +465 -0
- package/dist/server/src/utils/pythonInstaller.js.map +1 -0
- package/dist/server/src/utils/subscribed.d.ts +9 -0
- package/dist/server/src/utils/subscribed.js +17 -0
- package/dist/server/src/utils/subscribed.js.map +1 -0
- package/dist/server/src/utils/utils.d.ts +10 -0
- package/dist/server/src/utils/utils.js +165 -0
- package/dist/server/src/utils/utils.js.map +1 -0
- package/package.json +142 -0
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
import re
|
|
2
|
+
from typing import Any, Union
|
|
3
|
+
|
|
4
|
+
from camera_ui_types import (
|
|
5
|
+
JsonSchema,
|
|
6
|
+
JsonSchemaArray,
|
|
7
|
+
JsonSchemaBoolean,
|
|
8
|
+
JsonSchemaEnum,
|
|
9
|
+
JsonSchemaNumber,
|
|
10
|
+
JsonSchemaObject,
|
|
11
|
+
JsonSchemaObjectWithButtons,
|
|
12
|
+
JsonSchemaString,
|
|
13
|
+
PluginJsonSchema,
|
|
14
|
+
PluginJsonSchemaForm,
|
|
15
|
+
PluginRootSchema,
|
|
16
|
+
RootSchema,
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def config_path_to_schema_path(config_path: str) -> str:
|
|
21
|
+
"""
|
|
22
|
+
Converts a configuration path to a schema path by handling array indices and nested properties.
|
|
23
|
+
|
|
24
|
+
This function transforms the config path to match the structure expected by a JSON schema. For instance, converting array
|
|
25
|
+
indices and adding 'properties' keywords as needed to represent the hierarchical structure of the schema.
|
|
26
|
+
|
|
27
|
+
:param config_path: A dot-separated path string representing the location of a configuration item.
|
|
28
|
+
:return: A dot-separated path string adjusted to align with JSON schema structure.
|
|
29
|
+
"""
|
|
30
|
+
path_parts = config_path.split(".")
|
|
31
|
+
schema_path_parts: list[str] = []
|
|
32
|
+
|
|
33
|
+
for index, part in enumerate(path_parts):
|
|
34
|
+
is_numeric_index = bool(re.match(r"^\d+$", part))
|
|
35
|
+
is_last_part = index == len(path_parts) - 1
|
|
36
|
+
|
|
37
|
+
if is_numeric_index:
|
|
38
|
+
schema_path_parts.extend(["items", "properties"])
|
|
39
|
+
else:
|
|
40
|
+
schema_path_parts.append(part)
|
|
41
|
+
if not is_last_part and not re.match(r"^\d+$", path_parts[index + 1]):
|
|
42
|
+
schema_path_parts.append("properties")
|
|
43
|
+
|
|
44
|
+
return ".".join(schema_path_parts)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def generate_json_from_root_schema(
|
|
48
|
+
root_schema: Union[RootSchema, PluginRootSchema],
|
|
49
|
+
) -> dict[str, Any]:
|
|
50
|
+
"""
|
|
51
|
+
Generates a default JSON object based on the provided root schema. This function iterates through the schema's properties,
|
|
52
|
+
creating a nested JSON object that matches the structure of the schema with default values where specified.
|
|
53
|
+
|
|
54
|
+
:param root_schema: The root schema object which defines the structure and default values for the JSON object.
|
|
55
|
+
:return: A JSON object that conforms to the provided schema.
|
|
56
|
+
"""
|
|
57
|
+
json_object: dict[str, Any] = {}
|
|
58
|
+
|
|
59
|
+
for key, json_schema in root_schema["schema"].items():
|
|
60
|
+
schema: Any = json_schema
|
|
61
|
+
json_object[key] = generate_json_from_schema(schema)
|
|
62
|
+
|
|
63
|
+
return json_object
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def generate_json_from_schema(
|
|
67
|
+
json_schema: Union[JsonSchema, PluginJsonSchema],
|
|
68
|
+
) -> Any:
|
|
69
|
+
"""
|
|
70
|
+
Generates JSON data based on a single schema definition. Depending on the schema type, this may generate a string, number,
|
|
71
|
+
boolean, object, or array, incorporating default values and nested structures as defined in the schema.
|
|
72
|
+
|
|
73
|
+
:param json_schema: The JSON schema from which to generate data.
|
|
74
|
+
:return: Generated JSON data that conforms to the specified schema.
|
|
75
|
+
"""
|
|
76
|
+
schema_type = json_schema.get("type")
|
|
77
|
+
|
|
78
|
+
if schema_type in ["string", "number", "boolean"]:
|
|
79
|
+
if "enum" in json_schema:
|
|
80
|
+
if json_schema.get("multiple"):
|
|
81
|
+
return [json_schema.get("defaultValue")] if "defaultValue" in json_schema else []
|
|
82
|
+
else:
|
|
83
|
+
return json_schema.get(
|
|
84
|
+
"defaultValue",
|
|
85
|
+
json_schema["enum"][0] if json_schema.get("required", False) else None,
|
|
86
|
+
)
|
|
87
|
+
else:
|
|
88
|
+
return json_schema.get("defaultValue")
|
|
89
|
+
elif schema_type == "object":
|
|
90
|
+
properties: Any = json_schema.get("properties")
|
|
91
|
+
if properties:
|
|
92
|
+
return {k: generate_json_from_schema(v) for k, v in properties.items()}
|
|
93
|
+
return {}
|
|
94
|
+
elif schema_type == "array":
|
|
95
|
+
items = json_schema.get("items")
|
|
96
|
+
if items:
|
|
97
|
+
return [generate_json_from_schema(items)]
|
|
98
|
+
return []
|
|
99
|
+
else:
|
|
100
|
+
return None
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def get_value_by_path(obj: dict[Any, Any], path: str) -> Any:
|
|
104
|
+
"""
|
|
105
|
+
Retrieves a value from a nested object or a list based on a dot-separated path. If the path includes indices for accessing
|
|
106
|
+
array elements, these are handled accordingly. If any part of the path is not found, None is returned.
|
|
107
|
+
|
|
108
|
+
:param obj: The object or list from which to retrieve the value.
|
|
109
|
+
:param path: A dot-separated path string representing the location of the item.
|
|
110
|
+
:return: The value at the specified path, or None if the path is not found.
|
|
111
|
+
"""
|
|
112
|
+
|
|
113
|
+
keys: list[str] = []
|
|
114
|
+
for key in path.split("."):
|
|
115
|
+
if "[" in key:
|
|
116
|
+
path_key, index = key.split("[")
|
|
117
|
+
keys.append(path_key)
|
|
118
|
+
keys.append(index[:-1])
|
|
119
|
+
else:
|
|
120
|
+
keys.append(key)
|
|
121
|
+
|
|
122
|
+
current = obj
|
|
123
|
+
for key in keys:
|
|
124
|
+
if current is None:
|
|
125
|
+
return None
|
|
126
|
+
current = current.get(key)
|
|
127
|
+
|
|
128
|
+
return current
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
def remove_functions_from_schema_form(
|
|
132
|
+
schema_form: PluginJsonSchemaForm,
|
|
133
|
+
) -> PluginJsonSchemaForm:
|
|
134
|
+
"""
|
|
135
|
+
Removes 'onSet' and 'onGet' functions from a schema form, making it suitable for serialization or scenarios where these
|
|
136
|
+
executable functions should not be included. This is particularly useful for preparing a schema for transmission over a
|
|
137
|
+
network or storing in a format that does not support functions.
|
|
138
|
+
|
|
139
|
+
:param schema_form: The schema form from which to remove functions.
|
|
140
|
+
:return: A new schema form with the functions removed.
|
|
141
|
+
"""
|
|
142
|
+
filtered_schema_form: PluginJsonSchemaForm = {}
|
|
143
|
+
|
|
144
|
+
for key, value in schema_form.items():
|
|
145
|
+
json_schema: Any = value
|
|
146
|
+
filtered_schema_form[key] = remove_functions_from_schema(json_schema)
|
|
147
|
+
|
|
148
|
+
return filtered_schema_form
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
def remove_functions_from_schema(
|
|
152
|
+
json_schema: PluginJsonSchema,
|
|
153
|
+
) -> Any:
|
|
154
|
+
"""
|
|
155
|
+
Similar to 'remove_functions_from_schema_form', but operates on a single schema object. It removes 'onSet' and 'onGet'
|
|
156
|
+
functions if present.
|
|
157
|
+
|
|
158
|
+
:param json_schema: The individual schema from which to remove functions.
|
|
159
|
+
:return: A new schema with the functions removed.
|
|
160
|
+
"""
|
|
161
|
+
filtered_schema = {k: v for k, v in json_schema.items() if k not in ["onSet", "onGet"]}
|
|
162
|
+
|
|
163
|
+
if is_object_type(filtered_schema) and "properties" in filtered_schema:
|
|
164
|
+
filtered_schema["properties"] = remove_functions_from_schema_form(
|
|
165
|
+
filtered_schema["properties"] # type: ignore
|
|
166
|
+
)
|
|
167
|
+
|
|
168
|
+
return filtered_schema
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
def schema_path_to_config_path(schema_path: str) -> str:
|
|
172
|
+
"""
|
|
173
|
+
Converts a schema path back to a configuration path by removing 'properties' and 'items' keywords, effectively reversing
|
|
174
|
+
the operation performed by 'config_path_to_schema_path'. This is useful for mapping a location within a schema to a
|
|
175
|
+
corresponding location in a configuration object or file.
|
|
176
|
+
|
|
177
|
+
:param schema_path: A dot-separated path string representing the location within a schema.
|
|
178
|
+
:return: A dot-separated path string representing the corresponding location within a configuration.
|
|
179
|
+
"""
|
|
180
|
+
path_parts = schema_path.split(".")
|
|
181
|
+
config_path_parts: list[str] = []
|
|
182
|
+
|
|
183
|
+
for part in path_parts:
|
|
184
|
+
if part != "properties" and part != "items":
|
|
185
|
+
is_numeric_index = bool(re.match(r"^\d+$", part))
|
|
186
|
+
if is_numeric_index:
|
|
187
|
+
config_path_parts.append(f"[{part}]")
|
|
188
|
+
else:
|
|
189
|
+
config_path_parts.append(part)
|
|
190
|
+
|
|
191
|
+
return ".".join(config_path_parts)
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
def generate_number_schema(value: float) -> JsonSchemaNumber:
|
|
195
|
+
"""
|
|
196
|
+
Generates a JSON schema definition for a number.
|
|
197
|
+
|
|
198
|
+
:param value: The default number value to include in the schema (unused in this function but can be utilized for default values or examples).
|
|
199
|
+
:return: A JSON schema dictionary for a number type.
|
|
200
|
+
"""
|
|
201
|
+
schema: JsonSchemaNumber = {"type": "number"}
|
|
202
|
+
return schema
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
def generate_boolean_schema(value: bool) -> JsonSchemaBoolean:
|
|
206
|
+
"""
|
|
207
|
+
Generates a JSON schema definition for a boolean.
|
|
208
|
+
|
|
209
|
+
:param value: The default boolean value to include in the schema (unused in this function but can be utilized for default values or examples).
|
|
210
|
+
:return: A JSON schema dictionary for a boolean type.
|
|
211
|
+
"""
|
|
212
|
+
schema: JsonSchemaBoolean = {"type": "boolean"}
|
|
213
|
+
return schema
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
def generate_string_schema(value: str) -> JsonSchemaString:
|
|
217
|
+
"""
|
|
218
|
+
Generates a JSON schema definition for a string, including format detection for known formats such as date-time, email, UUID, and IP addresses based on the provided value.
|
|
219
|
+
|
|
220
|
+
:param value: A string example used to infer the format of the string in the schema.
|
|
221
|
+
:return: A JSON schema dictionary for a string type, possibly including a specific format.
|
|
222
|
+
"""
|
|
223
|
+
string_object: JsonSchemaString = {"type": "string"}
|
|
224
|
+
|
|
225
|
+
iso8601_date_time = re.compile(r"^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(.\d+)?(Z|[+-]\d{2}:\d{2})?)?$")
|
|
226
|
+
|
|
227
|
+
time_with_seconds = re.match(r"^([01]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$", value)
|
|
228
|
+
time_without_seconds = re.match(r"^([01]?[0-9]|2[0-3]):([0-5][0-9])$", value)
|
|
229
|
+
|
|
230
|
+
if iso8601_date_time.match(value):
|
|
231
|
+
string_object["format"] = "date-time"
|
|
232
|
+
elif time_with_seconds or time_without_seconds:
|
|
233
|
+
string_object["format"] = "time"
|
|
234
|
+
|
|
235
|
+
if re.match(r"^\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b$", value):
|
|
236
|
+
string_object["format"] = "email"
|
|
237
|
+
|
|
238
|
+
if re.match(
|
|
239
|
+
r"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
|
|
240
|
+
value,
|
|
241
|
+
):
|
|
242
|
+
string_object["format"] = "uuid"
|
|
243
|
+
|
|
244
|
+
if re.match(r"^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$", value):
|
|
245
|
+
string_object["format"] = "ipv4"
|
|
246
|
+
|
|
247
|
+
if re.match(r"^\s*([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4})\s*$", value):
|
|
248
|
+
string_object["format"] = "ipv6"
|
|
249
|
+
|
|
250
|
+
return string_object
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
def generate_enum_schema(value: list[str]) -> JsonSchemaEnum:
|
|
254
|
+
"""
|
|
255
|
+
Generates a JSON schema definition for an enumeration, containing a set of predefined options.
|
|
256
|
+
|
|
257
|
+
:param value: A list of strings representing the possible values for the enumeration.
|
|
258
|
+
:return: A JSON schema dictionary for an enum type.
|
|
259
|
+
"""
|
|
260
|
+
schema: JsonSchemaEnum = {"type": "string", "enum": value}
|
|
261
|
+
return schema
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
def generate_object_schema(value: dict[str, Any]) -> JsonSchemaObject:
|
|
265
|
+
"""
|
|
266
|
+
Generates a JSON schema definition for an object, including properties based on the provided dictionary. Each key-value pair in the dictionary is treated as a property name and value, respectively.
|
|
267
|
+
|
|
268
|
+
:param value: A dictionary representing the structure and default values of the object to be defined in the schema.
|
|
269
|
+
:return: A JSON schema dictionary for an object type, including properties definitions.
|
|
270
|
+
"""
|
|
271
|
+
if not value.keys():
|
|
272
|
+
return {"type": "object"}
|
|
273
|
+
|
|
274
|
+
properties = {}
|
|
275
|
+
for key, val in value.items():
|
|
276
|
+
schema = generate_schema(val)
|
|
277
|
+
|
|
278
|
+
schema["key"] = key
|
|
279
|
+
schema["description"] = schema.get("description", f"Description for {key}")
|
|
280
|
+
schema["required"] = schema.get("required", True)
|
|
281
|
+
schema["readonly"] = schema.get("readonly", False)
|
|
282
|
+
|
|
283
|
+
properties[key] = schema
|
|
284
|
+
|
|
285
|
+
return {"type": "object", "properties": properties}
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
def generate_object_schema_with_buttons(
|
|
289
|
+
value: dict[str, Any], buttons: list[dict[str, Any]]
|
|
290
|
+
) -> JsonSchemaObjectWithButtons:
|
|
291
|
+
"""
|
|
292
|
+
Generates a JSON schema definition for an object, similar to `generate_object_schema`, but also includes definitions for one or more action buttons that can be associated with the object.
|
|
293
|
+
|
|
294
|
+
:param value: A dictionary representing the structure and default values of the object.
|
|
295
|
+
:param buttons: A list of dictionaries, where each dictionary defines an action button associated with the object.
|
|
296
|
+
:return: A JSON schema dictionary for an object type, including properties and buttons definitions.
|
|
297
|
+
"""
|
|
298
|
+
base_schema: Any = generate_object_schema(value)
|
|
299
|
+
if buttons:
|
|
300
|
+
base_schema["buttons"] = buttons
|
|
301
|
+
return base_schema
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
def generate_array_schema(
|
|
305
|
+
array: Union[list[str], list[int], list[bool], list[dict[str, Any]]],
|
|
306
|
+
) -> JsonSchemaArray:
|
|
307
|
+
"""
|
|
308
|
+
Generates a JSON schema definition for an array. The type of items in the array is determined by inspecting the provided list. Supports arrays of objects, as well as arrays of primitive types.
|
|
309
|
+
|
|
310
|
+
:param array: A list containing example items that the array will hold. Used to infer the item type for the schema.
|
|
311
|
+
:return: A JSON schema dictionary for an array type.
|
|
312
|
+
"""
|
|
313
|
+
if len(array) == 0:
|
|
314
|
+
schema: Any = {"type": "array"}
|
|
315
|
+
return schema
|
|
316
|
+
|
|
317
|
+
all_objects = all(isinstance(item, dict) for item in array)
|
|
318
|
+
all_strings = all(isinstance(item, str) for item in array)
|
|
319
|
+
all_numbers = all(isinstance(item, (int, float)) for item in array)
|
|
320
|
+
|
|
321
|
+
if all_objects:
|
|
322
|
+
item_schemas = [generate_schema(item) for item in array]
|
|
323
|
+
schema: Any = {
|
|
324
|
+
"type": "array",
|
|
325
|
+
"items": {"type": "object", "properties": item_schemas[0]},
|
|
326
|
+
}
|
|
327
|
+
return schema
|
|
328
|
+
|
|
329
|
+
if all_strings:
|
|
330
|
+
schema: Any = {"type": "array", "items": {"type": "string"}}
|
|
331
|
+
return schema
|
|
332
|
+
|
|
333
|
+
if all_numbers:
|
|
334
|
+
schema: Any = {"type": "array", "items": {"type": "number"}}
|
|
335
|
+
return schema
|
|
336
|
+
|
|
337
|
+
return {"type": "array", "items": {"type": "boolean"}}
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
def generate_schema(value: Any) -> JsonSchema:
|
|
341
|
+
"""
|
|
342
|
+
Determines the appropriate JSON schema based on the Python type of the provided value. This is a generic entry point for schema generation that delegates to specific functions based on the value type.
|
|
343
|
+
|
|
344
|
+
:param value: A value whose type is used to generate the corresponding JSON schema.
|
|
345
|
+
:return: A JSON schema dictionary appropriate to the type of the provided value.
|
|
346
|
+
"""
|
|
347
|
+
if isinstance(value, (int, float)):
|
|
348
|
+
return generate_number_schema(value)
|
|
349
|
+
elif isinstance(value, bool):
|
|
350
|
+
return generate_boolean_schema(value)
|
|
351
|
+
elif isinstance(value, str):
|
|
352
|
+
return generate_string_schema(value)
|
|
353
|
+
elif isinstance(value, list):
|
|
354
|
+
val: Any = value
|
|
355
|
+
return generate_array_schema(val)
|
|
356
|
+
elif isinstance(value, dict):
|
|
357
|
+
val: Any = value
|
|
358
|
+
return generate_object_schema(val)
|
|
359
|
+
else:
|
|
360
|
+
raise TypeError(f"Invalid JSON value: {value}")
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
def is_string_type(json_schema: dict[str, Any]) -> bool:
|
|
364
|
+
return json_schema.get("type") == "string" and "enum" not in json_schema
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
def is_number_type(json_schema: dict[str, Any]) -> bool:
|
|
368
|
+
return json_schema.get("type") == "number" and "enum" not in json_schema
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
def is_boolean_type(json_schema: dict[str, Any]) -> bool:
|
|
372
|
+
return json_schema.get("type") == "boolean" and "enum" not in json_schema
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
def is_enum_type(json_schema: dict[str, Any]) -> bool:
|
|
376
|
+
return json_schema.get("type") == "string" and "enum" in json_schema
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
def is_object_type(json_schema: dict[str, Any]) -> bool:
|
|
380
|
+
return json_schema.get("type") == "object"
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
def is_object_type_with_buttons(json_schema: Any) -> bool:
|
|
384
|
+
return is_object_type(json_schema) and "buttons" in json_schema
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
def is_array_type(json_schema: dict[str, Any]) -> bool:
|
|
388
|
+
return json_schema.get("type") == "array"
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
def is_primitive_type(value: dict[str, Any]) -> bool:
|
|
392
|
+
return "onGet" in value or "onSet" in value
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
from typing import Any, Optional
|
|
2
|
+
|
|
3
|
+
from camera_storage import CameraStorage
|
|
4
|
+
from camera_ui_types import PluginJsonSchemaForm
|
|
5
|
+
from logger import PluginLogger
|
|
6
|
+
from plugin_api import PluginAPI
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class StorageController:
|
|
10
|
+
def __init__(self, api: PluginAPI, logger: PluginLogger) -> None:
|
|
11
|
+
self.__logger = logger
|
|
12
|
+
self.__api = api
|
|
13
|
+
self.__camera_storages: dict[str, CameraStorage] = {}
|
|
14
|
+
|
|
15
|
+
def create_camera_storage(
|
|
16
|
+
self,
|
|
17
|
+
instance: Any,
|
|
18
|
+
camera_id: str,
|
|
19
|
+
schema: Optional[PluginJsonSchemaForm] = None,
|
|
20
|
+
) -> CameraStorage:
|
|
21
|
+
"""
|
|
22
|
+
Creates or retrieves an existing camera storage instance for the specified camera ID. If a storage instance does not already exist, it is initialized and stored.
|
|
23
|
+
|
|
24
|
+
:param instance: The plugin instance associated with this camera storage.
|
|
25
|
+
:param camera_id: A unique identifier for the camera.
|
|
26
|
+
:param schema: The JSON schema form defining the data structure for this camera's storage.
|
|
27
|
+
:return: An instance of CameraStorage for the specified camera.
|
|
28
|
+
"""
|
|
29
|
+
if schema is None:
|
|
30
|
+
schema = {}
|
|
31
|
+
camera_storage = self.__camera_storages.get(camera_id) or CameraStorage(
|
|
32
|
+
self.__api, self.__logger, instance, camera_id, schema
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
camera_storage.initialize_storage()
|
|
36
|
+
|
|
37
|
+
self.__camera_storages[camera_id] = camera_storage
|
|
38
|
+
|
|
39
|
+
return camera_storage
|
|
40
|
+
|
|
41
|
+
def get_camera_storage(self, camera_id: str) -> Optional[CameraStorage]:
|
|
42
|
+
"""
|
|
43
|
+
Retrieves a camera storage instance for the specified camera ID, if one exists.
|
|
44
|
+
|
|
45
|
+
:param camera_id: The unique identifier for the camera whose storage instance is being requested.
|
|
46
|
+
:return: The CameraStorage instance for the specified camera, or None if no such instance exists.
|
|
47
|
+
"""
|
|
48
|
+
return self.__camera_storages.get(camera_id)
|
|
49
|
+
|
|
50
|
+
def remove_camera_storage(self, camera_id: str) -> None:
|
|
51
|
+
"""
|
|
52
|
+
Removes the camera storage instance associated with the specified camera ID, if it exists.
|
|
53
|
+
|
|
54
|
+
:param camera_id: The unique identifier for the camera whose storage instance should be removed.
|
|
55
|
+
"""
|
|
56
|
+
if camera_id in self.__camera_storages:
|
|
57
|
+
del self.__camera_storages[camera_id]
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
from typing import (
|
|
3
|
+
Any,
|
|
4
|
+
Callable,
|
|
5
|
+
Union,
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
from camera_ui_types import (
|
|
9
|
+
AudioSetEvent,
|
|
10
|
+
BatterySetEvent,
|
|
11
|
+
Camera,
|
|
12
|
+
CameraDelegate,
|
|
13
|
+
CameraPrebufferDelegate,
|
|
14
|
+
CameraPTZDelegate,
|
|
15
|
+
Container,
|
|
16
|
+
DoorbellSetEvent,
|
|
17
|
+
FrameData,
|
|
18
|
+
FrameMetadata,
|
|
19
|
+
ImageOptions,
|
|
20
|
+
LightSetEvent,
|
|
21
|
+
MotionSetEvent,
|
|
22
|
+
ObjectSetEvent,
|
|
23
|
+
PluginContract,
|
|
24
|
+
SirenSetEvent,
|
|
25
|
+
StateValues,
|
|
26
|
+
)
|
|
27
|
+
from typing_extensions import Literal, NotRequired, TypedDict
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class PLUGIN_STATUS(Enum):
|
|
31
|
+
READY = "ready"
|
|
32
|
+
STARTING = "starting"
|
|
33
|
+
STARTED = "started"
|
|
34
|
+
STOPPED = "stopped"
|
|
35
|
+
ERROR = "error"
|
|
36
|
+
UNKNOWN = "unknown"
|
|
37
|
+
DISABLED = "disabled"
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class PLUGIN_COMMAND(Enum):
|
|
41
|
+
START = "start"
|
|
42
|
+
STOP = "stop"
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class PluginStorage(TypedDict):
|
|
46
|
+
installPath: str
|
|
47
|
+
storagePath: str
|
|
48
|
+
configFile: str
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
class PluginInfo(TypedDict):
|
|
52
|
+
id: str
|
|
53
|
+
name: str
|
|
54
|
+
contract: PluginContract
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class ProcessLoadMessage(TypedDict):
|
|
58
|
+
cameras: list[Camera]
|
|
59
|
+
plugin: PluginInfo
|
|
60
|
+
storage: PluginStorage
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
class ProcessMessage(TypedDict, total=False):
|
|
64
|
+
type: str
|
|
65
|
+
data: ProcessLoadMessage
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
class ProcessResponse(TypedDict, total=False):
|
|
69
|
+
type: str
|
|
70
|
+
data: str
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
ProxyType = Literal["device", "plugin", "camera"]
|
|
74
|
+
|
|
75
|
+
ClientType = Literal[
|
|
76
|
+
"cameraFn",
|
|
77
|
+
"pluginFn",
|
|
78
|
+
"deviceFn",
|
|
79
|
+
"storageFn",
|
|
80
|
+
"cameraDelegate",
|
|
81
|
+
"prebufferDelegate",
|
|
82
|
+
"ptzDelegate",
|
|
83
|
+
]
|
|
84
|
+
|
|
85
|
+
MessageType = Literal["request", "reply"]
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
class QueueItem(TypedDict):
|
|
89
|
+
message: "ProxyMessageStructure"
|
|
90
|
+
resolve: Callable[[Any], None]
|
|
91
|
+
reject: Callable[["RemoteError"], None]
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
class DeserializedError(TypedDict):
|
|
95
|
+
name: str
|
|
96
|
+
message: str
|
|
97
|
+
stack: str
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
class RemoteError(Exception):
|
|
101
|
+
def __init__(self, error: DeserializedError, cause: "ProxyMessageStructure"):
|
|
102
|
+
super().__init__(error["message"])
|
|
103
|
+
|
|
104
|
+
self.name = error["name"]
|
|
105
|
+
self.message: str = error["message"]
|
|
106
|
+
self.cause = cause
|
|
107
|
+
|
|
108
|
+
if error["stack"] and error["stack"] != "":
|
|
109
|
+
self.stack = error["stack"]
|
|
110
|
+
|
|
111
|
+
def __str__(self):
|
|
112
|
+
return f"{self.name}: {self.message}"
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
class ProxyMessageStructure(TypedDict):
|
|
116
|
+
requestId: str
|
|
117
|
+
cameraId: NotRequired[str]
|
|
118
|
+
targetId: str
|
|
119
|
+
targetName: NotRequired[str]
|
|
120
|
+
pluginId: str
|
|
121
|
+
type: MessageType
|
|
122
|
+
proxy: ProxyType
|
|
123
|
+
client: ClientType
|
|
124
|
+
fn: str
|
|
125
|
+
args: list[Any]
|
|
126
|
+
timeout: int
|
|
127
|
+
timestamp: int
|
|
128
|
+
response: NotRequired[Any]
|
|
129
|
+
error: NotRequired[DeserializedError]
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
class AudioStreamOptions(TypedDict, total=False):
|
|
133
|
+
enabled: bool
|
|
134
|
+
codec: str
|
|
135
|
+
bitrate: int
|
|
136
|
+
sampleRate: int
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
class VideoStreamOptions(TypedDict, total=False):
|
|
140
|
+
codec: str
|
|
141
|
+
width: int
|
|
142
|
+
height: int
|
|
143
|
+
bitrate: int
|
|
144
|
+
fps: int
|
|
145
|
+
idrInterval: int
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
class StreamInfo(TypedDict):
|
|
149
|
+
audio: AudioStreamOptions
|
|
150
|
+
video: VideoStreamOptions
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
class ProcessPrebufferedImageRequest(TypedDict):
|
|
154
|
+
frameData: FrameData
|
|
155
|
+
metadata: FrameMetadata
|
|
156
|
+
options: ImageOptions
|
|
157
|
+
prebufferDuration: int
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
class ConnectData(TypedDict):
|
|
161
|
+
cameraId: str
|
|
162
|
+
pluginId: NotRequired[str]
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
class DisconnectData(ConnectData): ...
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
class RebootData(ConnectData): ...
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
class StreamInfoData(ConnectData):
|
|
172
|
+
sourceName: str
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
class FrameMetadataData(ConnectData): ...
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
class FfmpegPathData(ConnectData): ...
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
class IceServersData(ConnectData): ...
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
class UpdateStateData(ConnectData):
|
|
185
|
+
stateName: Literal["light", "motion", "audio", "object", "doorbell", "siren", "battery"]
|
|
186
|
+
eventData: Union[
|
|
187
|
+
LightSetEvent,
|
|
188
|
+
MotionSetEvent,
|
|
189
|
+
AudioSetEvent,
|
|
190
|
+
ObjectSetEvent,
|
|
191
|
+
DoorbellSetEvent,
|
|
192
|
+
SirenSetEvent,
|
|
193
|
+
BatterySetEvent,
|
|
194
|
+
]
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
class UpdatePrebufferStateData(ConnectData):
|
|
198
|
+
sourceId: str
|
|
199
|
+
container: Container
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
class RefreshStatesData(ConnectData): ...
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
class SnapshotData(ConnectData):
|
|
206
|
+
forceNew: NotRequired[bool]
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
class IsPrebufferingData(TypedDict):
|
|
210
|
+
sourceName: str
|
|
211
|
+
container: Container
|
|
212
|
+
cameraId: str
|
|
213
|
+
pluginId: NotRequired[str]
|
|
214
|
+
state: bool
|
|
215
|
+
url: NotRequired[str]
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
class RefreshStatesReturnData(TypedDict):
|
|
219
|
+
camera: Camera
|
|
220
|
+
states: StateValues
|
|
221
|
+
cameraState: bool
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
CameraDeviceProxyMethodNames = Literal[
|
|
225
|
+
"connect",
|
|
226
|
+
"disconnect",
|
|
227
|
+
"getFfmpegPath",
|
|
228
|
+
"getIceServers",
|
|
229
|
+
"updateState",
|
|
230
|
+
"updatePrebufferState",
|
|
231
|
+
"addCameraSource",
|
|
232
|
+
"removeCameraSource",
|
|
233
|
+
"updateCameraSource",
|
|
234
|
+
"refreshStates",
|
|
235
|
+
]
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
class CameraDelegates(TypedDict):
|
|
239
|
+
cameraDelegate: CameraDelegate
|
|
240
|
+
prebufferDelegate: CameraPrebufferDelegate
|
|
241
|
+
ptzDelegate: CameraPTZDelegate
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
Delegates = Literal[
|
|
245
|
+
"cameraDelegate",
|
|
246
|
+
"prebufferDelegate",
|
|
247
|
+
"ptzDelegate",
|
|
248
|
+
]
|