camera.ui3 0.0.34-alpha.5 → 0.0.35-test.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.
Files changed (541) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/CONTRIBUTING.md +1 -0
  3. package/LICENSE.md +22 -0
  4. package/README.md +1 -0
  5. package/dist/{server/bin/cameraui.d.ts → cameraui.d.ts} +24 -17
  6. package/dist/{server/bin/cameraui.js → cameraui.js} +195 -208
  7. package/dist/cameraui.js.map +1 -0
  8. package/dist/installer/base.js.map +1 -0
  9. package/dist/{server/bin/installer → installer}/darwin.d.ts +0 -8
  10. package/dist/{server/bin/installer → installer}/darwin.js +9 -49
  11. package/dist/installer/darwin.js.map +1 -0
  12. package/dist/{server/bin/installer → installer}/freebsd.js +3 -2
  13. package/dist/installer/freebsd.js.map +1 -0
  14. package/dist/{server/bin/installer → installer}/linux.d.ts +1 -1
  15. package/dist/{server/bin/installer → installer}/linux.js +9 -24
  16. package/dist/installer/linux.js.map +1 -0
  17. package/dist/{server/bin/installer → installer}/win32.js +4 -2
  18. package/dist/installer/win32.js.map +1 -0
  19. package/dist/{server/bin/logger.js → logger.js} +2 -2
  20. package/dist/logger.js.map +1 -0
  21. package/dist/manager.d.ts +26 -0
  22. package/dist/manager.js +203 -0
  23. package/dist/manager.js.map +1 -0
  24. package/nodemon.json +14 -0
  25. package/package.json +21 -89
  26. package/dist/interface/@babel.l0sNRNKZ.0.0.34-alpha.5.js +0 -1
  27. package/dist/interface/@intlify.DXtFJcML.0.0.34-alpha.5.js +0 -15
  28. package/dist/interface/@mdi.C1UTQKuc.0.0.34-alpha.5.js +0 -1
  29. package/dist/interface/@react-dnd.CcwRs9xb.0.0.34-alpha.5.js +0 -1
  30. package/dist/interface/@socket.io.Dkula2eQ.0.0.34-alpha.5.js +0 -1
  31. package/dist/interface/@tanstack.B92K4jky.0.0.34-alpha.5.js +0 -1
  32. package/dist/interface/@turf.l0sNRNKZ.0.0.34-alpha.5.js +0 -1
  33. package/dist/interface/@vee-validate.CO6TzE0f.0.0.34-alpha.5.js +0 -5
  34. package/dist/interface/@vue.CA7eQC0C.0.0.34-alpha.5.js +0 -17
  35. package/dist/interface/@vueform.BisuKBst.0.0.34-alpha.5.js +0 -1
  36. package/dist/interface/@vueuse.MCSqyj_O.0.0.34-alpha.5.js +0 -1
  37. package/dist/interface/@xterm.GAbfxM_B.0.0.34-alpha.5.js +0 -66
  38. package/dist/interface/Account.DpNjtlWo.0.0.34-alpha.5.js +0 -1
  39. package/dist/interface/Adminpanel.BfVdSL09.0.0.34-alpha.5.js +0 -2
  40. package/dist/interface/Appearance.CbP_IKMg.0.0.34-alpha.5.js +0 -1
  41. package/dist/interface/Backup.Op0zdFf6.0.0.34-alpha.5.js +0 -1
  42. package/dist/interface/Camera.DS_9ofaG.0.0.34-alpha.5.js +0 -1
  43. package/dist/interface/Cameras.DPB_PsWl.0.0.34-alpha.5.js +0 -1
  44. package/dist/interface/Camview.OjtdKeCN.0.0.34-alpha.5.js +0 -1
  45. package/dist/interface/Config.DNjOF6kZ.0.0.34-alpha.5.js +0 -1
  46. package/dist/interface/Console.DVsT_dtb.0.0.34-alpha.5.js +0 -4
  47. package/dist/interface/FirstSteps.5szuHndh.0.0.34-alpha.5.js +0 -1
  48. package/dist/interface/NewCamera.CnNUoIB5.0.0.34-alpha.5.js +0 -448
  49. package/dist/interface/Plugin.DpOqARwa.0.0.34-alpha.5.js +0 -1
  50. package/dist/interface/Plugins.f1G5TFlw.0.0.34-alpha.5.js +0 -1
  51. package/dist/interface/Recordings.DY4YbnIj.0.0.34-alpha.5.js +0 -1
  52. package/dist/interface/Recordings.DgUZFsbb.0.0.34-alpha.5.js +0 -1
  53. package/dist/interface/Settings.D7X-VK7t.0.0.34-alpha.5.js +0 -1
  54. package/dist/interface/System.CRLXKRxs.0.0.34-alpha.5.js +0 -4
  55. package/dist/interface/User.Dp3KZyIp.0.0.34-alpha.5.js +0 -1
  56. package/dist/interface/VConfigEditor.vue_vue_type_script_setup_true_lang.vlbkJcrR.0.0.34-alpha.5.js +0 -2
  57. package/dist/interface/VConsole.BdzOs_Bu.0.0.34-alpha.5.js +0 -1
  58. package/dist/interface/VPlayer.D-Pw-5Hr.0.0.34-alpha.5.js +0 -4
  59. package/dist/interface/VPluginCard.CmD9ACFH.0.0.34-alpha.5.js +0 -4
  60. package/dist/interface/ace-builds.BzgOTKpx.0.0.34-alpha.5.js +0 -970
  61. package/dist/interface/apexcharts.BvwZuuWW.0.0.34-alpha.5.js +0 -795
  62. package/dist/interface/assets/@vueform.0.0.34-alpha.5.CroAHJs8.css +0 -1
  63. package/dist/interface/assets/@xterm.0.0.34-alpha.5.CFbL2ovg.css +0 -32
  64. package/dist/interface/assets/Account.0.0.34-alpha.5.J7oAjogS.css +0 -1
  65. package/dist/interface/assets/Adminpanel.0.0.34-alpha.5.a3t1v3MB.css +0 -1
  66. package/dist/interface/assets/Backup.0.0.34-alpha.5.CX0rT0QJ.css +0 -1
  67. package/dist/interface/assets/Camera.0.0.34-alpha.5.D1I-fW4q.css +0 -1
  68. package/dist/interface/assets/Cameras.0.0.34-alpha.5.Buf1Dgce.css +0 -1
  69. package/dist/interface/assets/Camview.0.0.34-alpha.5.B7Cja2ry.css +0 -1
  70. package/dist/interface/assets/Config.0.0.34-alpha.5.DNGo2krN.css +0 -1
  71. package/dist/interface/assets/Console.0.0.34-alpha.5.Bh8l9QnM.css +0 -1
  72. package/dist/interface/assets/FirstSteps.0.0.34-alpha.5.sPEcItZ6.css +0 -1
  73. package/dist/interface/assets/NewCamera.0.0.34-alpha.5.Cq8GzeJ7.css +0 -1
  74. package/dist/interface/assets/Plugin.0.0.34-alpha.5.DJbgaQc1.css +0 -1
  75. package/dist/interface/assets/Plugins.0.0.34-alpha.5.DXSoO9M1.css +0 -1
  76. package/dist/interface/assets/Settings.0.0.34-alpha.5.CVmui2kE.css +0 -1
  77. package/dist/interface/assets/User.0.0.34-alpha.5.BiGtIFqt.css +0 -1
  78. package/dist/interface/assets/VConsole.0.0.34-alpha.5.BCqKHpmJ.css +0 -1
  79. package/dist/interface/assets/VPlayer.0.0.34-alpha.5.DNtDNhfg.css +0 -1
  80. package/dist/interface/assets/VPluginCard.0.0.34-alpha.5.C8Lj6X-J.css +0 -1
  81. package/dist/interface/assets/highlight.0.0.34-alpha.5.Ch2EwETz.css +0 -1
  82. package/dist/interface/assets/logo-256.0.0.34-alpha.5.BCQk9H1-.png +0 -0
  83. package/dist/interface/assets/logo-512.0.0.34-alpha.5.DLKVOU2S.png +0 -0
  84. package/dist/interface/assets/logo.0.0.34-alpha.5.DmEiRk0z.png +0 -0
  85. package/dist/interface/assets/main.0.0.34-alpha.5.DNhh__S1.css +0 -1
  86. package/dist/interface/assets/mode-json.0.0.34-alpha.5.Br7xisR1.js +0 -275
  87. package/dist/interface/assets/mode-yaml.0.0.34-alpha.5.CIYL8U3d.js +0 -395
  88. package/dist/interface/assets/vue3-toastify.0.0.34-alpha.5.DHXAGmwn.css +0 -1
  89. package/dist/interface/assets/vuetify.0.0.34-alpha.5.CgGsw6iO.css +0 -5
  90. package/dist/interface/axios.C-n2IhIP.0.0.34-alpha.5.js +0 -6
  91. package/dist/interface/birpc.l0sNRNKZ.0.0.34-alpha.5.js +0 -1
  92. package/dist/interface/browserconfig.xml +0 -11
  93. package/dist/interface/compare-versions.DqEOhma6.0.0.34-alpha.5.js +0 -1
  94. package/dist/interface/dijkstrajs.D_NXgYpA.0.0.34-alpha.5.js +0 -1
  95. package/dist/interface/dnd-core.DfCeUEJG.0.0.34-alpha.5.js +0 -1
  96. package/dist/interface/draggabilly.B0aLkTy2.0.0.34-alpha.5.js +0 -6
  97. package/dist/interface/engine.io-client.CVSa3JNO.0.0.34-alpha.5.js +0 -1
  98. package/dist/interface/engine.io-parser.BiEtp6m2.0.0.34-alpha.5.js +0 -1
  99. package/dist/interface/entities.C20TfXL6.0.0.34-alpha.5.js +0 -1
  100. package/dist/interface/ev-emitter.iUkvFOmA.0.0.34-alpha.5.js +0 -1
  101. package/dist/interface/fast-deep-equal.CdBrRDb2.0.0.34-alpha.5.js +0 -1
  102. package/dist/interface/fonts/Inter/Inter-Regular.ttf +0 -0
  103. package/dist/interface/get-size.D1dS-IaP.0.0.34-alpha.5.js +0 -5
  104. package/dist/interface/highlight.js.BtDPwuhi.0.0.34-alpha.5.js +0 -2
  105. package/dist/interface/hookable.B8xFkYCm.0.0.34-alpha.5.js +0 -1
  106. package/dist/interface/index.html +0 -374
  107. package/dist/interface/linkify-it.DFQCoaRr.0.0.34-alpha.5.js +0 -1
  108. package/dist/interface/main.CHLTWOfy.0.0.34-alpha.5.js +0 -5
  109. package/dist/interface/manifest.webmanifest +0 -1
  110. package/dist/interface/markdown-it.CT9MNFia.0.0.34-alpha.5.js +0 -15
  111. package/dist/interface/mdurl.k9Sl0PQj.0.0.34-alpha.5.js +0 -2
  112. package/dist/interface/nprogress.Dy-fdKdR.0.0.34-alpha.5.js +0 -2
  113. package/dist/interface/perfect-debounce.Cp2ysxOb.0.0.34-alpha.5.js +0 -1
  114. package/dist/interface/pinia.a0-UAJ60.0.0.34-alpha.5.js +0 -5
  115. package/dist/interface/plugins._gNZi2uU.0.0.34-alpha.5.js +0 -1
  116. package/dist/interface/point-in-polygon-hao.l0sNRNKZ.0.0.34-alpha.5.js +0 -1
  117. package/dist/interface/punycode.js.Dj65hjkv.0.0.34-alpha.5.js +0 -1
  118. package/dist/interface/pwa/apple-splash-landscape-dark-1136x640.png +0 -0
  119. package/dist/interface/pwa/apple-splash-landscape-dark-1334x750.png +0 -0
  120. package/dist/interface/pwa/apple-splash-landscape-dark-1792x828.png +0 -0
  121. package/dist/interface/pwa/apple-splash-landscape-dark-2048x1536.png +0 -0
  122. package/dist/interface/pwa/apple-splash-landscape-dark-2160x1620.png +0 -0
  123. package/dist/interface/pwa/apple-splash-landscape-dark-2208x1242.png +0 -0
  124. package/dist/interface/pwa/apple-splash-landscape-dark-2224x1668.png +0 -0
  125. package/dist/interface/pwa/apple-splash-landscape-dark-2388x1668.png +0 -0
  126. package/dist/interface/pwa/apple-splash-landscape-dark-2436x1125.png +0 -0
  127. package/dist/interface/pwa/apple-splash-landscape-dark-2532x1170.png +0 -0
  128. package/dist/interface/pwa/apple-splash-landscape-dark-2556x1179.png +0 -0
  129. package/dist/interface/pwa/apple-splash-landscape-dark-2688x1242.png +0 -0
  130. package/dist/interface/pwa/apple-splash-landscape-dark-2732x2048.png +0 -0
  131. package/dist/interface/pwa/apple-splash-landscape-dark-2778x1284.png +0 -0
  132. package/dist/interface/pwa/apple-splash-landscape-dark-2796x1290.png +0 -0
  133. package/dist/interface/pwa/apple-splash-landscape-light-1136x640.png +0 -0
  134. package/dist/interface/pwa/apple-splash-landscape-light-1334x750.png +0 -0
  135. package/dist/interface/pwa/apple-splash-landscape-light-1792x828.png +0 -0
  136. package/dist/interface/pwa/apple-splash-landscape-light-2048x1536.png +0 -0
  137. package/dist/interface/pwa/apple-splash-landscape-light-2160x1620.png +0 -0
  138. package/dist/interface/pwa/apple-splash-landscape-light-2208x1242.png +0 -0
  139. package/dist/interface/pwa/apple-splash-landscape-light-2224x1668.png +0 -0
  140. package/dist/interface/pwa/apple-splash-landscape-light-2388x1668.png +0 -0
  141. package/dist/interface/pwa/apple-splash-landscape-light-2436x1125.png +0 -0
  142. package/dist/interface/pwa/apple-splash-landscape-light-2532x1170.png +0 -0
  143. package/dist/interface/pwa/apple-splash-landscape-light-2556x1179.png +0 -0
  144. package/dist/interface/pwa/apple-splash-landscape-light-2688x1242.png +0 -0
  145. package/dist/interface/pwa/apple-splash-landscape-light-2732x2048.png +0 -0
  146. package/dist/interface/pwa/apple-splash-landscape-light-2778x1284.png +0 -0
  147. package/dist/interface/pwa/apple-splash-landscape-light-2796x1290.png +0 -0
  148. package/dist/interface/pwa/apple-splash-portrait-dark-1125x2436.png +0 -0
  149. package/dist/interface/pwa/apple-splash-portrait-dark-1170x2532.png +0 -0
  150. package/dist/interface/pwa/apple-splash-portrait-dark-1179x2556.png +0 -0
  151. package/dist/interface/pwa/apple-splash-portrait-dark-1242x2208.png +0 -0
  152. package/dist/interface/pwa/apple-splash-portrait-dark-1242x2688.png +0 -0
  153. package/dist/interface/pwa/apple-splash-portrait-dark-1284x2778.png +0 -0
  154. package/dist/interface/pwa/apple-splash-portrait-dark-1290x2796.png +0 -0
  155. package/dist/interface/pwa/apple-splash-portrait-dark-1536x2048.png +0 -0
  156. package/dist/interface/pwa/apple-splash-portrait-dark-1620x2160.png +0 -0
  157. package/dist/interface/pwa/apple-splash-portrait-dark-1668x2224.png +0 -0
  158. package/dist/interface/pwa/apple-splash-portrait-dark-1668x2388.png +0 -0
  159. package/dist/interface/pwa/apple-splash-portrait-dark-2048x2732.png +0 -0
  160. package/dist/interface/pwa/apple-splash-portrait-dark-640x1136.png +0 -0
  161. package/dist/interface/pwa/apple-splash-portrait-dark-750x1334.png +0 -0
  162. package/dist/interface/pwa/apple-splash-portrait-dark-828x1792.png +0 -0
  163. package/dist/interface/pwa/apple-splash-portrait-light-1125x2436.png +0 -0
  164. package/dist/interface/pwa/apple-splash-portrait-light-1170x2532.png +0 -0
  165. package/dist/interface/pwa/apple-splash-portrait-light-1179x2556.png +0 -0
  166. package/dist/interface/pwa/apple-splash-portrait-light-1242x2208.png +0 -0
  167. package/dist/interface/pwa/apple-splash-portrait-light-1242x2688.png +0 -0
  168. package/dist/interface/pwa/apple-splash-portrait-light-1284x2778.png +0 -0
  169. package/dist/interface/pwa/apple-splash-portrait-light-1290x2796.png +0 -0
  170. package/dist/interface/pwa/apple-splash-portrait-light-1536x2048.png +0 -0
  171. package/dist/interface/pwa/apple-splash-portrait-light-1620x2160.png +0 -0
  172. package/dist/interface/pwa/apple-splash-portrait-light-1668x2224.png +0 -0
  173. package/dist/interface/pwa/apple-splash-portrait-light-1668x2388.png +0 -0
  174. package/dist/interface/pwa/apple-splash-portrait-light-2048x2732.png +0 -0
  175. package/dist/interface/pwa/apple-splash-portrait-light-640x1136.png +0 -0
  176. package/dist/interface/pwa/apple-splash-portrait-light-750x1334.png +0 -0
  177. package/dist/interface/pwa/apple-splash-portrait-light-828x1792.png +0 -0
  178. package/dist/interface/pwa/apple-touch-icon-180x180.png +0 -0
  179. package/dist/interface/pwa/favicon-16.ico +0 -0
  180. package/dist/interface/pwa/favicon-32.ico +0 -0
  181. package/dist/interface/pwa/favicon-48.ico +0 -0
  182. package/dist/interface/pwa/favicon-64.ico +0 -0
  183. package/dist/interface/pwa/logo.svg +0 -1
  184. package/dist/interface/pwa/maskable-icon-1240x600.png +0 -0
  185. package/dist/interface/pwa/maskable-icon-512x512.png +0 -0
  186. package/dist/interface/pwa/maskable-icon-620x300.png +0 -0
  187. package/dist/interface/pwa/pwa-1024x1024.png +0 -0
  188. package/dist/interface/pwa/pwa-120x120.png +0 -0
  189. package/dist/interface/pwa/pwa-144x144.png +0 -0
  190. package/dist/interface/pwa/pwa-152x152.png +0 -0
  191. package/dist/interface/pwa/pwa-167x167.png +0 -0
  192. package/dist/interface/pwa/pwa-180x180.png +0 -0
  193. package/dist/interface/pwa/pwa-192x192.png +0 -0
  194. package/dist/interface/pwa/pwa-24x24.png +0 -0
  195. package/dist/interface/pwa/pwa-300x300.png +0 -0
  196. package/dist/interface/pwa/pwa-36x36.png +0 -0
  197. package/dist/interface/pwa/pwa-48x48.png +0 -0
  198. package/dist/interface/pwa/pwa-50x50.png +0 -0
  199. package/dist/interface/pwa/pwa-64x64.png +0 -0
  200. package/dist/interface/pwa/pwa-72x72.png +0 -0
  201. package/dist/interface/pwa/pwa-88x88.png +0 -0
  202. package/dist/interface/pwa/pwa-96x96.png +0 -0
  203. package/dist/interface/qrcode.DimXivtc.0.0.34-alpha.5.js +0 -8
  204. package/dist/interface/react-dnd-html5-backend.1HQjlkwI.0.0.34-alpha.5.js +0 -2
  205. package/dist/interface/react-dnd-touch-backend.DE4RY7ln.0.0.34-alpha.5.js +0 -1
  206. package/dist/interface/redux.CuxFRhX_.0.0.34-alpha.5.js +0 -1
  207. package/dist/interface/registerSW.js +0 -1
  208. package/dist/interface/robots.txt +0 -2
  209. package/dist/interface/rxjs.DvjWjMpY.0.0.34-alpha.5.js +0 -3
  210. package/dist/interface/socket.io-client.DLAxf4Au.0.0.34-alpha.5.js +0 -1
  211. package/dist/interface/socket.io-parser.DljDeMVN.0.0.34-alpha.5.js +0 -1
  212. package/dist/interface/sw.js +0 -1
  213. package/dist/interface/sweepline-intersections.l0sNRNKZ.0.0.34-alpha.5.js +0 -1
  214. package/dist/interface/system.C67tvPHd.0.0.34-alpha.5.js +0 -1
  215. package/dist/interface/tslib.9k7AwCpt.0.0.34-alpha.5.js +0 -1
  216. package/dist/interface/types.Cz9TaZAP.0.0.34-alpha.5.js +0 -1
  217. package/dist/interface/uc.micro.kMc2yuuw.0.0.34-alpha.5.js +0 -1
  218. package/dist/interface/unidragger.Clz3A3-r.0.0.34-alpha.5.js +0 -5
  219. package/dist/interface/utils.mAKpSMLY.0.0.34-alpha.5.js +0 -1
  220. package/dist/interface/uuid.DvF23Exx.0.0.34-alpha.5.js +0 -1
  221. package/dist/interface/vee-validate.hnY_ZrYq.0.0.34-alpha.5.js +0 -5
  222. package/dist/interface/vue-i18n.Yxe4ZdlC.0.0.34-alpha.5.js +0 -5
  223. package/dist/interface/vue-inline-svg.C52hpSWp.0.0.34-alpha.5.js +0 -1
  224. package/dist/interface/vue-router.CuXGWZx-.0.0.34-alpha.5.js +0 -5
  225. package/dist/interface/vue.l0sNRNKZ.0.0.34-alpha.5.js +0 -1
  226. package/dist/interface/vue3-apexcharts.BwQI7SWt.0.0.34-alpha.5.js +0 -1
  227. package/dist/interface/vue3-dnd.W2X2hlnQ.0.0.34-alpha.5.js +0 -1
  228. package/dist/interface/vue3-toastify.CgpUgDJR.0.0.34-alpha.5.js +0 -1
  229. package/dist/interface/vuetify.CpjU1ATb.0.0.34-alpha.5.js +0 -5
  230. package/dist/interface/workbox-3e911b1d.js +0 -1
  231. package/dist/interface/zod.DnW1_kUe.0.0.34-alpha.5.js +0 -1
  232. package/dist/server/bin/cameraui.js.map +0 -1
  233. package/dist/server/bin/installer/base.js.map +0 -1
  234. package/dist/server/bin/installer/darwin.js.map +0 -1
  235. package/dist/server/bin/installer/freebsd.js.map +0 -1
  236. package/dist/server/bin/installer/linux.js.map +0 -1
  237. package/dist/server/bin/installer/win32.js.map +0 -1
  238. package/dist/server/bin/logger.js.map +0 -1
  239. package/dist/server/package.json +0 -139
  240. package/dist/server/requirements.txt +0 -14
  241. package/dist/server/src/api/controllers/api.controller.d.ts +0 -7
  242. package/dist/server/src/api/controllers/api.controller.js +0 -14
  243. package/dist/server/src/api/controllers/api.controller.js.map +0 -1
  244. package/dist/server/src/api/controllers/auth.controller.d.ts +0 -16
  245. package/dist/server/src/api/controllers/auth.controller.js +0 -233
  246. package/dist/server/src/api/controllers/auth.controller.js.map +0 -1
  247. package/dist/server/src/api/controllers/backup.controller.d.ts +0 -10
  248. package/dist/server/src/api/controllers/backup.controller.js +0 -52
  249. package/dist/server/src/api/controllers/backup.controller.js.map +0 -1
  250. package/dist/server/src/api/controllers/cameras.controller.d.ts +0 -38
  251. package/dist/server/src/api/controllers/cameras.controller.js +0 -632
  252. package/dist/server/src/api/controllers/cameras.controller.js.map +0 -1
  253. package/dist/server/src/api/controllers/config.controller.d.ts +0 -14
  254. package/dist/server/src/api/controllers/config.controller.js +0 -89
  255. package/dist/server/src/api/controllers/config.controller.js.map +0 -1
  256. package/dist/server/src/api/controllers/files.controller.d.ts +0 -8
  257. package/dist/server/src/api/controllers/files.controller.js +0 -28
  258. package/dist/server/src/api/controllers/files.controller.js.map +0 -1
  259. package/dist/server/src/api/controllers/frameWorkers.controller.d.ts +0 -11
  260. package/dist/server/src/api/controllers/frameWorkers.controller.js +0 -93
  261. package/dist/server/src/api/controllers/frameWorkers.controller.js.map +0 -1
  262. package/dist/server/src/api/controllers/plugins.controller.d.ts +0 -61
  263. package/dist/server/src/api/controllers/plugins.controller.js +0 -1353
  264. package/dist/server/src/api/controllers/plugins.controller.js.map +0 -1
  265. package/dist/server/src/api/controllers/system.controller.d.ts +0 -21
  266. package/dist/server/src/api/controllers/system.controller.js +0 -207
  267. package/dist/server/src/api/controllers/system.controller.js.map +0 -1
  268. package/dist/server/src/api/controllers/users.controller.d.ts +0 -28
  269. package/dist/server/src/api/controllers/users.controller.js +0 -509
  270. package/dist/server/src/api/controllers/users.controller.js.map +0 -1
  271. package/dist/server/src/api/database/checks.d.ts +0 -55
  272. package/dist/server/src/api/database/checks.js +0 -183
  273. package/dist/server/src/api/database/checks.js.map +0 -1
  274. package/dist/server/src/api/database/constants.d.ts +0 -8
  275. package/dist/server/src/api/database/constants.js +0 -9
  276. package/dist/server/src/api/database/constants.js.map +0 -1
  277. package/dist/server/src/api/database/index.d.ts +0 -31
  278. package/dist/server/src/api/database/index.js +0 -276
  279. package/dist/server/src/api/database/index.js.map +0 -1
  280. package/dist/server/src/api/database/migration.d.ts +0 -13
  281. package/dist/server/src/api/database/migration.js +0 -113
  282. package/dist/server/src/api/database/migration.js.map +0 -1
  283. package/dist/server/src/api/database/selfcheck.d.ts +0 -48
  284. package/dist/server/src/api/database/selfcheck.js +0 -397
  285. package/dist/server/src/api/database/selfcheck.js.map +0 -1
  286. package/dist/server/src/api/database/types.d.ts +0 -100
  287. package/dist/server/src/api/database/types.js +0 -2
  288. package/dist/server/src/api/database/types.js.map +0 -1
  289. package/dist/server/src/api/go2rtc/api/application.d.ts +0 -9
  290. package/dist/server/src/api/go2rtc/api/application.js +0 -39
  291. package/dist/server/src/api/go2rtc/api/application.js.map +0 -1
  292. package/dist/server/src/api/go2rtc/api/config.d.ts +0 -8
  293. package/dist/server/src/api/go2rtc/api/config.js +0 -44
  294. package/dist/server/src/api/go2rtc/api/config.js.map +0 -1
  295. package/dist/server/src/api/go2rtc/api/index.d.ts +0 -1
  296. package/dist/server/src/api/go2rtc/api/index.js +0 -29
  297. package/dist/server/src/api/go2rtc/api/index.js.map +0 -1
  298. package/dist/server/src/api/go2rtc/api/snapshot.d.ts +0 -8
  299. package/dist/server/src/api/go2rtc/api/snapshot.js +0 -34
  300. package/dist/server/src/api/go2rtc/api/snapshot.js.map +0 -1
  301. package/dist/server/src/api/go2rtc/api/streams.d.ts +0 -11
  302. package/dist/server/src/api/go2rtc/api/streams.js +0 -59
  303. package/dist/server/src/api/go2rtc/api/streams.js.map +0 -1
  304. package/dist/server/src/api/go2rtc/index.d.ts +0 -14
  305. package/dist/server/src/api/go2rtc/index.js +0 -30
  306. package/dist/server/src/api/go2rtc/index.js.map +0 -1
  307. package/dist/server/src/api/go2rtc/queue.d.ts +0 -10
  308. package/dist/server/src/api/go2rtc/queue.js +0 -38
  309. package/dist/server/src/api/go2rtc/queue.js.map +0 -1
  310. package/dist/server/src/api/go2rtc/types.d.ts +0 -92
  311. package/dist/server/src/api/go2rtc/types.js +0 -2
  312. package/dist/server/src/api/go2rtc/types.js.map +0 -1
  313. package/dist/server/src/api/index.d.ts +0 -20
  314. package/dist/server/src/api/index.js +0 -213
  315. package/dist/server/src/api/index.js.map +0 -1
  316. package/dist/server/src/api/middlewares/authPermission.middleware.d.ts +0 -5
  317. package/dist/server/src/api/middlewares/authPermission.middleware.js +0 -28
  318. package/dist/server/src/api/middlewares/authPermission.middleware.js.map +0 -1
  319. package/dist/server/src/api/middlewares/authValidation.middleware.d.ts +0 -4
  320. package/dist/server/src/api/middlewares/authValidation.middleware.js +0 -129
  321. package/dist/server/src/api/middlewares/authValidation.middleware.js.map +0 -1
  322. package/dist/server/src/api/middlewares/pagination.middleware.d.ts +0 -3
  323. package/dist/server/src/api/middlewares/pagination.middleware.js +0 -65
  324. package/dist/server/src/api/middlewares/pagination.middleware.js.map +0 -1
  325. package/dist/server/src/api/middlewares/socketAuth.middleware.d.ts +0 -41
  326. package/dist/server/src/api/middlewares/socketAuth.middleware.js +0 -81
  327. package/dist/server/src/api/middlewares/socketAuth.middleware.js.map +0 -1
  328. package/dist/server/src/api/plugins/header.plugin.d.ts +0 -2
  329. package/dist/server/src/api/plugins/header.plugin.js +0 -13
  330. package/dist/server/src/api/plugins/header.plugin.js.map +0 -1
  331. package/dist/server/src/api/plugins/logger.plugin.d.ts +0 -7
  332. package/dist/server/src/api/plugins/logger.plugin.js +0 -29
  333. package/dist/server/src/api/plugins/logger.plugin.js.map +0 -1
  334. package/dist/server/src/api/plugins/socket.plugin.d.ts +0 -11
  335. package/dist/server/src/api/plugins/socket.plugin.js +0 -12
  336. package/dist/server/src/api/plugins/socket.plugin.js.map +0 -1
  337. package/dist/server/src/api/plugins/system.plugin.d.ts +0 -18
  338. package/dist/server/src/api/plugins/system.plugin.js +0 -22
  339. package/dist/server/src/api/plugins/system.plugin.js.map +0 -1
  340. package/dist/server/src/api/plugins/useragent.plugin.d.ts +0 -8
  341. package/dist/server/src/api/plugins/useragent.plugin.js +0 -10
  342. package/dist/server/src/api/plugins/useragent.plugin.js.map +0 -1
  343. package/dist/server/src/api/routes/api.routes.d.ts +0 -2
  344. package/dist/server/src/api/routes/api.routes.js +0 -7
  345. package/dist/server/src/api/routes/api.routes.js.map +0 -1
  346. package/dist/server/src/api/routes/auth.routes.d.ts +0 -2
  347. package/dist/server/src/api/routes/auth.routes.js +0 -47
  348. package/dist/server/src/api/routes/auth.routes.js.map +0 -1
  349. package/dist/server/src/api/routes/backup.routes.d.ts +0 -2
  350. package/dist/server/src/api/routes/backup.routes.js +0 -23
  351. package/dist/server/src/api/routes/backup.routes.js.map +0 -1
  352. package/dist/server/src/api/routes/cameras.routes.d.ts +0 -2
  353. package/dist/server/src/api/routes/cameras.routes.js +0 -217
  354. package/dist/server/src/api/routes/cameras.routes.js.map +0 -1
  355. package/dist/server/src/api/routes/config.routes.d.ts +0 -2
  356. package/dist/server/src/api/routes/config.routes.js +0 -55
  357. package/dist/server/src/api/routes/config.routes.js.map +0 -1
  358. package/dist/server/src/api/routes/files.routes.d.ts +0 -2
  359. package/dist/server/src/api/routes/files.routes.js +0 -12
  360. package/dist/server/src/api/routes/files.routes.js.map +0 -1
  361. package/dist/server/src/api/routes/frameWorkers.routes.d.ts +0 -2
  362. package/dist/server/src/api/routes/frameWorkers.routes.js +0 -33
  363. package/dist/server/src/api/routes/frameWorkers.routes.js.map +0 -1
  364. package/dist/server/src/api/routes/index.d.ts +0 -6
  365. package/dist/server/src/api/routes/index.js +0 -32
  366. package/dist/server/src/api/routes/index.js.map +0 -1
  367. package/dist/server/src/api/routes/plugins.routes.d.ts +0 -2
  368. package/dist/server/src/api/routes/plugins.routes.js +0 -363
  369. package/dist/server/src/api/routes/plugins.routes.js.map +0 -1
  370. package/dist/server/src/api/routes/system.routes.d.ts +0 -2
  371. package/dist/server/src/api/routes/system.routes.js +0 -83
  372. package/dist/server/src/api/routes/system.routes.js.map +0 -1
  373. package/dist/server/src/api/routes/users.routes.d.ts +0 -2
  374. package/dist/server/src/api/routes/users.routes.js +0 -139
  375. package/dist/server/src/api/routes/users.routes.js.map +0 -1
  376. package/dist/server/src/api/schemas/backup.schema.d.ts +0 -118
  377. package/dist/server/src/api/schemas/backup.schema.js +0 -75
  378. package/dist/server/src/api/schemas/backup.schema.js.map +0 -1
  379. package/dist/server/src/api/schemas/cameras.schema.d.ts +0 -980
  380. package/dist/server/src/api/schemas/cameras.schema.js +0 -333
  381. package/dist/server/src/api/schemas/cameras.schema.js.map +0 -1
  382. package/dist/server/src/api/schemas/config.schema.d.ts +0 -114
  383. package/dist/server/src/api/schemas/config.schema.js +0 -42
  384. package/dist/server/src/api/schemas/config.schema.js.map +0 -1
  385. package/dist/server/src/api/schemas/go2rtc.schema.d.ts +0 -703
  386. package/dist/server/src/api/schemas/go2rtc.schema.js +0 -180
  387. package/dist/server/src/api/schemas/go2rtc.schema.js.map +0 -1
  388. package/dist/server/src/api/schemas/plugins.schema.d.ts +0 -72
  389. package/dist/server/src/api/schemas/plugins.schema.js +0 -103
  390. package/dist/server/src/api/schemas/plugins.schema.js.map +0 -1
  391. package/dist/server/src/api/schemas/system.schema.d.ts +0 -9
  392. package/dist/server/src/api/schemas/system.schema.js +0 -8
  393. package/dist/server/src/api/schemas/system.schema.js.map +0 -1
  394. package/dist/server/src/api/schemas/users.schema.d.ts +0 -1013
  395. package/dist/server/src/api/schemas/users.schema.js +0 -157
  396. package/dist/server/src/api/schemas/users.schema.js.map +0 -1
  397. package/dist/server/src/api/services/auth.service.d.ts +0 -24
  398. package/dist/server/src/api/services/auth.service.js +0 -191
  399. package/dist/server/src/api/services/auth.service.js.map +0 -1
  400. package/dist/server/src/api/services/backup.service.d.ts +0 -11
  401. package/dist/server/src/api/services/backup.service.js +0 -109
  402. package/dist/server/src/api/services/backup.service.js.map +0 -1
  403. package/dist/server/src/api/services/cameras.service.d.ts +0 -57
  404. package/dist/server/src/api/services/cameras.service.js +0 -790
  405. package/dist/server/src/api/services/cameras.service.js.map +0 -1
  406. package/dist/server/src/api/services/plugins.service.d.ts +0 -26
  407. package/dist/server/src/api/services/plugins.service.js +0 -148
  408. package/dist/server/src/api/services/plugins.service.js.map +0 -1
  409. package/dist/server/src/api/services/system.service.d.ts +0 -7
  410. package/dist/server/src/api/services/system.service.js +0 -23
  411. package/dist/server/src/api/services/system.service.js.map +0 -1
  412. package/dist/server/src/api/services/users.service.d.ts +0 -25
  413. package/dist/server/src/api/services/users.service.js +0 -198
  414. package/dist/server/src/api/services/users.service.js.map +0 -1
  415. package/dist/server/src/api/types/index.d.ts +0 -592
  416. package/dist/server/src/api/types/index.js +0 -9
  417. package/dist/server/src/api/types/index.js.map +0 -1
  418. package/dist/server/src/api/utils/cameraSource.d.ts +0 -2
  419. package/dist/server/src/api/utils/cameraSource.js +0 -34
  420. package/dist/server/src/api/utils/cameraSource.js.map +0 -1
  421. package/dist/server/src/api/utils/cert.d.ts +0 -11
  422. package/dist/server/src/api/utils/cert.js +0 -204
  423. package/dist/server/src/api/utils/cert.js.map +0 -1
  424. package/dist/server/src/api/utils/constants.d.ts +0 -13
  425. package/dist/server/src/api/utils/constants.js +0 -14
  426. package/dist/server/src/api/utils/constants.js.map +0 -1
  427. package/dist/server/src/api/utils/fetch.d.ts +0 -2
  428. package/dist/server/src/api/utils/fetch.js +0 -24
  429. package/dist/server/src/api/utils/fetch.js.map +0 -1
  430. package/dist/server/src/api/utils/moveFiles.d.ts +0 -1
  431. package/dist/server/src/api/utils/moveFiles.js +0 -39
  432. package/dist/server/src/api/utils/moveFiles.js.map +0 -1
  433. package/dist/server/src/api/utils/parse.d.ts +0 -2
  434. package/dist/server/src/api/utils/parse.js +0 -12
  435. package/dist/server/src/api/utils/parse.js.map +0 -1
  436. package/dist/server/src/api/websocket/index.d.ts +0 -16
  437. package/dist/server/src/api/websocket/index.js +0 -76
  438. package/dist/server/src/api/websocket/index.js.map +0 -1
  439. package/dist/server/src/api/websocket/nsp/logs.d.ts +0 -17
  440. package/dist/server/src/api/websocket/nsp/logs.js +0 -151
  441. package/dist/server/src/api/websocket/nsp/logs.js.map +0 -1
  442. package/dist/server/src/api/websocket/nsp/main.d.ts +0 -7
  443. package/dist/server/src/api/websocket/nsp/main.js +0 -8
  444. package/dist/server/src/api/websocket/nsp/main.js.map +0 -1
  445. package/dist/server/src/api/websocket/nsp/metrics.d.ts +0 -24
  446. package/dist/server/src/api/websocket/nsp/metrics.js +0 -169
  447. package/dist/server/src/api/websocket/nsp/metrics.js.map +0 -1
  448. package/dist/server/src/api/websocket/nsp/notifications.d.ts +0 -12
  449. package/dist/server/src/api/websocket/nsp/notifications.js +0 -30
  450. package/dist/server/src/api/websocket/nsp/notifications.js.map +0 -1
  451. package/dist/server/src/api/websocket/nsp/plugins.d.ts +0 -13
  452. package/dist/server/src/api/websocket/nsp/plugins.js +0 -28
  453. package/dist/server/src/api/websocket/nsp/plugins.js.map +0 -1
  454. package/dist/server/src/api/websocket/nsp/server.d.ts +0 -26
  455. package/dist/server/src/api/websocket/nsp/server.js +0 -171
  456. package/dist/server/src/api/websocket/nsp/server.js.map +0 -1
  457. package/dist/server/src/api/websocket/nsp/status.d.ts +0 -15
  458. package/dist/server/src/api/websocket/nsp/status.js +0 -55
  459. package/dist/server/src/api/websocket/nsp/status.js.map +0 -1
  460. package/dist/server/src/api/websocket/types.d.ts +0 -41
  461. package/dist/server/src/api/websocket/types.js +0 -2
  462. package/dist/server/src/api/websocket/types.js.map +0 -1
  463. package/dist/server/src/api.d.ts +0 -28
  464. package/dist/server/src/api.js +0 -109
  465. package/dist/server/src/api.js.map +0 -1
  466. package/dist/server/src/camera/controller.d.ts +0 -62
  467. package/dist/server/src/camera/controller.js +0 -537
  468. package/dist/server/src/camera/controller.js.map +0 -1
  469. package/dist/server/src/camera/frameWorker.d.ts +0 -42
  470. package/dist/server/src/camera/frameWorker.js +0 -305
  471. package/dist/server/src/camera/frameWorker.js.map +0 -1
  472. package/dist/server/src/camera/types.d.ts +0 -11
  473. package/dist/server/src/camera/types.js +0 -2
  474. package/dist/server/src/camera/types.js.map +0 -1
  475. package/dist/server/src/go2rtc/index.d.ts +0 -25
  476. package/dist/server/src/go2rtc/index.js +0 -233
  477. package/dist/server/src/go2rtc/index.js.map +0 -1
  478. package/dist/server/src/go2rtc/types.d.ts +0 -14
  479. package/dist/server/src/go2rtc/types.js +0 -73
  480. package/dist/server/src/go2rtc/types.js.map +0 -1
  481. package/dist/server/src/main.d.ts +0 -2
  482. package/dist/server/src/main.js +0 -112
  483. package/dist/server/src/main.js.map +0 -1
  484. package/dist/server/src/nats/index.d.ts +0 -40
  485. package/dist/server/src/nats/index.js +0 -164
  486. package/dist/server/src/nats/index.js.map +0 -1
  487. package/dist/server/src/nats/proxy/cameraDevice.d.ts +0 -22
  488. package/dist/server/src/nats/proxy/cameraDevice.js +0 -254
  489. package/dist/server/src/nats/proxy/cameraDevice.js.map +0 -1
  490. package/dist/server/src/nats/proxy/coreManager.d.ts +0 -14
  491. package/dist/server/src/nats/proxy/coreManager.js +0 -68
  492. package/dist/server/src/nats/proxy/coreManager.js.map +0 -1
  493. package/dist/server/src/nats/proxy/deviceManager.d.ts +0 -14
  494. package/dist/server/src/nats/proxy/deviceManager.js +0 -101
  495. package/dist/server/src/nats/proxy/deviceManager.js.map +0 -1
  496. package/dist/server/src/nats/server.d.ts +0 -38
  497. package/dist/server/src/nats/server.js +0 -328
  498. package/dist/server/src/nats/server.js.map +0 -1
  499. package/dist/server/src/nats/types.d.ts +0 -18
  500. package/dist/server/src/nats/types.js +0 -2
  501. package/dist/server/src/nats/types.js.map +0 -1
  502. package/dist/server/src/nats/utils.d.ts +0 -2
  503. package/dist/server/src/nats/utils.js +0 -12
  504. package/dist/server/src/nats/utils.js.map +0 -1
  505. package/dist/server/src/nats/websocket.d.ts +0 -27
  506. package/dist/server/src/nats/websocket.js +0 -218
  507. package/dist/server/src/nats/websocket.js.map +0 -1
  508. package/dist/server/src/plugins/index.d.ts +0 -29
  509. package/dist/server/src/plugins/index.js +0 -243
  510. package/dist/server/src/plugins/index.js.map +0 -1
  511. package/dist/server/src/plugins/plugin.d.ts +0 -36
  512. package/dist/server/src/plugins/plugin.js +0 -193
  513. package/dist/server/src/plugins/plugin.js.map +0 -1
  514. package/dist/server/src/plugins/types.d.ts +0 -7
  515. package/dist/server/src/plugins/types.js +0 -3
  516. package/dist/server/src/plugins/types.js.map +0 -1
  517. package/dist/server/src/plugins/worker.d.ts +0 -55
  518. package/dist/server/src/plugins/worker.js +0 -444
  519. package/dist/server/src/plugins/worker.js.map +0 -1
  520. package/dist/server/src/services/config/constants.d.ts +0 -7
  521. package/dist/server/src/services/config/constants.js +0 -67
  522. package/dist/server/src/services/config/constants.js.map +0 -1
  523. package/dist/server/src/services/config/index.d.ts +0 -65
  524. package/dist/server/src/services/config/index.js +0 -461
  525. package/dist/server/src/services/config/index.js.map +0 -1
  526. package/dist/server/src/services/config/types.d.ts +0 -157
  527. package/dist/server/src/services/config/types.js +0 -11
  528. package/dist/server/src/services/config/types.js.map +0 -1
  529. package/dist/server/src/services/logger/index.d.ts +0 -16
  530. package/dist/server/src/services/logger/index.js +0 -67
  531. package/dist/server/src/services/logger/index.js.map +0 -1
  532. package/dist/server/src/types.d.ts +0 -7
  533. package/dist/server/src/types.js +0 -2
  534. package/dist/server/src/types.js.map +0 -1
  535. package/localdeps.txt +0 -6
  536. package/upgrade-server.sh +0 -206
  537. /package/dist/{server/bin/installer → installer}/base.d.ts +0 -0
  538. /package/dist/{server/bin/installer → installer}/base.js +0 -0
  539. /package/dist/{server/bin/installer → installer}/freebsd.d.ts +0 -0
  540. /package/dist/{server/bin/installer → installer}/win32.d.ts +0 -0
  541. /package/dist/{server/bin/logger.d.ts → logger.d.ts} +0 -0
