@camera.ui/server 0.0.22-alpha.0 → 0.0.22-alpha.2

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 (569) hide show
  1. package/dist/interface/@intlify.DXtFJcML.0.0.22-alpha.2.js +15 -0
  2. package/dist/interface/@mdi.C1UTQKuc.0.0.22-alpha.2.js +1 -0
  3. package/dist/interface/@tanstack.B6ZKNODP.0.0.22-alpha.2.js +1 -0
  4. package/dist/interface/{@vee-validate.BgtYefC2.0.0.22-alpha.0.js → @vee-validate.BLOXgupV.0.0.22-alpha.2.js} +2 -2
  5. package/dist/interface/@vue.DYBoJLkm.0.0.22-alpha.2.js +17 -0
  6. package/dist/interface/{@vueform.BbHIRROu.0.0.22-alpha.0.js → @vueform.BNEdNEfe.0.0.22-alpha.2.js} +1 -1
  7. package/dist/interface/@vueuse.DLeXr990.0.0.22-alpha.2.js +1 -0
  8. package/dist/interface/Account.CJmkOolZ.0.0.22-alpha.2.js +1 -0
  9. package/dist/interface/Adminpanel.Tg7HwSe9.0.0.22-alpha.2.js +2 -0
  10. package/dist/interface/Appearance.Bu1bU0wi.0.0.22-alpha.2.js +1 -0
  11. package/dist/interface/Backup.8VdHTNcr.0.0.22-alpha.2.js +1 -0
  12. package/dist/interface/Camera.Dg8hy2Yt.0.0.22-alpha.2.js +1 -0
  13. package/dist/interface/Cameras.BIlZs0XL.0.0.22-alpha.2.js +1 -0
  14. package/dist/interface/Camview.BOntwhuV.0.0.22-alpha.2.js +1 -0
  15. package/dist/interface/Config.jsnOhEqZ.0.0.22-alpha.2.js +1 -0
  16. package/dist/interface/Console.D9pK-qBL.0.0.22-alpha.2.js +4 -0
  17. package/dist/interface/FirstSteps.Cb5a8AUL.0.0.22-alpha.2.js +1 -0
  18. package/dist/interface/{NewCamera.CB2ARQ7q.0.0.22-alpha.0.js → NewCamera.Dz60UmLc.0.0.22-alpha.2.js} +2 -2
  19. package/dist/interface/Plugin.DsAb_cep.0.0.22-alpha.2.js +1 -0
  20. package/dist/interface/Plugins.bxGkXmVc.0.0.22-alpha.2.js +1 -0
  21. package/dist/interface/Recordings.BTkAhv1T.0.0.22-alpha.2.js +1 -0
  22. package/dist/interface/Recordings.C_TDdsbp.0.0.22-alpha.2.js +1 -0
  23. package/dist/interface/Settings.Br20f1vP.0.0.22-alpha.2.js +1 -0
  24. package/dist/interface/System.WdQgcjx6.0.0.22-alpha.2.js +4 -0
  25. package/dist/interface/User.BUO6E9hO.0.0.22-alpha.2.js +1 -0
  26. package/dist/interface/VConfigEditor.vue_vue_type_script_setup_true_lang.V-YCJXF9.0.0.22-alpha.2.js +2 -0
  27. package/dist/interface/VConsole.efu2RLE4.0.0.22-alpha.2.js +1 -0
  28. package/dist/interface/VPlayer.7xACf1AA.0.0.22-alpha.2.js +4 -0
  29. package/dist/interface/VPluginCard.DObvo0pi.0.0.22-alpha.2.js +4 -0
  30. package/dist/interface/{ace-builds.BJA55oyY.0.0.22-alpha.0.js → ace-builds.CYuWji3-.0.0.22-alpha.2.js} +27 -27
  31. package/dist/interface/{apexcharts.CDIQ8dOe.0.0.22-alpha.0.js → apexcharts.BjVuUwvF.0.0.22-alpha.2.js} +1 -1
  32. package/dist/interface/assets/Adminpanel.0.0.22-alpha.2.a3t1v3MB.css +1 -0
  33. package/dist/interface/assets/Camera.0.0.22-alpha.2.D1I-fW4q.css +1 -0
  34. package/dist/interface/assets/Cameras.0.0.22-alpha.2.Buf1Dgce.css +1 -0
  35. package/dist/interface/assets/Camview.0.0.22-alpha.2.B7Cja2ry.css +1 -0
  36. package/dist/interface/assets/Config.0.0.22-alpha.2.DNGo2krN.css +1 -0
  37. package/dist/interface/assets/Console.0.0.22-alpha.2.Bh8l9QnM.css +1 -0
  38. package/dist/interface/assets/FirstSteps.0.0.22-alpha.2.sPEcItZ6.css +1 -0
  39. package/dist/interface/assets/NewCamera.0.0.22-alpha.2.Cq8GzeJ7.css +1 -0
  40. package/dist/interface/assets/{Settings.0.0.22-alpha.0.DC_-E3CR.css → Settings.0.0.22-alpha.2.CVmui2kE.css} +1 -1
  41. package/dist/interface/assets/VConsole.0.0.22-alpha.2.BCqKHpmJ.css +1 -0
  42. package/dist/interface/assets/VPlayer.0.0.22-alpha.2.DNtDNhfg.css +1 -0
  43. package/dist/interface/assets/VPluginCard.0.0.22-alpha.2.C8Lj6X-J.css +1 -0
  44. package/dist/interface/assets/main.0.0.22-alpha.2.DNhh__S1.css +1 -0
  45. package/dist/interface/assets/{vuetify.0.0.22-alpha.0.Cd1awv3t.css → vuetify.0.0.22-alpha.2.CgGsw6iO.css} +2 -2
  46. package/dist/interface/birpc.l0sNRNKZ.0.0.22-alpha.2.js +1 -0
  47. package/dist/interface/{dnd-core.BOxrARjV.0.0.22-alpha.0.js → dnd-core.CInfibuN.0.0.22-alpha.2.js} +1 -1
  48. package/dist/interface/{draggabilly.BEF5LqAH.0.0.22-alpha.0.js → draggabilly.D1IWfp_b.0.0.22-alpha.2.js} +1 -1
  49. package/dist/interface/engine.io-client.DefPnTEq.0.0.22-alpha.2.js +1 -0
  50. package/dist/interface/{ev-emitter.CsrKKb5x.0.0.22-alpha.0.js → ev-emitter.Dc-aWf7P.0.0.22-alpha.2.js} +1 -1
  51. package/dist/interface/{fast-deep-equal.CU36Z4X8.0.0.22-alpha.0.js → fast-deep-equal.B5b3SrkT.0.0.22-alpha.2.js} +1 -1
  52. package/dist/interface/{highlight.js.Cj98Ckpw.0.0.22-alpha.0.js → highlight.js.UlfE9jpO.0.0.22-alpha.2.js} +1 -1
  53. package/dist/interface/hookable.B8xFkYCm.0.0.22-alpha.2.js +1 -0
  54. package/dist/interface/index.html +34 -36
  55. package/dist/interface/{linkify-it.DIkWfPNS.0.0.22-alpha.0.js → linkify-it.Fi_bpuck.0.0.22-alpha.2.js} +1 -1
  56. package/dist/interface/main.oy2O2TRy.0.0.22-alpha.2.js +5 -0
  57. package/dist/interface/{markdown-it.DZ_JRYr5.0.0.22-alpha.0.js → markdown-it.DJgGU14J.0.0.22-alpha.2.js} +1 -1
  58. package/dist/interface/{nprogress.BKgW3YbN.0.0.22-alpha.0.js → nprogress.tJ-b_-wu.0.0.22-alpha.2.js} +1 -1
  59. package/dist/interface/perfect-debounce.Cp2ysxOb.0.0.22-alpha.2.js +1 -0
  60. package/dist/interface/pinia.yZCOO45u.0.0.22-alpha.2.js +5 -0
  61. package/dist/interface/plugins.Cfyqqots.0.0.22-alpha.2.js +1 -0
  62. package/dist/interface/point-in-polygon-hao.l0sNRNKZ.0.0.22-alpha.2.js +1 -0
  63. package/dist/interface/{qrcode.EjmMHZZR.0.0.22-alpha.0.js → qrcode.9XoqawvO.0.0.22-alpha.2.js} +1 -1
  64. package/dist/interface/{react-dnd-touch-backend.CU5Ax-9G.0.0.22-alpha.0.js → react-dnd-touch-backend.C6RhMT4L.0.0.22-alpha.2.js} +1 -1
  65. package/dist/interface/{rxjs.Cj9LQ_6u.0.0.22-alpha.0.js → rxjs.1CAxveb4.0.0.22-alpha.2.js} +1 -1
  66. package/dist/interface/socket.io-client.e8QnYieU.0.0.22-alpha.2.js +1 -0
  67. package/dist/interface/{socket.io-parser.CjxGsMQx.0.0.22-alpha.0.js → socket.io-parser.BLk6IoUZ.0.0.22-alpha.2.js} +1 -1
  68. package/dist/interface/sw.js +1 -1
  69. package/dist/interface/sweepline-intersections.l0sNRNKZ.0.0.22-alpha.2.js +1 -0
  70. package/dist/interface/system.CxMAOYjs.0.0.22-alpha.2.js +1 -0
  71. package/dist/interface/types.Cz9TaZAP.0.0.22-alpha.2.js +1 -0
  72. package/dist/interface/{unidragger.DTWO4kXE.0.0.22-alpha.0.js → unidragger.D9uoooG_.0.0.22-alpha.2.js} +1 -1
  73. package/dist/interface/utils.mAKpSMLY.0.0.22-alpha.2.js +1 -0
  74. package/dist/interface/uuid.Ch9TGLTe.0.0.22-alpha.2.js +1 -0
  75. package/dist/interface/vee-validate.DnRu3xAR.0.0.22-alpha.2.js +5 -0
  76. package/dist/interface/vue-i18n.DNPn_WN3.0.0.22-alpha.2.js +5 -0
  77. package/dist/interface/{vue-inline-svg.DF4jsptY.0.0.22-alpha.0.js → vue-inline-svg.BxDq9WpB.0.0.22-alpha.2.js} +1 -1
  78. package/dist/interface/vue-router.Ci1GIRoh.0.0.22-alpha.2.js +5 -0
  79. package/dist/interface/vue.l0sNRNKZ.0.0.22-alpha.2.js +1 -0
  80. package/dist/interface/vue3-apexcharts.4RpZv9AC.0.0.22-alpha.2.js +1 -0
  81. package/dist/interface/{vue3-dnd.CsLnkm-l.0.0.22-alpha.0.js → vue3-dnd.CyNbBiuS.0.0.22-alpha.2.js} +1 -1
  82. package/dist/interface/vue3-toastify.Jtf1C0Kw.0.0.22-alpha.2.js +1 -0
  83. package/dist/interface/vuetify.D4io05br.0.0.22-alpha.2.js +5 -0
  84. package/dist/interface/zod.DnW1_kUe.0.0.22-alpha.2.js +1 -0
  85. package/dist/server/bin/cameraui-server.js +8 -0
  86. package/dist/server/bin/cameraui-server.js.map +1 -0
  87. package/dist/server/package.json +44 -70
  88. package/dist/server/requirements.txt +6 -5
  89. package/dist/server/src/api/controllers/auth.controller.js +1 -1
  90. package/dist/server/src/api/controllers/auth.controller.js.map +1 -1
  91. package/dist/server/src/api/controllers/backup.controller.js +2 -2
  92. package/dist/server/src/api/controllers/backup.controller.js.map +1 -1
  93. package/dist/server/src/api/controllers/cameras.controller.d.ts +4 -2
  94. package/dist/server/src/api/controllers/cameras.controller.js +88 -42
  95. package/dist/server/src/api/controllers/cameras.controller.js.map +1 -1
  96. package/dist/server/src/api/controllers/files.controller.js.map +1 -1
  97. package/dist/server/src/api/controllers/frameWorkers.controller.d.ts +1 -1
  98. package/dist/server/src/api/controllers/frameWorkers.controller.js +15 -7
  99. package/dist/server/src/api/controllers/frameWorkers.controller.js.map +1 -1
  100. package/dist/server/src/api/controllers/plugins.controller.d.ts +3 -4
  101. package/dist/server/src/api/controllers/plugins.controller.js +141 -202
  102. package/dist/server/src/api/controllers/plugins.controller.js.map +1 -1
  103. package/dist/server/src/api/controllers/system.controller.d.ts +9 -3
  104. package/dist/server/src/api/controllers/system.controller.js +73 -53
  105. package/dist/server/src/api/controllers/system.controller.js.map +1 -1
  106. package/dist/server/src/api/controllers/users.controller.js +12 -10
  107. package/dist/server/src/api/controllers/users.controller.js.map +1 -1
  108. package/dist/server/src/api/database/checks.d.ts +55 -0
  109. package/dist/server/src/api/database/checks.js +183 -0
  110. package/dist/server/src/api/database/checks.js.map +1 -0
  111. package/dist/server/src/api/database/constants.d.ts +8 -0
  112. package/dist/server/src/api/database/constants.js +9 -0
  113. package/dist/server/src/api/database/constants.js.map +1 -0
  114. package/dist/server/src/api/database/index.d.ts +4 -13
  115. package/dist/server/src/api/database/index.js +61 -39
  116. package/dist/server/src/api/database/index.js.map +1 -1
  117. package/dist/server/src/api/database/migration.d.ts +1 -0
  118. package/dist/server/src/api/database/migration.js +73 -7
  119. package/dist/server/src/api/database/migration.js.map +1 -1
  120. package/dist/server/src/api/database/selfcheck.d.ts +48 -0
  121. package/dist/server/src/api/database/selfcheck.js +398 -0
  122. package/dist/server/src/api/database/selfcheck.js.map +1 -0
  123. package/dist/server/src/api/database/types.d.ts +15 -141
  124. package/dist/server/src/api/go2rtc/api/application.js +3 -2
  125. package/dist/server/src/api/go2rtc/api/application.js.map +1 -1
  126. package/dist/server/src/api/go2rtc/api/index.js +3 -2
  127. package/dist/server/src/api/go2rtc/api/index.js.map +1 -1
  128. package/dist/server/src/api/go2rtc/api/streams.d.ts +1 -1
  129. package/dist/server/src/api/go2rtc/api/streams.js +4 -2
  130. package/dist/server/src/api/go2rtc/api/streams.js.map +1 -1
  131. package/dist/server/src/api/go2rtc/index.d.ts +1 -0
  132. package/dist/server/src/api/go2rtc/index.js +6 -1
  133. package/dist/server/src/api/go2rtc/index.js.map +1 -1
  134. package/dist/server/src/api/go2rtc/types.d.ts +2 -18
  135. package/dist/server/src/api/index.d.ts +1 -0
  136. package/dist/server/src/api/index.js +23 -31
  137. package/dist/server/src/api/index.js.map +1 -1
  138. package/dist/server/src/api/middlewares/authPermission.middleware.d.ts +3 -3
  139. package/dist/server/src/api/middlewares/authPermission.middleware.js.map +1 -1
  140. package/dist/server/src/api/middlewares/authValidation.middleware.d.ts +2 -2
  141. package/dist/server/src/api/middlewares/authValidation.middleware.js +3 -3
  142. package/dist/server/src/api/middlewares/authValidation.middleware.js.map +1 -1
  143. package/dist/server/src/api/middlewares/socketAuth.middleware.d.ts +1 -1
  144. package/dist/server/src/api/middlewares/socketAuth.middleware.js +1 -1
  145. package/dist/server/src/api/plugins/header.plugin.d.ts +2 -0
  146. package/dist/server/src/api/plugins/header.plugin.js +13 -0
  147. package/dist/server/src/api/plugins/header.plugin.js.map +1 -0
  148. package/dist/server/src/api/plugins/logger.plugin.js +1 -1
  149. package/dist/server/src/api/plugins/logger.plugin.js.map +1 -1
  150. package/dist/server/src/api/plugins/system.plugin.d.ts +3 -1
  151. package/dist/server/src/api/plugins/system.plugin.js +6 -1
  152. package/dist/server/src/api/plugins/system.plugin.js.map +1 -1
  153. package/dist/server/src/api/plugins/useragent.plugin.d.ts +1 -1
  154. package/dist/server/src/api/plugins/useragent.plugin.js +1 -1
  155. package/dist/server/src/api/plugins/useragent.plugin.js.map +1 -1
  156. package/dist/server/src/api/routes/cameras.routes.js +12 -0
  157. package/dist/server/src/api/routes/cameras.routes.js.map +1 -1
  158. package/dist/server/src/api/routes/plugins.routes.js +24 -0
  159. package/dist/server/src/api/routes/plugins.routes.js.map +1 -1
  160. package/dist/server/src/api/routes/system.routes.js +3 -6
  161. package/dist/server/src/api/routes/system.routes.js.map +1 -1
  162. package/dist/server/src/api/schemas/backup.schema.js.map +1 -1
  163. package/dist/server/src/api/schemas/cameras.schema.d.ts +227 -187
  164. package/dist/server/src/api/schemas/cameras.schema.js +25 -6
  165. package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
  166. package/dist/server/src/api/schemas/config.schema.d.ts +12 -20
  167. package/dist/server/src/api/schemas/config.schema.js +0 -2
  168. package/dist/server/src/api/schemas/config.schema.js.map +1 -1
  169. package/dist/server/src/api/schemas/go2rtc.schema.d.ts +143 -143
  170. package/dist/server/src/api/schemas/plugins.schema.d.ts +5 -5
  171. package/dist/server/src/api/schemas/plugins.schema.js +1 -1
  172. package/dist/server/src/api/schemas/plugins.schema.js.map +1 -1
  173. package/dist/server/src/api/schemas/system.schema.d.ts +8 -0
  174. package/dist/server/src/api/schemas/system.schema.js +6 -1
  175. package/dist/server/src/api/schemas/system.schema.js.map +1 -1
  176. package/dist/server/src/api/schemas/users.schema.d.ts +170 -170
  177. package/dist/server/src/api/schemas/users.schema.js.map +1 -1
  178. package/dist/server/src/api/services/auth.service.js +17 -17
  179. package/dist/server/src/api/services/auth.service.js.map +1 -1
  180. package/dist/server/src/api/services/backup.service.js.map +1 -1
  181. package/dist/server/src/api/services/cameras.service.d.ts +10 -5
  182. package/dist/server/src/api/services/cameras.service.js +166 -89
  183. package/dist/server/src/api/services/cameras.service.js.map +1 -1
  184. package/dist/server/src/api/services/plugins.service.d.ts +1 -0
  185. package/dist/server/src/api/services/plugins.service.js +16 -11
  186. package/dist/server/src/api/services/plugins.service.js.map +1 -1
  187. package/dist/server/src/api/services/system.service.js +5 -4
  188. package/dist/server/src/api/services/system.service.js.map +1 -1
  189. package/dist/server/src/api/services/users.service.js +29 -29
  190. package/dist/server/src/api/services/users.service.js.map +1 -1
  191. package/dist/server/src/api/types/index.d.ts +127 -129
  192. package/dist/server/src/api/types/index.js.map +1 -1
  193. package/dist/server/src/api/utils/cameraSource.d.ts +2 -0
  194. package/dist/server/src/api/utils/cameraSource.js +34 -0
  195. package/dist/server/src/api/utils/cameraSource.js.map +1 -0
  196. package/dist/server/src/api/utils/cert.d.ts +7 -7
  197. package/dist/server/src/api/utils/cert.js +178 -385
  198. package/dist/server/src/api/utils/cert.js.map +1 -1
  199. package/dist/server/src/api/utils/constants.d.ts +0 -2
  200. package/dist/server/src/api/utils/constants.js +4 -7
  201. package/dist/server/src/api/utils/constants.js.map +1 -1
  202. package/dist/server/src/api/websocket/index.js +2 -1
  203. package/dist/server/src/api/websocket/index.js.map +1 -1
  204. package/dist/server/src/api/websocket/nsp/logs.d.ts +10 -2
  205. package/dist/server/src/api/websocket/nsp/logs.js +110 -76
  206. package/dist/server/src/api/websocket/nsp/logs.js.map +1 -1
  207. package/dist/server/src/api/websocket/nsp/metrics.d.ts +1 -1
  208. package/dist/server/src/api/websocket/nsp/metrics.js +19 -16
  209. package/dist/server/src/api/websocket/nsp/metrics.js.map +1 -1
  210. package/dist/server/src/api/websocket/nsp/notifications.js +1 -1
  211. package/dist/server/src/api/websocket/nsp/notifications.js.map +1 -1
  212. package/dist/server/src/api/websocket/nsp/plugins.d.ts +1 -1
  213. package/dist/server/src/api/websocket/nsp/plugins.js +3 -4
  214. package/dist/server/src/api/websocket/nsp/plugins.js.map +1 -1
  215. package/dist/server/src/api/websocket/nsp/server.d.ts +9 -4
  216. package/dist/server/src/api/websocket/nsp/server.js +57 -20
  217. package/dist/server/src/api/websocket/nsp/server.js.map +1 -1
  218. package/dist/server/src/api/websocket/nsp/status.d.ts +1 -1
  219. package/dist/server/src/api/websocket/nsp/status.js +9 -7
  220. package/dist/server/src/api/websocket/nsp/status.js.map +1 -1
  221. package/dist/server/src/api/websocket/types.d.ts +7 -13
  222. package/dist/server/src/api.d.ts +8 -23
  223. package/dist/server/src/api.js +43 -24
  224. package/dist/server/src/api.js.map +1 -1
  225. package/dist/server/src/camera/controller.d.ts +31 -14
  226. package/dist/server/src/camera/controller.js +371 -68
  227. package/dist/server/src/camera/controller.js.map +1 -1
  228. package/dist/server/src/{decoder/worker.d.ts → camera/frameWorker.d.ts} +11 -8
  229. package/dist/server/src/camera/frameWorker.js +305 -0
  230. package/dist/server/src/camera/frameWorker.js.map +1 -0
  231. package/dist/server/src/camera/types.d.ts +1 -199
  232. package/dist/server/src/camera/types.js +1 -6
  233. package/dist/server/src/camera/types.js.map +1 -1
  234. package/dist/server/src/go2rtc/index.js +23 -11
  235. package/dist/server/src/go2rtc/index.js.map +1 -1
  236. package/dist/server/src/main.d.ts +21 -0
  237. package/dist/server/src/main.js +130 -74
  238. package/dist/server/src/main.js.map +1 -1
  239. package/dist/server/src/nats/index.d.ts +5 -5
  240. package/dist/server/src/nats/index.js +5 -6
  241. package/dist/server/src/nats/index.js.map +1 -1
  242. package/dist/server/src/nats/proxy/cameraDevice.d.ts +4 -4
  243. package/dist/server/src/nats/proxy/cameraDevice.js +41 -58
  244. package/dist/server/src/nats/proxy/cameraDevice.js.map +1 -1
  245. package/dist/server/src/nats/proxy/coreManager.d.ts +4 -4
  246. package/dist/server/src/nats/proxy/coreManager.js +6 -1
  247. package/dist/server/src/nats/proxy/coreManager.js.map +1 -1
  248. package/dist/server/src/nats/proxy/deviceManager.d.ts +5 -7
  249. package/dist/server/src/nats/proxy/deviceManager.js +4 -2
  250. package/dist/server/src/nats/proxy/deviceManager.js.map +1 -1
  251. package/dist/server/src/nats/server.js +33 -22
  252. package/dist/server/src/nats/server.js.map +1 -1
  253. package/dist/server/src/nats/types.d.ts +3 -121
  254. package/dist/server/src/nats/utils.d.ts +1 -1
  255. package/dist/server/src/nats/websocket.d.ts +2 -2
  256. package/dist/server/src/nats/websocket.js +7 -6
  257. package/dist/server/src/nats/websocket.js.map +1 -1
  258. package/dist/server/src/plugins/index.d.ts +3 -4
  259. package/dist/server/src/plugins/index.js +39 -38
  260. package/dist/server/src/plugins/index.js.map +1 -1
  261. package/dist/server/src/plugins/plugin.d.ts +6 -3
  262. package/dist/server/src/plugins/plugin.js +59 -23
  263. package/dist/server/src/plugins/plugin.js.map +1 -1
  264. package/dist/server/src/plugins/types.d.ts +1 -148
  265. package/dist/server/src/plugins/types.js +0 -15
  266. package/dist/server/src/plugins/types.js.map +1 -1
  267. package/dist/server/src/plugins/worker.d.ts +22 -3
  268. package/dist/server/src/plugins/worker.js +201 -59
  269. package/dist/server/src/plugins/worker.js.map +1 -1
  270. package/dist/server/src/services/config/constants.d.ts +3 -1
  271. package/dist/server/src/services/config/constants.js +12 -8
  272. package/dist/server/src/services/config/constants.js.map +1 -1
  273. package/dist/server/src/services/config/index.d.ts +15 -9
  274. package/dist/server/src/services/config/index.js +135 -46
  275. package/dist/server/src/services/config/index.js.map +1 -1
  276. package/dist/server/src/services/config/types.d.ts +10 -15
  277. package/dist/server/src/services/config/types.js.map +1 -1
  278. package/dist/server/src/services/logger/index.d.ts +10 -17
  279. package/dist/server/src/services/logger/index.js +44 -91
  280. package/dist/server/src/services/logger/index.js.map +1 -1
  281. package/dist/server/src/types.d.ts +24 -0
  282. package/eslint.config.js +89 -0
  283. package/localdeps.txt +6 -0
  284. package/package.json +44 -70
  285. package/dist/interface/@intlify.YW_pt133.0.0.22-alpha.0.js +0 -15
  286. package/dist/interface/@mdi.DnMbZhUH.0.0.22-alpha.0.js +0 -1
  287. package/dist/interface/@popperjs.BQBsAJpH.0.0.22-alpha.0.js +0 -1
  288. package/dist/interface/@tanstack.Dk7F0Vz0.0.0.22-alpha.0.js +0 -1
  289. package/dist/interface/@vue.CvjRlaU6.0.0.22-alpha.0.js +0 -17
  290. package/dist/interface/@vueuse.XquUZgtp.0.0.22-alpha.0.js +0 -1
  291. package/dist/interface/Account.Bv7AmbuK.0.0.22-alpha.0.js +0 -1
  292. package/dist/interface/Adminpanel.DsGsXBHH.0.0.22-alpha.0.js +0 -2
  293. package/dist/interface/Appearance.C6Qj2C_l.0.0.22-alpha.0.js +0 -1
  294. package/dist/interface/Backup.BlSlgkpW.0.0.22-alpha.0.js +0 -1
  295. package/dist/interface/Camera.CC08IZ17.0.0.22-alpha.0.js +0 -1
  296. package/dist/interface/Cameras.BqEpCuCR.0.0.22-alpha.0.js +0 -1
  297. package/dist/interface/Camview.u79SRE7s.0.0.22-alpha.0.js +0 -1
  298. package/dist/interface/Config.CE50Q8KG.0.0.22-alpha.0.js +0 -1
  299. package/dist/interface/Console.DDlXS_WH.0.0.22-alpha.0.js +0 -4
  300. package/dist/interface/FirstSteps.CHLswquo.0.0.22-alpha.0.js +0 -1
  301. package/dist/interface/Plugin.CtrAxCQv.0.0.22-alpha.0.js +0 -1
  302. package/dist/interface/Plugins.CunIvSJv.0.0.22-alpha.0.js +0 -1
  303. package/dist/interface/Recordings.Bsbb3cLA.0.0.22-alpha.0.js +0 -1
  304. package/dist/interface/Recordings.CnclYToJ.0.0.22-alpha.0.js +0 -1
  305. package/dist/interface/Settings.CnMXEIf2.0.0.22-alpha.0.js +0 -1
  306. package/dist/interface/System.BnPrdvN0.0.0.22-alpha.0.js +0 -4
  307. package/dist/interface/User.DBaos4b8.0.0.22-alpha.0.js +0 -1
  308. package/dist/interface/VConfigEditor.vue_vue_type_script_setup_true_lang.CFukh5l5.0.0.22-alpha.0.js +0 -2
  309. package/dist/interface/VConsole.BgptXj79.0.0.22-alpha.0.js +0 -1
  310. package/dist/interface/VPlayer.C5vExb2M.0.0.22-alpha.0.js +0 -1
  311. package/dist/interface/VPluginCard.B-Rum4A2.0.0.22-alpha.0.js +0 -4
  312. package/dist/interface/assets/Adminpanel.0.0.22-alpha.0.CXsTAXPL.css +0 -1
  313. package/dist/interface/assets/Camera.0.0.22-alpha.0.BDtUJ-lA.css +0 -1
  314. package/dist/interface/assets/Cameras.0.0.22-alpha.0.Djx0F2MM.css +0 -1
  315. package/dist/interface/assets/Camview.0.0.22-alpha.0.Ce_V-Nxj.css +0 -1
  316. package/dist/interface/assets/Config.0.0.22-alpha.0.k4QpWumg.css +0 -1
  317. package/dist/interface/assets/Console.0.0.22-alpha.0.DWrfRWs9.css +0 -1
  318. package/dist/interface/assets/FirstSteps.0.0.22-alpha.0.B3-pv8-a.css +0 -1
  319. package/dist/interface/assets/NewCamera.0.0.22-alpha.0.DJ3tUBT_.css +0 -1
  320. package/dist/interface/assets/VConsole.0.0.22-alpha.0.BZT1WyS-.css +0 -1
  321. package/dist/interface/assets/VPlayer.0.0.22-alpha.0.CZXlTn4I.css +0 -1
  322. package/dist/interface/assets/VPluginCard.0.0.22-alpha.0.CIL48ca_.css +0 -1
  323. package/dist/interface/assets/main.0.0.22-alpha.0.BOf8IWhK.css +0 -1
  324. package/dist/interface/assets/v-calendar.0.0.22-alpha.0.CtSuDYZU.css +0 -1
  325. package/dist/interface/engine.io-client.BMIamAQC.0.0.22-alpha.0.js +0 -1
  326. package/dist/interface/main.BdLkotV4.0.0.22-alpha.0.js +0 -4
  327. package/dist/interface/pinia.DA4R8TFr.0.0.22-alpha.0.js +0 -5
  328. package/dist/interface/plugins.BcX2DDRp.0.0.22-alpha.0.js +0 -1
  329. package/dist/interface/socket.io-client.C9LJ1Zls.0.0.22-alpha.0.js +0 -1
  330. package/dist/interface/system.-IyAtje9.0.0.22-alpha.0.js +0 -1
  331. package/dist/interface/ui.Cu_G5h1z.0.0.22-alpha.0.js +0 -1
  332. package/dist/interface/utils.BvINh1mj.0.0.22-alpha.0.js +0 -1
  333. package/dist/interface/uuid.DvF23Exx.0.0.22-alpha.0.js +0 -1
  334. package/dist/interface/v-calendar.CmvG-vVL.0.0.22-alpha.0.js +0 -1
  335. package/dist/interface/vee-validate.DTObZ862.0.0.22-alpha.0.js +0 -5
  336. package/dist/interface/vue-i18n.CGodlogN.0.0.22-alpha.0.js +0 -5
  337. package/dist/interface/vue-router.CxSRaAvj.0.0.22-alpha.0.js +0 -5
  338. package/dist/interface/vue3-apexcharts.DAlcrhmw.0.0.22-alpha.0.js +0 -1
  339. package/dist/interface/vue3-toastify.CEJWJskm.0.0.22-alpha.0.js +0 -1
  340. package/dist/interface/vuetify.Cn9UEwpM.0.0.22-alpha.0.js +0 -5
  341. package/dist/interface/zod.BaF2dDCd.0.0.22-alpha.0.js +0 -1
  342. package/dist/server/bin/cameraui.d.ts +0 -54
  343. package/dist/server/bin/cameraui.js +0 -622
  344. package/dist/server/bin/cameraui.js.map +0 -1
  345. package/dist/server/bin/fork.js +0 -13
  346. package/dist/server/bin/fork.js.map +0 -1
  347. package/dist/server/bin/installer/base.d.ts +0 -17
  348. package/dist/server/bin/installer/base.js +0 -45
  349. package/dist/server/bin/installer/base.js.map +0 -1
  350. package/dist/server/bin/installer/darwin.d.ts +0 -61
  351. package/dist/server/bin/installer/darwin.js +0 -249
  352. package/dist/server/bin/installer/darwin.js.map +0 -1
  353. package/dist/server/bin/installer/freebsd.d.ts +0 -64
  354. package/dist/server/bin/installer/freebsd.js +0 -254
  355. package/dist/server/bin/installer/freebsd.js.map +0 -1
  356. package/dist/server/bin/installer/linux.d.ts +0 -103
  357. package/dist/server/bin/installer/linux.js +0 -482
  358. package/dist/server/bin/installer/linux.js.map +0 -1
  359. package/dist/server/bin/installer/win32.d.ts +0 -45
  360. package/dist/server/bin/installer/win32.js +0 -178
  361. package/dist/server/bin/installer/win32.js.map +0 -1
  362. package/dist/server/src/api/plugins/cameraui.plugin.d.ts +0 -11
  363. package/dist/server/src/api/plugins/cameraui.plugin.js +0 -6
  364. package/dist/server/src/api/plugins/cameraui.plugin.js.map +0 -1
  365. package/dist/server/src/api/plugins/database.plugin.d.ts +0 -11
  366. package/dist/server/src/api/plugins/database.plugin.js +0 -12
  367. package/dist/server/src/api/plugins/database.plugin.js.map +0 -1
  368. package/dist/server/src/api/plugins/go2rtc.plugin.d.ts +0 -11
  369. package/dist/server/src/api/plugins/go2rtc.plugin.js +0 -11
  370. package/dist/server/src/api/plugins/go2rtc.plugin.js.map +0 -1
  371. package/dist/server/src/camera/device.d.ts +0 -29
  372. package/dist/server/src/camera/device.js +0 -20
  373. package/dist/server/src/camera/device.js.map +0 -1
  374. package/dist/server/src/camera/index.d.ts +0 -94
  375. package/dist/server/src/camera/index.js +0 -620
  376. package/dist/server/src/camera/index.js.map +0 -1
  377. package/dist/server/src/camera/interfaces/camera.d.ts +0 -10
  378. package/dist/server/src/camera/interfaces/camera.js +0 -23
  379. package/dist/server/src/camera/interfaces/camera.js.map +0 -1
  380. package/dist/server/src/camera/interfaces/prebuffer.d.ts +0 -11
  381. package/dist/server/src/camera/interfaces/prebuffer.js +0 -26
  382. package/dist/server/src/camera/interfaces/prebuffer.js.map +0 -1
  383. package/dist/server/src/camera/interfaces/ptz.d.ts +0 -13
  384. package/dist/server/src/camera/interfaces/ptz.js +0 -47
  385. package/dist/server/src/camera/interfaces/ptz.js.map +0 -1
  386. package/dist/server/src/camera/iou.d.ts +0 -2
  387. package/dist/server/src/camera/iou.js +0 -53
  388. package/dist/server/src/camera/iou.js.map +0 -1
  389. package/dist/server/src/camera/polygon.d.ts +0 -6
  390. package/dist/server/src/camera/polygon.js +0 -151
  391. package/dist/server/src/camera/polygon.js.map +0 -1
  392. package/dist/server/src/camera/streaming/peer-connection.d.ts +0 -55
  393. package/dist/server/src/camera/streaming/peer-connection.js +0 -203
  394. package/dist/server/src/camera/streaming/peer-connection.js.map +0 -1
  395. package/dist/server/src/camera/streaming/webrtc-connection.d.ts +0 -35
  396. package/dist/server/src/camera/streaming/webrtc-connection.js +0 -170
  397. package/dist/server/src/camera/streaming/webrtc-connection.js.map +0 -1
  398. package/dist/server/src/camera/streaming/werift-session.d.ts +0 -41
  399. package/dist/server/src/camera/streaming/werift-session.js +0 -179
  400. package/dist/server/src/camera/streaming/werift-session.js.map +0 -1
  401. package/dist/server/src/camera/videoFrame.d.ts +0 -24
  402. package/dist/server/src/camera/videoFrame.js +0 -104
  403. package/dist/server/src/camera/videoFrame.js.map +0 -1
  404. package/dist/server/src/decoder/index.d.ts +0 -11
  405. package/dist/server/src/decoder/index.js +0 -32
  406. package/dist/server/src/decoder/index.js.map +0 -1
  407. package/dist/server/src/decoder/types.d.ts +0 -151
  408. package/dist/server/src/decoder/types.js +0 -2
  409. package/dist/server/src/decoder/types.js.map +0 -1
  410. package/dist/server/src/decoder/worker.js +0 -245
  411. package/dist/server/src/decoder/worker.js.map +0 -1
  412. package/dist/server/src/index.d.ts +0 -18
  413. package/dist/server/src/index.js +0 -5
  414. package/dist/server/src/index.js.map +0 -1
  415. package/dist/server/src/nats/connection.d.ts +0 -17
  416. package/dist/server/src/nats/connection.js +0 -66
  417. package/dist/server/src/nats/connection.js.map +0 -1
  418. package/dist/server/src/nats/constants.d.ts +0 -1
  419. package/dist/server/src/nats/constants.js +0 -2
  420. package/dist/server/src/nats/constants.js.map +0 -1
  421. package/dist/server/src/nats/error.d.ts +0 -9
  422. package/dist/server/src/nats/error.js +0 -11
  423. package/dist/server/src/nats/error.js.map +0 -1
  424. package/dist/server/src/nats/messageQueue.d.ts +0 -20
  425. package/dist/server/src/nats/messageQueue.js +0 -132
  426. package/dist/server/src/nats/messageQueue.js.map +0 -1
  427. package/dist/server/src/nats/subscription.d.ts +0 -12
  428. package/dist/server/src/nats/subscription.js +0 -21
  429. package/dist/server/src/nats/subscription.js.map +0 -1
  430. package/dist/server/src/plugins/interfaces/audioDetection.d.ts +0 -7
  431. package/dist/server/src/plugins/interfaces/audioDetection.js +0 -4
  432. package/dist/server/src/plugins/interfaces/audioDetection.js.map +0 -1
  433. package/dist/server/src/plugins/interfaces/base.d.ts +0 -6
  434. package/dist/server/src/plugins/interfaces/base.js +0 -3
  435. package/dist/server/src/plugins/interfaces/base.js.map +0 -1
  436. package/dist/server/src/plugins/interfaces/motionDetection.d.ts +0 -6
  437. package/dist/server/src/plugins/interfaces/motionDetection.js +0 -4
  438. package/dist/server/src/plugins/interfaces/motionDetection.js.map +0 -1
  439. package/dist/server/src/plugins/interfaces/objectDetection.d.ts +0 -7
  440. package/dist/server/src/plugins/interfaces/objectDetection.js +0 -4
  441. package/dist/server/src/plugins/interfaces/objectDetection.js.map +0 -1
  442. package/dist/server/src/polyglot/node/decoder/child.d.ts +0 -1
  443. package/dist/server/src/polyglot/node/decoder/child.js +0 -644
  444. package/dist/server/src/polyglot/node/decoder/child.js.map +0 -1
  445. package/dist/server/src/polyglot/node/decoder/imageUtils.d.ts +0 -24
  446. package/dist/server/src/polyglot/node/decoder/imageUtils.js +0 -205
  447. package/dist/server/src/polyglot/node/decoder/imageUtils.js.map +0 -1
  448. package/dist/server/src/polyglot/node/decoder/wasm/build/decoder.d.ts +0 -144
  449. package/dist/server/src/polyglot/node/decoder/wasm/build/decoder.js +0 -65
  450. package/dist/server/src/polyglot/node/decoder/wasm/build/decoder.wasm +0 -0
  451. package/dist/server/src/polyglot/node/decoder/wasm/test/imageUtils.py +0 -106
  452. package/dist/server/src/polyglot/node/plugins/cameraStorage.d.ts +0 -107
  453. package/dist/server/src/polyglot/node/plugins/cameraStorage.js +0 -292
  454. package/dist/server/src/polyglot/node/plugins/cameraStorage.js.map +0 -1
  455. package/dist/server/src/polyglot/node/plugins/child.d.ts +0 -28
  456. package/dist/server/src/polyglot/node/plugins/child.js +0 -222
  457. package/dist/server/src/polyglot/node/plugins/child.js.map +0 -1
  458. package/dist/server/src/polyglot/node/plugins/configService.d.ts +0 -104
  459. package/dist/server/src/polyglot/node/plugins/configService.js +0 -213
  460. package/dist/server/src/polyglot/node/plugins/configService.js.map +0 -1
  461. package/dist/server/src/polyglot/node/plugins/pluginApi.d.ts +0 -35
  462. package/dist/server/src/polyglot/node/plugins/pluginApi.js +0 -23
  463. package/dist/server/src/polyglot/node/plugins/pluginApi.js.map +0 -1
  464. package/dist/server/src/polyglot/node/plugins/pluginLogger.d.ts +0 -18
  465. package/dist/server/src/polyglot/node/plugins/pluginLogger.js +0 -89
  466. package/dist/server/src/polyglot/node/plugins/pluginLogger.js.map +0 -1
  467. package/dist/server/src/polyglot/node/plugins/proxy/cameraDevice.d.ts +0 -69
  468. package/dist/server/src/polyglot/node/plugins/proxy/cameraDevice.js +0 -432
  469. package/dist/server/src/polyglot/node/plugins/proxy/cameraDevice.js.map +0 -1
  470. package/dist/server/src/polyglot/node/plugins/proxy/coreManager.d.ts +0 -40
  471. package/dist/server/src/polyglot/node/plugins/proxy/coreManager.js +0 -105
  472. package/dist/server/src/polyglot/node/plugins/proxy/coreManager.js.map +0 -1
  473. package/dist/server/src/polyglot/node/plugins/proxy/deviceManager.d.ts +0 -47
  474. package/dist/server/src/polyglot/node/plugins/proxy/deviceManager.js +0 -164
  475. package/dist/server/src/polyglot/node/plugins/proxy/deviceManager.js.map +0 -1
  476. package/dist/server/src/polyglot/node/plugins/schema.d.ts +0 -293
  477. package/dist/server/src/polyglot/node/plugins/schema.js +0 -740
  478. package/dist/server/src/polyglot/node/plugins/schema.js.map +0 -1
  479. package/dist/server/src/polyglot/node/plugins/storageController.d.ts +0 -30
  480. package/dist/server/src/polyglot/node/plugins/storageController.js +0 -40
  481. package/dist/server/src/polyglot/node/plugins/storageController.js.map +0 -1
  482. package/dist/server/src/polyglot/python/camera/interfaces/camera.py +0 -20
  483. package/dist/server/src/polyglot/python/camera/interfaces/prebuffer.py +0 -25
  484. package/dist/server/src/polyglot/python/camera/interfaces/ptz.py +0 -38
  485. package/dist/server/src/polyglot/python/camera/iou.py +0 -80
  486. package/dist/server/src/polyglot/python/camera/polygon.py +0 -173
  487. package/dist/server/src/polyglot/python/camera/video_frame.py +0 -188
  488. package/dist/server/src/polyglot/python/camera_ui_types/__init__.py +0 -1196
  489. package/dist/server/src/polyglot/python/decoder/child.py +0 -882
  490. package/dist/server/src/polyglot/python/decoder/image_utils.py +0 -149
  491. package/dist/server/src/polyglot/python/decoder/typings.py +0 -99
  492. package/dist/server/src/polyglot/python/plugins/camera_storage.py +0 -391
  493. package/dist/server/src/polyglot/python/plugins/child.py +0 -394
  494. package/dist/server/src/polyglot/python/plugins/config_service.py +0 -187
  495. package/dist/server/src/polyglot/python/plugins/constants.py +0 -1
  496. package/dist/server/src/polyglot/python/plugins/message_queue.py +0 -182
  497. package/dist/server/src/polyglot/python/plugins/plugin_api.py +0 -34
  498. package/dist/server/src/polyglot/python/plugins/plugin_logger.py +0 -111
  499. package/dist/server/src/polyglot/python/plugins/proxy/camera_device.py +0 -1677
  500. package/dist/server/src/polyglot/python/plugins/proxy/core_manager.py +0 -145
  501. package/dist/server/src/polyglot/python/plugins/proxy/device_manager.py +0 -226
  502. package/dist/server/src/polyglot/python/plugins/schema.py +0 -181
  503. package/dist/server/src/polyglot/python/plugins/storage_controller.py +0 -58
  504. package/dist/server/src/polyglot/python/plugins/typings.py +0 -253
  505. package/dist/server/src/polyglot/python/utilities/connection.py +0 -86
  506. package/dist/server/src/polyglot/python/utilities/json_lmdb.py +0 -19
  507. package/dist/server/src/polyglot/python/utilities/object_path.py +0 -195
  508. package/dist/server/src/polyglot/python/utilities/packer.py +0 -11
  509. package/dist/server/src/polyglot/python/utilities/subscriptions.py +0 -22
  510. package/dist/server/src/polyglot/python/utilities/task.py +0 -35
  511. package/dist/server/src/polyglot/python/utilities/thread.py +0 -10
  512. package/dist/server/src/polyglot/python/utilities/utils.py +0 -73
  513. package/dist/server/src/utils/ffmpeg.d.ts +0 -2
  514. package/dist/server/src/utils/ffmpeg.js +0 -61
  515. package/dist/server/src/utils/ffmpeg.js.map +0 -1
  516. package/dist/server/src/utils/network.d.ts +0 -12
  517. package/dist/server/src/utils/network.js +0 -92
  518. package/dist/server/src/utils/network.js.map +0 -1
  519. package/dist/server/src/utils/npm.d.ts +0 -4
  520. package/dist/server/src/utils/npm.js +0 -128
  521. package/dist/server/src/utils/npm.js.map +0 -1
  522. package/dist/server/src/utils/packer.d.ts +0 -2
  523. package/dist/server/src/utils/packer.js +0 -17
  524. package/dist/server/src/utils/packer.js.map +0 -1
  525. package/dist/server/src/utils/pythonInstaller.d.ts +0 -48
  526. package/dist/server/src/utils/pythonInstaller.js +0 -494
  527. package/dist/server/src/utils/pythonInstaller.js.map +0 -1
  528. package/dist/server/src/utils/reader.d.ts +0 -5
  529. package/dist/server/src/utils/reader.js +0 -41
  530. package/dist/server/src/utils/reader.js.map +0 -1
  531. package/dist/server/src/utils/subscribed.d.ts +0 -9
  532. package/dist/server/src/utils/subscribed.js +0 -17
  533. package/dist/server/src/utils/subscribed.js.map +0 -1
  534. package/dist/server/src/utils/utils.d.ts +0 -10
  535. package/dist/server/src/utils/utils.js +0 -165
  536. package/dist/server/src/utils/utils.js.map +0 -1
  537. package/upgrade-server.sh +0 -205
  538. /package/dist/interface/{@babel.l0sNRNKZ.0.0.22-alpha.0.js → @babel.l0sNRNKZ.0.0.22-alpha.2.js} +0 -0
  539. /package/dist/interface/{@react-dnd.CcwRs9xb.0.0.22-alpha.0.js → @react-dnd.CcwRs9xb.0.0.22-alpha.2.js} +0 -0
  540. /package/dist/interface/{@socket.io.Dkula2eQ.0.0.22-alpha.0.js → @socket.io.Dkula2eQ.0.0.22-alpha.2.js} +0 -0
  541. /package/dist/interface/{vue.l0sNRNKZ.0.0.22-alpha.0.js → @turf.l0sNRNKZ.0.0.22-alpha.2.js} +0 -0
  542. /package/dist/interface/{@xterm.DBtVaaEV.0.0.22-alpha.0.js → @xterm.CRKo0AGB.0.0.22-alpha.2.js} +0 -0
  543. /package/dist/interface/assets/{@vueform.0.0.22-alpha.0.h7tNX9p6.css → @vueform.0.0.22-alpha.2.CroAHJs8.css} +0 -0
  544. /package/dist/interface/assets/{@xterm.0.0.22-alpha.0.CGrrDQr5.css → @xterm.0.0.22-alpha.2.CFbL2ovg.css} +0 -0
  545. /package/dist/interface/assets/{Account.0.0.22-alpha.0.Ce3OmKrC.css → Account.0.0.22-alpha.2.J7oAjogS.css} +0 -0
  546. /package/dist/interface/assets/{Backup.0.0.22-alpha.0.BIwaSlv3.css → Backup.0.0.22-alpha.2.CX0rT0QJ.css} +0 -0
  547. /package/dist/interface/assets/{Plugin.0.0.22-alpha.0.BtRA6zDt.css → Plugin.0.0.22-alpha.2.DJbgaQc1.css} +0 -0
  548. /package/dist/interface/assets/{Plugins.0.0.22-alpha.0.Cwu0aGUO.css → Plugins.0.0.22-alpha.2.DXSoO9M1.css} +0 -0
  549. /package/dist/interface/assets/{User.0.0.22-alpha.0.DPDcJbx8.css → User.0.0.22-alpha.2.BiGtIFqt.css} +0 -0
  550. /package/dist/interface/assets/{highlight.0.0.22-alpha.0.DgoK_Xib.css → highlight.0.0.22-alpha.2.Ch2EwETz.css} +0 -0
  551. /package/dist/interface/assets/{logo-256.0.0.22-alpha.0.BCQk9H1-.png → logo-256.0.0.22-alpha.2.BCQk9H1-.png} +0 -0
  552. /package/dist/interface/assets/{logo-512.0.0.22-alpha.0.DLKVOU2S.png → logo-512.0.0.22-alpha.2.DLKVOU2S.png} +0 -0
  553. /package/dist/interface/assets/{logo.0.0.22-alpha.0.DmEiRk0z.png → logo.0.0.22-alpha.2.DmEiRk0z.png} +0 -0
  554. /package/dist/interface/assets/{mode-json.0.0.22-alpha.0.Br7xisR1.js → mode-json.0.0.22-alpha.2.Br7xisR1.js} +0 -0
  555. /package/dist/interface/assets/{mode-yaml.0.0.22-alpha.0.CIYL8U3d.js → mode-yaml.0.0.22-alpha.2.CIYL8U3d.js} +0 -0
  556. /package/dist/interface/assets/{vue3-toastify.0.0.22-alpha.0.DTY1DMRs.css → vue3-toastify.0.0.22-alpha.2.DHXAGmwn.css} +0 -0
  557. /package/dist/interface/{axios.C-n2IhIP.0.0.22-alpha.0.js → axios.C-n2IhIP.0.0.22-alpha.2.js} +0 -0
  558. /package/dist/interface/{compare-versions.DqEOhma6.0.0.22-alpha.0.js → compare-versions.DqEOhma6.0.0.22-alpha.2.js} +0 -0
  559. /package/dist/interface/{dijkstrajs.D_NXgYpA.0.0.22-alpha.0.js → dijkstrajs.D_NXgYpA.0.0.22-alpha.2.js} +0 -0
  560. /package/dist/interface/{engine.io-parser.BiEtp6m2.0.0.22-alpha.0.js → engine.io-parser.BiEtp6m2.0.0.22-alpha.2.js} +0 -0
  561. /package/dist/interface/{entities.C20TfXL6.0.0.22-alpha.0.js → entities.C20TfXL6.0.0.22-alpha.2.js} +0 -0
  562. /package/dist/interface/{get-size.D1dS-IaP.0.0.22-alpha.0.js → get-size.D1dS-IaP.0.0.22-alpha.2.js} +0 -0
  563. /package/dist/interface/{mdurl.k9Sl0PQj.0.0.22-alpha.0.js → mdurl.k9Sl0PQj.0.0.22-alpha.2.js} +0 -0
  564. /package/dist/interface/{punycode.js.Dj65hjkv.0.0.22-alpha.0.js → punycode.js.Dj65hjkv.0.0.22-alpha.2.js} +0 -0
  565. /package/dist/interface/{react-dnd-html5-backend.1HQjlkwI.0.0.22-alpha.0.js → react-dnd-html5-backend.1HQjlkwI.0.0.22-alpha.2.js} +0 -0
  566. /package/dist/interface/{redux.CuxFRhX_.0.0.22-alpha.0.js → redux.CuxFRhX_.0.0.22-alpha.2.js} +0 -0
  567. /package/dist/interface/{tslib.9k7AwCpt.0.0.22-alpha.0.js → tslib.9k7AwCpt.0.0.22-alpha.2.js} +0 -0
  568. /package/dist/interface/{uc.micro.kMc2yuuw.0.0.22-alpha.0.js → uc.micro.kMc2yuuw.0.0.22-alpha.2.js} +0 -0
  569. /package/dist/server/bin/{fork.d.ts → cameraui-server.d.ts} +0 -0
