@camera.ui/server 2.0.11 → 2.0.12

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 (292) hide show
  1. package/dist/interface/assets/{404-COkoHYdK.js → 404-Dfyzm8bF.js} +1 -1
  2. package/dist/interface/assets/{About-qJICwbGH.js → About-B4Y3WP7T.js} +1 -1
  3. package/dist/interface/assets/{Adminpanel-D58GDcYK.js → Adminpanel-DSk1uh2x.js} +1 -1
  4. package/dist/interface/assets/Automation-CTSfLcmF.js +2 -0
  5. package/dist/interface/assets/{AutomationImport-jG2DzCAw.js → AutomationImport-B1P0T0Pe.js} +2 -2
  6. package/dist/interface/assets/AutomationStore-ZaaXPPbd.js +2 -0
  7. package/dist/interface/assets/AutomationStoreDetail-B2vc7mTZ.js +2 -0
  8. package/dist/interface/assets/Automations-Bvw-jTKi.js +2 -0
  9. package/dist/interface/assets/Camera-BxmJXk11.js +2 -0
  10. package/dist/interface/assets/{CameraConsole-BjtK8-Jv.js → CameraConsole-CVqgED5u.js} +1 -1
  11. package/dist/interface/assets/Cameras-DT62fcZK.js +652 -0
  12. package/dist/interface/assets/Camview-CqSckgLr.js +1 -0
  13. package/dist/interface/assets/Config-p9t9zgly.js +2 -0
  14. package/dist/interface/assets/{ConfigActionCameraControl-DjD6pSYf.js → ConfigActionCameraControl-BLROOU0q.js} +1 -1
  15. package/dist/interface/assets/{ConfigActionDelay-DGZlBe84.js → ConfigActionDelay-q0pOTOzh.js} +1 -1
  16. package/dist/interface/assets/{ConfigActionHttp-h5zpYYny.js → ConfigActionHttp-DiMXKRGz.js} +1 -1
  17. package/dist/interface/assets/ConfigActionImageInput-u5xX9t3-.js +1 -0
  18. package/dist/interface/assets/{ConfigActionMqtt-BnNmQUNe.js → ConfigActionMqtt-BkZl3uYq.js} +1 -1
  19. package/dist/interface/assets/ConfigActionNotification-DIkFNlKe.js +1 -0
  20. package/dist/interface/assets/{ConfigActionOutput-h2IebNMX.js → ConfigActionOutput-CJF0F4cT.js} +1 -1
  21. package/dist/interface/assets/{ConfigActionPlugin-B6pIqGWe.js → ConfigActionPlugin-rQeJ4umG.js} +1 -1
  22. package/dist/interface/assets/ConfigActionSensor-BWHpkoMs.js +1 -0
  23. package/dist/interface/assets/{ConfigActionSnapshot-Cs2TG5fZ.js → ConfigActionSnapshot-BlvQZl1R.js} +1 -1
  24. package/dist/interface/assets/{ConfigActionVariable-BPK-FHZ-.js → ConfigActionVariable-BMV-BDAk.js} +1 -1
  25. package/dist/interface/assets/{ConfigConditionIfElse-BNfUIXNh.js → ConfigConditionIfElse-C5geCT1S.js} +1 -1
  26. package/dist/interface/assets/ConfigConditionSensorState-8bIGEhQd.js +1 -0
  27. package/dist/interface/assets/{ConfigConditionSwitch-C7_-2l4Z.js → ConfigConditionSwitch-PwrCSnTQ.js} +1 -1
  28. package/dist/interface/assets/{ConfigConditionTime-DCTdB9RZ.js → ConfigConditionTime-DUt_dsr9.js} +1 -1
  29. package/dist/interface/assets/{ConfigSensorValueInput-Dt09C19b.js → ConfigSensorValueInput-CgZWxOMu.js} +1 -1
  30. package/dist/interface/assets/{ConfigTriggerDetection-CVTb6TEu.js → ConfigTriggerDetection-D4UitpXI.js} +1 -1
  31. package/dist/interface/assets/{ConfigTriggerGeofence-Cb62v6rf.js → ConfigTriggerGeofence-Ci-gkmjS.js} +1 -1
  32. package/dist/interface/assets/{ConfigTriggerManual-agJhIaCy.js → ConfigTriggerManual-_PAVLJxz.js} +1 -1
  33. package/dist/interface/assets/{ConfigTriggerMqtt-DWZ79tPv.js → ConfigTriggerMqtt-BtfXQ_Bh.js} +1 -1
  34. package/dist/interface/assets/{ConfigTriggerSchedule-C38lrm2R.js → ConfigTriggerSchedule-CHyW4YQ1.js} +1 -1
  35. package/dist/interface/assets/{ConfigTriggerSensor-BKXoFFFT.js → ConfigTriggerSensor-CZMplCYs.js} +1 -1
  36. package/dist/interface/assets/{ConfigTriggerSystem-DqoMfULb.js → ConfigTriggerSystem-OOffe8rK.js} +1 -1
  37. package/dist/interface/assets/{ConfigTriggerWebhook-DunygdEo.js → ConfigTriggerWebhook-Baul6M1Y.js} +1 -1
  38. package/dist/interface/assets/Console-MXiL0z_X.js +1 -0
  39. package/dist/interface/assets/{CuiActionButton-iaZkXylf.js → CuiActionButton-WFz5I80P.js} +1 -1
  40. package/dist/interface/assets/{CuiAvatar--d4yBFev.js → CuiAvatar-BUwQnIaI.js} +1 -1
  41. package/dist/interface/assets/{CuiBBoxPlayground-BuDfU2lQ.js → CuiBBoxPlayground-J7_8dCvo.js} +1 -1
  42. package/dist/interface/assets/CuiBottomSheet-BA-u9UtN.js +1 -0
  43. package/dist/interface/assets/{CuiBottomSheet-o1iNIub8.js → CuiBottomSheet-CzG0n4Oa.js} +1 -1
  44. package/dist/interface/assets/CuiCameraCard-GH-DR5_s.js +1 -0
  45. package/dist/interface/assets/{CuiCameraPipCard-NA4CctaN.js → CuiCameraPipCard-CL_wj05b.js} +1 -1
  46. package/dist/interface/assets/CuiCameraRecordings-BjErk9Gl.js +1 -0
  47. package/dist/interface/assets/CuiCameraShares-qrJhZMEt.js +1 -0
  48. package/dist/interface/assets/{CuiCameraSnapshot-Dp6cLkMa.js → CuiCameraSnapshot-Dn1QSGrr.js} +1 -1
  49. package/dist/interface/assets/CuiCameraTable-or8VpE34.js +2 -0
  50. package/dist/interface/assets/{CuiDataTable-BDb1Qvzm.js → CuiDataTable-CjXiUFiJ.js} +1 -1
  51. package/dist/interface/assets/CuiFloatingButton-BjpU1EHv.js +1 -0
  52. package/dist/interface/assets/CuiImage-BM4g6edi.css +1 -0
  53. package/dist/interface/assets/CuiImage-Bq3bxOOL.js +1 -0
  54. package/dist/interface/assets/CuiMenu-DtnIPhcr.js +1 -0
  55. package/dist/interface/assets/CuiPluginCard-DKNWUFpR.js +2 -0
  56. package/dist/interface/assets/{CuiPluginCategoryChip-R5WUBAUw.js → CuiPluginCategoryChip-cmfKx-dU.js} +1 -1
  57. package/dist/interface/assets/CuiPluginOAuthButton-C6FQiVkt.js +2 -0
  58. package/dist/interface/assets/CuiPluginTrustBadge-PVZMP1rI.js +1 -0
  59. package/dist/interface/assets/{CuiQRCode-CsxVDVaU.js → CuiQRCode-uQygC1dP.js} +1 -1
  60. package/dist/interface/assets/CuiRecordingsGrid-Cuwd4L67.js +1 -0
  61. package/dist/interface/assets/CuiSchema-CH0GXMWV.js +1 -0
  62. package/dist/interface/assets/{CuiTopNavbarItem-CIO_h1T0.js → CuiTopNavbarItem-nGcC2em4.js} +1 -1
  63. package/dist/interface/assets/{CuiTopbarSlot-C6t4NmW-.js → CuiTopbarSlot-B6UMqYZl.js} +1 -1
  64. package/dist/interface/assets/Faces-cpO5vJbp.js +1 -0
  65. package/dist/interface/assets/{FirstSteps-CP26tE1m.js → FirstSteps-BHTcbs9O.js} +1 -1
  66. package/dist/interface/assets/{Instances-Bdy0n3fB.js → Instances-BXiVG2Dm.js} +1 -1
  67. package/dist/interface/assets/Logs-hMg2QOGj.js +6 -0
  68. package/dist/interface/assets/{Menu-DX0KhBBs.js → Menu-BiPBCi8Z.js} +1 -1
  69. package/dist/interface/assets/{OAuthDeviceFlow-Cci9ex4G.js → OAuthDeviceFlow-Bia9UA3I.js} +1 -1
  70. package/dist/interface/assets/Plugin-DfRaHAsi.js +1 -0
  71. package/dist/interface/assets/{PluginConsole-Fffl7Yh_.js → PluginConsole-CRw4zTRM.js} +1 -1
  72. package/dist/interface/assets/PluginDetail-BYqji8yN.css +1 -0
  73. package/dist/interface/assets/PluginDetail-BqRoLZc7.js +2 -0
  74. package/dist/interface/assets/{PluginSchema-BNEfEDJU.js → PluginSchema-TtBJPR_R.js} +1 -1
  75. package/dist/interface/assets/PluginSearch-B_NYpJi3.js +2 -0
  76. package/dist/interface/assets/{PluginSearch-NuKgD1r3.css → PluginSearch-Bbp8D7BJ.css} +1 -1
  77. package/dist/interface/assets/PluginSearch-DnJgg6-6.js +1 -0
  78. package/dist/interface/assets/Plugins-DVFEGtj3.js +1 -0
  79. package/dist/interface/assets/Recordings-dwm6lAoJ.js +1 -0
  80. package/dist/interface/assets/{Settings-TkiQG2I9.js → Settings-BpBmrGpS.js} +1 -1
  81. package/dist/interface/assets/SettingsAccount-8Kh1uQqn.js +1 -0
  82. package/dist/interface/assets/SettingsAccount-CjgYe5mF.js +1 -0
  83. package/dist/interface/assets/SettingsAppearance-3i3Ix7j-.js +1 -0
  84. package/dist/interface/assets/{SettingsAppearance-CWWSQkIY.js → SettingsAppearance-EoBxclgt.js} +1 -1
  85. package/dist/interface/assets/SettingsBackup-Bpsbg6Pm.js +1 -0
  86. package/dist/interface/assets/{SettingsMqtt-CeurNe8m.js → SettingsMqtt-ZQolc9lR.js} +1 -1
  87. package/dist/interface/assets/SettingsNotifications-BOoMt1Er.js +2 -0
  88. package/dist/interface/assets/SettingsRecordings-BQhxLCgM.js +1 -0
  89. package/dist/interface/assets/SettingsRemote-Cvcmpdgb.js +1 -0
  90. package/dist/interface/assets/SettingsSystem-B-yhq40t.js +2 -0
  91. package/dist/interface/assets/SettingsUsers-CezygBk8.js +1 -0
  92. package/dist/interface/assets/Terminal-CDQJGwb_.js +4 -0
  93. package/dist/interface/assets/{VariableInput-BuXTKXXC.js → VariableInput-CnmqCHf7.js} +1 -1
  94. package/dist/interface/assets/{VariableSuggestions-BIPtw8GW.js → VariableSuggestions-D6IlwBqV.js} +1 -1
  95. package/dist/interface/assets/VersionsHandler-BHR1k9zz.js +7 -0
  96. package/dist/interface/assets/Workers-Bv-bWBC-.js +2 -0
  97. package/dist/interface/assets/{api-DudQz5TK.js → api-BhOwzvxK.js} +1 -1
  98. package/dist/interface/assets/api-Cea16mc8.js +2 -0
  99. package/dist/interface/assets/api-GMfqGYqQ.css +2 -0
  100. package/dist/interface/assets/{auth-BKlPnLfY.js → auth-CNPkdTXX.js} +1 -1
  101. package/dist/interface/assets/{automations-eQnuQOEs.js → automations-CHengR-B.js} +1 -1
  102. package/dist/interface/assets/{automations-Dtp3-KSy.js → automations-DhLADBhd.js} +1 -1
  103. package/dist/interface/assets/{cameras-BySMxwdP.js → cameras-DyF2T0be.js} +1 -1
  104. package/dist/interface/assets/{cameras.schema-DVnsQl9j.js → cameras.schema-DBzgU4m6.js} +1 -1
  105. package/dist/interface/assets/cloudHandoff-LxdvSi1a.js +1 -0
  106. package/dist/interface/assets/{config-CDCKrp2V.js → config-c7o4sJrQ.js} +1 -1
  107. package/dist/interface/assets/{circular-connection-Fq-Vqe3X.js → delete-outline-CbGU9XWz.js} +1 -1
  108. package/dist/interface/assets/{deviceId-O-kfs3nO.js → deviceId-BYu9Q8Ay.js} +1 -1
  109. package/dist/interface/assets/{hasPermission-DADXQ_dj.js → hasPermission-CgyWyOhQ.js} +1 -1
  110. package/dist/interface/assets/{instances-DVk8sRuN.js → instances-CRYtaTQS.js} +1 -1
  111. package/dist/interface/assets/main-CgXkx5UO.js +3 -0
  112. package/dist/interface/assets/{notifications-Dnh_ylVF.js → notifications-sejZCb0L.js} +1 -1
  113. package/dist/interface/assets/{plugins-CHRZiPTq.js → plugins-CCLFcD4c.js} +1 -1
  114. package/dist/interface/assets/round-restart-alt-PDSZur-0.js +1 -0
  115. package/dist/interface/assets/{router-M08TaIji.css → router-C7b6u3Zu.css} +1 -1
  116. package/dist/interface/assets/router-DkMUvvnP.js +2 -0
  117. package/dist/interface/assets/{routerState-CencmCOo.js → routerState-BR88YV1H.js} +1 -1
  118. package/dist/interface/assets/{server-zkNDKqjz.js → server-C7SETTy9.js} +1 -1
  119. package/dist/interface/assets/{shares-DooKpXt5.js → shares-Cy1SLL98.js} +1 -1
  120. package/dist/interface/assets/{theme-Dlx1uc6I.js → theme-DqbhRu7y.js} +1 -1
  121. package/dist/interface/assets/{types-DwLgLlNL.js → types-v8L66UlA.js} +1 -1
  122. package/dist/interface/assets/{ui-BajsbwJJ.js → ui-g5rCwxUE.js} +1 -1
  123. package/dist/interface/assets/{useAppVersion-Vx2rWjdR.js → useAppVersion-WfdoG9Ji.js} +1 -1
  124. package/dist/interface/assets/{useBackupRestore-CtDDTNYM.js → useBackupRestore-ootsFhdF.js} +1 -1
  125. package/dist/interface/assets/{useBiometricCredentials-DnEuKj2Y.js → useBiometricCredentials-Ca75xEru.js} +1 -1
  126. package/dist/interface/assets/{useCameraOptions-CurEfrEs.js → useCameraOptions-BpL2zbfV.js} +1 -1
  127. package/dist/interface/assets/{useCuiCameraDrawer-eH0m75Mk.js → useCuiCameraDrawer-BHUHw6W6.js} +1 -1
  128. package/dist/interface/assets/useCuiDialog-yVh5UWKF.js +2 -0
  129. package/dist/interface/assets/{useFileDownload-CaB5Myfa.js → useFileDownload-BcaNWndS.js} +1 -1
  130. package/dist/interface/assets/useLogsSocket-BRSsUNqv.js +5 -0
  131. package/dist/interface/assets/{useServerRestart-COGxcO4B.js → useServerRestart-PZhND5H_.js} +1 -1
  132. package/dist/interface/assets/{useSharedComposables-DC7dAxBt.js → useSharedComposables-USqd05AG.js} +1 -1
  133. package/dist/interface/assets/{useStreamStatus-Cr_bBYAe.js → useStreamStatus-nCx5ux1-.js} +1 -1
  134. package/dist/interface/assets/{useUpdateChannel-D_SN9IPN.js → useUpdateChannel-3eHk3KXZ.js} +1 -1
  135. package/dist/interface/assets/{useUserOptions-CtgFdv3y.js → useUserOptions-DVC4k8Zs.js} +1 -1
  136. package/dist/interface/assets/{users.schema-vs5FAhpT.js → users.schema-B4fEuoKZ.js} +1 -1
  137. package/dist/interface/assets/{vendor-cameraui-D5fd9Ars.js → vendor-cameraui-QuTJKoXE.js} +84 -23
  138. package/dist/interface/assets/vendor-core-CCcu_nmz.js +1 -0
  139. package/dist/interface/assets/{vendor-primevue-Ba4LruKV.js → vendor-primevue-BdB7McKg.js} +84 -145
  140. package/dist/interface/assets/view-grid-BWJS0bBD.js +1 -0
  141. package/dist/interface/index.html +47 -47
  142. package/dist/interface/sw.js +1 -1
  143. package/dist/server/package.json +6 -6
  144. package/dist/server/requirements.txt +1 -1
  145. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/__init__.py +2 -0
  146. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/detection.py +3 -0
  147. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/__init__.py +2 -0
  148. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/ptz.py +45 -2
  149. package/dist/server/src/api/database/backfill.d.ts +5 -0
  150. package/dist/server/src/api/database/backfill.js +89 -0
  151. package/dist/server/src/api/database/backfill.js.map +1 -0
  152. package/dist/server/src/api/database/index.d.ts +1 -0
  153. package/dist/server/src/api/database/index.js +29 -43
  154. package/dist/server/src/api/database/index.js.map +1 -1
  155. package/dist/server/src/api/database/record-schemas.d.ts +231 -0
  156. package/dist/server/src/api/database/record-schemas.js +194 -0
  157. package/dist/server/src/api/database/record-schemas.js.map +1 -0
  158. package/dist/server/src/api/schemas/cameras.schema.d.ts +265 -1
  159. package/dist/server/src/api/schemas/cameras.schema.js +10 -0
  160. package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
  161. package/dist/server/src/api/schemas/remote.schema.d.ts +1 -1
  162. package/dist/server/src/api/services/cameras.service.d.ts +1 -0
  163. package/dist/server/src/api/services/cameras.service.js +18 -1
  164. package/dist/server/src/api/services/cameras.service.js.map +1 -1
  165. package/dist/server/src/api/services/plugins.service.js +15 -4
  166. package/dist/server/src/api/services/plugins.service.js.map +1 -1
  167. package/dist/server/src/api/websocket/nsp/main.js +3 -0
  168. package/dist/server/src/api/websocket/nsp/main.js.map +1 -1
  169. package/dist/server/src/camera/controller.js +1 -12
  170. package/dist/server/src/camera/controller.js.map +1 -1
  171. package/dist/server/src/camera/decoder/audio-loop.d.ts +25 -0
  172. package/dist/server/src/camera/decoder/audio-loop.js +163 -0
  173. package/dist/server/src/camera/decoder/audio-loop.js.map +1 -0
  174. package/dist/server/src/camera/decoder/cascade-manager.js +1 -4
  175. package/dist/server/src/camera/decoder/cascade-manager.js.map +1 -1
  176. package/dist/server/src/camera/decoder/detection-coordinator.d.ts +36 -97
  177. package/dist/server/src/camera/decoder/detection-coordinator.js +479 -1387
  178. package/dist/server/src/camera/decoder/detection-coordinator.js.map +1 -1
  179. package/dist/server/src/camera/decoder/detection-pipeline.d.ts +4 -0
  180. package/dist/server/src/camera/decoder/detection-pipeline.js +14 -24
  181. package/dist/server/src/camera/decoder/detection-pipeline.js.map +1 -1
  182. package/dist/server/src/camera/decoder/dwell-manager.js +1 -1
  183. package/dist/server/src/camera/decoder/dwell-manager.js.map +1 -1
  184. package/dist/server/src/camera/decoder/event-manager.js +15 -28
  185. package/dist/server/src/camera/decoder/event-manager.js.map +1 -1
  186. package/dist/server/src/camera/decoder/event-thumbnailer.d.ts +38 -0
  187. package/dist/server/src/camera/decoder/event-thumbnailer.js +192 -0
  188. package/dist/server/src/camera/decoder/event-thumbnailer.js.map +1 -0
  189. package/dist/server/src/camera/decoder/plugin-registry.d.ts +31 -0
  190. package/dist/server/src/camera/decoder/plugin-registry.js +114 -0
  191. package/dist/server/src/camera/decoder/plugin-registry.js.map +1 -0
  192. package/dist/server/src/camera/decoder/{ptz-autotracker.d.ts → ptz/autotracker.d.ts} +19 -0
  193. package/dist/server/src/camera/decoder/ptz/autotracker.js +537 -0
  194. package/dist/server/src/camera/decoder/ptz/autotracker.js.map +1 -0
  195. package/dist/server/src/camera/decoder/reconnect-backoff.d.ts +6 -0
  196. package/dist/server/src/camera/decoder/reconnect-backoff.js +17 -0
  197. package/dist/server/src/camera/decoder/reconnect-backoff.js.map +1 -0
  198. package/dist/server/src/camera/decoder/secondary-stage.d.ts +37 -0
  199. package/dist/server/src/camera/decoder/secondary-stage.js +445 -0
  200. package/dist/server/src/camera/decoder/secondary-stage.js.map +1 -0
  201. package/dist/server/src/camera/decoder/{audio-source.js → sources/audio-source.js} +2 -2
  202. package/dist/server/src/camera/decoder/sources/audio-source.js.map +1 -0
  203. package/dist/server/src/camera/decoder/{frame-source.js → sources/frame-source.js} +8 -11
  204. package/dist/server/src/camera/decoder/sources/frame-source.js.map +1 -0
  205. package/dist/server/src/camera/decoder/{snapshot-source.d.ts → sources/snapshot-source.d.ts} +2 -5
  206. package/dist/server/src/camera/decoder/{snapshot-source.js → sources/snapshot-source.js} +11 -15
  207. package/dist/server/src/camera/decoder/sources/snapshot-source.js.map +1 -0
  208. package/dist/server/src/camera/decoder/stationary-suppressor.d.ts +21 -0
  209. package/dist/server/src/camera/decoder/stationary-suppressor.js +141 -0
  210. package/dist/server/src/camera/decoder/stationary-suppressor.js.map +1 -0
  211. package/dist/server/src/camera/decoder/types.d.ts +6 -1
  212. package/dist/server/src/camera/decoder/types.js +1 -0
  213. package/dist/server/src/camera/decoder/types.js.map +1 -1
  214. package/dist/server/src/camera/decoder/worker.js +4 -7
  215. package/dist/server/src/camera/decoder/worker.js.map +1 -1
  216. package/dist/server/src/go2rtc/api/routes/discover.js +2 -1
  217. package/dist/server/src/go2rtc/api/routes/discover.js.map +1 -1
  218. package/dist/server/src/main.js +26 -3
  219. package/dist/server/src/main.js.map +1 -1
  220. package/dist/server/src/manager/downloadManager.js +0 -2
  221. package/dist/server/src/manager/downloadManager.js.map +1 -1
  222. package/dist/server/src/utils/npm/index.d.ts +10 -1
  223. package/dist/server/src/utils/npm/index.js +11 -1
  224. package/dist/server/src/utils/npm/index.js.map +1 -1
  225. package/dist/server/src/workers/capabilities/plugin-host.js +4 -1
  226. package/dist/server/src/workers/capabilities/plugin-host.js.map +1 -1
  227. package/package.json +6 -6
  228. package/dist/interface/assets/Automation-Dp_xaEqJ.js +0 -2
  229. package/dist/interface/assets/AutomationStore-4JFCinMU.js +0 -2
  230. package/dist/interface/assets/AutomationStoreDetail-yBtpTcZc.js +0 -2
  231. package/dist/interface/assets/Automations-BGsRPCnO.js +0 -2
  232. package/dist/interface/assets/Camera-C1_jdI_c.js +0 -2
  233. package/dist/interface/assets/Cameras-BmjWXAZ8.js +0 -652
  234. package/dist/interface/assets/Camview-wGaYaDmi.js +0 -1
  235. package/dist/interface/assets/Config-CuF6eGTD.js +0 -2
  236. package/dist/interface/assets/ConfigActionImageInput-xab5Mae-.js +0 -1
  237. package/dist/interface/assets/ConfigActionNotification-DGwL1eKM.js +0 -1
  238. package/dist/interface/assets/ConfigActionSensor-DBf7_RrD.js +0 -1
  239. package/dist/interface/assets/ConfigConditionSensorState-D1IWa7jK.js +0 -1
  240. package/dist/interface/assets/Console-DL4o8TCN.js +0 -1
  241. package/dist/interface/assets/CuiBottomSheet-DluJK839.js +0 -1
  242. package/dist/interface/assets/CuiCameraCard-CNkJcJNk.js +0 -1
  243. package/dist/interface/assets/CuiCameraRecordings-Dg_xNATQ.js +0 -1
  244. package/dist/interface/assets/CuiCameraShares-BSdoTLlP.js +0 -1
  245. package/dist/interface/assets/CuiCameraTable-16e0lAA5.js +0 -2
  246. package/dist/interface/assets/CuiFloatingButton-B64PYWE2.js +0 -1
  247. package/dist/interface/assets/CuiImage-Bxf7z2N4.css +0 -1
  248. package/dist/interface/assets/CuiImage-D_DDxN1t.js +0 -1
  249. package/dist/interface/assets/CuiMenu-BmgnEZun.js +0 -1
  250. package/dist/interface/assets/CuiPluginCard-C0GXkGJ3.js +0 -2
  251. package/dist/interface/assets/CuiPluginOAuthButton-CY3c3HRs.js +0 -2
  252. package/dist/interface/assets/CuiPluginTrustBadge-QRsixP01.js +0 -1
  253. package/dist/interface/assets/CuiRecordingsGrid-DycYYi7W.js +0 -1
  254. package/dist/interface/assets/CuiSchema-D1-Z2sTy.js +0 -1
  255. package/dist/interface/assets/Faces-QSA5E6EG.js +0 -1
  256. package/dist/interface/assets/Logs-Bs0C7Yu1.js +0 -6
  257. package/dist/interface/assets/Plugin-CG02A29i.js +0 -1
  258. package/dist/interface/assets/PluginDetail-BsIkPUY8.css +0 -1
  259. package/dist/interface/assets/PluginDetail-CRCMotvN.js +0 -2
  260. package/dist/interface/assets/PluginSearch-CwNCQedL.js +0 -2
  261. package/dist/interface/assets/PluginSearch-GD7qtALl.js +0 -1
  262. package/dist/interface/assets/Plugins-BNiQus_y.js +0 -1
  263. package/dist/interface/assets/Recordings-dY0k4i3E.js +0 -1
  264. package/dist/interface/assets/SettingsAccount-Cln0bZPI.js +0 -1
  265. package/dist/interface/assets/SettingsAccount-DvrdANbI.js +0 -1
  266. package/dist/interface/assets/SettingsAppearance-CVMAyxFr.js +0 -1
  267. package/dist/interface/assets/SettingsBackup-CZEKi84z.js +0 -1
  268. package/dist/interface/assets/SettingsNotifications-BBYcFlOe.js +0 -2
  269. package/dist/interface/assets/SettingsRecordings-8JRnUwvv.js +0 -1
  270. package/dist/interface/assets/SettingsRemote-BXLy9grM.js +0 -1
  271. package/dist/interface/assets/SettingsSystem-BwVJ2-Ws.js +0 -2
  272. package/dist/interface/assets/SettingsUsers-CMsX8YO6.js +0 -1
  273. package/dist/interface/assets/Terminal-CNAaV5h5.js +0 -4
  274. package/dist/interface/assets/VersionsHandler-0Ol7oxfg.js +0 -7
  275. package/dist/interface/assets/Workers-BYGXvih8.js +0 -2
  276. package/dist/interface/assets/api-BEwr0GLC.css +0 -2
  277. package/dist/interface/assets/api-CeJqvqFj.js +0 -2
  278. package/dist/interface/assets/cloudHandoff-DOYq2IS2.js +0 -1
  279. package/dist/interface/assets/main-DHUUsPUM.js +0 -3
  280. package/dist/interface/assets/round-restart-alt-BRh54UpI.js +0 -1
  281. package/dist/interface/assets/router-B6AZz5fb.js +0 -2
  282. package/dist/interface/assets/useCuiDialog-CGak2kyV.js +0 -2
  283. package/dist/interface/assets/useLogsSocket-B47qvN41.js +0 -5
  284. package/dist/interface/assets/vendor-core-D9amXF-u.js +0 -1
  285. package/dist/interface/assets/view-grid-jcP3VugM.js +0 -1
  286. package/dist/server/src/camera/decoder/audio-source.js.map +0 -1
  287. package/dist/server/src/camera/decoder/frame-source.js.map +0 -1
  288. package/dist/server/src/camera/decoder/ptz-autotracker.js +0 -342
  289. package/dist/server/src/camera/decoder/ptz-autotracker.js.map +0 -1
  290. package/dist/server/src/camera/decoder/snapshot-source.js.map +0 -1
  291. /package/dist/server/src/camera/decoder/{audio-source.d.ts → sources/audio-source.d.ts} +0 -0
  292. /package/dist/server/src/camera/decoder/{frame-source.d.ts → sources/frame-source.d.ts} +0 -0
