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
package/CHANGELOG.md ADDED
@@ -0,0 +1,8 @@
1
+ All notable changes to this project will be documented in this file.
2
+
3
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
4
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
5
+
6
+ ## [X.X.X] - ???
7
+
8
+ - Initial Release
@@ -0,0 +1 @@
1
+ # Contributing
package/LICENSE.md ADDED
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023-2024 seydx <dev@seydx.com>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # @camera.ui/service
@@ -1,24 +1,28 @@
1
1
  #!/usr/bin/env node
2
+ import type { PathLike } from 'fs-extra';
2
3
  export declare class CameraUiCLI {
3
- DEFAULT_PORT: number;
4
- action: 'install' | 'uninstall' | 'reinstall' | 'before-start' | 'start' | 'stop' | 'restart' | 'run' | 'logs' | 'status';
4
+ readonly DEFAULT_PORT = 3443;
5
5
  selfPath: string;
6
+ processPath: string;
7
+ action: 'install' | 'uninstall' | 'reinstall' | 'before-start' | 'start' | 'stop' | 'restart' | 'run' | 'logs' | 'status';
6
8
  homePath: string;
7
9
  storagePath: string;
8
10
  serviceName: string;
9
11
  allowRunRoot: boolean;
10
12
  asUser?: string;
11
13
  addGroup?: string;
12
- private stdout;
13
- private docker?;
14
+ stdout: boolean;
15
+ docker?: boolean;
16
+ uid?: number;
17
+ gid?: number;
14
18
  private installer;
15
19
  private forkedProcess?;
16
- private uid?;
17
- private gid?;
18
- private shuttingDown;
19
- private abortRestart;
20
20
  private logging;
21
21
  private signalHandler?;
22
+ private serverManager;
23
+ private shuttingDown;
24
+ private shuttingDownNodemon;
25
+ get abortRestart(): boolean;
22
26
  get isDocker(): boolean;
23
27
  get logPath(): string;
24
28
  get configFilePath(): string;
@@ -28,22 +32,25 @@ export declare class CameraUiCLI {
28
32
  printPostInstallInstructions(type: 'start' | 'restart' | 'status'): Promise<void>;
29
33
  portCheck(): Promise<void>;
30
34
  homePathCheck(): Promise<void>;
35
+ chownPath(pathToChown: PathLike): Promise<void>;
31
36
  getUserHomeDir(): string;
32
37
  waitForApiHealth(maxWaitTime?: number): Promise<boolean>;
33
- getInstallDir(): string;
34
- private showVersion;
38
+ private nodeVersionCheck;
39
+ private createInstaller;
40
+ private cli;
41
+ private setEnv;
42
+ private runAction;
43
+ private nvmCheck;
35
44
  private launch;
36
45
  private run;
37
46
  private stop;
38
- private setEnv;
39
- private storagePathCheck;
40
- private statusCheck;
41
- private nodeVersionCheck;
42
- private nvmCheck;
43
- private staleProcessCheck;
44
47
  private tailLogs;
48
+ private statusCheck;
45
49
  private fetchApiHealth;
46
- private chownPath;
50
+ private showVersion;
51
+ private programUsage;
52
+ private storagePathCheck;
47
53
  private fixDockerPermissions;
54
+ private staleProcessCheck;
48
55
  private handleClose;
49
56
  }
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  process.title = 'camera.ui-service';
3
3
  import { isPortInUse } from '@camera.ui/common/net';
4
- import { getInstallDir, getUserHomeDir, isProcessRunning } from '@camera.ui/common/node';
4
+ import { getUserHomeDir } from '@camera.ui/common/node';
5
5
  import { IS_DEV, IS_DOCKER, SignalHandler } from '@camera.ui/common/utils';
6
6
  import { program } from 'commander';
7
7
  import { mkdirp, pathExists, readJsonSync } from 'fs-extra/esm';
8
8
  import { request } from 'https';
9
9
  import { load } from 'js-yaml';
10
- import { execSync, fork } from 'node:child_process';
10
+ import { execSync } from 'node:child_process';
11
11
  import { chownSync, createReadStream, existsSync, readFileSync } from 'node:fs';
12
12
  import { stat } from 'node:fs/promises';
13
13
  import { arch, cpus, platform } from 'node:os';
@@ -16,18 +16,19 @@ import { fileURLToPath } from 'node:url';
16
16
  import ora from 'ora';
17
17
  import { networkInterfaceDefault, networkInterfaces } from 'systeminformation';
18
18
  import { Tail } from 'tail';
19
- import { APP_NAME } from '../src/services/config/constants.js';
20
19
  import { DarwinInstaller } from './installer/darwin.js';
21
20
  import { FreeBSDInstaller } from './installer/freebsd.js';
22
21
  import { LinuxInstaller } from './installer/linux.js';
23
22
  import { Win32Installer } from './installer/win32.js';
24
23
  import { CLILogger } from './logger.js';
24
+ import { ServerManager } from './manager.js';
25
25
  const __filename = fileURLToPath(import.meta.url);
26
26
  const __dirname = dirname(__filename);
27
27
  export class CameraUiCLI {
28
28
  DEFAULT_PORT = 3443;
29
- action;
30
29
  selfPath = __filename;
30
+ processPath = process.env.PATH + ':/opt/homebridge/bin';
31
+ action;
31
32
  homePath;
32
33
  storagePath;
33
34
  serviceName = 'cameraui';
@@ -36,14 +37,18 @@ export class CameraUiCLI {
36
37
  addGroup;
37
38
  stdout = false;
38
39
  docker;
39
- installer;
40
- forkedProcess;
41
40
  uid;
42
41
  gid;
43
- shuttingDown = false;
44
- abortRestart = false;
42
+ installer;
43
+ forkedProcess;
45
44
  logging;
46
45
  signalHandler;
46
+ serverManager;
47
+ shuttingDown = false;
48
+ shuttingDownNodemon = false;
49
+ get abortRestart() {
50
+ return this.shuttingDownNodemon || this.serverManager.serverCrashed;
51
+ }
47
52
  get isDocker() {
48
53
  return IS_DOCKER ?? this.docker ?? false;
49
54
  }
@@ -64,6 +69,92 @@ export class CameraUiCLI {
64
69
  }
65
70
  constructor() {
66
71
  this.nodeVersionCheck();
72
+ this.createInstaller();
73
+ this.cli();
74
+ this.setEnv();
75
+ this.logging = new CLILogger(this.logPath, this.action, this.stdout, IS_DEV);
76
+ this.serverManager = new ServerManager(this, {
77
+ onClose: this.handleClose.bind(this),
78
+ });
79
+ this.runAction();
80
+ }
81
+ logger(msg, level) {
82
+ this.logging.log(msg, level);
83
+ }
84
+ async printPostInstallInstructions(type) {
85
+ const defaultAdapter = await networkInterfaceDefault();
86
+ const netInterfaces = await networkInterfaces();
87
+ const defaultInterface = Array.isArray(netInterfaces)
88
+ ? netInterfaces.find((x) => x.iface === defaultAdapter)
89
+ : netInterfaces.iface === defaultAdapter
90
+ ? netInterfaces
91
+ : null;
92
+ console.log('\nManage camera.ui by going to one of the following in your browser:\n');
93
+ console.log(`* https://localhost:${this.uiPort}`);
94
+ if (defaultInterface?.ip4) {
95
+ console.log(`* https://${defaultInterface.ip4}:${this.uiPort}`);
96
+ }
97
+ if (defaultInterface?.ip6) {
98
+ console.log(`* https://[${defaultInterface.ip6}]:${this.uiPort}`);
99
+ }
100
+ if (type !== 'status') {
101
+ console.log('');
102
+ this.logger(`camera.ui ${type} complete`, 'succeed');
103
+ }
104
+ }
105
+ async portCheck() {
106
+ const inUse = await isPortInUse(this.uiPort);
107
+ if (inUse) {
108
+ this.logger(`ERROR: Port ${this.uiPort} is already in use by another process on this host.`, 'fail');
109
+ this.logger('You can change the port in the camera.ui config file.', 'fail');
110
+ process.exit(1);
111
+ }
112
+ }
113
+ async homePathCheck() {
114
+ if (!(await pathExists(this.homePath))) {
115
+ this.logger(`Creating camera.ui home directory: ${this.homePath}`, 'info');
116
+ await mkdirp(this.homePath);
117
+ await this.chownPath(this.homePath);
118
+ }
119
+ await this.storagePathCheck();
120
+ }
121
+ async chownPath(pathToChown) {
122
+ if (platform() !== 'win32' && process.getuid?.() === 0) {
123
+ const { uid, gid } = await this.installer.getId();
124
+ chownSync(pathToChown, uid, gid);
125
+ }
126
+ }
127
+ getUserHomeDir() {
128
+ return getUserHomeDir(this.asUser);
129
+ }
130
+ async waitForApiHealth(maxWaitTime = 300000) {
131
+ const startTime = Date.now();
132
+ const checkInterval = 5000; // Check every 5 seconds
133
+ const spinner = ora('Setup in progress. Waiting for the UI to become available...').start();
134
+ while (Date.now() - startTime < maxWaitTime) {
135
+ try {
136
+ const isHealthy = await this.fetchApiHealth();
137
+ if (isHealthy) {
138
+ spinner.succeed('UI is now available.');
139
+ return true;
140
+ }
141
+ }
142
+ catch {
143
+ // UI not ready yet, continue waiting
144
+ }
145
+ await new Promise((_resolve) => setTimeout(_resolve, checkInterval));
146
+ }
147
+ spinner.fail('UI did not become available within the expected time.');
148
+ return false;
149
+ }
150
+ nodeVersionCheck() {
151
+ // 115 = v20;
152
+ if (parseInt(process.versions.modules, 10) < 64) {
153
+ this.logger(`ERROR: Node.js v20 or greater is required. Current: ${process.version}.`, 'fail');
154
+ process.exit(1);
155
+ }
156
+ }
157
+ createInstaller() {
67
158
  switch (platform()) {
68
159
  case 'linux':
69
160
  this.installer = new LinuxInstaller(this);
@@ -81,6 +172,8 @@ export class CameraUiCLI {
81
172
  this.logger(`ERROR: This command is not supported on ${platform()}.`, 'fail');
82
173
  process.exit(1);
83
174
  }
175
+ }
176
+ cli() {
84
177
  program
85
178
  .allowUnknownOption()
86
179
  .storeOptionsAsProperties(true)
@@ -99,8 +192,29 @@ export class CameraUiCLI {
99
192
  .option('-v, --version', 'Output the version number', () => this.showVersion())
100
193
  .action((cmd) => (this.action = cmd))
101
194
  .parse(process.argv);
102
- this.setEnv();
103
- this.logging = new CLILogger(this.logPath, this.action, this.stdout, IS_DEV);
195
+ }
196
+ setEnv() {
197
+ if (this.docker) {
198
+ process.env.CAMERA_UI_RUNMODE = 'docker';
199
+ }
200
+ if (!/^[a-z0-9-]+$/i.exec(this.serviceName)) {
201
+ this.logger(`ERROR: Service name must not contain spaces or special characters: ${this.serviceName}`, 'fail');
202
+ process.exit(1);
203
+ }
204
+ if (!this.homePath) {
205
+ if (IS_DEV) {
206
+ this.homePath = join(__dirname, '..', '..', '..', '..', '.camera.ui');
207
+ }
208
+ else {
209
+ this.homePath = join(this.getUserHomeDir(), '.camera.ui');
210
+ }
211
+ }
212
+ else {
213
+ this.homePath = resolve(this.homePath);
214
+ }
215
+ this.storagePath = join(this.homePath, 'volume');
216
+ }
217
+ runAction() {
104
218
  switch (this.action) {
105
219
  case 'install': {
106
220
  this.nvmCheck();
@@ -153,89 +267,18 @@ export class CameraUiCLI {
153
267
  }
154
268
  default: {
155
269
  program.outputHelp();
156
- console.log('Please provide a command:');
157
- console.log(' install install camera.ui as a service');
158
- console.log(' uninstall remove the camera.ui service');
159
- console.log(' start start the camera.ui service');
160
- console.log(' stop stop the camera.ui service');
161
- console.log(' restart restart the camera.ui service');
162
- console.log(' run run camera.ui daemon');
163
- console.log(' logs tails the camera.ui service logs');
164
- console.log(' status check the status of the camera.ui service\n');
270
+ this.programUsage();
165
271
  process.exit(1);
166
272
  }
167
273
  }
168
274
  }
169
- logger(msg, level) {
170
- this.logging.log(msg, level);
171
- }
172
- async printPostInstallInstructions(type) {
173
- const defaultAdapter = await networkInterfaceDefault();
174
- const netInterfaces = await networkInterfaces();
175
- const defaultInterface = Array.isArray(netInterfaces)
176
- ? netInterfaces.find((x) => x.iface === defaultAdapter)
177
- : netInterfaces.iface === defaultAdapter
178
- ? netInterfaces
179
- : null;
180
- console.log('\nManage camera.ui by going to one of the following in your browser:\n');
181
- console.log(`* https://localhost:${this.uiPort}`);
182
- if (defaultInterface?.ip4) {
183
- console.log(`* https://${defaultInterface.ip4}:${this.uiPort}`);
184
- }
185
- if (defaultInterface?.ip6) {
186
- console.log(`* https://[${defaultInterface.ip6}]:${this.uiPort}`);
187
- }
188
- if (type !== 'status') {
189
- console.log('');
190
- this.logger(`camera.ui ${type} complete`, 'succeed');
191
- }
192
- }
193
- async portCheck() {
194
- const inUse = await isPortInUse(this.uiPort);
195
- if (inUse) {
196
- this.logger(`ERROR: Port ${this.uiPort} is already in use by another process on this host.`, 'fail');
197
- this.logger('You can change the port in the camera.ui config file.', 'fail');
198
- process.exit(1);
199
- }
200
- }
201
- async homePathCheck() {
202
- if (!(await pathExists(this.homePath))) {
203
- this.logger(`Creating camera.ui home directory: ${this.homePath}`, 'info');
204
- await mkdirp(this.homePath);
205
- await this.chownPath(this.homePath);
206
- }
207
- await this.storagePathCheck();
208
- }
209
- getUserHomeDir() {
210
- return getUserHomeDir(this.asUser);
211
- }
212
- async waitForApiHealth(maxWaitTime = 300000) {
213
- const startTime = Date.now();
214
- const checkInterval = 5000; // Check every 5 seconds
215
- const spinner = ora('Setup in progress. Waiting for the UI to become available...').start();
216
- while (Date.now() - startTime < maxWaitTime) {
217
- try {
218
- const isHealthy = await this.fetchApiHealth();
219
- if (isHealthy) {
220
- spinner.succeed('UI is now available.');
221
- return true;
222
- }
223
- }
224
- catch {
225
- // UI not ready yet, continue waiting
226
- }
227
- await new Promise((_resolve) => setTimeout(_resolve, checkInterval));
275
+ nvmCheck() {
276
+ if (process.execPath.includes('nvm') && platform() === 'linux') {
277
+ // prettier-ignore
278
+ this.logger('WARNING: It looks like you are running Node.js via NVM (Node Version Manager).\n' +
279
+ ' Using cameraui service with NVM may not work unless you have configured NVM for the\n' +
280
+ ' user this service will run as', 'warn');
228
281
  }
229
- spinner.fail('UI did not become available within the expected time.');
230
- return false;
231
- }
232
- getInstallDir() {
233
- return getInstallDir(__dirname, APP_NAME);
234
- }
235
- showVersion() {
236
- const pjson = readJsonSync(join(__dirname, '../', 'package.json'));
237
- console.log('v' + pjson.version);
238
- process.exit(0);
239
282
  }
240
283
  async launch() {
241
284
  if (platform() !== 'win32' && process.getuid?.() === 0 && !this.allowRunRoot) {
@@ -246,6 +289,7 @@ export class CameraUiCLI {
246
289
  try {
247
290
  await this.homePathCheck();
248
291
  await this.logging.init();
292
+ await this.serverManager.ensureInstalled();
249
293
  }
250
294
  catch (e) {
251
295
  this.logger(e.message, 'fail');
@@ -263,7 +307,7 @@ export class CameraUiCLI {
263
307
  trace: (...args) => this.logger(args.join(' '), 'debug'),
264
308
  attention: (...args) => this.logger(args.join(' '), 'warn'),
265
309
  },
266
- onSIGUSR2: () => (this.abortRestart = true),
310
+ onSIGUSR2: () => (this.shuttingDownNodemon = true),
267
311
  closeFunction: this.stop.bind(this),
268
312
  });
269
313
  if (cpus().length === 1 && arch() === 'arm') {
@@ -277,126 +321,16 @@ export class CameraUiCLI {
277
321
  }
278
322
  }
279
323
  run() {
280
- const env = {
281
- CAMERA_UI_AS_SERVICE: 'true',
282
- FORCE_COLOR: '1',
283
- };
284
- Object.assign(env, process.env);
285
- const childProcessOpts = {
286
- env,
287
- silent: true,
288
- };
289
- if (this.allowRunRoot && this.uid && this.gid) {
290
- childProcessOpts.uid = this.uid;
291
- childProcessOpts.gid = this.gid;
292
- }
293
324
  if (this.isDocker) {
294
325
  this.fixDockerPermissions();
295
326
  }
296
- const forkPath = IS_DEV ? join(__dirname, '../src/main.ts') : join(__dirname, '../src/main.js');
297
- // const forkPath = join(__dirname, './main.js');
298
- this.forkedProcess = fork(forkPath, ['-H', this.homePath], childProcessOpts);
299
- this.forkedProcess.stdout?.pipe(process.stdout);
300
- this.forkedProcess.stderr?.pipe(process.stderr);
301
- this.forkedProcess.on('message', (message) => {
302
- if (message === 'error') {
303
- this.abortRestart = true;
304
- }
305
- });
306
- this.forkedProcess.on('close', (code, signal) => {
307
- this.handleClose(code, signal);
327
+ this.serverManager.start().catch((error) => {
328
+ this.logger(`Failed to start server: ${error.message}`, 'fail');
329
+ process.exit(1);
308
330
  });
309
331
  }
310
332
  async stop() {
311
- if (!this.forkedProcess || this.forkedProcess.killed || !this.forkedProcess.pid || !isProcessRunning(this.forkedProcess.pid)) {
312
- return;
313
- }
314
- this.forkedProcess.stdout?.unpipe(process.stdout);
315
- this.forkedProcess.stderr?.unpipe(process.stderr);
316
- this.forkedProcess.stdout?.destroy();
317
- this.forkedProcess.stderr?.destroy();
318
- return new Promise((resolve) => {
319
- this.forkedProcess.once('close', (code) => {
320
- this.logger(`Child process exited with code ${code}`, code === 0 ? 'info' : 'warn');
321
- resolve();
322
- });
323
- this.forkedProcess.kill('SIGTERM');
324
- });
325
- }
326
- setEnv() {
327
- if (!/^[a-z0-9-]+$/i.exec(this.serviceName)) {
328
- this.logger(`ERROR: Service name must not contain spaces or special characters: ${this.serviceName}`, 'fail');
329
- process.exit(1);
330
- }
331
- if (!this.homePath) {
332
- if (IS_DEV) {
333
- this.homePath = join(__dirname, '..', '..', '.camera.ui');
334
- }
335
- else {
336
- this.homePath = join(this.getUserHomeDir(), '.camera.ui');
337
- }
338
- }
339
- else {
340
- this.homePath = resolve(this.homePath);
341
- }
342
- this.storagePath = join(this.homePath, 'volume');
343
- }
344
- async storagePathCheck() {
345
- if (!(await pathExists(this.storagePath))) {
346
- this.logger(`Creating camera.ui storage directory: ${this.storagePath}`, 'info');
347
- await mkdirp(this.storagePath);
348
- await this.chownPath(this.storagePath);
349
- }
350
- }
351
- async statusCheck() {
352
- this.logger(`Check if camera.ui is running on port ${this.uiPort}...`, 'info');
353
- try {
354
- await this.fetchApiHealth();
355
- this.logger('camera.ui running', 'succeed');
356
- await this.printPostInstallInstructions('status');
357
- }
358
- catch {
359
- this.logger('camera.ui not running!', 'fail');
360
- process.exit(1);
361
- }
362
- }
363
- nodeVersionCheck() {
364
- // 115 = v20;
365
- if (parseInt(process.versions.modules, 10) < 64) {
366
- this.logger(`ERROR: Node.js v20 or greater is required. Current: ${process.version}.`, 'fail');
367
- process.exit(1);
368
- }
369
- }
370
- nvmCheck() {
371
- if (process.execPath.includes('nvm') && platform() === 'linux') {
372
- // prettier-ignore
373
- this.logger('WARNING: It looks like you are running Node.js via NVM (Node Version Manager).\n' +
374
- ' Using cameraui service with NVM may not work unless you have configured NVM for the\n' +
375
- ' user this service will run as', 'warn');
376
- }
377
- }
378
- async staleProcessCheck() {
379
- if (platform() === 'win32') {
380
- return;
381
- }
382
- try {
383
- const uiPort = this.uiPort;
384
- // check if port is still in use
385
- if (!(await isPortInUse(uiPort))) {
386
- return;
387
- }
388
- // find the pid of the process using the port
389
- const pid = this.installer.getPidOfPort(uiPort);
390
- if (!pid) {
391
- return;
392
- }
393
- // kill the stale camera.ui process
394
- this.logger(`Found stale camera.ui process running on port ${uiPort} with PID ${pid}, killing...`, 'warn');
395
- process.kill(parseInt(pid, 10), 'SIGKILL');
396
- }
397
- catch {
398
- // do nothing
399
- }
333
+ return this.serverManager.stop();
400
334
  }
401
335
  async tailLogs() {
402
336
  if (!existsSync(this.logPath)) {
@@ -421,6 +355,18 @@ export class CameraUiCLI {
421
355
  });
422
356
  tail.on('line', console.log);
423
357
  }
358
+ async statusCheck() {
359
+ this.logger(`Check if camera.ui is running on port ${this.uiPort}...`, 'info');
360
+ try {
361
+ await this.fetchApiHealth();
362
+ this.logger('camera.ui running', 'succeed');
363
+ await this.printPostInstallInstructions('status');
364
+ }
365
+ catch {
366
+ this.logger('camera.ui not running!', 'fail');
367
+ process.exit(1);
368
+ }
369
+ }
424
370
  fetchApiHealth() {
425
371
  return new Promise((_resolve, _reject) => {
426
372
  const options = {
@@ -459,10 +405,28 @@ export class CameraUiCLI {
459
405
  req.end();
460
406
  });
461
407
  }
462
- async chownPath(pathToChown) {
463
- if (platform() !== 'win32' && process.getuid?.() === 0) {
464
- const { uid, gid } = await this.installer.getId();
465
- chownSync(pathToChown, uid, gid);
408
+ showVersion() {
409
+ const pjson = readJsonSync(join(__dirname, '..', 'package.json'));
410
+ console.log('v' + pjson.version);
411
+ process.exit(0);
412
+ }
413
+ programUsage() {
414
+ console.log('Please provide a command:');
415
+ console.log(' install install camera.ui as a service');
416
+ console.log(' uninstall remove the camera.ui service');
417
+ console.log(' reinstall reinstall the camera.ui service');
418
+ console.log(' start start the camera.ui service');
419
+ console.log(' stop stop the camera.ui service');
420
+ console.log(' restart restart the camera.ui service');
421
+ console.log(' run run camera.ui daemon');
422
+ console.log(' logs tails the camera.ui service logs');
423
+ console.log(' status check the status of the camera.ui service\n');
424
+ }
425
+ async storagePathCheck() {
426
+ if (!(await pathExists(this.storagePath))) {
427
+ this.logger(`Creating camera.ui storage directory: ${this.storagePath}`, 'info');
428
+ await mkdirp(this.storagePath);
429
+ await this.chownPath(this.storagePath);
466
430
  }
467
431
  }
468
432
  fixDockerPermissions() {
@@ -486,6 +450,29 @@ export class CameraUiCLI {
486
450
  this.logger('Docker container must be run with --privileged flag to set sysctl values', 'warn');
487
451
  }
488
452
  }
453
+ async staleProcessCheck() {
454
+ if (platform() === 'win32') {
455
+ return;
456
+ }
457
+ try {
458
+ const uiPort = this.uiPort;
459
+ // check if port is still in use
460
+ if (!(await isPortInUse(uiPort))) {
461
+ return;
462
+ }
463
+ // find the pid of the process using the port
464
+ const pid = this.installer.getPidOfPort(uiPort);
465
+ if (!pid) {
466
+ return;
467
+ }
468
+ // kill the stale camera.ui process
469
+ this.logger(`Found stale camera.ui process running on port ${uiPort} with PID ${pid}, killing...`, 'warn');
470
+ process.kill(parseInt(pid, 10), 'SIGKILL');
471
+ }
472
+ catch {
473
+ // do nothing
474
+ }
475
+ }
489
476
  handleClose(code, signal) {
490
477
  this.logger(`camera.ui Process Ended. Code: ${code}, Signal: ${signal}, Restarting: ${!this.abortRestart}`, 'info');
491
478
  this.staleProcessCheck();
@@ -497,7 +484,7 @@ export class CameraUiCLI {
497
484
  this.logger('Restarting camera.ui...', 'info');
498
485
  this.run();
499
486
  }
500
- }, 5000);
487
+ }, 2000);
501
488
  }
502
489
  }
503
490
  function launch() {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cameraui.js","sourceRoot":"","sources":["../src/cameraui.ts"],"names":[],"mappings":"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"}