@@ -1,26 +1,26 @@
1
+ import { getNpmPath, orderBy } from '@camera.ui/common';
2
+ import TTLCache from '@isaacs/ttlcache';
1
3
  import { spawn as spawnPty } from '@scrypted/node-pty';
2
- import { cyan, green, red, yellow } from 'ansicolor';
4
+ import AdmZip from 'adm-zip';
5
+ import { cyan, green, red } from 'ansicolor';
3
6
  import { ensureDir, move, pathExists, readJSON, readJson, remove, writeJson } from 'fs-extra/esm';
4
- import { LRUCache } from 'lru-cache';
5
7
  import { createHash } from 'node:crypto';
6
- import { constants, readFile as readFileSync } from 'node:fs';
7
- import { access, mkdtemp, readFile, rmdir, unlink, writeFile } from 'node:fs/promises';
8
+ import { createReadStream, readFile as readFileSync, truncate } from 'node:fs';
9
+ import { mkdtemp, readFile, rmdir, unlink, writeFile } from 'node:fs/promises';
8
10
  import { platform, tmpdir, userInfo } from 'node:os';
9
11
  import { basename, dirname, join } from 'node:path';
10
- import { gt, parse as parseVersion, satisfies } from 'semver';
12
+ import { Readable } from 'node:stream';
13
+ import { gt, parse as parseVersion } from 'semver';
11
14
  import sharp from 'sharp';