@@ -1,790 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- import { createSourceName, isEqual, mergeWith } from '@camera.ui/common/utils';
11
- import TTLCache from '@isaacs/ttlcache';
12
- import { container, delay, registry } from 'tsyringe';
13
- import { CAMERA_EXTENSIONS } from '../../plugins/types.js';
14
- import { ConfigService } from '../../services/config/index.js';
15
- import { Database } from '../database/index.js';
16
- import { cameraZonesSchema } from '../schemas/cameras.schema.js';
17
- import { generateInternalCameraSources } from '../utils/cameraSource.js';
18
- import { PluginsService } from './plugins.service.js';
19
- import { UsersService } from './users.service.js';
20
- const cameraSourceProbeCache = new TTLCache({ max: 100, ttl: Infinity });
21
- let CamerasService = class CamerasService {
22
- configService;
23
- api;
24
- dbs;
25
- go2rtcApi;
26
- usersService;
27
- pluginsService;
28
- constructor() {
29
- this.configService = container.resolve('configService');
30
- this.api = container.resolve('api');
31
- this.dbs = container.resolve('dbs');
32
- this.go2rtcApi = container.resolve('go2rtcApi');
33
- this.usersService = new UsersService();
34
- this.pluginsService = new PluginsService();
35
- }
36
- async createCamera(cameraData) {
37
- const cameras = this.dbs.camerasDB.get('cameras') ?? [];
38
- const plugin = this.pluginsService.getPluginById(cameraData.pluginId);
39
- if (plugin?.contract.builtIns) {
40
- plugin.contract.builtIns.forEach((extensionType) => {
41
- if (!cameraData.extensions[extensionType]) {
42
- cameraData.extensions[extensionType] = plugin.pluginName;
43
- }
44
- });
45
- }
46
- cameraData.activityZones = [this.defaultZone()];
47
- this.addInternalSources(cameraData);
48
- await this.addCameraSourcesToConfig(cameraData.name, cameraData.sources);
49
- cameras.push(cameraData);
50
- await this.dbs.camerasDB.put('cameras', cameras);
51
- const transformedCamera = this.transformCamera(cameraData);
52
- await this.api.addCamera(transformedCamera);
53
- return cameraData;
54
- }
55
- async createZone(cameraname, zoneData) {
56
- const cameras = this.dbs.camerasDB.get('cameras') ?? [];
57
- const camera = cameras.find((camera) => camera.name === cameraname);
58
- if (camera) {
59
- camera.activityZones.push(zoneData);
60
- await this.dbs.camerasDB.put('cameras', cameras);
61
- this.api.updateCamera(this.transformCamera(camera));
62
- }
63
- return camera;
64
- }
65
- async patchZoneByName(cameraname, zonename, zoneData) {
66
- const cameras = this.dbs.camerasDB.get('cameras') ?? [];
67
- const camera = cameras.find((camera) => camera.name === cameraname);
68
- if (camera) {
69
- const zone = camera.activityZones.find((zone) => zone.name === zonename);
70
- if (zone) {
71
- mergeWith(zone, zoneData, (source, target) => {
72
- if (Array.isArray(source)) {
73
- return target;
74
- }
75
- });
76
- await this.dbs.camerasDB.put('cameras', cameras);
77
- this.api.updateCamera(this.transformCamera(camera));
78
- }
79
- }
80
- return camera;
81
- }
82
- async removeZoneByName(cameraname, zonename) {
83
- const cameras = this.dbs.camerasDB.get('cameras') ?? [];
84
- const camera = cameras.find((cameraObj) => cameraObj.name === cameraname);
85
- if (camera) {
86
- const zoneExists = camera.activityZones.some((zone) => zone.name === zonename);
87
- camera.activityZones = camera.activityZones.filter((zone) => zone.name !== zonename);
88
- if (zoneExists) {
89
- await this.dbs.camerasDB.put('cameras', cameras);
90
- this.api.updateCamera(this.transformCamera(camera));
91
- }
92
- }
93
- }
94
- async createCameraSource(cameraname, sourceName, source) {
95
- const camera = this.findByName(cameraname);
96
- if (!camera) {
97
- throw new Error(`Camera ${cameraname} not found`);
98
- }
99
- if (!this.sourceExistAndEqual(sourceName, [source])) {
100
- // fix after go2rtc update
101
- await this.go2rtcApi.streamsApi.createStream({
102
- name: sourceName,
103
- src: source,
104
- });
105
- // if (this.configService.go2rtcConfig.streams?.[sourceName]) {
106
- // await this.go2rtcApi.streamsApi.updateStreamSource({
107
- // name: sourceName,
108
- // src: source,
109
- // });
110
- // } else {
111
- // await this.go2rtcApi.streamsApi.createStream({
112
- // name: sourceName,
113
- // src: source,
114
- // });
115
- // }
116
- if (!this.configService.go2rtcConfig.streams)
117
- this.configService.go2rtcConfig.streams = {};
118
- this.configService.go2rtcConfig.streams[sourceName] = source;
119
- }
120
- }
121
- list() {
122
- const cameras = this.dbs.camerasDB.get('cameras') ?? [];
123
- return cameras;
124
- }
125
- listTransformed() {
126
- const cameras = this.dbs.camerasDB.get('cameras') ?? [];
127
- const transformedCameras = cameras.map((camera) => this.transformCamera(camera));
128
- return transformedCameras;
129
- }
130
- listByPluginId(pluginId) {
131
- const cameras = this.dbs.camerasDB.get('cameras') ?? [];
132
- return cameras.filter((camera) => camera.pluginId === pluginId);
133
- }
134
- listTransformedByPluginId(pluginId) {
135
- const cameras = this.dbs.camerasDB.get('cameras') ?? [];
136
- const filteredCameras = cameras.filter((camera) => camera.pluginId === pluginId);
137
- const transformedCameras = filteredCameras.map((camera) => this.transformCamera(camera));
138
- return transformedCameras;
139
- }
140
- listByExtension(pluginName) {
141
- const cameras = this.dbs.camerasDB.get('cameras') ?? [];
142
- return cameras.filter((camera) => camera.extensions.plugins.includes(pluginName));
143
- }
144
- listTransformedByExtension(pluginName, extensions) {
145
- const cameras = this.dbs.camerasDB.get('cameras') ?? [];
146
- const camerasMap = new Map();
147
- for (const type of extensions) {
148
- let dbCameras = [];
149
- if (type === 'hub') {
150
- dbCameras = cameras.filter((camera) => camera.extensions[type]?.includes(pluginName));
151
- }
152
- else {
153
- dbCameras = cameras.filter((camera) => camera.extensions[type] === pluginName);
154
- }
155
- dbCameras.forEach((camera) => camerasMap.set(camera._id, this.transformCamera(camera)));
156
- }
157
- return Array.from(camerasMap.values());
158
- }
159
- findById(id) {
160
- const cameras = this.dbs.camerasDB.get('cameras') ?? [];
161
- return cameras?.find((cameraObj) => cameraObj._id === id);
162
- }
163
- findTransformedById(id) {
164
- const cameras = this.dbs.camerasDB.get('cameras') ?? [];
165
- const camera = cameras?.find((cameraObj) => cameraObj._id === id);
166
- if (camera) {
167
- return this.transformCamera(camera);
168
- }
169
- }
170
- findByName(cameraname) {
171
- const cameras = this.dbs.camerasDB.get('cameras') ?? [];
172
- return cameras?.find((cameraObj) => cameraObj.name === cameraname);
173
- }
174
- findTransformedByName(cameraname) {
175
- const cameras = this.dbs.camerasDB.get('cameras') ?? [];
176
- const camera = cameras?.find((cameraObj) => cameraObj.name === cameraname);
177
- if (camera) {
178
- return this.transformCamera(camera);
179
- }
180
- }
181
- findByPluginAndName(cameraname, pluginId) {
182
- const cameras = this.dbs.camerasDB.get('cameras') ?? [];
183
- return cameras?.find((cameraObj) => cameraObj.name === cameraname && cameraObj.pluginId === pluginId);
184
- }
185
- findTransformedByPluginAndName(cameraname, pluginId) {
186
- const cameras = this.dbs.camerasDB.get('cameras') ?? [];
187
- const camera = cameras?.find((cameraObj) => cameraObj.name === cameraname && cameraObj.pluginId === pluginId);
188
- if (camera) {
189
- return this.transformCamera(camera);
190
- }
191
- }
192
- async patchCameraByName(cameraname, cameraData) {
193
- const cameras = this.dbs.camerasDB.get('cameras') ?? [];
194
- const camera = cameras.find((camera) => camera.name === cameraname);
195
- const cameraController = this.api.getCamera(camera?._id ?? '');
196
- const cameraOld = structuredClone(camera);
197
- if (camera && cameraOld && cameraController) {
198
- mergeWith(camera, cameraData, (source, target, key) => {
199
- if (key === 'sources') {
200
- return target.map((srcItem) => {
201
- const objItem = source.find((o) => o.name === srcItem.name);
202
- const sourceId = objItem?._id ?? srcItem._id;
203
- return objItem ? { ...objItem, ...srcItem, _id: sourceId, name: objItem.name } : srcItem;
204
- });
205
- }
206
- if (key === 'extensions') {
207
- return cameraOld.extensions;
208
- }
209
- if (Array.isArray(source)) {
210
- return target;
211
- }
212
- });
213
- if (!isEqual(cameraOld, camera, true)) {
214
- if (cameraOld.name !== camera.name) {
215
- await this.removeCameraSourcesFromConfig(cameraOld.name, cameraOld.sources);
216
- }
217
- const orphanedSources = cameraOld.sources.filter((source) => !camera.sources.find((s) => s.name === source.name));
218
- if (orphanedSources.length) {
219
- orphanedSources.forEach((source) => {
220
- cameraController.streamInfos.delete(source._id);
221
- cameraController.streamInfos.delete(source._id);
222
- });
223
- await this.removeCameraSourcesFromConfig(camera.name, orphanedSources);
224
- }
225
- this.addInternalSources(camera);
226
- await this.addCameraSourcesToConfig(camera.name, camera.sources);
227
- }
228
- await this.dbs.camerasDB.put('cameras', cameras);
229
- this.api.updateCamera(this.transformCamera(camera));
230
- }
231
- return camera;
232
- }
233
- async enableExtensionByName(cameraname, pluginNameOrId, extensionType) {
234
- const cameras = this.dbs.camerasDB.get('cameras') ?? [];
235
- const plugin = this.pluginsService.getPluginByName(pluginNameOrId) ?? this.pluginsService.getPluginById(pluginNameOrId);
236
- const camera = cameras.find((camera) => camera.name === cameraname);
237
- const cameraOld = structuredClone(camera);
238
- if (camera && cameraOld && plugin) {
239
- if (CAMERA_EXTENSIONS.includes(extensionType) &&
240
- extensionType !== 'hub' &&
241
- camera.extensions[extensionType] !== plugin.pluginName &&
242
- (camera.extensions.plugins.includes(plugin.pluginName) || plugin.contract.builtIns?.includes(extensionType))) {
243
- const oldExtension = camera.extensions[extensionType];
244
- const oldPlugin = oldExtension ? this.pluginsService.getPluginByName(oldExtension) : undefined;
245
- camera.extensions[extensionType] = plugin.pluginName;
246
- const transformedCamera = this.transformCamera(camera);
247
- await this.dbs.camerasDB.put('cameras', cameras);
248
- if (oldPlugin && oldExtension) {
249
- this.api.deselectCamera(oldPlugin.id, transformedCamera, extensionType);
250
- }
251
- this.api.updateCamera(transformedCamera);
252
- this.api.selectCamera(plugin.id, transformedCamera, extensionType);
253
- }
254
- }
255
- return camera;
256
- }
257
- async disableExtensionByName(cameraname, pluginNameOrId, extensionType) {
258
- const cameras = this.dbs.camerasDB.get('cameras') ?? [];
259
- const plugin = this.pluginsService.getPluginByName(pluginNameOrId) ?? this.pluginsService.getPluginById(pluginNameOrId);
260
- const camera = cameras.find((camera) => camera.name === cameraname);
261
- const cameraOld = structuredClone(camera);
262
- if (camera && cameraOld && plugin) {
263
- if (CAMERA_EXTENSIONS.includes(extensionType) &&
264
- extensionType !== 'hub' &&
265
- camera.extensions[extensionType] === plugin.pluginName &&
266
- (camera.extensions.plugins.includes(plugin.pluginName) || plugin.contract.builtIns?.includes(extensionType))) {
267
- camera.extensions[extensionType] = undefined;
268
- const transformedCamera = this.transformCamera(camera);
269
- await this.dbs.camerasDB.put('cameras', cameras);
270
- this.api.deselectCamera(plugin.id, transformedCamera, extensionType);
271
- this.api.updateCamera(transformedCamera);
272
- }
273
- }
274
- return camera;
275
- }
276
- async addExtensionByName(cameraname, pluginNameOrId) {
277
- const cameras = this.dbs.camerasDB.get('cameras') ?? [];
278
- const plugin = this.pluginsService.getPluginByName(pluginNameOrId) ?? this.pluginsService.getPluginById(pluginNameOrId);
279
- const camera = cameras.find((camera) => camera.name === cameraname);
280
- const cameraOld = structuredClone(camera);
281
- if (camera && cameraOld && (plugin?.contract.extension || plugin?.contract.supportAdditionalCameras) && !camera.extensions.plugins.includes(plugin.pluginName)) {
282
- camera.extensions.plugins.push(plugin.pluginName);
283
- const addedExtensions = [];
284
- if (plugin?.contract.extension) {
285
- const extensionType = plugin.contract.extension;
286
- if (extensionType !== 'hub') {
287
- if (!camera.extensions[extensionType]) {
288
- camera.extensions[extensionType] = plugin.pluginName;
289
- addedExtensions.push(extensionType);
290
- }
291
- }
292
- else {
293
- if (!camera.extensions[extensionType]) {
294
- camera.extensions[extensionType] = [];
295
- }
296
- camera.extensions[extensionType].push(plugin.pluginName);
297
- addedExtensions.push(extensionType);
298
- }
299
- }
300
- else {
301
- const extensionTypes = plugin.contract.builtIns;
302
- extensionTypes.forEach((extensionType) => {
303
- if (!camera.extensions[extensionType]) {
304
- camera.extensions[extensionType] = plugin.pluginName;
305
- addedExtensions.push(extensionType);
306
- }
307
- });
308
- }
309
- const transformedCamera = this.transformCamera(camera);
310
- await this.dbs.camerasDB.put('cameras', cameras);
311
- this.api.updateCamera(transformedCamera);
312
- for (const extensionType of addedExtensions) {
313
- this.api.selectCamera(plugin.id, transformedCamera, extensionType);
314
- }
315
- }
316
- return camera;
317
- }
318
- async removeExtensionByName(cameraname, pluginNameOrId) {
319
- const cameras = this.dbs.camerasDB.get('cameras') ?? [];
320
- const plugin = this.pluginsService.getPluginByName(pluginNameOrId) ?? this.pluginsService.getPluginById(pluginNameOrId);
321
- const camera = cameras.find((camera) => camera.name === cameraname);
322
- const cameraOld = structuredClone(camera);
323
- if (camera && cameraOld && (plugin?.contract.extension || plugin?.contract.supportAdditionalCameras) && camera.extensions.plugins.includes(plugin.pluginName)) {
324
- camera.extensions.plugins = camera.extensions.plugins.filter((extension) => extension !== plugin.pluginName);
325
- const removedExtensions = new Set();
326
- if (plugin?.contract.extension) {
327
- const extensionType = plugin.contract.extension;
328
- if (extensionType !== 'hub') {
329
- if (camera.extensions[extensionType] === plugin.pluginName) {
330
- camera.extensions[extensionType] = undefined;
331
- removedExtensions.add(extensionType);
332
- }
333
- }
334
- else {
335
- if (!camera.extensions[extensionType]) {
336
- camera.extensions[extensionType] = [];
337
- }
338
- camera.extensions[extensionType] = camera.extensions[extensionType].filter((extension) => extension !== plugin.pluginName);
339
- removedExtensions.add(extensionType);
340
- }
341
- }
342
- else if (plugin?.contract.supportAdditionalCameras) {
343
- const extensionTypes = plugin.contract.builtIns;
344
- extensionTypes.forEach((extensionType) => {
345
- if (camera.extensions[extensionType] === plugin.pluginName) {
346
- camera.extensions[extensionType] = undefined;
347
- removedExtensions.add(extensionType);
348
- }
349
- });
350
- }
351
- const transformedCamera = this.transformCamera(camera);
352
- await this.dbs.camerasDB.put('cameras', cameras);
353
- for (const extensionType of removedExtensions) {
354
- this.api.deselectCamera(plugin.id, transformedCamera, extensionType);
355
- }
356
- this.api.updateCamera(transformedCamera);
357
- }
358
- return camera;
359
- }
360
- async removeExtension(pluginNameOrId) {
361
- const cameras = this.dbs.camerasDB.get('cameras') ?? [];
362
- for (const camera of cameras) {
363
- const plugin = this.pluginsService.getPluginByName(pluginNameOrId) ?? this.pluginsService.getPluginById(pluginNameOrId);
364
- if ((plugin?.contract.extension || plugin?.contract.supportAdditionalCameras) && camera.extensions.plugins.includes(plugin.pluginName)) {
365
- camera.extensions.plugins = camera.extensions.plugins.filter((extension) => extension !== plugin.pluginName);
366
- const removedExtensions = new Set();
367
- if (plugin?.contract.extension) {
368
- const extensionType = plugin.contract.extension;
369
- if (extensionType !== 'hub') {
370
- if (camera.extensions[extensionType] === plugin.pluginName) {
371
- camera.extensions[extensionType] = undefined;
372
- removedExtensions.add(extensionType);
373
- }
374
- }
375
- else {
376
- if (!camera.extensions[extensionType]) {
377
- camera.extensions[extensionType] = [];
378
- }
379
- camera.extensions[extensionType] = camera.extensions[extensionType].filter((extension) => extension !== plugin.pluginName);
380
- removedExtensions.add(extensionType);
381
- }
382
- }
383
- else if (plugin?.contract.supportAdditionalCameras) {
384
- const extensionTypes = plugin.contract.builtIns;
385
- for (const extensionType of extensionTypes) {
386
- if (camera.extensions[extensionType] === plugin.pluginName) {
387
- camera.extensions[extensionType] = undefined;
388
- removedExtensions.add(extensionType);
389
- }
390
- }
391
- }
392
- const transformedCamera = this.transformCamera(camera);
393
- await this.dbs.camerasDB.put('cameras', cameras);
394
- for (const extensionType of removedExtensions) {
395
- this.api.deselectCamera(plugin.id, transformedCamera, extensionType);
396
- }
397
- this.api.updateCamera(this.transformCamera(camera));
398
- }
399
- }
400
- }
401
- async removeByName(cameraname) {
402
- let cameras = this.dbs.camerasDB.get('cameras') ?? [];
403
- const camera = cameras.find((cameraObj) => cameraObj.name === cameraname);
404
- if (camera) {
405
- cameras = cameras.filter((cameraObj) => cameraObj.name !== camera.name);
406
- for (const source of camera.sources) {
407
- cameraSourceProbeCache.delete(source._id);
408
- }
409
- await this.usersService.removeCameraFromPreferences(camera._id);
410
- await this.dbs.camerasDB.put('cameras', cameras);
411
- await this.removeCameraSourcesFromConfig(camera.name, camera.sources);
412
- await this.api.removeCamera(this.transformCamera(camera), camera.extensions);
413
- }
414
- }
415
- async removeById(id) {
416
- let cameras = this.dbs.camerasDB.get('cameras') ?? [];
417
- const camera = cameras.find((cameraObj) => cameraObj._id === id);
418
- if (camera) {
419
- cameras = cameras.filter((cameraObj) => cameraObj.name !== camera.name);
420
- for (const source of camera.sources) {
421
- cameraSourceProbeCache.delete(source._id);
422
- }
423
- await this.usersService.removeCameraFromPreferences(camera._id);
424
- await this.dbs.camerasDB.put('cameras', cameras);
425
- await this.removeCameraSourcesFromConfig(camera.name, camera.sources);
426
- await this.api.removeCamera(this.transformCamera(camera), camera.extensions);
427
- }
428
- }
429
- async removeByPluginName(pluginName) {
430
- const plugin = this.pluginsService.getPluginDbByName(pluginName);
431
- if (plugin) {
432
- await this.removeByPluginId(plugin._id);
433
- }
434
- }
435
- async removeByPluginId(pluginId) {
436
- let cameras = this.dbs.camerasDB.get('cameras') ?? [];
437
- const camera = cameras.find((cameraObj) => cameraObj.pluginId === pluginId);
438
- if (camera) {
439
- cameras = cameras.filter((cameraObj) => cameraObj._id !== camera._id);
440
- for (const source of camera.sources) {
441
- cameraSourceProbeCache.delete(source._id);
442
- }
443
- await this.usersService.removeCameraFromPreferences(camera._id);
444
- await this.dbs.camerasDB.put('cameras', cameras);
445
- await this.removeCameraSourcesFromConfig(camera.name, camera.sources);
446
- await this.api.removeCamera(this.transformCamera(camera), camera.extensions);
447
- }
448
- }
449
- async removeByPluginIdAndName(cameraname, pluginId) {
450
- let cameras = this.dbs.camerasDB.get('cameras') ?? [];
451
- const camera = cameras.find((cameraObj) => cameraObj.name === cameraname && cameraObj.pluginId === pluginId);
452
- if (camera) {
453
- cameras = cameras.filter((cameraObj) => cameraObj._id !== camera._id);
454
- for (const source of camera.sources) {
455
- cameraSourceProbeCache.delete(source._id);
456
- }
457
- await this.usersService.removeCameraFromPreferences(camera._id);
458
- await this.dbs.camerasDB.put('cameras', cameras);
459
- await this.removeCameraSourcesFromConfig(camera.name, camera.sources);
460
- await this.api.removeCamera(this.transformCamera(camera), camera.extensions);
461
- }
462
- }
463
- async removeAll() {
464
- let cameras = this.dbs.camerasDB.get('cameras') ?? [];
465
- const camerasToRemove = [];
466
- cameras.forEach((camera) => camerasToRemove.push(camera));
467
- cameras = [];
468
- cameraSourceProbeCache.clear();
469
- await this.usersService.resetAllPreferences();
470
- await this.dbs.camerasDB.put('cameras', cameras);
471
- for (const camera of camerasToRemove) {
472
- await this.removeCameraSourcesFromConfig(camera.name, camera.sources);
473
- }
474
- await Promise.all(camerasToRemove.map((camera) => this.api.removeCamera(this.transformCamera(camera), camera.extensions)));
475
- }
476
- async probeCameraSource(camera, source) {
477
- cameraSourceProbeCache.purgeStale();
478
- const inCache = cameraSourceProbeCache.get(source._id);
479
- if (inCache) {
480
- return inCache;
481
- }
482
- const src = createSourceName(camera.name, source.name);
483
- const probe = await this.go2rtcApi.streamsApi.probeStreamSource({ src });
484
- cameraSourceProbeCache.set(source._id, probe);
485
- return probe;
486
- }
487
- transformCamera(camera) {
488
- const transformedCamera = {
489
- _id: camera._id,
490
- nativeId: camera.nativeId,
491
- pluginId: camera.pluginId,
492
- name: camera.name,
493
- disabled: camera.disabled,
494
- info: camera.info,
495
- type: camera.type,
496
- snapshotTTL: camera.snapshotTTL,
497
- isCloud: camera.isCloud,
498
- hasLight: camera.hasLight,
499
- hasSiren: camera.hasSiren,
500
- hasBinarySensor: camera.hasBinarySensor,
501
- hasBattery: camera.hasBattery,
502
- hasAudioDetector: this.extensionIsEnabled(camera.extensions.audioDetection, 'audioDetection'),
503
- hasMotionDetector: this.extensionIsEnabled(camera.extensions.motionDetection, 'motionDetection'),
504
- extendedMotionDetector: this.isExtendedMotionDetector(camera.extensions.motionDetection),
505
- hasObjectDetector: this.extensionIsEnabled(camera.extensions.objectDetection, 'objectDetection'),
506
- hasPtz: this.extensionIsEnabled(camera.extensions.ptz, 'ptz'),
507
- hasPrebuffer: this.extensionIsEnabled(camera.extensions.prebuffer, 'prebuffer'),
508
- activityZones: this.convertToDetectionZones(camera.activityZones),
509
- activitySettings: camera.activitySettings,
510
- frameWorkerSettings: camera.frameWorkerSettings,
511
- sources: camera.sources.map((source) => ({
512
- _id: source._id,
513
- name: source.name,
514
- roles: source.roles,
515
- urls: {
516
- ws: this.generateWsUrls(camera, source),
517
- rtsp: this.generateRTSPUrls(camera, source),
518
- www: this.generateWWWUrls(camera, source),
519
- },
520
- internal: this.isInternalSource(source.name),
521
- })),
522
- };
523
- return transformedCamera;
524
- }
525
- addInternalSources(camera) {
526
- const sourcesToAdd = [];
527
- camera.sources = camera.sources.filter((source) => !source.internal && !this.isInternalSource(source.name));
528
- for (const source of camera.sources) {
529
- if (source.internal) {
530
- continue;
531
- }
532
- const defaultInternalSources = generateInternalCameraSources(camera.name, source.name, source.roles);
533
- defaultInternalSources.forEach((internalSource) => {
534
- sourcesToAdd.push(internalSource);
535
- });
536
- }
537
- camera.sources.push(...sourcesToAdd);
538
- }
539
- async addCameraSourcesToConfig(cameraname, sources) {
540
- for (const source of sources) {
541
- if (source.internal) {
542
- continue;
543
- }
544
- const sourceName = createSourceName(cameraname, source.name);
545
- const ffmpegSourceNameAAC = `${sourceName}_aac`;
546
- const ffmpegSourceNameOPUS = `${sourceName}_opus`;
547
- const ffmpegSourceNamePCMA = `${sourceName}_pcma`;
548
- const ffmpegSourceUrlAAC = `ffmpeg:${sourceName}#video=copy#audio=aac`;
549
- const ffmpegSourceUrlOPUS = `ffmpeg:${sourceName}#video=copy#audio=opus`;
550
- const ffmpegSourceUrlPCMA = `ffmpeg:${sourceName}#video=copy#audio=pcma`;
551
- const ffmpegAACSource = {
552
- name: ffmpegSourceNameAAC,
553
- src: [ffmpegSourceUrlAAC],
554
- // src: Array.from(new Set([`ffmpeg:${sourceName}#video=copy#audio=aac`, ...source.urls.filter((url) => !url.startsWith('ffmpeg'))])),
555
- };
556
- const ffmpegOPUSSource = {
557
- name: ffmpegSourceNameOPUS,
558
- src: [ffmpegSourceUrlOPUS],
559
- // src: Array.from(new Set([`ffmpeg:${sourceName}#video=copy#audio=opus`, ...source.urls.filter((url) => !url.startsWith('ffmpeg'))])),
560
- };
561
- const ffmpegPCMAAudioSource = {
562
- name: ffmpegSourceNamePCMA,
563
- src: [ffmpegSourceUrlPCMA],
564
- // src: Array.from(new Set([`ffmpeg:${sourceName}#video=copy#audio=pcma`, ...source.urls.filter((url) => !url.startsWith('ffmpeg'))])),
565
- };
566
- const cameraSources = [];
567
- if (!this.sourceExistAndEqual(sourceName, source.urls)) {
568
- cameraSources.push({ name: sourceName, src: source.urls });
569
- }
570
- const sourceWithoutTranscoding = source.roles.length === 1 && source.roles[0] === 'snapshot';
571
- if (!sourceWithoutTranscoding) {
572
- if (!this.configService.go2rtcConfig.streams?.[ffmpegAACSource.name]) {
573
- cameraSources.push(ffmpegAACSource);
574
- }
575
- if (!this.configService.go2rtcConfig.streams?.[ffmpegOPUSSource.name]) {
576
- cameraSources.push(ffmpegOPUSSource);
577
- }
578
- if (!this.configService.go2rtcConfig.streams?.[ffmpegPCMAAudioSource.name]) {
579
- cameraSources.push(ffmpegPCMAAudioSource);
580
- }
581
- }
582
- for (const sourceData of cameraSources) {
583
- // fix after go2rtc update
584
- await this.go2rtcApi.streamsApi.createStream({
585
- name: sourceData.name,
586
- src: sourceData.src[0], // fix after go2rtc update
587
- });
588
- // if (this.configService.go2rtcConfig.streams?.[sourceData.name]) {
589
- // await this.go2rtcApi.streamsApi.updateStreamSource({
590
- // name: sourceData.name,
591
- // src: sourceData.src,
592
- // });
593
- // } else {
594
- // await this.go2rtcApi.streamsApi.createStream({
595
- // name: sourceData.name,
596
- // src: sourceData.src,
597
- // });
598
- // }
599
- }
600
- if (!this.configService.go2rtcConfig.streams) {
601
- this.configService.go2rtcConfig.streams = {};
602
- }
603
- cameraSources.forEach((sourceData) => {
604
- this.configService.go2rtcConfig.streams[sourceData.name] = sourceData.src;
605
- });
606
- }
607
- }
608
- async removeCameraSourcesFromConfig(cameraname, oldSources) {
609
- for (const source of oldSources) {
610
- if (source.internal) {
611
- continue;
612
- }
613
- const sourceName = createSourceName(cameraname, source.name);
614
- const ffmpegSourceNameAAC = `${sourceName}_aac`;
615
- const ffmpegSourceNameOPUS = `${sourceName}_opus`;
616
- const ffmpegSourceNamePCMA = `${sourceName}_pcma`;
617
- const sourcesToRemove = [];
618
- if (this.configService.go2rtcConfig.streams?.[sourceName]) {
619
- sourcesToRemove.push(sourceName);
620
- }
621
- if (this.configService.go2rtcConfig.streams?.[ffmpegSourceNameAAC]) {
622
- sourcesToRemove.push(ffmpegSourceNameAAC);
623
- }
624
- if (this.configService.go2rtcConfig.streams?.[ffmpegSourceNameOPUS]) {
625
- sourcesToRemove.push(ffmpegSourceNameOPUS);
626
- }
627
- if (this.configService.go2rtcConfig.streams?.[ffmpegSourceNamePCMA]) {
628
- sourcesToRemove.push(ffmpegSourceNamePCMA);
629
- }
630
- for (const src of sourcesToRemove) {
631
- await this.go2rtcApi.streamsApi.deleteStream({ src });
632
- }
633
- if (!this.configService.go2rtcConfig.streams) {
634
- this.configService.go2rtcConfig.streams = {};
635
- }
636
- sourcesToRemove.forEach((src) => {
637
- delete this.configService.go2rtcConfig.streams?.[src];
638
- });
639
- if (Object.keys(this.configService.go2rtcConfig.streams).length === 0) {
640
- delete this.configService.go2rtcConfig.streams;
641
- await this.configService.writeGo2RtcConfigApi();
642
- }
643
- }
644
- }
645
- sourceExistAndEqual(sourceName, source) {
646
- if (this.configService.go2rtcConfig.streams?.[sourceName]) {
647
- let configSource = this.configService.go2rtcConfig.streams[sourceName];
648
- configSource = typeof configSource === 'string' ? [configSource] : configSource;
649
- return isEqual(configSource, source, true);
650
- }
651
- return false;
652
- }
653
- generateWsUrls(camera, source) {
654
- const sourceName = createSourceName(camera.name, source.name);
655
- const baseWebRtcUrl = `ws://${this.go2rtcAddress()}/api/ws?src=${sourceName}`;
656
- return {
657
- webrtc: baseWebRtcUrl,
658
- };
659
- }
660
- generateRTSPUrls(camera, source) {
661
- const sourceName = createSourceName(camera.name, source.name);
662
- const baseRtspUrl = `rtsp://${this.go2rtcAddress('rtsp')}/${sourceName}`;
663
- return {
664
- single: baseRtspUrl,
665
- default: `${baseRtspUrl}?video=all&audio=all`,
666
- mp4: `${baseRtspUrl}?mp4`,
667
- };
668
- }
669
- generateWWWUrls(camera, source) {
670
- const sourceName = createSourceName(camera.name, source.name);
671
- const baseStreamUrl = `http://${this.go2rtcAddress()}/stream.html?src=${sourceName}`;
672
- const baseMjpegStreamUrl = `http://${this.go2rtcAddress()}/api/stream.mjpeg?src=${sourceName}`;
673
- const baseMp4StreamUrl = `http://${this.go2rtcAddress()}/api/stream.mp4?src=${sourceName}`;
674
- const baseFrameMp4StreamUrl = `http://${this.go2rtcAddress()}/api/frame.mp4?src=${sourceName}`;
675
- const baseFrameJpegStreamUrl = `http://${this.go2rtcAddress()}/api/frame.jpeg?src=${sourceName}`;
676
- const baseHlsStreamUrl = `http://${this.go2rtcAddress()}/api/stream.m3u8?src=${sourceName}`;
677
- return {
678
- webrtc: `${baseStreamUrl}&mode=webrtc`,
679
- mse: `${baseStreamUrl}&mode=mse`,
680
- lmp4: baseMp4StreamUrl,
681
- mmp4: `${baseMp4StreamUrl}&mp4=flac`,
682
- mp4: `${baseMp4StreamUrl}&mp4=all`,
683
- mp4Snapshot: baseFrameMp4StreamUrl,
684
- jpegSnapshot: baseFrameJpegStreamUrl,
685
- lHlsTs: baseHlsStreamUrl,
686
- lHlsFmp4: `${baseHlsStreamUrl}&mp4`,
687
- mHlsFmp4: `${baseHlsStreamUrl}&mp4=flac`,
688
- mjpeg: baseMjpegStreamUrl,
689
- mjpegHtml: `${baseStreamUrl}&mode=mjpeg`,
690
- };
691
- }
692
- extensionIsEnabled(extension, type) {
693
- if (!extension || !type) {
694
- return false;
695
- }
696
- const plugin = this.pluginsService.getPluginByName(extension);
697
- if (plugin && !plugin.disabled && (plugin.contract.extension === type || plugin.contract.builtIns?.includes(type))) {
698
- return true;
699
- }
700
- return false;
701
- }
702
- isExtendedMotionDetector(extension) {
703
- if (!extension) {
704
- return false;
705
- }
706
- const plugin = this.pluginsService.getPluginByName(extension);
707
- if (plugin && !plugin.disabled && (plugin.contract.extension === 'motionDetection' || plugin.contract.builtIns?.includes('motionDetection'))) {
708
- return plugin.contract.options?.extendedMotionDetection ?? false;
709
- }
710
- return false;
711
- }
712
- defaultZone() {
713
- return cameraZonesSchema.parse({
714
- name: 'Default',
715
- regions: [
716
- {
717
- _id: '',
718
- classes: ['motion', 'person'],
719
- coords: [
720
- {
721
- _id: '',
722
- points: [0, 0],
723
- },
724
- {
725
- _id: '',
726
- points: [0, 100],
727
- },
728
- {
729
- _id: '',
730
- points: [100, 100],
731
- },
732
- {
733
- _id: '',
734
- points: [100, 0],
735
- },
736
- ],
737
- filter: 'include',
738
- isPrivacyMask: false,
739
- type: 'contain',
740
- },
741
- ],
742
- });
743
- }
744
- convertToDetectionZones(cameraZones) {
745
- const zones = [];
746
- for (const zone of cameraZones) {
747
- const name = zone.name;
748
- const regions = zone.regions;
749
- regions.forEach((region) => {
750
- const points = region.coords.map((coord) => coord.points);
751
- const type = region.type;
752
- const filter = region.filter;
753
- const classes = region.classes;
754
- const isPrivacyMask = region.isPrivacyMask;
755
- zones.push({
756
- name,
757
- points,
758
- type,
759
- filter,
760
- classes,
761
- isPrivacyMask,
762
- });
763
- });
764
- }
765
- return zones;
766
- }
767
- isInternalSource(sourceName) {
768
- return (sourceName.endsWith(' AAC') ||
769
- sourceName.endsWith(' OPUS') ||
770
- sourceName.endsWith(' PCMA') ||
771
- sourceName.endsWith('_aac') ||
772
- sourceName.endsWith('_opus') ||
773
- sourceName.endsWith('_pcma'));
774
- }
775
- go2rtcAddress(mod = 'api') {
776
- const go2rtcPort = parseInt(this.configService.go2rtcConfig[mod].listen.split(':')[1], 10);
777
- return `127.0.0.1:${go2rtcPort}`;
778
- }
779
- };
780
- CamerasService = __decorate([
781
- registry([
782
- {
783
- token: 'dbs',
784
- useValue: delay(() => Database),
785
- },
786
- ]),
787
- __metadata("design:paramtypes", [])
788
- ], CamerasService);
789
- export { CamerasService };
790
- //# sourceMappingURL=cameras.service.js.map