camera.ui3 0.0.30-alpha.0 → 0.0.30-alpha.3

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 (390) hide show
  1. package/dist/interface/@camera.ui.DuwfK59t.0.0.30-alpha.3.js +3 -0
  2. package/dist/interface/@tanstack.DBBaUHTS.0.0.30-alpha.3.js +1 -0
  3. package/dist/interface/{@vee-validate.0Cv0x9aN.0.0.30-alpha.0.js → @vee-validate.BRR3_tWq.0.0.30-alpha.3.js} +1 -1
  4. package/dist/interface/@vue.BeJw0wEm.0.0.30-alpha.3.js +17 -0
  5. package/dist/interface/{@vueform.Du_niMHk.0.0.30-alpha.0.js → @vueform.Dcx-RQUw.0.0.30-alpha.3.js} +1 -1
  6. package/dist/interface/{@vueuse.Dv9U068T.0.0.30-alpha.0.js → @vueuse.Sz46sDez.0.0.30-alpha.3.js} +1 -1
  7. package/dist/interface/Account.hmetZWTc.0.0.30-alpha.3.js +1 -0
  8. package/dist/interface/Adminpanel.DxC80W0K.0.0.30-alpha.3.js +2 -0
  9. package/dist/interface/Appearance.BHZdWQlZ.0.0.30-alpha.3.js +1 -0
  10. package/dist/interface/Backup.petPSq60.0.0.30-alpha.3.js +1 -0
  11. package/dist/interface/Camera.DS7gbgwV.0.0.30-alpha.3.js +1 -0
  12. package/dist/interface/Cameras.eqceAkdR.0.0.30-alpha.3.js +1 -0
  13. package/dist/interface/Camview.DumV6nmv.0.0.30-alpha.3.js +1 -0
  14. package/dist/interface/Config.DQ5vyHcx.0.0.30-alpha.3.js +1 -0
  15. package/dist/interface/Console.CWp-LL5w.0.0.30-alpha.3.js +4 -0
  16. package/dist/interface/FirstSteps.DR2B1Gmx.0.0.30-alpha.3.js +1 -0
  17. package/dist/interface/{NewCamera.Kn9biZIb.0.0.30-alpha.0.js → NewCamera.CpENkWIP.0.0.30-alpha.3.js} +2 -2
  18. package/dist/interface/Plugin.KK2gWYUL.0.0.30-alpha.3.js +1 -0
  19. package/dist/interface/Plugins.Dy1rL-Pc.0.0.30-alpha.3.js +1 -0
  20. package/dist/interface/Recordings.Bny11D38.0.0.30-alpha.3.js +1 -0
  21. package/dist/interface/Recordings.IdGxswmI.0.0.30-alpha.3.js +1 -0
  22. package/dist/interface/Settings.D6l7BlOF.0.0.30-alpha.3.js +1 -0
  23. package/dist/interface/System.FIkCpF0A.0.0.30-alpha.3.js +4 -0
  24. package/dist/interface/User.By9sAd8k.0.0.30-alpha.3.js +1 -0
  25. package/dist/interface/VConfigEditor.vue_vue_type_script_setup_true_lang.C7ZcC7dX.0.0.30-alpha.3.js +2 -0
  26. package/dist/interface/{VConsole.BT0UxZb1.0.0.30-alpha.0.js → VConsole.BG4nEIk8.0.0.30-alpha.3.js} +1 -1
  27. package/dist/interface/VPlayer.CZqXCM-i.0.0.30-alpha.3.js +1 -0
  28. package/dist/interface/{VPluginCard.Bz3GmzAE.0.0.30-alpha.0.js → VPluginCard.B_M3puzM.0.0.30-alpha.3.js} +2 -2
  29. package/dist/interface/{ace-builds.SRW0xGs1.0.0.30-alpha.0.js → ace-builds.D4S-MJ6b.0.0.30-alpha.3.js} +1 -1
  30. package/dist/interface/{apexcharts.BV8prH5x.0.0.30-alpha.0.js → apexcharts.u0duws01.0.0.30-alpha.3.js} +1 -1
  31. package/dist/interface/{dnd-core.BdsXoke-.0.0.30-alpha.0.js → dnd-core.C4232Xyz.0.0.30-alpha.3.js} +1 -1
  32. package/dist/interface/{draggabilly.D9j4BYFu.0.0.30-alpha.0.js → draggabilly.Xgwn1bT3.0.0.30-alpha.3.js} +1 -1
  33. package/dist/interface/{engine.io-client.di4Pt8W8.0.0.30-alpha.0.js → engine.io-client.CUastNh3.0.0.30-alpha.3.js} +1 -1
  34. package/dist/interface/{ev-emitter.Dxl4QoSg.0.0.30-alpha.0.js → ev-emitter.BYRnnQXb.0.0.30-alpha.3.js} +1 -1
  35. package/dist/interface/{fast-deep-equal.BUna8KlC.0.0.30-alpha.0.js → fast-deep-equal.CqwdqDxW.0.0.30-alpha.3.js} +1 -1
  36. package/dist/interface/{highlight.js.CMosnU3p.0.0.30-alpha.0.js → highlight.js.sNLmnsuC.0.0.30-alpha.3.js} +1 -1
  37. package/dist/interface/index.html +34 -33
  38. package/dist/interface/{linkify-it.B9RFwlcp.0.0.30-alpha.0.js → linkify-it.8PrPWg7W.0.0.30-alpha.3.js} +1 -1
  39. package/dist/interface/main.gxLiydtV.0.0.30-alpha.3.js +2 -0
  40. package/dist/interface/{markdown-it.DAiultxC.0.0.30-alpha.0.js → markdown-it.Q4_2MGLy.0.0.30-alpha.3.js} +1 -1
  41. package/dist/interface/{nprogress.C2KbBHcZ.0.0.30-alpha.0.js → nprogress.DQYtKLt9.0.0.30-alpha.3.js} +1 -1
  42. package/dist/interface/{pinia.DRjp4GU7.0.0.30-alpha.0.js → pinia.DcgsdRJU.0.0.30-alpha.3.js} +2 -2
  43. package/dist/interface/{plugins.Ur_7V4x8.0.0.30-alpha.0.js → plugins.DZjXmoDp.0.0.30-alpha.3.js} +1 -1
  44. package/dist/interface/{qrcode.DrYVb5am.0.0.30-alpha.0.js → qrcode.XqSuoGPb.0.0.30-alpha.3.js} +1 -1
  45. package/dist/interface/{react-dnd-touch-backend.ByHGbrKq.0.0.30-alpha.0.js → react-dnd-touch-backend.VzlzWkdX.0.0.30-alpha.3.js} +1 -1
  46. package/dist/interface/{rxjs.Dl5P76vZ.0.0.30-alpha.0.js → rxjs.CXnJywSk.0.0.30-alpha.3.js} +1 -1
  47. package/dist/interface/{socket.io-client.Cf7ABgrO.0.0.30-alpha.0.js → socket.io-client.DiiooL5k.0.0.30-alpha.3.js} +1 -1
  48. package/dist/interface/{socket.io-parser.DHnwqfTj.0.0.30-alpha.0.js → socket.io-parser.Dsh2ZviN.0.0.30-alpha.3.js} +1 -1
  49. package/dist/interface/sw.js +1 -1
  50. package/dist/interface/{system.CRn9Cy3C.0.0.30-alpha.0.js → system.Bh4wNIkr.0.0.30-alpha.3.js} +1 -1
  51. package/dist/interface/{ui.C-XbEPHk.0.0.30-alpha.0.js → ui.B0YwbqBU.0.0.30-alpha.3.js} +1 -1
  52. package/dist/interface/{unidragger.zHlf1Df_.0.0.30-alpha.0.js → unidragger.DDL70rPA.0.0.30-alpha.3.js} +1 -1
  53. package/dist/interface/utils.mAKpSMLY.0.0.30-alpha.3.js +1 -0
  54. package/dist/interface/{v-calendar.CapJoEkJ.0.0.30-alpha.0.js → v-calendar.C8Yj7x1Q.0.0.30-alpha.3.js} +1 -1
  55. package/dist/interface/{vee-validate.DcgOEpak.0.0.30-alpha.0.js → vee-validate.BbcoErf-.0.0.30-alpha.3.js} +2 -2
  56. package/dist/interface/{vue-i18n.D2pqkMP3.0.0.30-alpha.0.js → vue-i18n.B7m8y9GA.0.0.30-alpha.3.js} +2 -2
  57. package/dist/interface/{vue-inline-svg.DorOTPIf.0.0.30-alpha.0.js → vue-inline-svg.DC2U7Qim.0.0.30-alpha.3.js} +1 -1
  58. package/dist/interface/{vue-router.BVs4qaVs.0.0.30-alpha.0.js → vue-router.B3QeItm5.0.0.30-alpha.3.js} +2 -2
  59. package/dist/interface/{vue3-apexcharts.CBV9x5vk.0.0.30-alpha.0.js → vue3-apexcharts.DVzl7xGy.0.0.30-alpha.3.js} +1 -1
  60. package/dist/interface/{vue3-dnd.CXMddGIZ.0.0.30-alpha.0.js → vue3-dnd.76cFMD9V.0.0.30-alpha.3.js} +1 -1
  61. package/dist/interface/{vue3-toastify.DE7YmDSX.0.0.30-alpha.0.js → vue3-toastify.B-AJ7WuP.0.0.30-alpha.3.js} +1 -1
  62. package/dist/interface/{vuetify.CYxxHEVN.0.0.30-alpha.0.js → vuetify.CYln2r6g.0.0.30-alpha.3.js} +1 -1
  63. package/dist/interface/zod.DnW1_kUe.0.0.30-alpha.3.js +1 -0
  64. package/dist/server/bin/cameraui.js +10 -7
  65. package/dist/server/bin/cameraui.js.map +1 -1
  66. package/dist/server/bin/fork.js +2 -2
  67. package/dist/server/bin/fork.js.map +1 -1
  68. package/dist/server/bin/installer/darwin.js +1 -1
  69. package/dist/server/bin/installer/darwin.js.map +1 -1
  70. package/dist/server/bin/installer/linux.js +1 -1
  71. package/dist/server/bin/installer/linux.js.map +1 -1
  72. package/dist/server/package.json +11 -15
  73. package/dist/server/src/api/controllers/backup.controller.js.map +1 -1
  74. package/dist/server/src/api/controllers/cameras.controller.js +1 -1
  75. package/dist/server/src/api/controllers/cameras.controller.js.map +1 -1
  76. package/dist/server/src/api/controllers/frameWorkers.controller.js +1 -1
  77. package/dist/server/src/api/controllers/frameWorkers.controller.js.map +1 -1
  78. package/dist/server/src/api/controllers/plugins.controller.js +1 -2
  79. package/dist/server/src/api/controllers/plugins.controller.js.map +1 -1
  80. package/dist/server/src/api/controllers/system.controller.js +1 -3
  81. package/dist/server/src/api/controllers/system.controller.js.map +1 -1
  82. package/dist/server/src/api/controllers/users.controller.js +2 -2
  83. package/dist/server/src/api/controllers/users.controller.js.map +1 -1
  84. package/dist/server/src/api/database/constants.d.ts +8 -0
  85. package/dist/server/src/api/database/constants.js +9 -0
  86. package/dist/server/src/api/database/constants.js.map +1 -0
  87. package/dist/server/src/api/database/index.d.ts +0 -8
  88. package/dist/server/src/api/database/index.js +14 -21
  89. package/dist/server/src/api/database/index.js.map +1 -1
  90. package/dist/server/src/api/database/migration.js +5 -4
  91. package/dist/server/src/api/database/migration.js.map +1 -1
  92. package/dist/server/src/api/database/types.d.ts +6 -6
  93. package/dist/server/src/api/go2rtc/api/application.js +1 -1
  94. package/dist/server/src/api/go2rtc/api/application.js.map +1 -1
  95. package/dist/server/src/api/index.js.map +1 -1
  96. package/dist/server/src/api/plugins/logger.plugin.js.map +1 -1
  97. package/dist/server/src/api/schemas/cameras.schema.d.ts +71 -71
  98. package/dist/server/src/api/schemas/config.schema.d.ts +6 -6
  99. package/dist/server/src/api/schemas/go2rtc.schema.d.ts +98 -98
  100. package/dist/server/src/api/schemas/users.schema.d.ts +116 -116
  101. package/dist/server/src/api/services/auth.service.js +1 -1
  102. package/dist/server/src/api/services/auth.service.js.map +1 -1
  103. package/dist/server/src/api/services/backup.service.js.map +1 -1
  104. package/dist/server/src/api/services/cameras.service.js +1 -1
  105. package/dist/server/src/api/services/cameras.service.js.map +1 -1
  106. package/dist/server/src/api/services/system.service.js +1 -1
  107. package/dist/server/src/api/services/system.service.js.map +1 -1
  108. package/dist/server/src/api/services/users.service.js +1 -1
  109. package/dist/server/src/api/services/users.service.js.map +1 -1
  110. package/dist/server/src/api/types/index.d.ts +2 -2
  111. package/dist/server/src/api/types/index.js.map +1 -1
  112. package/dist/server/src/api/utils/cert.js.map +1 -1
  113. package/dist/server/src/api/websocket/index.js.map +1 -1
  114. package/dist/server/src/api/websocket/nsp/notifications.js.map +1 -1
  115. package/dist/server/src/api/websocket/nsp/server.js +1 -1
  116. package/dist/server/src/api/websocket/nsp/server.js.map +1 -1
  117. package/dist/server/src/api.d.ts +1 -7
  118. package/dist/server/src/api.js.map +1 -1
  119. package/dist/server/src/camera/controller.d.ts +4 -6
  120. package/dist/server/src/camera/controller.js +5 -8
  121. package/dist/server/src/camera/controller.js.map +1 -1
  122. package/dist/server/src/camera/types.d.ts +140 -13
  123. package/dist/server/src/camera/types.js.map +1 -1
  124. package/dist/server/src/decoder/index.js.map +1 -1
  125. package/dist/server/src/decoder/types.d.ts +1 -18
  126. package/dist/server/src/decoder/worker.d.ts +3 -2
  127. package/dist/server/src/decoder/worker.js +10 -22
  128. package/dist/server/src/decoder/worker.js.map +1 -1
  129. package/dist/server/src/go2rtc/index.js +2 -3
  130. package/dist/server/src/go2rtc/index.js.map +1 -1
  131. package/dist/server/src/main.js +3 -3
  132. package/dist/server/src/main.js.map +1 -1
  133. package/dist/server/src/nats/index.d.ts +3 -4
  134. package/dist/server/src/nats/index.js +1 -3
  135. package/dist/server/src/nats/index.js.map +1 -1
  136. package/dist/server/src/nats/proxy/cameraDevice.d.ts +2 -2
  137. package/dist/server/src/nats/proxy/coreManager.d.ts +4 -2
  138. package/dist/server/src/nats/proxy/coreManager.js +7 -0
  139. package/dist/server/src/nats/proxy/coreManager.js.map +1 -1
  140. package/dist/server/src/nats/proxy/deviceManager.d.ts +5 -5
  141. package/dist/server/src/nats/proxy/deviceManager.js +4 -2
  142. package/dist/server/src/nats/proxy/deviceManager.js.map +1 -1
  143. package/dist/server/src/nats/server.js +2 -3
  144. package/dist/server/src/nats/server.js.map +1 -1
  145. package/dist/server/src/nats/types.d.ts +19 -32
  146. package/dist/server/src/nats/utils.d.ts +1 -1
  147. package/dist/server/src/nats/websocket.js.map +1 -1
  148. package/dist/server/src/plugins/index.js +11 -9
  149. package/dist/server/src/plugins/index.js.map +1 -1
  150. package/dist/server/src/plugins/interfaces/base.d.ts +1 -1
  151. package/dist/server/src/plugins/plugin.d.ts +1 -1
  152. package/dist/server/src/plugins/plugin.js +4 -4
  153. package/dist/server/src/plugins/plugin.js.map +1 -1
  154. package/dist/server/src/plugins/types.d.ts +36 -3
  155. package/dist/server/src/plugins/types.js.map +1 -1
  156. package/dist/server/src/plugins/worker.js +7 -16
  157. package/dist/server/src/plugins/worker.js.map +1 -1
  158. package/dist/server/src/services/config/constants.js +2 -2
  159. package/dist/server/src/services/config/constants.js.map +1 -1
  160. package/dist/server/src/services/config/index.d.ts +2 -0
  161. package/dist/server/src/services/config/index.js +10 -2
  162. package/dist/server/src/services/config/index.js.map +1 -1
  163. package/dist/server/src/services/logger/index.d.ts +4 -16
  164. package/dist/server/src/services/logger/index.js +4 -83
  165. package/dist/server/src/services/logger/index.js.map +1 -1
  166. package/dist/server/src/services/logger/types.d.ts +8 -0
  167. package/dist/server/src/services/logger/types.js +2 -0
  168. package/dist/server/src/services/logger/types.js.map +1 -0
  169. package/localdeps.txt +4 -0
  170. package/package.json +11 -15
  171. package/dist/interface/@tanstack.DYQ7Jj8U.0.0.30-alpha.0.js +0 -1
  172. package/dist/interface/@vue.CvjRlaU6.0.0.30-alpha.0.js +0 -17
  173. package/dist/interface/Account.Dm2FouAU.0.0.30-alpha.0.js +0 -1
  174. package/dist/interface/Adminpanel.B2Aiobnt.0.0.30-alpha.0.js +0 -2
  175. package/dist/interface/Appearance.EfH0tMdM.0.0.30-alpha.0.js +0 -1
  176. package/dist/interface/Backup.D8SRclhB.0.0.30-alpha.0.js +0 -1
  177. package/dist/interface/Camera.D-cOf4sS.0.0.30-alpha.0.js +0 -1
  178. package/dist/interface/Cameras.oolxbmXU.0.0.30-alpha.0.js +0 -1
  179. package/dist/interface/Camview.BHw8Pe3v.0.0.30-alpha.0.js +0 -1
  180. package/dist/interface/Config.DmPTI5iz.0.0.30-alpha.0.js +0 -1
  181. package/dist/interface/Console.Dq4khHFF.0.0.30-alpha.0.js +0 -4
  182. package/dist/interface/FirstSteps.Bo467abx.0.0.30-alpha.0.js +0 -1
  183. package/dist/interface/Plugin.BLTVcTt1.0.0.30-alpha.0.js +0 -1
  184. package/dist/interface/Plugins.Cp8mK__o.0.0.30-alpha.0.js +0 -1
  185. package/dist/interface/Recordings.B_JIFk_G.0.0.30-alpha.0.js +0 -1
  186. package/dist/interface/Recordings.gMbvwmk_.0.0.30-alpha.0.js +0 -1
  187. package/dist/interface/Settings.EhHJjGrl.0.0.30-alpha.0.js +0 -1
  188. package/dist/interface/System.VodoK0U6.0.0.30-alpha.0.js +0 -4
  189. package/dist/interface/User.DpcN7DEC.0.0.30-alpha.0.js +0 -1
  190. package/dist/interface/VConfigEditor.vue_vue_type_script_setup_true_lang.Br68bfQJ.0.0.30-alpha.0.js +0 -2
  191. package/dist/interface/VPlayer.DYua3Eh_.0.0.30-alpha.0.js +0 -1
  192. package/dist/interface/main.19pRAqPU.0.0.30-alpha.0.js +0 -4
  193. package/dist/interface/utils.BvINh1mj.0.0.30-alpha.0.js +0 -1
  194. package/dist/interface/zod.BaF2dDCd.0.0.30-alpha.0.js +0 -1
  195. package/dist/server/src/camera/device.d.ts +0 -29
  196. package/dist/server/src/camera/device.js +0 -20
  197. package/dist/server/src/camera/device.js.map +0 -1
  198. package/dist/server/src/camera/index.d.ts +0 -90
  199. package/dist/server/src/camera/index.js +0 -581
  200. package/dist/server/src/camera/index.js.map +0 -1
  201. package/dist/server/src/camera/interfaces/camera.d.ts +0 -10
  202. package/dist/server/src/camera/interfaces/camera.js +0 -23
  203. package/dist/server/src/camera/interfaces/camera.js.map +0 -1
  204. package/dist/server/src/camera/interfaces/prebuffer.d.ts +0 -11
  205. package/dist/server/src/camera/interfaces/prebuffer.js +0 -31
  206. package/dist/server/src/camera/interfaces/prebuffer.js.map +0 -1
  207. package/dist/server/src/camera/interfaces/ptz.d.ts +0 -13
  208. package/dist/server/src/camera/interfaces/ptz.js +0 -47
  209. package/dist/server/src/camera/interfaces/ptz.js.map +0 -1
  210. package/dist/server/src/camera/iou.d.ts +0 -2
  211. package/dist/server/src/camera/iou.js +0 -53
  212. package/dist/server/src/camera/iou.js.map +0 -1
  213. package/dist/server/src/camera/polygon.d.ts +0 -6
  214. package/dist/server/src/camera/polygon.js +0 -151
  215. package/dist/server/src/camera/polygon.js.map +0 -1
  216. package/dist/server/src/camera/streaming/peer-connection.d.ts +0 -55
  217. package/dist/server/src/camera/streaming/peer-connection.js +0 -203
  218. package/dist/server/src/camera/streaming/peer-connection.js.map +0 -1
  219. package/dist/server/src/camera/streaming/webrtc-connection.d.ts +0 -35
  220. package/dist/server/src/camera/streaming/webrtc-connection.js +0 -170
  221. package/dist/server/src/camera/streaming/webrtc-connection.js.map +0 -1
  222. package/dist/server/src/camera/streaming/werift-session.d.ts +0 -41
  223. package/dist/server/src/camera/streaming/werift-session.js +0 -179
  224. package/dist/server/src/camera/streaming/werift-session.js.map +0 -1
  225. package/dist/server/src/camera/videoFrame.d.ts +0 -24
  226. package/dist/server/src/camera/videoFrame.js +0 -104
  227. package/dist/server/src/camera/videoFrame.js.map +0 -1
  228. package/dist/server/src/index.d.ts +0 -18
  229. package/dist/server/src/index.js +0 -5
  230. package/dist/server/src/index.js.map +0 -1
  231. package/dist/server/src/nats/connection.d.ts +0 -17
  232. package/dist/server/src/nats/connection.js +0 -66
  233. package/dist/server/src/nats/connection.js.map +0 -1
  234. package/dist/server/src/nats/constants.d.ts +0 -1
  235. package/dist/server/src/nats/constants.js +0 -2
  236. package/dist/server/src/nats/constants.js.map +0 -1
  237. package/dist/server/src/nats/error.d.ts +0 -9
  238. package/dist/server/src/nats/error.js +0 -11
  239. package/dist/server/src/nats/error.js.map +0 -1
  240. package/dist/server/src/nats/messageQueue.d.ts +0 -20
  241. package/dist/server/src/nats/messageQueue.js +0 -132
  242. package/dist/server/src/nats/messageQueue.js.map +0 -1
  243. package/dist/server/src/nats/subscription.d.ts +0 -12
  244. package/dist/server/src/nats/subscription.js +0 -21
  245. package/dist/server/src/nats/subscription.js.map +0 -1
  246. package/dist/server/src/polyglot/node/decoder/child.d.ts +0 -1
  247. package/dist/server/src/polyglot/node/decoder/child.js +0 -644
  248. package/dist/server/src/polyglot/node/decoder/child.js.map +0 -1
  249. package/dist/server/src/polyglot/node/decoder/imageUtils.d.ts +0 -24
  250. package/dist/server/src/polyglot/node/decoder/imageUtils.js +0 -205
  251. package/dist/server/src/polyglot/node/decoder/imageUtils.js.map +0 -1
  252. package/dist/server/src/polyglot/node/decoder/wasm/build/decoder.d.ts +0 -144
  253. package/dist/server/src/polyglot/node/decoder/wasm/build/decoder.js +0 -65
  254. package/dist/server/src/polyglot/node/decoder/wasm/build/decoder.wasm +0 -0
  255. package/dist/server/src/polyglot/node/decoder/wasm/test/imageUtils.py +0 -106
  256. package/dist/server/src/polyglot/node/plugins/cameraStorage.d.ts +0 -107
  257. package/dist/server/src/polyglot/node/plugins/cameraStorage.js +0 -292
  258. package/dist/server/src/polyglot/node/plugins/cameraStorage.js.map +0 -1
  259. package/dist/server/src/polyglot/node/plugins/child.d.ts +0 -28
  260. package/dist/server/src/polyglot/node/plugins/child.js +0 -222
  261. package/dist/server/src/polyglot/node/plugins/child.js.map +0 -1
  262. package/dist/server/src/polyglot/node/plugins/configService.d.ts +0 -104
  263. package/dist/server/src/polyglot/node/plugins/configService.js +0 -213
  264. package/dist/server/src/polyglot/node/plugins/configService.js.map +0 -1
  265. package/dist/server/src/polyglot/node/plugins/pluginApi.d.ts +0 -35
  266. package/dist/server/src/polyglot/node/plugins/pluginApi.js +0 -23
  267. package/dist/server/src/polyglot/node/plugins/pluginApi.js.map +0 -1
  268. package/dist/server/src/polyglot/node/plugins/pluginLogger.d.ts +0 -18
  269. package/dist/server/src/polyglot/node/plugins/pluginLogger.js +0 -89
  270. package/dist/server/src/polyglot/node/plugins/pluginLogger.js.map +0 -1
  271. package/dist/server/src/polyglot/node/plugins/proxy/cameraDevice.d.ts +0 -69
  272. package/dist/server/src/polyglot/node/plugins/proxy/cameraDevice.js +0 -423
  273. package/dist/server/src/polyglot/node/plugins/proxy/cameraDevice.js.map +0 -1
  274. package/dist/server/src/polyglot/node/plugins/proxy/coreManager.d.ts +0 -40
  275. package/dist/server/src/polyglot/node/plugins/proxy/coreManager.js +0 -105
  276. package/dist/server/src/polyglot/node/plugins/proxy/coreManager.js.map +0 -1
  277. package/dist/server/src/polyglot/node/plugins/proxy/deviceManager.d.ts +0 -47
  278. package/dist/server/src/polyglot/node/plugins/proxy/deviceManager.js +0 -164
  279. package/dist/server/src/polyglot/node/plugins/proxy/deviceManager.js.map +0 -1
  280. package/dist/server/src/polyglot/node/plugins/schema.d.ts +0 -293
  281. package/dist/server/src/polyglot/node/plugins/schema.js +0 -740
  282. package/dist/server/src/polyglot/node/plugins/schema.js.map +0 -1
  283. package/dist/server/src/polyglot/node/plugins/storageController.d.ts +0 -30
  284. package/dist/server/src/polyglot/node/plugins/storageController.js +0 -40
  285. package/dist/server/src/polyglot/node/plugins/storageController.js.map +0 -1
  286. package/dist/server/src/polyglot/python/camera/interfaces/camera.py +0 -20
  287. package/dist/server/src/polyglot/python/camera/interfaces/prebuffer.py +0 -28
  288. package/dist/server/src/polyglot/python/camera/interfaces/ptz.py +0 -38
  289. package/dist/server/src/polyglot/python/camera/iou.py +0 -80
  290. package/dist/server/src/polyglot/python/camera/polygon.py +0 -173
  291. package/dist/server/src/polyglot/python/camera/video_frame.py +0 -188
  292. package/dist/server/src/polyglot/python/camera_ui_types/__init__.py +0 -1200
  293. package/dist/server/src/polyglot/python/decoder/child.py +0 -882
  294. package/dist/server/src/polyglot/python/decoder/image_utils.py +0 -149
  295. package/dist/server/src/polyglot/python/decoder/typings.py +0 -99
  296. package/dist/server/src/polyglot/python/plugins/camera_storage.py +0 -391
  297. package/dist/server/src/polyglot/python/plugins/child.py +0 -394
  298. package/dist/server/src/polyglot/python/plugins/config_service.py +0 -187
  299. package/dist/server/src/polyglot/python/plugins/constants.py +0 -1
  300. package/dist/server/src/polyglot/python/plugins/message_queue.py +0 -182
  301. package/dist/server/src/polyglot/python/plugins/plugin_api.py +0 -34
  302. package/dist/server/src/polyglot/python/plugins/plugin_logger.py +0 -111
  303. package/dist/server/src/polyglot/python/plugins/proxy/camera_device.py +0 -1599
  304. package/dist/server/src/polyglot/python/plugins/proxy/core_manager.py +0 -145
  305. package/dist/server/src/polyglot/python/plugins/proxy/device_manager.py +0 -226
  306. package/dist/server/src/polyglot/python/plugins/schema.py +0 -181
  307. package/dist/server/src/polyglot/python/plugins/storage_controller.py +0 -58
  308. package/dist/server/src/polyglot/python/plugins/typings.py +0 -253
  309. package/dist/server/src/polyglot/python/utilities/connection.py +0 -86
  310. package/dist/server/src/polyglot/python/utilities/json_lmdb.py +0 -19
  311. package/dist/server/src/polyglot/python/utilities/object_path.py +0 -195
  312. package/dist/server/src/polyglot/python/utilities/packer.py +0 -11
  313. package/dist/server/src/polyglot/python/utilities/subscriptions.py +0 -22
  314. package/dist/server/src/polyglot/python/utilities/task.py +0 -35
  315. package/dist/server/src/polyglot/python/utilities/thread.py +0 -10
  316. package/dist/server/src/polyglot/python/utilities/utils.py +0 -73
  317. package/dist/server/src/utils/ffmpeg.d.ts +0 -2
  318. package/dist/server/src/utils/ffmpeg.js +0 -61
  319. package/dist/server/src/utils/ffmpeg.js.map +0 -1
  320. package/dist/server/src/utils/network.d.ts +0 -12
  321. package/dist/server/src/utils/network.js +0 -92
  322. package/dist/server/src/utils/network.js.map +0 -1
  323. package/dist/server/src/utils/npm.d.ts +0 -4
  324. package/dist/server/src/utils/npm.js +0 -128
  325. package/dist/server/src/utils/npm.js.map +0 -1
  326. package/dist/server/src/utils/packer.d.ts +0 -2
  327. package/dist/server/src/utils/packer.js +0 -17
  328. package/dist/server/src/utils/packer.js.map +0 -1
  329. package/dist/server/src/utils/pythonInstaller.d.ts +0 -48
  330. package/dist/server/src/utils/pythonInstaller.js +0 -494
  331. package/dist/server/src/utils/pythonInstaller.js.map +0 -1
  332. package/dist/server/src/utils/reader.d.ts +0 -5
  333. package/dist/server/src/utils/reader.js +0 -41
  334. package/dist/server/src/utils/reader.js.map +0 -1
  335. package/dist/server/src/utils/subscribed.d.ts +0 -9
  336. package/dist/server/src/utils/subscribed.js +0 -17
  337. package/dist/server/src/utils/subscribed.js.map +0 -1
  338. package/dist/server/src/utils/utils.d.ts +0 -10
  339. package/dist/server/src/utils/utils.js +0 -165
  340. package/dist/server/src/utils/utils.js.map +0 -1
  341. /package/dist/interface/{@babel.l0sNRNKZ.0.0.30-alpha.0.js → @babel.l0sNRNKZ.0.0.30-alpha.3.js} +0 -0
  342. /package/dist/interface/{@intlify.YW_pt133.0.0.30-alpha.0.js → @intlify.YW_pt133.0.0.30-alpha.3.js} +0 -0
  343. /package/dist/interface/{@mdi.DnMbZhUH.0.0.30-alpha.0.js → @mdi.DnMbZhUH.0.0.30-alpha.3.js} +0 -0
  344. /package/dist/interface/{@popperjs.BQBsAJpH.0.0.30-alpha.0.js → @popperjs.BQBsAJpH.0.0.30-alpha.3.js} +0 -0
  345. /package/dist/interface/{@react-dnd.CcwRs9xb.0.0.30-alpha.0.js → @react-dnd.CcwRs9xb.0.0.30-alpha.3.js} +0 -0
  346. /package/dist/interface/{@socket.io.Dkula2eQ.0.0.30-alpha.0.js → @socket.io.Dkula2eQ.0.0.30-alpha.3.js} +0 -0
  347. /package/dist/interface/{@xterm.CnserxUX.0.0.30-alpha.0.js → @xterm.-WsTvn6n.0.0.30-alpha.3.js} +0 -0
  348. /package/dist/interface/assets/{@vueform.0.0.30-alpha.0.h7tNX9p6.css → @vueform.0.0.30-alpha.3.h7tNX9p6.css} +0 -0
  349. /package/dist/interface/assets/{@xterm.0.0.30-alpha.0.CGrrDQr5.css → @xterm.0.0.30-alpha.3.CGrrDQr5.css} +0 -0
  350. /package/dist/interface/assets/{Account.0.0.30-alpha.0.Ce3OmKrC.css → Account.0.0.30-alpha.3.Ce3OmKrC.css} +0 -0
  351. /package/dist/interface/assets/{Adminpanel.0.0.30-alpha.0.CXsTAXPL.css → Adminpanel.0.0.30-alpha.3.CXsTAXPL.css} +0 -0
  352. /package/dist/interface/assets/{Backup.0.0.30-alpha.0.BIwaSlv3.css → Backup.0.0.30-alpha.3.BIwaSlv3.css} +0 -0
  353. /package/dist/interface/assets/{Camera.0.0.30-alpha.0.BDtUJ-lA.css → Camera.0.0.30-alpha.3.BDtUJ-lA.css} +0 -0
  354. /package/dist/interface/assets/{Cameras.0.0.30-alpha.0.Djx0F2MM.css → Cameras.0.0.30-alpha.3.Djx0F2MM.css} +0 -0
  355. /package/dist/interface/assets/{Camview.0.0.30-alpha.0.Ce_V-Nxj.css → Camview.0.0.30-alpha.3.Ce_V-Nxj.css} +0 -0
  356. /package/dist/interface/assets/{Config.0.0.30-alpha.0.k4QpWumg.css → Config.0.0.30-alpha.3.k4QpWumg.css} +0 -0
  357. /package/dist/interface/assets/{Console.0.0.30-alpha.0.DWrfRWs9.css → Console.0.0.30-alpha.3.DWrfRWs9.css} +0 -0
  358. /package/dist/interface/assets/{FirstSteps.0.0.30-alpha.0.B3-pv8-a.css → FirstSteps.0.0.30-alpha.3.B3-pv8-a.css} +0 -0
  359. /package/dist/interface/assets/{NewCamera.0.0.30-alpha.0.DJ3tUBT_.css → NewCamera.0.0.30-alpha.3.DJ3tUBT_.css} +0 -0
  360. /package/dist/interface/assets/{Plugin.0.0.30-alpha.0.BtRA6zDt.css → Plugin.0.0.30-alpha.3.BtRA6zDt.css} +0 -0
  361. /package/dist/interface/assets/{Plugins.0.0.30-alpha.0.Cwu0aGUO.css → Plugins.0.0.30-alpha.3.Cwu0aGUO.css} +0 -0
  362. /package/dist/interface/assets/{Settings.0.0.30-alpha.0.DC_-E3CR.css → Settings.0.0.30-alpha.3.DC_-E3CR.css} +0 -0
  363. /package/dist/interface/assets/{User.0.0.30-alpha.0.DPDcJbx8.css → User.0.0.30-alpha.3.DPDcJbx8.css} +0 -0
  364. /package/dist/interface/assets/{VConsole.0.0.30-alpha.0.BZT1WyS-.css → VConsole.0.0.30-alpha.3.BZT1WyS-.css} +0 -0
  365. /package/dist/interface/assets/{VPlayer.0.0.30-alpha.0.CZXlTn4I.css → VPlayer.0.0.30-alpha.3.CZXlTn4I.css} +0 -0
  366. /package/dist/interface/assets/{VPluginCard.0.0.30-alpha.0.CIL48ca_.css → VPluginCard.0.0.30-alpha.3.CIL48ca_.css} +0 -0
  367. /package/dist/interface/assets/{highlight.0.0.30-alpha.0.DgoK_Xib.css → highlight.0.0.30-alpha.3.DgoK_Xib.css} +0 -0
  368. /package/dist/interface/assets/{logo-256.0.0.30-alpha.0.BCQk9H1-.png → logo-256.0.0.30-alpha.3.BCQk9H1-.png} +0 -0
  369. /package/dist/interface/assets/{logo-512.0.0.30-alpha.0.DLKVOU2S.png → logo-512.0.0.30-alpha.3.DLKVOU2S.png} +0 -0
  370. /package/dist/interface/assets/{logo.0.0.30-alpha.0.DmEiRk0z.png → logo.0.0.30-alpha.3.DmEiRk0z.png} +0 -0
  371. /package/dist/interface/assets/{main.0.0.30-alpha.0.BOf8IWhK.css → main.0.0.30-alpha.3.BOf8IWhK.css} +0 -0
  372. /package/dist/interface/assets/{mode-json.0.0.30-alpha.0.Br7xisR1.js → mode-json.0.0.30-alpha.3.Br7xisR1.js} +0 -0
  373. /package/dist/interface/assets/{mode-yaml.0.0.30-alpha.0.CIYL8U3d.js → mode-yaml.0.0.30-alpha.3.CIYL8U3d.js} +0 -0
  374. /package/dist/interface/assets/{v-calendar.0.0.30-alpha.0.CtSuDYZU.css → v-calendar.0.0.30-alpha.3.CtSuDYZU.css} +0 -0
  375. /package/dist/interface/assets/{vue3-toastify.0.0.30-alpha.0.DTY1DMRs.css → vue3-toastify.0.0.30-alpha.3.DTY1DMRs.css} +0 -0
  376. /package/dist/interface/assets/{vuetify.0.0.30-alpha.0.Cd1awv3t.css → vuetify.0.0.30-alpha.3.Cd1awv3t.css} +0 -0
  377. /package/dist/interface/{axios.C-n2IhIP.0.0.30-alpha.0.js → axios.C-n2IhIP.0.0.30-alpha.3.js} +0 -0
  378. /package/dist/interface/{compare-versions.DqEOhma6.0.0.30-alpha.0.js → compare-versions.DqEOhma6.0.0.30-alpha.3.js} +0 -0
  379. /package/dist/interface/{dijkstrajs.D_NXgYpA.0.0.30-alpha.0.js → dijkstrajs.D_NXgYpA.0.0.30-alpha.3.js} +0 -0
  380. /package/dist/interface/{engine.io-parser.BiEtp6m2.0.0.30-alpha.0.js → engine.io-parser.BiEtp6m2.0.0.30-alpha.3.js} +0 -0
  381. /package/dist/interface/{entities.C20TfXL6.0.0.30-alpha.0.js → entities.C20TfXL6.0.0.30-alpha.3.js} +0 -0
  382. /package/dist/interface/{get-size.D1dS-IaP.0.0.30-alpha.0.js → get-size.D1dS-IaP.0.0.30-alpha.3.js} +0 -0
  383. /package/dist/interface/{mdurl.k9Sl0PQj.0.0.30-alpha.0.js → mdurl.k9Sl0PQj.0.0.30-alpha.3.js} +0 -0
  384. /package/dist/interface/{punycode.js.Dj65hjkv.0.0.30-alpha.0.js → punycode.js.Dj65hjkv.0.0.30-alpha.3.js} +0 -0
  385. /package/dist/interface/{react-dnd-html5-backend.1HQjlkwI.0.0.30-alpha.0.js → react-dnd-html5-backend.1HQjlkwI.0.0.30-alpha.3.js} +0 -0
  386. /package/dist/interface/{redux.CuxFRhX_.0.0.30-alpha.0.js → redux.CuxFRhX_.0.0.30-alpha.3.js} +0 -0
  387. /package/dist/interface/{tslib.9k7AwCpt.0.0.30-alpha.0.js → tslib.9k7AwCpt.0.0.30-alpha.3.js} +0 -0
  388. /package/dist/interface/{uc.micro.kMc2yuuw.0.0.30-alpha.0.js → uc.micro.kMc2yuuw.0.0.30-alpha.3.js} +0 -0
  389. /package/dist/interface/{uuid.DvF23Exx.0.0.30-alpha.0.js → uuid.DvF23Exx.0.0.30-alpha.3.js} +0 -0
  390. /package/dist/interface/{vue.l0sNRNKZ.0.0.30-alpha.0.js → vue.l0sNRNKZ.0.0.30-alpha.3.js} +0 -0