12
15
  import { x as extract } from 'tar';
13
16
  import { container } from 'tsyringe';
14
17
  import { PluginManager } from '../../plugins/index.js';
15
- import { ConfigService } from '../../services/config/index.js';
16
- import { getNpmPath } from '../../utils/npm.js';
17
- import { orderBy, sleep } from '../../utils/utils.js';
18
18
  import { CamerasService } from '../services/cameras.service.js';
19
19
  import { PluginsService } from '../services/plugins.service.js';
20
20
  import fetchInstance from '../utils/fetch.js';
21
- const npmPluginCache = new LRUCache({ ttl: 300, max: 100, allowStale: false });
21
+ const npmPluginCache = new TTLCache({ ttl: 300, max: 100 });
22
22
  const searchResultBlacklist = new Set(['camera.ui', 'homebridge-camera-ui']);
23
- const pluginLogoCache = new LRUCache({ max: 100, ttl: 1000 * 60 * 60 * 24 });
23
+ const pluginLogoCache = new TTLCache({ max: 100, ttl: 1000 * 60 * 60 * 24 });
24
24
  export class PluginsController {
25
25
  app;
26
26
  logger;
@@ -176,7 +176,7 @@ export class PluginsController {
176
176
  catch {
177
177
  //
178
178
  }
179
- const version = plugin.info.installedVersion || 'latest';
179
+ const version = plugin.info.installedVersion ?? 'latest';
180
180
  const response = await fetchInstance(`https://unpkg.com/${plugin.pluginName}@${version}/CHANGELOG.md`, {
181
181
  method: 'GET',
182
182
  });
@@ -224,6 +224,7 @@ export class PluginsController {
224
224
  return reply.code(200).send(Buffer.from('').toString('base64'));
225
225
  }
226
226
  let base64Logo;
227
+ pluginLogoCache.purgeStale();
227
228
  if (pluginLogoCache.has(pluginName)) {
228
229
  base64Logo = pluginLogoCache.get(pluginName);
229
230
  }
@@ -413,7 +414,7 @@ export class PluginsController {
413
414
  catch {
414
415
  //
415
416
  }
416
- reply.send(error || fileBuffer);
417
+ reply.send(error ?? fileBuffer);
417
418
  });
418
419
  reply.header('Content-Type', 'application/octet-stream');
419
420
  reply.header('Content-Disposition', 'attachment; filename=video.mp4');
@@ -495,7 +496,7 @@ export class PluginsController {
495
496
  catch {
496
497
  //
497
498
  }
498
- const version = plugin.info.installedVersion || 'latest';
499
+ const version = plugin.info.installedVersion ?? 'latest';
499
500
  const response = await fetchInstance(`https://unpkg.com/${plugin.pluginName}@${version}/README.md`, {
500
501
  method: 'GET',
501
502
  });
@@ -560,7 +561,7 @@ export class PluginsController {
560
561
  try {
561
562
  const installedPlugins = this.service.installedPlugins();
562
563
  const allExtensions = installedPlugins
563
- .filter((plugin) => plugin.contract.extension || plugin.contract.supportAdditionalCameras)
564
+ .filter((plugin) => plugin.contract.extension ?? plugin.contract.supportAdditionalCameras)
564
565
  .map((plugin) => ({
565
566
  pluginName: plugin.pluginName,
566
567
  displayName: plugin.displayName,
@@ -632,10 +633,68 @@ export class PluginsController {
632
633
  });
633
634
  }
634
635
  }
636
+ clearLog(req, reply) {
637
+ try {
638
+ const pluginName = this.resolvePluginName(req.params);
639
+ const plugin = this.service.getPluginByName(pluginName);
640
+ if (!plugin) {
641
+ return reply.code(404).send({
642
+ statusCode: 404,
643
+ message: 'Plugin not exists',
644
+ });
645
+ }
646
+ truncate(plugin.logPath, (error) => {
647
+ if (error) {
648
+ return reply.code(500).send({
649
+ statusCode: 500,
650
+ message: error.message,
651
+ });
652
+ }
653
+ this.app.io.of('/logs').emit('clear-plugin-log', pluginName);
654
+ return reply.code(204).send();
655
+ });
656
+ }
657
+ catch (error) {
658
+ return reply.code(500).send({
659
+ statusCode: 500,
660
+ message: error.message,
661
+ });
662
+ }
663
+ }
664
+ downloadLog(req, reply) {
665
+ try {
666
+ const pluginName = this.resolvePluginName(req.params);
667
+ const plugin = this.service.getPluginByName(pluginName);
668
+ if (!plugin) {
669
+ return reply.code(404).send({
670
+ statusCode: 404,
671
+ message: 'Plugin not exists',
672
+ });
673
+ }
674
+ const buffer = new Readable();
675
+ buffer._read = () => { };
676
+ const readStream = createReadStream(plugin.logPath);
677
+ readStream.on('data', (data) => {
678
+ buffer.push(data.toString('utf8').replace(/\x1b\[[0-9;]*m/g, ''));
679
+ });
680
+ readStream.on('end', () => {
681
+ buffer.push(null);
682
+ });
683
+ reply.header('Content-Type', 'application/octet-stream');
684
+ reply.header('Content-Disposition', `attachment; filename=camera.ui.${plugin.pluginName}.log.txt`);
685
+ return reply.code(200).send(buffer);
686
+ }
687
+ catch (error) {
688
+ return reply.code(500).send({
689
+ statusCode: 500,
690
+ message: error.message,
691
+ });
692
+ }
693
+ }
635
694
  async search(req, reply) {
636
695
  try {
637
- const query = req.query.pluginname || '';
638
- const q = (!query || !query.length ? '' : query + '+') + 'keywords:camera-ui-plugin+not:deprecated&size=30';
696
+ const query = req.query.pluginname ?? '';
697
+ const q = (!query?.length ? '' : query + '+') + 'keywords:camera-ui-plugin+not:deprecated&size=30';
639
698
  let searchResults;
640
699
  try {
641
700
  const response = await fetchInstance(`https://registry.npmjs.org/-/v1/search?text=${q}`, {
@@ -647,7 +706,7 @@ export class PluginsController {
647
706
  throw new Error(`Failed to search the npm registry - "${error.message}"`);
648
707
  }
649
708
  const result = searchResults.objects
650
- .filter((x) => x.package.name.indexOf('camera-ui-') === 0 || this.isScopedPlugin(x.package.name))
709
+ .filter((x) => x.package.name.startsWith('camera-ui-') || this.isScopedPlugin(x.package.name))
651
710
  .filter((x) => !searchResultBlacklist.has(x.package.name))
652
711
  .map((pkg) => {
653
712
  let plugin = {
@@ -674,7 +733,7 @@ export class PluginsController {
674
733
  plugin.author = pkg.package.publisher ? pkg.package.publisher.username : undefined;
675
734
  return plugin;
676
735
  });
677
- if (!result.length && (query.indexOf('camera-ui-') === 0 || this.isScopedPlugin(query)) && !searchResultBlacklist.has(query.toLowerCase())) {
736
+ if (!result.length && (query.startsWith('camera-ui-') || this.isScopedPlugin(query)) && !searchResultBlacklist.has(query.toLowerCase())) {
678
737
  const singlePluginQuey = await this.searchNpmRegistrySingle(query.toLowerCase());
679
738
  return singlePluginQuey;
680
739
  }
@@ -760,7 +819,7 @@ export class PluginsController {
760
819
  npmPluginCache.delete(plugin.pluginName);
761
820
  plugin.reparsePackageJson();
762
821
  const serverNsp = this.socketService.namespaces.get('/server');
763
- serverNsp.checkUpdate();
822
+ serverNsp.checkPlugins();
764
823
  return reply.code(201).send(plugin.info);
765
824
  }
766
825
  catch (error) {
@@ -770,22 +829,6 @@ export class PluginsController {
770
829
  });
771
830
  }
772
831
  }
773
- async updateServer(req, reply) {
774
- try {
775
- this.logger.log(`Updating server: ${ConfigService.APP_NAME}@${req.body.pluginversion}`);
776
- const installPath = await this.manage(ConfigService.APP_NAME, 'installServer', req.body.pluginversion);
777
- this.logger.log(`Server updated: ${ConfigService.APP_NAME}@${ConfigService.VERSION} (${installPath})`);
778
- const serverNsp = this.socketService.namespaces.get('/server');
779
- serverNsp.checkUpdate();
780
- return reply.code(204).send();
781
- }
782
- catch (error) {
783
- return reply.code(500).send({
784
- statusCode: 500,
785
- message: error.message,
786
- });
787
- }
788
- }
789
832
  async uninstallByName(req, reply) {
790
833
  try {
791
834
  const pluginName = this.resolvePluginName(req.params);
@@ -833,113 +876,30 @@ export class PluginsController {
833
876
  }
834
877
  }
835
878
  async manage(pluginName, action, version, pluginId) {
836
- if (pluginName === ConfigService.APP_NAME && !ConfigService.INSTALL_PATH) {
837
- throw new Error(`Can not determine the install path for ${pluginName}`);
838
- }
839
- const dir = pluginName === ConfigService.APP_NAME ? ConfigService.INSTALL_PATH : this.configService.PLUGINS_INSTALL_PATH;
840
- let targetDir;
841
- if (pluginName === ConfigService.APP_NAME) {
842
- targetDir = dir;
843
- }
844
- else {
845
- targetDir = join(dir, pluginName);
846
- }
847
- this.emitProgress(pluginName, `\n\rUSER: ${userInfo().username}\n\r`, cyan);
848
- this.emitProgress(pluginName, `DIR: ${targetDir}\n\r`, cyan);
849
- this.emitProgress(pluginName, `ACTION: ${action}\n\r\n\r`, cyan);
850
- await this.removeSynologyMetadata();
879
+ const targetDir = join(this.configService.PLUGINS_INSTALL_PATH, pluginName);
880
+ this.emitProgress(pluginName, `\r\nUSER: ${userInfo().username}\r\n`, cyan);
881
+ this.emitProgress(pluginName, `DIR: ${targetDir}\r\n`, cyan);
882
+ this.emitProgress(pluginName, `ACTION: ${action}\r\r\n\n`, cyan);
851
883
  switch (action) {
852
884
  case 'install':
853
- await this.installPlugin(pluginName, version || 'latest', targetDir);
854
- break;
855
- case 'installServer':
856
- await this.installServer(pluginName, version || 'latest', targetDir);
885
+ await this.installPlugin(pluginName, version ?? 'latest', targetDir);
857
886
  break;
858
887
  case 'update':
859
- await this.updatePlugin(pluginName, version || 'latest', targetDir);
888
+ await this.updatePlugin(pluginName, version ?? 'latest', targetDir);
860
889
  break;
861
890
  case 'uninstall':
862
891
  await this.uninstallPlugin(pluginName, targetDir);
863
- await sleep(2000);
892
+ if (pluginId) {
893
+ await this.camerasService.removeByPluginId(pluginId);
894
+ }
864
895
  break;
865
896
  default:
866
897
  throw new Error(`Unknown action: ${action}`);
867
898
  }
868
- await this.ensurePluginDirExists();
869
- if (pluginId && action === 'uninstall' && pluginName !== ConfigService.APP_NAME) {
870
- await this.camerasService.removeByPluginId(pluginId);
871
- }
872
899
  return targetDir;
873
900
  }
874
- async installServer(pluginName, version, targetDir) {
875
- await this.removeSynologyMetadata();
876
- const upgradeInstallScriptPath = join(targetDir, 'upgrade-server.sh');
877
- let timeoutTimer;
878
- const command = [upgradeInstallScriptPath, version, targetDir];
879
- try {
880
- await access(join(targetDir, 'node_modules'), constants.W_OK);
881
- }
882
- catch {
883
- this.emitProgress(pluginName, `The user "${userInfo().username}" does not have write access to the target directory:\n\r\n\r`, yellow);
884
- this.emitProgress(pluginName, `${join(targetDir, 'node_modules')}\n\r\n\r`);
885
- this.emitProgress(pluginName, 'This may cause the operation to fail.\n\r\n\r', yellow);
886
- }
887
- this.logger.log(`Running Command: ${command.join(' ')}`);
888
- if (!satisfies(process.version, `>=${ConfigService.MIN_NODE_VERSION}`)) {
889
- this.emitProgress(pluginName, `Node.js v${ConfigService.MIN_NODE_VERSION} higher is required for ${ConfigService.APP_NAME}.\n\r`, yellow);
890
- this.emitProgress(pluginName, `You may experience issues while running on Node.js ${process.version}.\n\r\n\r`, yellow);
891
- }
892
- // set up the environment for the call
893
- const env = {};
894
- Object.assign(env, process.env);
895
- Object.assign(env, {
896
- // npm_config_install_strategy: 'shallow',
897
- npm_config_unsafe_perm: 'true',
898
- npm_config_update_notifier: 'false',
899
- npm_config_prefer_online: 'true',
900
- npm_config_foreground_scripts: 'true',
901
- npm_config_loglevel: 'info',
902
- npm_config_prefix: targetDir,
903
- });
904
- // set global prefix for unix based systems
905
- if (platform() !== 'win32') {
906
- if (basename(targetDir) === 'lib') {
907
- Object.assign(env, {
908
- npm_config_prefix: dirname(targetDir),
909
- });
910
- }
911
- }
912
- await new Promise((_resolve, _reject) => {
913
- const term = spawnPty(command.shift(), command, {
914
- name: 'xterm-color',
915
- cols: 80,
916
- rows: 30,
917
- cwd: targetDir,
918
- env,
919
- });
920
- // send stdout data from the process to all clients
921
- term.onData((data) => {
922
- this.emitProgress(pluginName, data);
923
- });
924
- // send an error message to the client if the command does not exit with code 0
925
- term.onExit((error) => {
926
- clearTimeout(timeoutTimer);
927
- if (error.exitCode === 0) {
928
- this.emitProgress(pluginName, `\n\rServer ${pluginName}@${version} has been successfully updated.\n\r\n\r`, green);
929
- _resolve(null);
930
- }
931
- else {
932
- this.emitProgress(pluginName, `\n\rError during update of ${pluginName}@${version}.\n\r\n\r`, red);
933
- _reject(new Error('Operation failed. Please review log for details.'));
934
- }
935
- });
936
- // if the command spends to long trying to execute kill it after 5 minutes
937
- timeoutTimer = setTimeout(() => {
938
- term.kill('SIGTERM');
939
- }, 300000);
940
- });
941
- }
942
901
  async installPlugin(pluginName, version, targetDir, update) {
902
+ const backupTempDir = join(tmpdir(), `${pluginName}_backup`);
943
903
  try {
944
904
  const npmRegistry = 'https://registry.npmjs.org';
945
905
  const packageUrl = `${npmRegistry}/${pluginName}/${version}`;
@@ -951,15 +911,20 @@ export class PluginsController {
951
911
  const packageInfo = await response.json();
952
912
  const tarballUrl = packageInfo.dist.tarball;
953
913
  const expectedShasum = packageInfo.dist.shasum;
954
- this.emitProgress(pluginName, ' Done\n\r\n\r', green);
914
+ this.emitProgress(pluginName, ' Done\r\n\r\n', green);
955
915
  const tarballData = await this.downloadWithProgress(tarballUrl, pluginName, version);
956
- this.emitProgress(pluginName, ' - Done\n\r\n\r', green);
916
+ this.emitProgress(pluginName, ' - Done\r\n\r\n', green);
957
917
  this.emitProgress(pluginName, '> Verifying package integrity...');
958
918
  const computedShasum = createHash('sha1').update(Buffer.from(tarballData)).digest('hex');
959
919
  if (computedShasum !== expectedShasum) {
960
920
  throw new Error(`SHA checksum mismatch. Expected: ${expectedShasum}, Got: ${computedShasum}`);
961
921
  }
962
- this.emitProgress(pluginName, ' Done\n\r\n\r', green);
922
+ this.emitProgress(pluginName, ' Done\r\n\r\n', green);
923
+ if (await pathExists(targetDir)) {
924
+ this.emitProgress(pluginName, '> Backing up existing installation...');
925
+ await move(targetDir, backupTempDir);
926
+ this.emitProgress(pluginName, ' Done\r\n\r\n', green);
927
+ }
963
928
  await ensureDir(targetDir);
964
929
  this.emitProgress(pluginName, '> Extracting package...');
965
930
  await new Promise((_resolve, _reject) => {
@@ -969,17 +934,31 @@ export class PluginsController {
969
934
  });
970
935
  extractStream.on('error', _reject);
971
936
  extractStream.on('end', () => {
972
- this.emitProgress(pluginName, ' Done\n\r\n\r', green);
937
+ this.emitProgress(pluginName, ' Done\r\n\r\n', green);
973
938
  _resolve();
974
939
  });
975
940
  extractStream.write(Buffer.from(tarballData));
976
941
  extractStream.end();
977
942
  });
978
943
  await this.installProductionDependencies(targetDir, pluginName);
979
- this.emitProgress(pluginName, `\n\rPlugin ${pluginName}@${version} has been successfully ${update ? 'updated' : 'installed'}.\n\r\n\r`, green);
944
+ await this.extrackBundeledPlugin(targetDir, pluginName);
945
+ this.emitProgress(pluginName, '\r\n> Cleaning up...');
946
+ await remove(backupTempDir);
947
+ this.emitProgress(pluginName, ' Done\r\n\r\n', green);
948
+ this.emitProgress(pluginName, `Plugin ${pluginName}@${version} has been successfully ${update ? 'updated' : 'installed'}.\r\n\r\n`, green);
980
949
  }
981
950
  catch (error) {
982
- this.emitProgress(pluginName, `\n\rError during ${update ? 'update' : 'installation'} of ${pluginName}@${version}.\n\r\n\r`, red);
951
+ this.emitProgress(pluginName, `\r\nError during ${update ? 'update' : 'installation'} of ${pluginName}@${version}.\r\n\r\n`, red);
952
+ try {
953
+ this.emitProgress(pluginName, '> Restoring previous version...');
954
+ await remove(targetDir);
955
+ await move(backupTempDir, targetDir);
956
+ this.emitProgress(pluginName, ' Done\r\n\r\n', green);
957
+ }
958
+ catch (error) {
959
+ this.emitProgress(pluginName, `\r\n\r\nError: ${error.message}\r\n`, red);
960
+ this.emitProgress(pluginName, 'Failed to restore previous version.\r\n\r\n', red);
961
+ }
983
962
  throw error;
984
963
  }
985
964
  }
@@ -990,70 +969,44 @@ export class PluginsController {
990
969
  const packageJson = await readJson(packageJsonPath);
991
970
  const currentVersion = packageJson.version;
992
971
  if (currentVersion === version) {
993
- this.emitProgress(pluginName, ' Break', red);
994
- this.emitProgress(pluginName, `Plugin ${pluginName} is already up to date\n\r\n\r`, green);
972
+ this.emitProgress(pluginName, `Plugin ${pluginName} is already up to date.\r\n\r\n`, green);
995
973
  return;
996
974
  }
997
- const tempNodeModules = join(targetDir, 'node_modules_temp');
998
- await move(join(targetDir, 'node_modules'), tempNodeModules);
999
- this.emitProgress(pluginName, ' Done\n\r\n\r', green);
1000
- let cleaningUp = false;
1001
- try {
1002
- await this.installPlugin(pluginName, version, targetDir, true);
1003
- this.emitProgress(pluginName, '> Cleaning up...');
1004
- cleaningUp = true;
1005
- await remove(tempNodeModules);
1006
- this.emitProgress(pluginName, ' Done\n\r\n\r', green);
1007
- }
1008
- catch (error) {
1009
- if (cleaningUp) {
1010
- this.emitProgress(pluginName, ' Error\n\r\n\r', red);
1011
- }
1012
- this.emitProgress(pluginName, ' Restoring previous version...');
1013
- await remove(targetDir);
1014
- await move(tempNodeModules, targetDir);
1015
- this.emitProgress(pluginName, ' Done\n\r\n\r', green);
1016
- throw error;
1017
- }
975
+ this.emitProgress(pluginName, ' Done\r\n\r\n', green);
976
+ await this.installPlugin(pluginName, version, targetDir, true);
1018
977
  }
1019
978
  catch (error) {
1020
- this.emitProgress(pluginName, `\n\rError during update of ${pluginName}@${version}.\n\r\n\r`, red);
979
+ this.emitProgress(pluginName, `\r\nError during update of ${pluginName}@${version}.\r\n\r\n`, red);
1021
980
  throw error;
1022
981
  }
1023
982
  }
1024
983
  async uninstallPlugin(pluginName, targetDir) {
1025
984
  try {
1026
- this.emitProgress(pluginName, '> Fetching plugin information...');
1027
- const pluginInstalled = await pathExists(targetDir);
1028
- this.emitProgress(pluginName, ' Done\n\r\n\r', green);
1029
- if (!pluginInstalled) {
1030
- this.emitProgress(pluginName, `Plugin ${pluginName} is not installed. Break\n\r\n\r`, red);
1031
- return;
1032
- }
1033
- this.emitProgress(pluginName, '> Uninstalling plugin...');
985
+ this.emitProgress(pluginName, '> Removing plugin...');
1034
986
  await remove(targetDir);
1035
- this.emitProgress(pluginName, ' Done\n\r\n\r', green);
1036
- this.emitProgress(pluginName, `Plugin ${pluginName} has been successfully uninstalled.\n\r`, green);
987
+ this.emitProgress(pluginName, ' Done\r\n\r\n', green);
988
+ this.emitProgress(pluginName, `Plugin ${pluginName} has been successfully uninstalled.\r\n`, green);
1037
989
  }
1038
990
  catch (error) {
1039
- this.emitProgress(pluginName, ' Error\n\r\n\r', red);
1040
- this.emitProgress(pluginName, `\n\rError during uninstallation of ${pluginName}.\n\r\n\r`, red);
991
+ this.emitProgress(pluginName, ' Error\r\n\r\n', red);
992
+ this.emitProgress(pluginName, `\r\nError during uninstallation of ${pluginName}.\r\n\r\n`, red);
1041
993
  throw error;
1042
994
  }
1043
995
  }
1044
996
  async installProductionDependencies(packageDir, pluginName) {
1045
997
  await new Promise((_resolve, _reject) => {
1046
- this.emitProgress(pluginName, '> Installing dependencies...\n\r\n\r');
1047
- const command = [...getNpmPath(), 'install', '--omit=dev', '--loglevel', 'info'];
998
+ this.emitProgress(pluginName, '> Installing dependencies...\r\n\r\n');
999
+ const command = [...getNpmPath(), 'install', '--omit=dev', '--include=prod', '--loglevel', 'info'];
1048
1000
  const env = {};
1049
1001
  Object.assign(env, process.env);
1050
1002
  Object.assign(env, {
1051
1003
  // npm_config_global_style: 'false',
1052
1004
  // npm_config_install_strategy: 'shallow',
1005
+ NODE_ENV: 'production',
1053
1006
  npm_config_unsafe_perm: 'true',
1054
1007
  npm_config_update_notifier: 'false',
1055
1008
  npm_config_prefer_online: 'true',
1056
- npm_config_foreground_scripts: 'true',
1009
+ // npm_config_foreground_scripts: 'true',
1057
1010
  npm_config_loglevel: 'info',
1058
1011
  npm_config_prefix: packageDir,
1059
1012
  });
@@ -1094,21 +1047,20 @@ export class PluginsController {
1094
1047
  }, 300000);
1095
1048
  });
1096
1049
  }
1097
- async ensurePluginDirExists() {
1098
- if (!this.configService.PLUGINS_INSTALL_PATH) {
1050
+ async extrackBundeledPlugin(packageDir, pluginName) {
1051
+ const bundlePath = join(packageDir, 'bundle.zip');
1052
+ const isBundeledPlugin = await pathExists(bundlePath);
1053
+ if (!isBundeledPlugin) {
1099
1054
  return;
1100
1055
  }
1101
- if (!(await pathExists(this.configService.PLUGINS_INSTALL_PATH))) {
1102
- this.logger.warn(`Plugin directory was removed. Re-creating: ${this.configService.PLUGINS_INSTALL_PATH}`);
1103
- try {
1104
- await ensureDir(this.configService.PLUGINS_INSTALL_PATH);
1105
- }
1106
- catch (error) {
1107
- this.logger.error('Failed to recreate plugin directory', error);
1108
- }
1109
- }
1056
+ this.emitProgress(pluginName, '\r\n> Extracting bundled plugin...');
1057
+ const zip = new AdmZip(bundlePath);
1058
+ zip.extractAllTo(packageDir, true);
1059
+ await remove(bundlePath);
1060
+ this.emitProgress(pluginName, ' Done', green);
1110
1061
  }
1111
1062
  async getAvailablePluginVersions(pluginName) {
1063
+ npmPluginCache.purgeStale();
1112
1064
  const fromCache = npmPluginCache.get(`lookup-${pluginName}`);
1113
1065
  let pkg = fromCache;
1114
1066
  if (!pkg) {
@@ -1134,6 +1086,7 @@ export class PluginsController {
1134
1086
  betaUpdateAvailable: false,
1135
1087
  };
1136
1088
  try {
1089
+ npmPluginCache.purgeStale();
1137
1090
  // attempt to load from cache
1138
1091
  const fromCache = npmPluginCache.get(plugin.pluginName);
1139
1092
  let pkg = fromCache;
@@ -1171,22 +1124,9 @@ export class PluginsController {
1171
1124
  }
1172
1125
  return pluginState;
1173
1126
  }
1174
- async removeSynologyMetadata() {
1175
- if (!this.configService.PLUGINS_INSTALL_PATH) {
1176
- return;
1177
- }
1178
- const offendingPath = join(this.configService.PLUGINS_INSTALL_PATH, '@eaDir');
1179
- try {
1180
- if (!(await pathExists(offendingPath))) {
1181
- await remove(offendingPath);
1182
- }
1183
- }
1184
- catch (error) {
1185
- this.logger.error(`Failed to remove ${offendingPath}`, error);
1186
- }
1187
- }
1188
1127
  async searchNpmRegistrySingle(query) {
1189
1128
  try {
1129
+ npmPluginCache.purgeStale();
1190
1130
  const fromCache = npmPluginCache.get(`lookup-${query}`);
1191
1131
  let pkg = fromCache;
1192
1132
  if (!pkg) {
@@ -1198,7 +1138,7 @@ export class PluginsController {
1198
1138
  if (!fromCache) {
1199
1139
  npmPluginCache.set(`lookup-${query}`, pkg, { ttl: 60 * 1000 });
1200
1140
  }
1201
- if (!pkg.keywords || !pkg.keywords.includes('camera-ui-plugin')) {
1141
+ if (!pkg.keywords?.includes('camera-ui-plugin')) {
1202
1142
  return [];
1203
1143
  }
1204
1144
  let plugin;
@@ -1245,7 +1185,7 @@ export class PluginsController {
1245
1185
  }
1246
1186
  }
1247
1187
  isScopedPlugin(pluginName) {
1248
- return pluginName.charAt(0) === '@' && pluginName.split('/').length > 0 && pluginName.split('/')[1]?.indexOf('camera-ui-') === 0;
1188
+ return pluginName.startsWith('@') && pluginName.split('/').length > 0 && pluginName.split('/')[1]?.startsWith('camera-ui-');
1249
1189
  }
1250
1190
  async downloadWithProgress(url, pluginName, version) {
1251
1191
  const response = await fetch(url);
@@ -1256,8 +1196,7 @@ export class PluginsController {
1256
1196
  let receivedLength = 0;
1257
1197
  const chunks = [];
1258
1198
  const reader = response.body.getReader();
1259
- this.emitProgress(pluginName, `> Downloading ${pluginName}@${version}...\n\r`);
1260
- // eslint-disable-next-line no-constant-condition
1199
+ this.emitProgress(pluginName, `> Downloading ${pluginName}@${version}...\r\n`);
1261
1200
  while (true) {
1262
1201
  const { done, value } = await reader.read();
1263
1202
  if (done) {