@@ -1 +1 @@
1
- import{Fi as e,o as t,rt as n,wi as r,y as i}from"./vendor-cameraui-D5fd9Ars.js";import{At as a,D as o,Mt as s,O as c,T as l,Tt as u,h as d,kt as f}from"./api-CeJqvqFj.js";import{Er as p,J as m,Q as h,Sr as g,Y as _,br as v,dn as y,lr as b,mn as x,mr as S,pr as C,un as w,ur as T,xn as E,xr as D,yn as O,zn as k}from"./vendor-ClrOISZp.js";import{d as A,l as ee}from"./vendor-core-D9amXF-u.js";import{u as j}from"./vendor-primevue-Ba4LruKV.js";import{t as te}from"./hasPermission-DADXQ_dj.js";import{t as ne}from"./useCuiDialog-CGak2kyV.js";var M={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function N(e,t){return k(),x(`svg`,M,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M20.916 9.564a1 1 0 0 0-.513-1.316L7.328 2.492c-.995-.438-2.22.051-2.645 1.042l-2.21 5.154a2 2 0 0 0 1.052 2.624L9.563 13.9L8.323 17H4v-3H2v8h2v-3h4.323c.823 0 1.552-.494 1.856-1.258l1.222-3.054l5.205 2.23a1 1 0 0 0 1.31-.517l.312-.71l1.701.68l2-5l-1.536-.613zm-4.434 5.126L4.313 9.475l2.208-5.152l12.162 5.354z`},null,-1)]])}var re=T({name:`bx-cctv`,render:N}),P={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ie(e,t){return k(),x(`svg`,P,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M20 3H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2m-5 5h-2V6h2zm4 0h-2V6h2zm1 5H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2m-5 5h-2v-2h2zm4 0h-2v-2h2z`},null,-1)]])}var F=T({name:`bxs-server`,render:ie});function I(e){return`requires2fa`in e&&e.requires2fa===!0}async function L(e){return(await f.get(`/instances`,{signal:e})).data}async function R(e){return(await f.post(`/instances`,e)).data}async function z({id:e,data:t}){return(await f.put(`/instances/${e}`,t)).data}async function B(e){await f.delete(`/instances/${e}`)}async function V(e){return(await f.patch(`/instances/${e}/favorite`)).data}async function H(e,t){return(await f.post(`/instances/${e}/login`,t?{code:t}:{})).data}async function U(e,t){return(await f.get(`/instances/${e}/status`,{signal:t})).data}var W=class{_queryClient=h();toast=o();t=c.global.t;listQuery(){return l({queryKey:[`instances`],queryFn:({signal:e})=>L(e)})}statusQueries(e){return _({queries:w(()=>D(e).map(e=>({queryKey:[`instances`,e.id,`status`],queryFn:({signal:t})=>U(e.id,t),refetchInterval:15e3,retry:!1})))})}createMutation(){return m({mutationFn:R,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.added`),life:3e3})}})}updateMutation(){return m({mutationFn:z,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.updated`),life:3e3})}})}deleteMutation(){return m({mutationFn:async e=>{await B(e),await this._queryClient.cancelQueries({queryKey:[`instances`,e,`status`]}),this._queryClient.removeQueries({queryKey:[`instances`,e,`status`]})},onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.removed`),life:3e3})}})}toggleFavoriteMutation(){return m({mutationFn:V,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]})}})}loginMutation(){return m({mutationFn:e=>H(e),onError:()=>{}})}},G={class:`flex flex-col gap-6`},K={class:`text-muted`},q={class:`flex flex-col gap-2 justify-center items-center mt-2`},J={class:`cui-label`},ae=E({__name:`InstanceTwoFactorPrompt`,props:{instanceName:{}},setup(e,{expose:t}){let{instanceName:n}=v(e),r=S(``),i=w(()=>r.value.length<6);async function a(){return r.value.length<6?null:r.value}return t({isDisabled:i,onConfirm:a}),(e,t)=>{let i=j;return k(),x(`div`,G,[y(`p`,K,p(e.$t(`instances.two_factor_hint`,{name:g(n)})),1),y(`div`,q,[y(`label`,J,p(e.$t(`views.settings.security.enter_code`)),1),O(i,{modelValue:g(r),"onUpdate:modelValue":t[0]||=e=>b(r)?r.value=e:null,length:6,"integer-only":``,class:`justify-center`},null,8,[`modelValue`])])])}}}),Y=3e4,X=5e3,Z=`__home__`,oe=new Set([`localhost`,`127.0.0.1`,`::1`]),Q=u(`Instances`);async function se(e,t){try{let n=AbortSignal.timeout(X),r=t?AbortSignal.any([n,t]):n,i=await fetch(`${e}/api/health`,{signal:r});return Q.debug(`[probe]`,`${e} → ${i.ok?`OK`:`HTTP ${i.status}`}`),i.ok}catch(t){let n=t instanceof Error?t.message:String(t);return Q.debug(`[probe]`,`${e} → FAIL`,n),!1}}function ce(e){return{access:e.access_token,accessExpiresAt:e.access_token_expires_at,refresh:e.refresh_token,refreshExpiresAt:e.refresh_token_expires_at}}function le(e,t){return{_id:t?._id??``,username:t?.username??``,email:t?.email,role:t?.role??``,firstLogin:t?.firstLogin,avatar:t?.avatar,language:`auto`,access_token:e.access,refresh_token:e.refresh??``,token_type:`Bearer`,access_token_expires_at:e.accessExpiresAt??0,refresh_token_expires_at:e.refreshExpiresAt??0,internalAddresses:[],externalAddresses:[]}}var $=A(`instances`,()=>{let l=d(),u=ee(),f=o(),p=ne(),m=h(),{t:g}=c.global,_=r(`instanceTokens`,{}),v=r(`activeInstanceId`,null),y=S(!1),b=S(null),x=S(0),T=0,E=S(null),D=S([]),O=e(`redirectInfo`,null,{serializer:{read:e=>e?JSON.parse(e):null,write:e=>JSON.stringify(e)}}),k=w(()=>v.value===null),A=w(()=>v.value===null?null:D.value.find(e=>e.id===v.value)?.url??null);async function j(){try{if(!te(void 0,`admin`))return;let e=await L();D.value=e.instances,E.value=e.homeId,Q.debug(`[fetch]`,`loaded ${e.instances.length} instances`,{homeId:e.homeId})}catch(e){Q.warn(`[fetch]`,`failed`,e)}}let M=w(()=>{let e=E.value;return D.value.filter(t=>!(e&&t.remoteHomeId&&t.remoteHomeId===e)).map(e=>{let t=_.value[e.id];return{id:e.id,name:e.name,url:e.url,hasCredentials:!!e.credentials,favorite:e.favorite??!0,userData:t?.userData??null,lastConnectedAt:t?.lastConnectedAt??null,isHome:!1}})});function N(){let e=_.value[Z],t=v.value===null?a().target.value?.endpoint.url??e?.url??window.location.origin:e?.url??window.location.origin;return{id:`home`,name:g(`navigation.home`),url:t,hasCredentials:!1,favorite:!1,userData:e?.userData??null,lastConnectedAt:e?.lastConnectedAt??null,isHome:!0}}let re=w(()=>{if(v.value!==null){let e=M.value.find(e=>e.id===v.value);if(e)return e}return N()}),P=w(()=>M.value.filter(e=>e.favorite)),ie=w(()=>P.value.length>0||v.value!==null||O.value!==null);function F(e){return D.value.find(t=>t.id===e)?.favorite??!0}async function U(e){let{favorite:t}=await V(e),n=D.value.find(t=>t.id===e);n&&(n.favorite=t)}async function W(e){let t=await R(e);return D.value=[...D.value,t],t}async function G(e){await B(e),D.value=D.value.filter(t=>t.id!==e),delete _.value[e]}async function K(e,t){let n=await z({id:e,data:t}),r=D.value.findIndex(t=>t.id===e);r!==-1&&(D.value[r]=n)}async function q(e,t){let n=D.value.find(t=>t.id===e);return n?se(n.url,t):!1}function J(){let e=a().target.value;if(!e?.tokens.access){Q.debug(`[save-tokens]`,`skipped — no live access token`);return}let t=v.value??Z;_.value[t]={userData:le(e.tokens,l.user??void 0),lastConnectedAt:Date.now(),url:e.endpoint.url},Q.debug(`[save-tokens]`,`slot=${t} url=${e.endpoint.url}`)}function X(){if(v.value===null){s.value=null,Q.debug(`[restore-override]`,`no active instance — home target`);return}let e=_.value[v.value],t=e?.url??e?.userData?.internalAddresses?.[0]??e?.userData?.externalAddresses?.[0]??null;s.value=t,Q.debug(`[restore-override]`,`activeId=${v.value} → ${t??`no cached url`}`)}async function $(e){if(y.value){Q.warn(`[switch]`,`ignored — another switch is already in progress`);return}let r=e===null?N():M.value.find(t=>t.id===e)??N();if(e!==null&&de(r.url)&&!await he(r.name)){Q.debug(`[switch]`,`URL handoff declined by user`);return}let o=++T;y.value=!0,b.value=r.name,Q.debug(`[switch]`,`START targetId=${e??`home`} gen=${o}`),Q.debug(`[switch]`,`target resolved — name="${r.name}" url=${r.url} hasCreds=${r.hasCredentials}`);try{if(e!==null){let e=await se(r.url);if(o!==T){Q.debug(`[switch]`,`aborted after probe — newer gen=${T}`);return}if(!e){Q.warn(`[switch]`,`target unreachable — ${r.url}`),f.add({severity:`warn`,detail:g(`instances.unreachable`,{name:r.name}),life:3e3});return}}let c=null;if(e!==null&&r.hasCredentials)try{let t=await H(e);if(I(t)){Q.debug(`[switch]`,`remote requires 2FA — prompting for code`),y.value=!1;let n=await pe(e,r.name);if(o!==T)return;if(y.value=!0,!n){Q.debug(`[switch]`,`2FA prompt cancelled — aborting switch`);return}t=n}I(t)||(c=t,Q.debug(`[switch]`,`backend relay login OK`))}catch(e){Q.warn(`[switch]`,`backend relay login FAILED — will try cached tokens`,e)}if(o!==T){Q.debug(`[switch]`,`aborted after relay-login — newer gen=${T}`);return}J();let d=e??Z,p=c?ce(c):ue(d);if(Q.debug(`[switch]`,`tokens source: ${c?`fresh`:p?`cached`:`none`} (slot=${d})`),e!==null&&de(r.url)){Q.debug(`[switch]`,`URL handoff required — leaving SPA`),await ge(r,c);return}let h=a();if(h.reset(),Q.debug(`[switch]`,`kernel RESET`),n(),i(),t(),m.clear(),Q.debug(`[switch]`,`vue-query cleared`),v.value=e,s.value=e===null?null:r.url,Q.debug(`[switch]`,`activeId=${e} instanceOverride=${s.value??`null`}`),p&&c&&(_.value[d]={userData:c,lastConnectedAt:Date.now(),url:r.url},l.user={_id:c._id,username:c.username,role:c.role,firstLogin:c.firstLogin,avatar:c.avatar}),p){let t={url:r.url,mode:`direct-lan`,priority:0};Q.debug(`[switch]`,`seedAndRetry → ${t.url}`),await Promise.race([h.seedAndRetry({endpoint:t,tokens:p},e??`home`),new Promise((e,t)=>setTimeout(()=>t(Error(`switch_timeout`)),Y))])}else{Q.warn(`[switch]`,`no tokens — boot + route to login`),h.boot(e??`home`),l.user=null,u.push(`/`);return}if(o!==T){Q.debug(`[switch]`,`aborted after seedAndRetry — newer gen=${T}`);return}x.value++,Q.debug(`[switch]`,`DONE gen=${o} → /home`),u.push(`/home`)}catch(e){(e instanceof Error?e.message:String(e))===`switch_timeout`?(Q.error(`[switch]`,`TIMEOUT after ${Y}ms`),f.add({severity:`error`,detail:g(`instances.switch_timeout`,{name:b.value??``}),life:3e3})):(Q.error(`[switch]`,`failed`,e),f.add({severity:`error`,detail:e,life:3e3}))}finally{o===T&&(y.value=!1,b.value=null)}}function ue(e){let t=_.value[e];return t?.userData?.access_token?ce(t.userData):null}function de(e){try{let t=new URL(e),n=new URL(window.location.origin),r=n.protocol===`https:`&&t.protocol===`http:`,i=oe.has(t.hostname)&&!oe.has(n.hostname);return r||i}catch{return!1}}function fe(e){return new Promise(t=>{let n=!1,r=e=>{n||(n=!0,t(e))};p.openComponentDialog(ae,{data:{title:g(`instances.two_factor_title`),confirmText:g(`views.login.2fa_verify`),contentProps:{instanceName:e}},onConfirm:async e=>r(e??null),onCancel:async()=>r(null)})})}async function pe(e,t){for(;;){let n=await fe(t);if(!n)return null;try{let t=await H(e,n);if(!I(t))return t}catch(e){Q.warn(`[2fa]`,`verification failed`,e),f.add({severity:`error`,detail:g(`instances.two_factor_failed`),life:3e3})}}}async function me(e,t){return await pe(e,t)?(f.add({severity:`success`,detail:g(`instances.two_factor_completed`,{name:t}),life:3e3}),await j().catch(()=>{}),!0):!1}function he(e){return Q.warn(`[switch]`,`target "${e}" requires URL handoff — asking user confirmation`),new Promise(t=>{let n=!1,r=e=>{n||(n=!0,t(e))};p.openTextDialog({data:{title:g(`instances.insecure_handoff_title`),confirmText:g(`instances.insecure_handoff_confirm`),contentText:g(`instances.insecure_handoff_message`,{name:e}),confirmButtonProps:{severity:`danger`}},onConfirm:()=>r(!0),onCancel:()=>r(!1)})})}async function ge(e,t){let n={_reset:!0,_sourceUrl:window.location.origin,_instanceName:e.name};t&&Object.assign(n,t);let r=encodeURIComponent(btoa(JSON.stringify(n))),i=`${e.url.split(`#`)[0]}#auth=${r}`;Q.debug(`[url-handoff]`,`→ ${e.url} (with token=${t?`yes`:`no`})`),window.location.href=i}function _e(){_.value={},v.value=null,s.value=null,O.value=null,D.value=[],E.value=null,Q.debug(`[reset]`,`store cleared`)}return{instances:M,activeInstance:re,activeId:v,activeUrl:A,isHomeActive:k,isMultiInstance:ie,isSwitching:C(y),switchTargetName:C(b),switchKey:C(x),serverHomeId:E,redirectInfo:O,serverInstances:D,instanceTokens:_,favoriteInstances:P,isFavorite:F,toggleFavorite:U,fetchInstances:j,addInstance:W,removeInstance:G,updateInstance:K,switchInstance:$,probeInstance:q,complete2FALogin:me,reset:_e,saveCurrentTokens:J,restoreActiveOverride:X}});export{re as i,W as n,F as r,$ as t};
1
+ import{i as e,ki as t,l as n,rt as r,vi as i}from"./vendor-cameraui-QuTJKoXE.js";import{At as a,D as o,Mt as s,O as c,T as l,Tt as u,h as d,kt as f}from"./api-Cea16mc8.js";import{Er as p,J as m,Q as h,Sr as g,Y as _,br as v,dn as y,lr as b,mn as x,mr as S,pr as C,un as w,ur as T,xn as E,xr as D,yn as O,zn as k}from"./vendor-ClrOISZp.js";import{d as A,l as ee}from"./vendor-core-CCcu_nmz.js";import{u as j}from"./vendor-primevue-BdB7McKg.js";import{t as te}from"./hasPermission-CgyWyOhQ.js";import{t as ne}from"./useCuiDialog-yVh5UWKF.js";var M={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function N(e,t){return k(),x(`svg`,M,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M20.916 9.564a1 1 0 0 0-.513-1.316L7.328 2.492c-.995-.438-2.22.051-2.645 1.042l-2.21 5.154a2 2 0 0 0 1.052 2.624L9.563 13.9L8.323 17H4v-3H2v8h2v-3h4.323c.823 0 1.552-.494 1.856-1.258l1.222-3.054l5.205 2.23a1 1 0 0 0 1.31-.517l.312-.71l1.701.68l2-5l-1.536-.613zm-4.434 5.126L4.313 9.475l2.208-5.152l12.162 5.354z`},null,-1)]])}var re=T({name:`bx-cctv`,render:N}),P={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ie(e,t){return k(),x(`svg`,P,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M20 3H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2m-5 5h-2V6h2zm4 0h-2V6h2zm1 5H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2m-5 5h-2v-2h2zm4 0h-2v-2h2z`},null,-1)]])}var F=T({name:`bxs-server`,render:ie});function I(e){return`requires2fa`in e&&e.requires2fa===!0}async function L(e){return(await f.get(`/instances`,{signal:e})).data}async function R(e){return(await f.post(`/instances`,e)).data}async function z({id:e,data:t}){return(await f.put(`/instances/${e}`,t)).data}async function B(e){await f.delete(`/instances/${e}`)}async function V(e){return(await f.patch(`/instances/${e}/favorite`)).data}async function H(e,t){return(await f.post(`/instances/${e}/login`,t?{code:t}:{})).data}async function U(e,t){return(await f.get(`/instances/${e}/status`,{signal:t})).data}var W=class{_queryClient=h();toast=o();t=c.global.t;listQuery(){return l({queryKey:[`instances`],queryFn:({signal:e})=>L(e)})}statusQueries(e){return _({queries:w(()=>D(e).map(e=>({queryKey:[`instances`,e.id,`status`],queryFn:({signal:t})=>U(e.id,t),refetchInterval:15e3,retry:!1})))})}createMutation(){return m({mutationFn:R,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.added`),life:3e3})}})}updateMutation(){return m({mutationFn:z,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.updated`),life:3e3})}})}deleteMutation(){return m({mutationFn:async e=>{await B(e),await this._queryClient.cancelQueries({queryKey:[`instances`,e,`status`]}),this._queryClient.removeQueries({queryKey:[`instances`,e,`status`]})},onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.removed`),life:3e3})}})}toggleFavoriteMutation(){return m({mutationFn:V,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]})}})}loginMutation(){return m({mutationFn:e=>H(e),onError:()=>{}})}},G={class:`flex flex-col gap-6`},K={class:`text-muted`},q={class:`flex flex-col gap-2 justify-center items-center mt-2`},J={class:`cui-label`},ae=E({__name:`InstanceTwoFactorPrompt`,props:{instanceName:{}},setup(e,{expose:t}){let{instanceName:n}=v(e),r=S(``),i=w(()=>r.value.length<6);async function a(){return r.value.length<6?null:r.value}return t({isDisabled:i,onConfirm:a}),(e,t)=>{let i=j;return k(),x(`div`,G,[y(`p`,K,p(e.$t(`instances.two_factor_hint`,{name:g(n)})),1),y(`div`,q,[y(`label`,J,p(e.$t(`views.settings.security.enter_code`)),1),O(i,{modelValue:g(r),"onUpdate:modelValue":t[0]||=e=>b(r)?r.value=e:null,length:6,"integer-only":``,class:`justify-center`},null,8,[`modelValue`])])])}}}),Y=3e4,X=5e3,Z=`__home__`,oe=new Set([`localhost`,`127.0.0.1`,`::1`]),Q=u(`Instances`);async function se(e,t){try{let n=AbortSignal.timeout(X),r=t?AbortSignal.any([n,t]):n,i=await fetch(`${e}/api/health`,{signal:r});return Q.debug(`[probe]`,`${e} → ${i.ok?`OK`:`HTTP ${i.status}`}`),i.ok}catch(t){let n=t instanceof Error?t.message:String(t);return Q.debug(`[probe]`,`${e} → FAIL`,n),!1}}function ce(e){return{access:e.access_token,accessExpiresAt:e.access_token_expires_at,refresh:e.refresh_token,refreshExpiresAt:e.refresh_token_expires_at}}function le(e,t){return{_id:t?._id??``,username:t?.username??``,email:t?.email,role:t?.role??``,firstLogin:t?.firstLogin,avatar:t?.avatar,language:`auto`,access_token:e.access,refresh_token:e.refresh??``,token_type:`Bearer`,access_token_expires_at:e.accessExpiresAt??0,refresh_token_expires_at:e.refreshExpiresAt??0,internalAddresses:[],externalAddresses:[]}}var $=A(`instances`,()=>{let l=d(),u=ee(),f=o(),p=ne(),m=h(),{t:g}=c.global,_=i(`instanceTokens`,{}),v=i(`activeInstanceId`,null),y=S(!1),b=S(null),x=S(0),T=0,E=S(null),D=S([]),O=t(`redirectInfo`,null,{serializer:{read:e=>e?JSON.parse(e):null,write:e=>JSON.stringify(e)}}),k=w(()=>v.value===null),A=w(()=>v.value===null?null:D.value.find(e=>e.id===v.value)?.url??null);async function j(){try{if(!te(void 0,`admin`))return;let e=await L();D.value=e.instances,E.value=e.homeId,Q.debug(`[fetch]`,`loaded ${e.instances.length} instances`,{homeId:e.homeId})}catch(e){Q.warn(`[fetch]`,`failed`,e)}}let M=w(()=>{let e=E.value;return D.value.filter(t=>!(e&&t.remoteHomeId&&t.remoteHomeId===e)).map(e=>{let t=_.value[e.id];return{id:e.id,name:e.name,url:e.url,hasCredentials:!!e.credentials,favorite:e.favorite??!0,userData:t?.userData??null,lastConnectedAt:t?.lastConnectedAt??null,isHome:!1}})});function N(){let e=_.value[Z],t=v.value===null?a().target.value?.endpoint.url??e?.url??window.location.origin:e?.url??window.location.origin;return{id:`home`,name:g(`navigation.home`),url:t,hasCredentials:!1,favorite:!1,userData:e?.userData??null,lastConnectedAt:e?.lastConnectedAt??null,isHome:!0}}let re=w(()=>{if(v.value!==null){let e=M.value.find(e=>e.id===v.value);if(e)return e}return N()}),P=w(()=>M.value.filter(e=>e.favorite)),ie=w(()=>P.value.length>0||v.value!==null||O.value!==null);function F(e){return D.value.find(t=>t.id===e)?.favorite??!0}async function U(e){let{favorite:t}=await V(e),n=D.value.find(t=>t.id===e);n&&(n.favorite=t)}async function W(e){let t=await R(e);return D.value=[...D.value,t],t}async function G(e){await B(e),D.value=D.value.filter(t=>t.id!==e),delete _.value[e]}async function K(e,t){let n=await z({id:e,data:t}),r=D.value.findIndex(t=>t.id===e);r!==-1&&(D.value[r]=n)}async function q(e,t){let n=D.value.find(t=>t.id===e);return n?se(n.url,t):!1}function J(){let e=a().target.value;if(!e?.tokens.access){Q.debug(`[save-tokens]`,`skipped — no live access token`);return}let t=v.value??Z;_.value[t]={userData:le(e.tokens,l.user??void 0),lastConnectedAt:Date.now(),url:e.endpoint.url},Q.debug(`[save-tokens]`,`slot=${t} url=${e.endpoint.url}`)}function X(){if(v.value===null){s.value=null,Q.debug(`[restore-override]`,`no active instance — home target`);return}let e=_.value[v.value],t=e?.url??e?.userData?.internalAddresses?.[0]??e?.userData?.externalAddresses?.[0]??null;s.value=t,Q.debug(`[restore-override]`,`activeId=${v.value} → ${t??`no cached url`}`)}async function $(t){if(y.value){Q.warn(`[switch]`,`ignored — another switch is already in progress`);return}let i=t===null?N():M.value.find(e=>e.id===t)??N();if(t!==null&&de(i.url)&&!await he(i.name)){Q.debug(`[switch]`,`URL handoff declined by user`);return}let o=++T;y.value=!0,b.value=i.name,Q.debug(`[switch]`,`START targetId=${t??`home`} gen=${o}`),Q.debug(`[switch]`,`target resolved — name="${i.name}" url=${i.url} hasCreds=${i.hasCredentials}`);try{if(t!==null){let e=await se(i.url);if(o!==T){Q.debug(`[switch]`,`aborted after probe — newer gen=${T}`);return}if(!e){Q.warn(`[switch]`,`target unreachable — ${i.url}`),f.add({severity:`warn`,detail:g(`instances.unreachable`,{name:i.name}),life:3e3});return}}let c=null;if(t!==null&&i.hasCredentials)try{let e=await H(t);if(I(e)){Q.debug(`[switch]`,`remote requires 2FA — prompting for code`),y.value=!1;let n=await pe(t,i.name);if(o!==T)return;if(y.value=!0,!n){Q.debug(`[switch]`,`2FA prompt cancelled — aborting switch`);return}e=n}I(e)||(c=e,Q.debug(`[switch]`,`backend relay login OK`))}catch(e){Q.warn(`[switch]`,`backend relay login FAILED — will try cached tokens`,e)}if(o!==T){Q.debug(`[switch]`,`aborted after relay-login — newer gen=${T}`);return}J();let d=t??Z,p=c?ce(c):ue(d);if(Q.debug(`[switch]`,`tokens source: ${c?`fresh`:p?`cached`:`none`} (slot=${d})`),t!==null&&de(i.url)){Q.debug(`[switch]`,`URL handoff required — leaving SPA`),await ge(i,c);return}let h=a();if(h.reset(),Q.debug(`[switch]`,`kernel RESET`),r(),n(),e(),m.clear(),Q.debug(`[switch]`,`vue-query cleared`),v.value=t,s.value=t===null?null:i.url,Q.debug(`[switch]`,`activeId=${t} instanceOverride=${s.value??`null`}`),p&&c&&(_.value[d]={userData:c,lastConnectedAt:Date.now(),url:i.url},l.user={_id:c._id,username:c.username,role:c.role,firstLogin:c.firstLogin,avatar:c.avatar}),p){let e={url:i.url,mode:`direct-lan`,priority:0};Q.debug(`[switch]`,`seedAndRetry → ${e.url}`),await Promise.race([h.seedAndRetry({endpoint:e,tokens:p},t??`home`),new Promise((e,t)=>setTimeout(()=>t(Error(`switch_timeout`)),Y))])}else{Q.warn(`[switch]`,`no tokens — boot + route to login`),h.boot(t??`home`),l.user=null,u.push(`/`);return}if(o!==T){Q.debug(`[switch]`,`aborted after seedAndRetry — newer gen=${T}`);return}x.value++,Q.debug(`[switch]`,`DONE gen=${o} → /home`),u.push(`/home`)}catch(e){(e instanceof Error?e.message:String(e))===`switch_timeout`?(Q.error(`[switch]`,`TIMEOUT after ${Y}ms`),f.add({severity:`error`,detail:g(`instances.switch_timeout`,{name:b.value??``}),life:3e3})):(Q.error(`[switch]`,`failed`,e),f.add({severity:`error`,detail:e,life:3e3}))}finally{o===T&&(y.value=!1,b.value=null)}}function ue(e){let t=_.value[e];return t?.userData?.access_token?ce(t.userData):null}function de(e){try{let t=new URL(e),n=new URL(window.location.origin),r=n.protocol===`https:`&&t.protocol===`http:`,i=oe.has(t.hostname)&&!oe.has(n.hostname);return r||i}catch{return!1}}function fe(e){return new Promise(t=>{let n=!1,r=e=>{n||(n=!0,t(e))};p.openComponentDialog(ae,{data:{title:g(`instances.two_factor_title`),confirmText:g(`views.login.2fa_verify`),contentProps:{instanceName:e}},onConfirm:async e=>r(e??null),onCancel:async()=>r(null)})})}async function pe(e,t){for(;;){let n=await fe(t);if(!n)return null;try{let t=await H(e,n);if(!I(t))return t}catch(e){Q.warn(`[2fa]`,`verification failed`,e),f.add({severity:`error`,detail:g(`instances.two_factor_failed`),life:3e3})}}}async function me(e,t){return await pe(e,t)?(f.add({severity:`success`,detail:g(`instances.two_factor_completed`,{name:t}),life:3e3}),await j().catch(()=>{}),!0):!1}function he(e){return Q.warn(`[switch]`,`target "${e}" requires URL handoff — asking user confirmation`),new Promise(t=>{let n=!1,r=e=>{n||(n=!0,t(e))};p.openTextDialog({data:{title:g(`instances.insecure_handoff_title`),confirmText:g(`instances.insecure_handoff_confirm`),contentText:g(`instances.insecure_handoff_message`,{name:e}),confirmButtonProps:{severity:`danger`}},onConfirm:()=>r(!0),onCancel:()=>r(!1)})})}async function ge(e,t){let n={_reset:!0,_sourceUrl:window.location.origin,_instanceName:e.name};t&&Object.assign(n,t);let r=encodeURIComponent(btoa(JSON.stringify(n))),i=`${e.url.split(`#`)[0]}#auth=${r}`;Q.debug(`[url-handoff]`,`→ ${e.url} (with token=${t?`yes`:`no`})`),window.location.href=i}function _e(){_.value={},v.value=null,s.value=null,O.value=null,D.value=[],E.value=null,Q.debug(`[reset]`,`store cleared`)}return{instances:M,activeInstance:re,activeId:v,activeUrl:A,isHomeActive:k,isMultiInstance:ie,isSwitching:C(y),switchTargetName:C(b),switchKey:C(x),serverHomeId:E,redirectInfo:O,serverInstances:D,instanceTokens:_,favoriteInstances:P,isFavorite:F,toggleFavorite:U,fetchInstances:j,addInstance:W,removeInstance:G,updateInstance:K,switchInstance:$,probeInstance:q,complete2FALogin:me,reset:_e,saveCurrentTokens:J,restoreActiveOverride:X}});export{re as i,W as n,F as r,$ as t};