@@ -1,1200 +0,0 @@
1
- from abc import ABCMeta, abstractmethod
2
- from collections.abc import AsyncGenerator, Awaitable, Coroutine
3
- from typing import Any, Callable, Generic, Optional, Union, overload, runtime_checkable
4
-
5
- from PIL import Image
6
- from reactivex import Observable
7
- from typing_extensions import (
8
- Literal,
9
- NotRequired,
10
- Protocol,
11
- TypedDict,
12
- TypeVar,
13
- )
14
-
15
- Callback = Union[
16
- Callable[..., Any],
17
- Callable[..., Coroutine[Any, Any, Any]],
18
- ]
19
-
20
-
21
- # schema
22
- JsonSchemaType = Literal["string", "number", "boolean", "object", "array", "button"]
23
-
24
-
25
- class JsonBaseSchema(TypedDict):
26
- type: JsonSchemaType
27
- key: NotRequired[Optional[str]]
28
- title: NotRequired[Optional[str]]
29
- description: NotRequired[Optional[str]]
30
- required: NotRequired[Optional[bool]]
31
- readonly: NotRequired[Optional[bool]]
32
- placeholder: NotRequired[Optional[str]]
33
- hidden: NotRequired[Optional[bool]]
34
- group: NotRequired[Optional[str]]
35
- defaultValue: NotRequired[Optional[Union[str, int, bool]]]
36
- store: NotRequired[Optional[bool]]
37
- onSet: NotRequired[
38
- Union[Callable[[Any, Any], Awaitable[Union[None, Any]]], Callable[[Any, Any], Union[None, Any]]]
39
- ] # only for plugins
40
- onGet: NotRequired[
41
- Union[Callable[[], Awaitable[Union[Any, None]]], Callable[[], Union[Any, None]]]
42
- ] # only for plugins
43
-
44
-
45
- class JsonSchemaString(JsonBaseSchema):
46
- type: Literal["string"] # type: ignore
47
- format: NotRequired[
48
- Literal["date-time", "date", "time", "email", "uuid", "ipv4", "ipv6", "password", "qrCode", "image"]
49
- ]
50
- minLength: NotRequired[int]
51
- maxLength: NotRequired[int]
52
-
53
-
54
- class JsonSchemaNumber(JsonBaseSchema):
55
- type: Literal["number"] # type: ignore
56
- minimum: NotRequired[int]
57
- maximum: NotRequired[int]
58
- step: NotRequired[float]
59
-
60
-
61
- class JsonSchemaBoolean(JsonBaseSchema):
62
- type: Literal["boolean"] # type: ignore
63
-
64
-
65
- class JsonSchemaEnum(JsonBaseSchema):
66
- type: Literal["string"] # type: ignore
67
- enum: list[str]
68
- multiple: NotRequired[bool]
69
-
70
-
71
- class JsonSchemaButton(JsonBaseSchema):
72
- type: Literal["button"] # type: ignore
73
-
74
-
75
- class JsonSchemaObject(JsonBaseSchema):
76
- type: Literal["object"] # type: ignore
77
- opened: NotRequired[bool]
78
- properties: NotRequired["JsonSchemaForm"]
79
-
80
-
81
- class JsonSchemaArray(JsonBaseSchema):
82
- type: Literal["array"] # type: ignore
83
- opened: NotRequired[bool]
84
- items: NotRequired["JsonSchema"]
85
-
86
-
87
- class JsonSchemaObjectButton(TypedDict):
88
- label: str
89
- onSubmit: str
90
-
91
-
92
- class JsonSchemaObjectWithButtons(JsonSchemaObject):
93
- buttons: list[JsonSchemaObjectButton]
94
-
95
-
96
- JsonSchema = Union[
97
- JsonSchemaString,
98
- JsonSchemaNumber,
99
- JsonSchemaBoolean,
100
- JsonSchemaEnum,
101
- JsonSchemaObject,
102
- JsonSchemaObjectWithButtons,
103
- JsonSchemaArray,
104
- JsonSchemaButton,
105
- ]
106
-
107
-
108
- JsonSchemaForm = dict[str, JsonSchema]
109
-
110
-
111
- class RootSchema(TypedDict):
112
- schema: JsonSchemaForm
113
-
114
-
115
- class SchemaConfig(TypedDict):
116
- rootSchema: RootSchema
117
- config: dict[str, Any]
118
-
119
-
120
- # camera object
121
- class Go2RtcSource(TypedDict):
122
- name: str
123
- src: str
124
-
125
-
126
- class Go2RtcFFMPEGSource(TypedDict):
127
- aac: Go2RtcSource
128
- opus: Go2RtcSource
129
-
130
-
131
- class Go2RtcWSSource(TypedDict):
132
- webrtc: str
133
-
134
-
135
- class Go2RtcRTSPSource(TypedDict):
136
- single: str
137
- default: str
138
- mp4: str
139
-
140
-
141
- class Go2RtcEndpoint(TypedDict):
142
- webrtc: str
143
- mse: str
144
- lmp4: str
145
- mmp4: str
146
- mp4: str
147
- mp4Snapshot: str
148
- jpegSnapshot: str
149
- lHlsTs: str
150
- lHlsFmp4: str
151
- mHlsFmp4: str
152
- mjpeg: str
153
- mjpegHtml: str
154
-
155
-
156
- class StreamUrls(TypedDict):
157
- ws: Go2RtcWSSource
158
- rtsp: Go2RtcRTSPSource
159
- transcoded: Go2RtcFFMPEGSource
160
- www: Go2RtcEndpoint
161
-
162
-
163
- class CameraInput(TypedDict):
164
- _id: str
165
- name: str
166
- roles: list["CameraRoles"]
167
- urls: StreamUrls
168
-
169
-
170
- CameraRoles = Literal["high-resolution", "mid-resolution", "low-resolution", "snapshot"]
171
-
172
- CameraExtensionWithoutHub = Literal[
173
- "prebuffer",
174
- "motionDetection",
175
- "objectDetection",
176
- "audioDetection",
177
- "ptz",
178
- ]
179
-
180
- CameraExtension = Union[CameraExtensionWithoutHub, Literal["hub"]]
181
-
182
-
183
- class PluginContract(TypedDict):
184
- extension: NotRequired[CameraExtension]
185
- supportAdditionalCameras: NotRequired[bool]
186
- builtIns: NotRequired[list[CameraExtensionWithoutHub]]
187
- dependencies: list[str]
188
- pythonVersion: NotRequired[str]
189
-
190
-
191
- Point = tuple[float, float]
192
-
193
- ZoneType = Literal["intersect", "contain"]
194
-
195
- ZoneFilter = Literal["include", "exclude"]
196
-
197
-
198
- class DetectionZone(TypedDict):
199
- name: str
200
- points: list[Point]
201
- type: ZoneType
202
- filter: ZoneFilter
203
- classes: list[str]
204
- isPrivacyMask: bool
205
-
206
-
207
- class CameraInformation(TypedDict):
208
- model: NotRequired[str]
209
- manufacturer: NotRequired[str]
210
- hardware: NotRequired[str]
211
- serialNumber: NotRequired[str]
212
- firmwareVersion: NotRequired[str]
213
- supportUrl: NotRequired[str]
214
-
215
-
216
- class MotionDetectionSettings(TypedDict):
217
- timeout: int
218
-
219
-
220
- class ObjectDetectionSettings(TypedDict):
221
- confidence: float
222
-
223
-
224
- class CameraActivitySettings(TypedDict):
225
- motion: MotionDetectionSettings
226
- object: ObjectDetectionSettings
227
-
228
-
229
- CameraType = Literal["camera", "doorbell"]
230
-
231
- CameraFrameWorkerDecoder = Literal["pillow", "wasm"]
232
-
233
- CameraFrameWorkerResolution = Literal[640, 480, 320]
234
-
235
-
236
- class CameraFrameWorkerSettings(TypedDict):
237
- decoder: CameraFrameWorkerDecoder
238
- fps: int
239
- resolution: CameraFrameWorkerResolution
240
-
241
-
242
- class Camera(TypedDict):
243
- _id: str
244
- nativeId: NotRequired[Optional[str]]
245
- pluginId: str
246
- name: str
247
- disabled: bool
248
- isCloud: bool
249
- hasLight: bool
250
- hasSiren: bool
251
- hasBinarySensor: bool
252
- hasBattery: bool
253
- info: CameraInformation
254
- type: CameraType
255
- activityZones: list[DetectionZone]
256
- activitySettings: CameraActivitySettings
257
- hasAudioDetector: bool
258
- hasMotionDetector: bool
259
- hasObjectDetector: bool
260
- hasPrebuffer: bool
261
- hasPtz: bool
262
- sources: list[CameraInput]
263
- frameWorkerSettings: CameraFrameWorkerSettings
264
-
265
-
266
- CameraPublicProperties = Literal[
267
- "_id",
268
- "nativeId",
269
- "pluginId",
270
- "name",
271
- "disabled",
272
- "isCloud",
273
- "hasLight",
274
- "hasSiren",
275
- "hasBinarySensor",
276
- "hasBattery",
277
- "info",
278
- "type",
279
- "activityZones",
280
- "activitySettings",
281
- "hasAudioDetector",
282
- "hasMotionDetector",
283
- "hasObjectDetector",
284
- "hasPrebuffer",
285
- "hasPtz",
286
- "sources",
287
- "frameWorkerSettings",
288
- ]
289
-
290
-
291
- # camera device
292
- ObjectClass = Literal[
293
- "person",
294
- "bicycle",
295
- "car",
296
- "motorcycle",
297
- "airplane",
298
- "bus",
299
- "train",
300
- "truck",
301
- "boat",
302
- "traffic light",
303
- "fire hydrant",
304
- "stop sign",
305
- "parking meter",
306
- "bench",
307
- "bird",
308
- "cat",
309
- "dog",
310
- "horse",
311
- "sheep",
312
- "cow",
313
- "elephant",
314
- "bear",
315
- "zebra",
316
- "giraffe",
317
- "backpack",
318
- "umbrella",
319
- "handbag",
320
- "tie",
321
- "suitcase",
322
- "frisbee",
323
- "skis",
324
- "snowboard",
325
- "sports ball",
326
- "kite",
327
- "baseball bat",
328
- "baseball glove",
329
- "skateboard",
330
- "surfboard",
331
- "tennis racket",
332
- "bottle",
333
- "wine glass",
334
- "cup",
335
- "fork",
336
- "knife",
337
- "spoon",
338
- "bowl",
339
- "banana",
340
- "apple",
341
- "sandwich",
342
- "orange",
343
- "broccoli",
344
- "carrot",
345
- "hot dog",
346
- "pizza",
347
- "donut",
348
- "cake",
349
- "chair",
350
- "couch",
351
- "potted plant",
352
- "bed",
353
- "dining table",
354
- "toilet",
355
- "tv",
356
- "laptop",
357
- "mouse",
358
- "remote",
359
- "keyboard",
360
- "cell phone",
361
- "microwave",
362
- "oven",
363
- "toaster",
364
- "sink",
365
- "refrigerator",
366
- "book",
367
- "clock",
368
- "vase",
369
- "scissors",
370
- "teddy bear",
371
- "hair drier",
372
- "toothbrush",
373
- "motion",
374
- ]
375
-
376
-
377
- class Detection(TypedDict):
378
- id: NotRequired[str]
379
- label: ObjectClass
380
- confidence: float
381
- boundingBox: tuple[float, float, float, float]
382
- inputWidth: int
383
- inputHeight: int
384
- origWidth: int
385
- origHeight: int
386
-
387
-
388
- class BaseStateLight(TypedDict):
389
- timestamp: int
390
- lastEvent: NotRequired[Optional["LightStateWithoutLastEvent"]]
391
-
392
-
393
- class BaseStateMotion(TypedDict):
394
- timestamp: int
395
- lastEvent: NotRequired[Optional["MotionStateWithoutLastEvent"]]
396
-
397
-
398
- class BaseStateAudio(TypedDict):
399
- timestamp: int
400
- lastEvent: NotRequired[Optional["AudioStateWithoutLastEvent"]]
401
-
402
-
403
- class BaseStateObject(TypedDict):
404
- timestamp: int
405
- lastEvent: NotRequired[Optional["ObjectStateWithoutLastEvent"]]
406
-
407
-
408
- class BaseStateDoorbell(TypedDict):
409
- timestamp: int
410
- lastEvent: NotRequired[Optional["DoorbellStateWithoutLastEvent"]]
411
-
412
-
413
- class BaseStateSiren(TypedDict):
414
- timestamp: int
415
- lastEvent: NotRequired[Optional["SirenStateWithoutLastEvent"]]
416
-
417
-
418
- class BaseStateBattery(TypedDict):
419
- timestamp: int
420
- lastEvent: NotRequired[Optional["BatteryStateWithoutLastEvent"]]
421
-
422
-
423
- class BaseStateWithoutLastEvent(TypedDict):
424
- timestamp: int
425
-
426
-
427
- class MotionSetEvent(TypedDict):
428
- state: NotRequired[bool]
429
- detections: list[Detection]
430
-
431
-
432
- class AudioSetEvent(TypedDict):
433
- state: bool
434
- db: NotRequired[Optional[int]]
435
-
436
-
437
- class ObjectSetEvent(TypedDict):
438
- detections: list[Detection]
439
-
440
-
441
- class LightSetEvent(TypedDict):
442
- state: bool
443
-
444
-
445
- class DoorbellSetEvent(TypedDict):
446
- state: bool
447
-
448
-
449
- class SirenSetEvent(TypedDict):
450
- state: bool
451
- level: NotRequired[Optional[int]]
452
-
453
-
454
- class BatterySetEvent(TypedDict):
455
- level: int
456
- charging: NotRequired[Optional[bool]]
457
- lowBattery: NotRequired[Optional[bool]]
458
-
459
-
460
- class LightState(BaseStateLight, LightSetEvent): ...
461
-
462
-
463
- class LightStateWithoutLastEvent(BaseStateWithoutLastEvent, LightSetEvent): ...
464
-
465
-
466
- class MotionState(BaseStateMotion, MotionSetEvent): ...
467
-
468
-
469
- class MotionStateWithoutLastEvent(BaseStateWithoutLastEvent, MotionSetEvent): ...
470
-
471
-
472
- class AudioState(BaseStateAudio, AudioSetEvent): ...
473
-
474
-
475
- class AudioStateWithoutLastEvent(BaseStateWithoutLastEvent, AudioSetEvent): ...
476
-
477
-
478
- class DoorbellState(BaseStateDoorbell, DoorbellSetEvent): ...
479
-
480
-
481
- class DoorbellStateWithoutLastEvent(BaseStateWithoutLastEvent, DoorbellSetEvent): ...
482
-
483
-
484
- class SirenState(BaseStateSiren, SirenSetEvent): ...
485
-
486
-
487
- class SirenStateWithoutLastEvent(BaseStateWithoutLastEvent, SirenSetEvent): ...
488
-
489
-
490
- class ObjectState(BaseStateObject, ObjectSetEvent): ...
491
-
492
-
493
- class ObjectStateWithoutLastEvent(BaseStateWithoutLastEvent, ObjectSetEvent): ...
494
-
495
-
496
- class BatteryState(BaseStateBattery, BatterySetEvent): ...
497
-
498
-
499
- class BatteryStateWithoutLastEvent(BaseStateWithoutLastEvent, BatterySetEvent): ...
500
-
501
-
502
- class FrameState(MotionState):
503
- frameData: "FrameData"
504
- metadata: "FrameMetadata"
505
-
506
-
507
- T = TypeVar(
508
- "T",
509
- LightState,
510
- MotionState,
511
- AudioState,
512
- DoorbellState,
513
- SirenState,
514
- ObjectState,
515
- BatteryState,
516
- )
517
-
518
-
519
- class StateValues(Protocol):
520
- light: LightState
521
- motion: MotionState
522
- audio: AudioState
523
- object: ObjectState
524
- doorbell: DoorbellState
525
- siren: SirenState
526
- battery: BatteryState
527
-
528
-
529
- class SetValues(Protocol):
530
- light: LightSetEvent
531
- motion: MotionSetEvent
532
- audio: AudioSetEvent
533
- object: ObjectSetEvent
534
- doorbell: DoorbellSetEvent
535
- siren: SirenSetEvent
536
- battery: BatterySetEvent
537
-
538
-
539
- CameraStateCallbacks = dict[str, Callable[[T], None]]
540
-
541
- StateValue = Union[
542
- LightState,
543
- MotionState,
544
- AudioState,
545
- DoorbellState,
546
- SirenState,
547
- ObjectState,
548
- BatteryState,
549
- ]
550
-
551
- SetValue = Union[
552
- LightSetEvent,
553
- MotionSetEvent,
554
- AudioSetEvent,
555
- DoorbellSetEvent,
556
- SirenSetEvent,
557
- BatterySetEvent,
558
- ObjectSetEvent,
559
- ]
560
-
561
- StateNames = Literal["light", "motion", "audio", "doorbell", "siren", "battery", "object"]
562
-
563
- OnChangeCallback = Callable[[T, T], None]
564
-
565
-
566
- class AudioStreamOptions(TypedDict):
567
- enabled: NotRequired[bool]
568
- codec: NotRequired[str]
569
- bitrate: NotRequired[int]
570
- sampleRate: NotRequired[int]
571
-
572
-
573
- class VideoStreamOptions(TypedDict):
574
- codec: NotRequired[str]
575
- width: NotRequired[int]
576
- height: NotRequired[int]
577
- bitrate: NotRequired[int]
578
- fps: NotRequired[int]
579
- idrInterval: NotRequired[int]
580
-
581
-
582
- class StreamInfo(TypedDict):
583
- audio: AudioStreamOptions
584
- video: VideoStreamOptions
585
-
586
-
587
- class BasePrebufferState(TypedDict):
588
- duration: int
589
-
590
-
591
- class PrebufferStateTrue(BasePrebufferState):
592
- state: bool
593
- url: str
594
-
595
-
596
- class PrebufferStateFalse(BasePrebufferState):
597
- state: bool
598
-
599
-
600
- PrebufferState = Union[PrebufferStateTrue, PrebufferStateFalse]
601
-
602
- Container = Literal["mpegts", "mp4"]
603
-
604
-
605
- TalkbackCodec = Literal["PCMA", "PCMU", "opus"]
606
-
607
- Interfaces = Literal["camera", "ptz", "prebuffer", "audioDetector", "motionDetector", "objectDetector"]
608
-
609
-
610
- class CameraDelegate(metaclass=ABCMeta):
611
- @abstractmethod
612
- async def snapshot(self) -> Optional[bytes]: ...
613
-
614
-
615
- CameraDelegateMethodNames = Literal["reboot", "snapshot"]
616
-
617
-
618
- class CameraPrebufferDelegate(metaclass=ABCMeta):
619
- @abstractmethod
620
- async def getStreamInfo(self, source_name: str) -> Optional[StreamInfo]: ...
621
- @abstractmethod
622
- async def getPrebufferingState(
623
- self, source_name: str, container: Container
624
- ) -> Optional[PrebufferState]: ...
625
-
626
-
627
- CameraPrebufferDelegateMethodNames = Literal["getStreamInfo", "getPrebufferingState"]
628
-
629
-
630
- class CameraPTZDelegate(metaclass=ABCMeta):
631
- @abstractmethod
632
- async def moveAbsolute(self, pan: float, tilt: float, zoom: float) -> None: ...
633
-
634
- @abstractmethod
635
- async def moveRelative(self, pan: float, tilt: float, zoom: float) -> None: ...
636
-
637
- @abstractmethod
638
- async def moveContinuous(self, pan: float, tilt: float, zoom: float) -> None: ...
639
-
640
- @abstractmethod
641
- async def stop(self) -> None: ...
642
-
643
-
644
- CameraPTZDelegateMethodNames = Literal["moveAbsolute", "moveRelative", "moveContinuous", "stop"]
645
-
646
-
647
- class CameraSource(Protocol):
648
- # from CameraInput
649
- id: str # _id
650
- name: str
651
- roles: list["CameraRoles"]
652
- urls: StreamUrls
653
- # end
654
-
655
- async def update_prebuffering_state(self, container: Container, state: PrebufferState) -> None: ...
656
- def get_prebuffering_state(self, container: Container) -> PrebufferState: ...
657
- def on_prebuffering(self, container: Container) -> Observable[PrebufferState]: ...
658
- async def get_stream_info(self) -> Optional[StreamInfo]: ...
659
-
660
-
661
- ImageInputFormat = Literal["yuv", "rgb", "rgba", "gray"]
662
- ImageOutputFormat = Literal["rgb", "rgba", "gray"]
663
-
664
-
665
- class ImageFormat(TypedDict):
666
- to: ImageOutputFormat
667
-
668
-
669
- class ImageCrop(TypedDict):
670
- top: int
671
- left: int
672
- width: int
673
- height: int
674
-
675
-
676
- class ImageResize(TypedDict):
677
- width: NotRequired[int]
678
- height: NotRequired[int]
679
-
680
-
681
- class ImageOptions(TypedDict):
682
- format: NotRequired[ImageFormat]
683
- crop: NotRequired[ImageCrop]
684
- resize: NotRequired[ImageResize]
685
-
686
-
687
- class IceServer(TypedDict):
688
- urls: list[str]
689
- username: NotRequired[str]
690
- credential: NotRequired[str]
691
-
692
-
693
- DecoderFormat = Literal["yuv", "rgb"]
694
-
695
-
696
- class ImageMetadata(TypedDict):
697
- width: int
698
- height: int
699
-
700
-
701
- class AudioMetadata(TypedDict):
702
- mimeType: Literal["audio/mpeg", "audio/wav", "audio/ogg"]
703
-
704
-
705
- class FrameMetadata(TypedDict):
706
- format: DecoderFormat
707
- frameSize: float
708
- width: int
709
- height: int
710
- origWidth: int
711
- origHeight: int
712
-
713
-
714
- class FrameData(TypedDict):
715
- frameId: str
716
- timestamp: int
717
-
718
-
719
- class ImageInformation(TypedDict):
720
- width: int
721
- height: int
722
- channels: Literal[1, 3, 4]
723
- format: ImageInputFormat
724
-
725
-
726
- class FrameBuffer(TypedDict):
727
- image: bytes
728
- info: ImageInformation
729
-
730
-
731
- class FrameImage(TypedDict):
732
- image: Image.Image
733
- info: ImageInformation
734
-
735
-
736
- class VideoFrame(Protocol):
737
- frame_data: FrameData
738
- metadata: FrameMetadata
739
- input_width: int
740
- input_height: int
741
- input_format: DecoderFormat
742
-
743
- async def save(self, path: str, options: Optional[ImageOptions] = {}) -> None: ...
744
- async def to_buffer(self, options: Optional[ImageOptions] = {}) -> FrameBuffer: ...
745
- async def to_image(self, options: Optional[ImageOptions] = {}) -> FrameImage: ...
746
-
747
-
748
- class MotionFrame(VideoFrame):
749
- motion: MotionState
750
-
751
-
752
- SV = TypeVar("SV", bound=StateValue)
753
-
754
-
755
- class CameraStateChangedObject(Generic[SV], dict[str, SV]):
756
- old_state: SV
757
- new_state: SV
758
-
759
-
760
- class CameraPropertyObservableObject(TypedDict):
761
- property: str
762
- old_state: Any
763
- new_state: Any
764
-
765
-
766
- class CameraDevice(Protocol):
767
- id: str
768
- plugin_id: str
769
- native_id: Optional[str] = None
770
- connected: bool
771
- disabled: bool
772
- name: str
773
- type: CameraType
774
- info: CameraInformation
775
- sources: list[CameraSource]
776
- activity_zones: list[DetectionZone]
777
- activity_settings: CameraActivitySettings
778
- frameworker_settings: CameraFrameWorkerSettings
779
- is_cloud: bool
780
- has_light: bool
781
- has_siren: bool
782
- has_binary_sensor: bool
783
- has_battery: bool
784
- has_motion_detector: bool
785
- has_audio_detector: bool
786
- has_object_detector: bool
787
- has_ptz: bool
788
- has_prebuffer: bool
789
-
790
- on_connected: Observable[bool]
791
- on_light_switched: Observable[LightState]
792
- on_motion_detected: Observable[MotionState]
793
- on_audio_detected: Observable[AudioState]
794
- on_object_detected: Observable[ObjectState]
795
- on_doorbell_pressed: Observable[DoorbellState]
796
- on_siren_detected: Observable[SirenState]
797
- on_battery_changed: Observable[BatteryState]
798
-
799
- stream_source: CameraSource
800
- snapshot_source: Optional[CameraSource]
801
- high_resolution_source: Optional[CameraSource]
802
- mid_resolution_source: Optional[CameraSource]
803
- low_resolution_source: Optional[CameraSource]
804
-
805
- ptz: CameraPTZDelegate
806
-
807
- @overload
808
- def set_delegate(self, name: Literal["cameraDelegate"], delegate: CameraDelegate) -> None: ...
809
- @overload
810
- def set_delegate(self, name: Literal["prebufferDelegate"], delegate: CameraPrebufferDelegate) -> None: ...
811
- @overload
812
- def set_delegate(self, name: Literal["ptzDelegate"], delegate: CameraPTZDelegate) -> None: ...
813
-
814
- async def connect(self) -> None: ...
815
- async def disconnect(self) -> None: ...
816
- async def snapshot(self, force_new: Optional[bool] = None) -> Optional[bytes]: ...
817
- async def get_frames(self, prebuffer_duration: int = 0) -> AsyncGenerator[VideoFrame, None]: ...
818
- async def get_motion_frames(self) -> AsyncGenerator[MotionFrame, None]: ...
819
-
820
- async def get_value(
821
- self, state_name: str
822
- ) -> Union[
823
- LightState,
824
- MotionState,
825
- AudioState,
826
- ObjectState,
827
- DoorbellState,
828
- SirenState,
829
- BatteryState,
830
- ]: ...
831
-
832
- async def add_camera_source(self, source: "CameraConfigInputSettings") -> None: ...
833
- async def update_camera_source(
834
- self, source_id: str, source: "CameraConfigInputSettingsPartial"
835
- ) -> None: ...
836
- async def remove_camera_source(self, source_id: str) -> None: ...
837
-
838
- @overload
839
- async def update_state(
840
- self,
841
- state_name: Literal["light"],
842
- event_data: LightSetEvent,
843
- ) -> None: ...
844
- @overload
845
- async def update_state(
846
- self,
847
- state_name: Literal["motion"],
848
- event_data: MotionSetEvent,
849
- frame: Optional[VideoFrame] = None,
850
- ) -> None: ...
851
- @overload
852
- async def update_state(
853
- self,
854
- state_name: Literal["audio"],
855
- event_data: AudioSetEvent,
856
- ) -> None: ...
857
- @overload
858
- async def update_state(
859
- self,
860
- state_name: Literal["object"],
861
- event_data: ObjectSetEvent,
862
- ) -> None: ...
863
- @overload
864
- async def update_state(
865
- self,
866
- state_name: Literal["doorbell"],
867
- event_data: DoorbellSetEvent,
868
- ) -> None: ...
869
- @overload
870
- async def update_state(
871
- self,
872
- state_name: Literal["siren"],
873
- event_data: SirenSetEvent,
874
- ) -> None: ...
875
- @overload
876
- async def update_state(
877
- self,
878
- state_name: Literal["battery"],
879
- event_data: BatterySetEvent,
880
- ) -> None: ...
881
- async def update_state(
882
- self, state_name: str, event_data: Any, frame: Optional[VideoFrame] = None
883
- ) -> None: ...
884
-
885
- @overload
886
- def on_state_change(
887
- self, state_name: Literal["light"]
888
- ) -> Observable[CameraStateChangedObject[LightState]]: ...
889
- @overload
890
- def on_state_change(
891
- self, state_name: Literal["motion"]
892
- ) -> Observable[CameraStateChangedObject[MotionState]]: ...
893
- @overload
894
- def on_state_change(
895
- self, state_name: Literal["audio"]
896
- ) -> Observable[CameraStateChangedObject[AudioState]]: ...
897
- @overload
898
- def on_state_change(
899
- self, state_name: Literal["doorbell"]
900
- ) -> Observable[CameraStateChangedObject[DoorbellState]]: ...
901
- @overload
902
- def on_state_change(
903
- self, state_name: Literal["siren"]
904
- ) -> Observable[CameraStateChangedObject[SirenState]]: ...
905
- @overload
906
- def on_state_change(
907
- self, state_name: Literal["battery"]
908
- ) -> Observable[CameraStateChangedObject[BatteryState]]: ...
909
- @overload
910
- def on_state_change(
911
- self, state_name: Literal["object"]
912
- ) -> Observable[CameraStateChangedObject[ObjectState]]: ...
913
- def on_state_change( # type: ignore
914
- self, state_name: StateNames
915
- ) -> Observable[CameraStateChangedObject[StateValue]]: ...
916
- def on_property_change(
917
- self, property: Union[CameraPublicProperties, list[CameraPublicProperties]]
918
- ) -> Observable[CameraPropertyObservableObject]: ...
919
-
920
- def remove_all_listeners(self) -> None: ...
921
-
922
-
923
- # camera create config
924
- class BaseCameraConfig(TypedDict):
925
- name: str
926
- nativeId: NotRequired[str]
927
- isCloud: NotRequired[bool]
928
- hasLight: NotRequired[bool]
929
- hasSiren: NotRequired[bool]
930
- hasBinarySensor: NotRequired[bool]
931
- hasBattery: NotRequired[bool]
932
- disabled: NotRequired[bool]
933
- info: NotRequired[CameraInformation]
934
-
935
-
936
- class CameraConfigInputSettingsPartial(TypedDict, total=False):
937
- # _id: str
938
- name: str
939
- roles: list[CameraRoles]
940
- urls: list[str]
941
-
942
-
943
- class CameraConfigInputSettings(TypedDict):
944
- name: str
945
- roles: list[CameraRoles]
946
- urls: list[str]
947
-
948
-
949
- class CameraConfig(BaseCameraConfig):
950
- sources: list[CameraConfigInputSettings]
951
-
952
-
953
- # events and callbacks
954
- CameraSelectedCallback = Union[
955
- Callable[[CameraDevice, CameraExtension], None],
956
- Callable[[CameraDevice, CameraExtension], Coroutine[None, None, None]],
957
- ]
958
- CameraDeselectedCallback = Union[
959
- Callable[[str, CameraExtension], None],
960
- Callable[[str, CameraExtension], Coroutine[None, None, None]],
961
- ]
962
-
963
-
964
- # CoreManager
965
- @runtime_checkable
966
- class CoreManager(Protocol):
967
- async def get_ffmpeg_path(self) -> str: ...
968
- async def get_ice_servers(self) -> list[IceServer]: ...
969
- async def get_server_addresses(self) -> list[str]: ...
970
-
971
-
972
- # DeviceManager
973
- DeviceManagerEventType = Literal[
974
- "cameraSelected",
975
- "cameraDeselected",
976
- ]
977
-
978
-
979
- @runtime_checkable
980
- class DeviceManager(Protocol):
981
- async def get_camera_by_id(self, id: str) -> Optional[CameraDevice]: ...
982
- async def get_camera_by_name(self, name: str) -> Optional[CameraDevice]: ...
983
- async def create_camera(self, config: CameraConfig) -> CameraDevice: ...
984
- async def remove_camera_by_id(self, id: str) -> None: ...
985
- async def remove_camera_by_name(self, name: str) -> None: ...
986
-
987
- @overload
988
- def on(self, event: Literal["cameraSelected"], listener: CameraSelectedCallback) -> "DeviceManager": ...
989
- @overload
990
- def on(
991
- self, event: Literal["cameraDeselected"], listener: CameraDeselectedCallback
992
- ) -> "DeviceManager": ...
993
-
994
- @overload
995
- def once(self, event: Literal["cameraSelected"], listener: CameraSelectedCallback) -> "DeviceManager": ...
996
- @overload
997
- def once(
998
- self, event: Literal["cameraDeselected"], listener: CameraDeselectedCallback
999
- ) -> "DeviceManager": ...
1000
-
1001
- @overload
1002
- def remove_listener(
1003
- self, event: Literal["cameraSelected"], listener: CameraSelectedCallback
1004
- ) -> "DeviceManager": ...
1005
- @overload
1006
- def remove_listener(
1007
- self, event: Literal["cameraDeselected"], listener: CameraDeselectedCallback
1008
- ) -> "DeviceManager": ...
1009
-
1010
- def remove_all_listeners(self, event: Optional[DeviceManagerEventType] = None) -> "DeviceManager": ...
1011
-
1012
-
1013
- # camera storage
1014
- P = TypeVar("P")
1015
- CS = TypeVar("CS", default=dict[str, Any])
1016
-
1017
-
1018
- @runtime_checkable
1019
- class CameraStorage(Protocol, Generic[CS]):
1020
- values: CS
1021
- schema: JsonSchemaForm
1022
-
1023
- async def initializeStorage(self) -> None: ...
1024
- @overload
1025
- def getValue(self, path: str) -> Union[Awaitable[P], P, None]: ...
1026
- @overload
1027
- def getValue(self, path: str, default_value: P) -> Union[Awaitable[P], P]: ...
1028
- def getValue(self, path: str, default_value: Optional[P] = None) -> Union[Awaitable[P], P, None]: ...
1029
- async def setValue(self, path: str, new_value: Any) -> None: ...
1030
- def hasValue(self, path: str) -> bool: ...
1031
- async def getConfig(self) -> SchemaConfig: ...
1032
- async def setConfig(self, new_config: CS) -> None: ...
1033
- @overload
1034
- async def addSchema(self, schema_or_path: JsonSchemaForm) -> None: ...
1035
- @overload
1036
- async def addSchema(self, schema_or_path: str, schema: JsonSchema) -> None: ...
1037
- async def addSchema(
1038
- self,
1039
- schema_or_path: Union[JsonSchemaForm, str],
1040
- schema: Optional[JsonSchema] = None,
1041
- ) -> None: ...
1042
- def removeSchema(self, path: str) -> None: ...
1043
- async def changeSchema(self, path: str, new_schema: dict[str, Any]) -> None: ...
1044
- def getSchema(self, path: str) -> Optional[JsonSchema]: ...
1045
- def hasSchema(self, path: str) -> bool: ...
1046
-
1047
-
1048
- SC = TypeVar("SC", default=CameraStorage[dict[str, Any]], covariant=True)
1049
-
1050
-
1051
- # StorageController
1052
- @runtime_checkable
1053
- class StorageController(Protocol[SC]):
1054
- def create_camera_storage(
1055
- self,
1056
- instance: Any,
1057
- camera_id: str,
1058
- schema: Optional[JsonSchemaForm] = None,
1059
- ) -> SC: ...
1060
- def get_camera_storage(self, camera_id: str) -> Optional[SC]: ...
1061
- def remove_camera_storage(self, camera_id: str) -> None: ...
1062
-
1063
-
1064
- # config service
1065
- @runtime_checkable
1066
- class PluginConfigService(Protocol):
1067
- def get(
1068
- self,
1069
- key: str,
1070
- default: Optional[Any] = None,
1071
- validate: Optional[Callable[[Any], bool]] = None,
1072
- refresh: bool = False,
1073
- write_if_not_valid: bool = False,
1074
- ) -> Any: ...
1075
-
1076
- def has(self, key: str, refresh: bool = False) -> bool: ...
1077
- def ensure_exists(self, key: str, default: Optional[Any] = None, write: bool = False) -> None: ...
1078
- def set(self, key: str, value: Any, write: bool = False) -> None: ...
1079
- def insert(self, key: str, value: Any, index: Optional[int] = None, write: bool = False) -> None: ...
1080
- def push(self, key: str, *values: Any, write: bool = False) -> None: ...
1081
- def delete(self, key: str, write: bool = False) -> None: ...
1082
- def all(self, refresh: bool = False) -> dict[str, Any]: ...
1083
- def replace(self, new_config: dict[str, Any], write: bool = False) -> None: ...
1084
- def update_value(
1085
- self,
1086
- path: str,
1087
- search_key: str,
1088
- search_value: Any,
1089
- target_key: str,
1090
- new_value: Any,
1091
- write: bool = False,
1092
- ) -> None: ...
1093
- def replace_or_add_item(
1094
- self,
1095
- path: str,
1096
- search_key: str,
1097
- search_value: Any,
1098
- new_item: Any,
1099
- write: bool = False,
1100
- ) -> None: ...
1101
-
1102
-
1103
- # Plugin API
1104
- APIEventType = Literal["finishLaunching", "shutdown"]
1105
-
1106
- PA = TypeVar("PA", bound=CameraStorage[Any], default=CameraStorage[Any])
1107
-
1108
-
1109
- @runtime_checkable
1110
- class PluginAPI(Protocol[PA]):
1111
- storage_path: str
1112
- config_file: str
1113
- config_service: PluginConfigService
1114
- storage_controller: StorageController[PA]
1115
- core_manager: CoreManager
1116
- device_manager: DeviceManager
1117
-
1118
- def on(self, event: APIEventType, listener: Callback) -> "PluginAPI": ...
1119
- def once(self, event: APIEventType, listener: Callback) -> "PluginAPI": ...
1120
- def off(self, event: APIEventType, listener: Callback) -> "PluginAPI": ...
1121
- def remove_listener(self, event: APIEventType, listener: Callback) -> "PluginAPI": ...
1122
- def remove_all_listeners(self, event: Optional[APIEventType] = None) -> "PluginAPI": ...
1123
-
1124
-
1125
- # logger
1126
- @runtime_checkable
1127
- class PluginLogger(Protocol):
1128
- def log(self, *args: Any) -> None: ...
1129
- def error(self, *args: Any) -> None: ...
1130
- def warn(self, *args: Any) -> None: ...
1131
- def attention(self, *args: Any) -> None: ...
1132
- def debug(self, *args: Any) -> None: ...
1133
- def trace(self, *args: Any) -> None: ...
1134
-
1135
-
1136
- # plugin
1137
- PluginConfig = dict[str, Any]
1138
- JSONValue = Union[str, int, float, bool, dict[str, Any], list[Any]]
1139
-
1140
-
1141
- class ToastMessage(TypedDict):
1142
- type: Literal["info", "success", "warning", "error"]
1143
- message: str
1144
-
1145
-
1146
- class FormSubmitSchema(TypedDict):
1147
- config: JsonSchemaObjectWithButtons
1148
-
1149
-
1150
- class FormSubmitResponse(TypedDict):
1151
- toast: NotRequired[ToastMessage]
1152
- schema: NotRequired[FormSubmitSchema]
1153
-
1154
-
1155
- class MotionDetectionPluginResponse(TypedDict):
1156
- filePath: str
1157
-
1158
-
1159
- class ObjectDetectionPluginResponse(TypedDict):
1160
- detections: list[Detection]
1161
-
1162
-
1163
- class AudioDetectionPluginResponse(TypedDict):
1164
- detected: bool
1165
-
1166
-
1167
- class BasePlugin(metaclass=ABCMeta):
1168
- @abstractmethod
1169
- def __init__(self, logger: PluginLogger, api_instance: PluginAPI) -> None: ...
1170
- @abstractmethod
1171
- async def onFormSubmit(self, action_id: str, payload: Any) -> Union[FormSubmitResponse, None]: ...
1172
- @abstractmethod
1173
- def configure_cameras(self, cameras: list[CameraDevice]) -> None: ...
1174
-
1175
-
1176
- class MotionDetectionPlugin(BasePlugin):
1177
- @abstractmethod
1178
- def interfaceSchema(self) -> Optional[RootSchema]: ...
1179
- @abstractmethod
1180
- async def detectMotion(
1181
- self, video_path: str, config: dict[str, Any]
1182
- ) -> MotionDetectionPluginResponse: ...
1183
-
1184
-
1185
- class ObjectDetectionPlugin(BasePlugin):
1186
- @abstractmethod
1187
- def interfaceSchema(self) -> Optional[RootSchema]: ...
1188
- @abstractmethod
1189
- async def detectObjects(
1190
- self, image_path: str, metadata: ImageMetadata, config: dict[str, Any]
1191
- ) -> ObjectDetectionPluginResponse: ...
1192
-
1193
-
1194
- class AudioDetectionPlugin(BasePlugin):
1195
- @abstractmethod
1196
- def interfaceSchema(self) -> Optional[RootSchema]: ...
1197
- @abstractmethod
1198
- async def detectAudio(
1199
- self, audio_path: str, metadata: AudioMetadata, config: dict[str, Any]
1200
- ) -> AudioDetectionPluginResponse: ...