@camera.ui/server 0.0.49 → 0.0.50-internal.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (605) hide show
  1. package/dist/interface/assets/@xterm.DYP7pi_n.0.0.50-internal.1.css +32 -0
  2. package/dist/interface/assets/Adminpanel.BKek2EMH.0.0.50-internal.1.css +1 -0
  3. package/dist/interface/assets/Cameras.BDWZJqPN.0.0.50-internal.1.css +1 -0
  4. package/dist/interface/assets/Camview.BFUFMoNX.0.0.50-internal.1.css +1 -0
  5. package/dist/interface/assets/CuiConsole.DCYyxdVg.0.0.50-internal.1.css +1 -0
  6. package/dist/interface/assets/CuiPluginCard.yF8V0SZY.0.0.50-internal.1.css +1 -0
  7. package/dist/interface/assets/CuiTimeline.BkIwlYtw.0.0.50-internal.1.css +1 -0
  8. package/dist/interface/assets/Plugin.DJElsAn5.0.0.50-internal.1.css +1 -0
  9. package/dist/interface/assets/Plugins.0h77qnmN.0.0.50-internal.1.css +1 -0
  10. package/dist/interface/assets/Settings.CkgfRkQr.0.0.50-internal.1.css +1 -0
  11. package/dist/interface/assets/SettingsAccount.DeFul3eQ.0.0.50-internal.1.css +1 -0
  12. package/dist/interface/assets/main.Cip9LkS3.0.0.50-internal.1.css +1 -0
  13. package/dist/interface/assets/worker-base.jEXLGV2h.0.0.50-internal.1.js +1332 -0
  14. package/dist/interface/assets/worker-json.DgwNIOck.0.0.50-internal.1.js +1626 -0
  15. package/dist/interface/assets/worker-yaml.B3uUYINB.0.0.50-internal.1.js +5819 -0
  16. package/dist/interface/fonts/InterVariable.woff2 +0 -0
  17. package/dist/interface/index.html +48 -38
  18. package/dist/interface/js/@intlify.BkGPX90O.0.0.50-internal.1.js +15 -0
  19. package/dist/interface/js/@kurkle.D8fDXNIl.0.0.50-internal.1.js +6 -0
  20. package/dist/interface/js/@primeuix.BFAY2Bk9.0.0.50-internal.1.js +5722 -0
  21. package/dist/interface/js/@primevue.CiB2EGly.0.0.50-internal.1.js +57 -0
  22. package/dist/interface/js/@tanstack.DxMw_rJn.0.0.50-internal.1.js +1 -0
  23. package/dist/interface/{@vee-validate.DHkwupr6.0.0.49.js → js/@vee-validate.RxZ3hn6V.0.0.50-internal.1.js} +2 -2
  24. package/dist/interface/js/@vue.B5vqhCp2.0.0.50-internal.1.js +17 -0
  25. package/dist/interface/js/@vueuse.C-k73ACm.0.0.50-internal.1.js +1 -0
  26. package/dist/interface/{@xterm.D6R4zI7m.0.0.49.js → js/@xterm.DIUBesyz.0.0.50-internal.1.js} +8 -8
  27. package/dist/interface/js/Adminpanel.DumNu6GD.0.0.50-internal.1.js +1 -0
  28. package/dist/interface/js/Camera.BuosoqFl.0.0.50-internal.1.js +1 -0
  29. package/dist/interface/js/Cameras.A7NJflGG.0.0.50-internal.1.js +482 -0
  30. package/dist/interface/js/Cammesh.Dv3C0UiR.0.0.50-internal.1.js +1 -0
  31. package/dist/interface/js/Camview.GgjJp7JR.0.0.50-internal.1.js +1 -0
  32. package/dist/interface/js/Config.BL3L-BFE.0.0.50-internal.1.js +2 -0
  33. package/dist/interface/js/Console.CxwRmUVF.0.0.50-internal.1.js +4 -0
  34. package/dist/interface/js/CuiConsole.D16kkT6R.0.0.50-internal.1.js +1 -0
  35. package/dist/interface/js/CuiPluginCard.Bkp__d8n.0.0.50-internal.1.js +4 -0
  36. package/dist/interface/js/CuiTimeline.C9HKvo0G.0.0.50-internal.1.js +1 -0
  37. package/dist/interface/js/FirstSteps.QuJjtAtF.0.0.50-internal.1.js +1 -0
  38. package/dist/interface/js/Plugin.BLUUbEej.0.0.50-internal.1.js +1 -0
  39. package/dist/interface/js/Plugins.DviCIk7w.0.0.50-internal.1.js +1 -0
  40. package/dist/interface/js/Recordings.Dsp07cHs.0.0.50-internal.1.js +1 -0
  41. package/dist/interface/js/Settings.Clx4y9gP.0.0.50-internal.1.js +1 -0
  42. package/dist/interface/js/SettingsAccount.cfY4-PYd.0.0.50-internal.1.js +1 -0
  43. package/dist/interface/js/SettingsAppearance.CBGZAazb.0.0.50-internal.1.js +1 -0
  44. package/dist/interface/js/SettingsAppearance.vue_vue_type_script_setup_true_lang.kxAPXcBy.0.0.50-internal.1.js +1 -0
  45. package/dist/interface/js/SettingsBackup.DOaJA4pp.0.0.50-internal.1.js +1 -0
  46. package/dist/interface/js/SettingsRecordings.BGcwL6tk.0.0.50-internal.1.js +1 -0
  47. package/dist/interface/js/SettingsRemote.BVU_w1Jm.0.0.50-internal.1.js +1 -0
  48. package/dist/interface/js/SettingsSystem.P0vy90vA.0.0.50-internal.1.js +1 -0
  49. package/dist/interface/js/SettingsUsers.DaP5m7eo.0.0.50-internal.1.js +1 -0
  50. package/dist/interface/js/VersionsHandler.vue_vue_type_script_setup_true_lang.MmrWYW3K.0.0.50-internal.1.js +4 -0
  51. package/dist/interface/js/ace-builds.C0aqA_3x.0.0.50-internal.1.js +1090 -0
  52. package/dist/interface/js/ace.config.C9wgzklI.0.0.50-internal.1.js +1 -0
  53. package/dist/interface/js/axios.DHr9lByg.0.0.50-internal.1.js +6 -0
  54. package/dist/interface/js/backup.BeH6lJ5t.0.0.50-internal.1.js +1 -0
  55. package/dist/interface/js/chart.js.BQHSWV_g.0.0.50-internal.1.js +13 -0
  56. package/dist/interface/js/close-circle.DDKMxauw.0.0.50-internal.1.js +1 -0
  57. package/dist/interface/js/dnd-core.dWz9rJqH.0.0.50-internal.1.js +1 -0
  58. package/dist/interface/{draggabilly.C0hZWkL0.0.0.49.js → js/draggabilly.D-iZIS1n.0.0.50-internal.1.js} +1 -1
  59. package/dist/interface/js/engine.io-client.BwxOddB_.0.0.50-internal.1.js +1 -0
  60. package/dist/interface/js/fast-deep-equal.Dz96RC_N.0.0.50-internal.1.js +1 -0
  61. package/dist/interface/js/highlight.js.CmcM8OM6.0.0.50-internal.1.js +3 -0
  62. package/dist/interface/js/linkify-it.BgLcBzlw.0.0.50-internal.1.js +1 -0
  63. package/dist/interface/js/main.6bOgRV7D.0.0.50-internal.1.js +31 -0
  64. package/dist/interface/{markdown-it.64FJJcTG.0.0.49.js → js/markdown-it.CTgfs-3p.0.0.50-internal.1.js} +1 -1
  65. package/dist/interface/{nprogress.DkWvUoHh.0.0.49.js → js/nprogress.CMhnq8jS.0.0.50-internal.1.js} +1 -1
  66. package/dist/interface/js/perfect-debounce.l0sNRNKZ.0.0.50-internal.1.js +1 -0
  67. package/dist/interface/js/pinia.CuC5ZfNs.0.0.50-internal.1.js +5 -0
  68. package/dist/interface/js/primelocale.Bga3dOQu.0.0.50-internal.1.js +1 -0
  69. package/dist/interface/js/primevue.DmwjJ4xV.0.0.50-internal.1.js +142 -0
  70. package/dist/interface/{qrcode.BixA_YE2.0.0.49.js → js/qrcode.DGZO3j1c.0.0.50-internal.1.js} +1 -1
  71. package/dist/interface/js/react-dnd-touch-backend.CEGHlD-T.0.0.50-internal.1.js +1 -0
  72. package/dist/interface/js/refresh-rounded.D0keXzBc.0.0.50-internal.1.js +1 -0
  73. package/dist/interface/js/rxjs.CiDbFOB0.0.0.50-internal.1.js +3 -0
  74. package/dist/interface/js/socket.io-client.BPcXPAHG.0.0.50-internal.1.js +1 -0
  75. package/dist/interface/js/socket.io-parser.DSGzrW_l.0.0.50-internal.1.js +1 -0
  76. package/dist/interface/js/system.BKlEObmx.0.0.50-internal.1.js +1 -0
  77. package/dist/interface/js/trash-fill.BDFILs86.0.0.50-internal.1.js +1 -0
  78. package/dist/interface/{unidragger.C8ueS-PW.0.0.49.js → js/unidragger.DcxsxHCS.0.0.50-internal.1.js} +1 -1
  79. package/dist/interface/js/uuid.C6aID195.0.0.50-internal.1.js +1 -0
  80. package/dist/interface/js/vee-validate.BGRg3oQ8.0.0.50-internal.1.js +5 -0
  81. package/dist/interface/js/vue-chartjs.B9yk2de7.0.0.50-internal.1.js +1 -0
  82. package/dist/interface/js/vue-i18n.DXDZITpf.0.0.50-internal.1.js +5 -0
  83. package/dist/interface/js/vue-inline-svg.BDYaTfbi.0.0.50-internal.1.js +1 -0
  84. package/dist/interface/js/vue-router.CFEDA008.0.0.50-internal.1.js +5 -0
  85. package/dist/interface/js/vue-zoomable.zqTafMgD.0.0.50-internal.1.js +1 -0
  86. package/dist/interface/js/vue.l0sNRNKZ.0.0.50-internal.1.js +1 -0
  87. package/dist/interface/js/vue3-dnd.BxM3dbYs.0.0.50-internal.1.js +1 -0
  88. package/dist/interface/js/zod.SKKegNRO.0.0.50-internal.1.js +1 -0
  89. package/dist/interface/js/zoom-out.B6SY9IIj.0.0.50-internal.1.js +1 -0
  90. package/dist/interface/manifest.webmanifest +1 -1
  91. package/dist/interface/pwa/favicon-32.ico +0 -0
  92. package/dist/interface/pwa/favicon-48.ico +0 -0
  93. package/dist/interface/sw.js +1 -1
  94. package/dist/server/package.json +57 -45
  95. package/dist/server/requirements.txt +12 -11
  96. package/dist/server/src/__init__.py +0 -0
  97. package/dist/server/src/_camera_ui_tools/__init__.py +0 -0
  98. package/dist/server/src/_camera_ui_tools/camera_ui_common/__init__.py +28 -0
  99. package/dist/server/src/_camera_ui_tools/camera_ui_common/camera_utils/utils.py +52 -0
  100. package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/__init__.py +0 -0
  101. package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/object_path.py +198 -0
  102. package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/reactive.py +42 -0
  103. package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/signal_handler.py +92 -0
  104. package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/subscribed.py +21 -0
  105. package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/task.py +39 -0
  106. package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/thread.py +10 -0
  107. package/dist/server/src/_camera_ui_tools/camera_ui_common/common_utils/utils.py +91 -0
  108. package/dist/server/src/_camera_ui_tools/camera_ui_common/logger_service/__init__.py +0 -0
  109. package/dist/server/src/_camera_ui_tools/camera_ui_common/logger_service/ansicolor.py +62 -0
  110. package/dist/server/src/_camera_ui_tools/camera_ui_common/logger_service/logger.py +178 -0
  111. package/dist/server/src/_camera_ui_tools/camera_ui_common/logger_service/test.py +116 -0
  112. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/__init__.py +350 -0
  113. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/__init__.py +0 -0
  114. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/base.py +237 -0
  115. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/client.py +256 -0
  116. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/connection.py +784 -0
  117. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/errors.py +745 -0
  118. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/messaging.py +57 -0
  119. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/rpc.py +227 -0
  120. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/base/rpc_generator.py +584 -0
  121. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/constants.py +96 -0
  122. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/typings.py +218 -0
  123. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/__init__.py +0 -0
  124. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/connection_state.py +86 -0
  125. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/logger.py +30 -0
  126. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/metrics.py +152 -0
  127. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/packer.py +20 -0
  128. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/routing.py +75 -0
  129. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/rpc.py +177 -0
  130. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/subscriptions.py +24 -0
  131. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/tasks.py +39 -0
  132. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/uid.py +37 -0
  133. package/dist/server/src/_camera_ui_tools/camera_ui_rpc_client/utils/validate.py +119 -0
  134. package/dist/server/src/_camera_ui_tools/camera_ui_types/__init__.py +1360 -0
  135. package/dist/server/src/_camera_ui_tools/camera_ui_types/hybrid_observer.py +338 -0
  136. package/dist/server/src/_camera_ui_tools/camera_ui_types/test.py +196 -0
  137. package/dist/server/src/api/controllers/auth.controller.d.ts +2 -2
  138. package/dist/server/src/api/controllers/auth.controller.js +49 -43
  139. package/dist/server/src/api/controllers/auth.controller.js.map +1 -1
  140. package/dist/server/src/api/controllers/backup.controller.js +1 -2
  141. package/dist/server/src/api/controllers/backup.controller.js.map +1 -1
  142. package/dist/server/src/api/controllers/cameras.controller.d.ts +13 -11
  143. package/dist/server/src/api/controllers/cameras.controller.js +314 -105
  144. package/dist/server/src/api/controllers/cameras.controller.js.map +1 -1
  145. package/dist/server/src/api/controllers/plugins.controller.d.ts +8 -8
  146. package/dist/server/src/api/controllers/plugins.controller.js +208 -244
  147. package/dist/server/src/api/controllers/plugins.controller.js.map +1 -1
  148. package/dist/server/src/api/controllers/system.controller.d.ts +1 -0
  149. package/dist/server/src/api/controllers/system.controller.js +22 -8
  150. package/dist/server/src/api/controllers/system.controller.js.map +1 -1
  151. package/dist/server/src/api/controllers/users.controller.d.ts +2 -2
  152. package/dist/server/src/api/controllers/users.controller.js +13 -25
  153. package/dist/server/src/api/controllers/users.controller.js.map +1 -1
  154. package/dist/server/src/api/database/checks.js +2 -2
  155. package/dist/server/src/api/database/checks.js.map +1 -1
  156. package/dist/server/src/api/database/index.d.ts +4 -7
  157. package/dist/server/src/api/database/index.js +59 -86
  158. package/dist/server/src/api/database/index.js.map +1 -1
  159. package/dist/server/src/api/database/migration.js +5 -141
  160. package/dist/server/src/api/database/migration.js.map +1 -1
  161. package/dist/server/src/api/database/selfcheck.js +5 -5
  162. package/dist/server/src/api/database/selfcheck.js.map +1 -1
  163. package/dist/server/src/api/database/types.d.ts +17 -25
  164. package/dist/server/src/api/go2rtc/api/discover.d.ts +30 -0
  165. package/dist/server/src/api/go2rtc/api/discover.js +162 -0
  166. package/dist/server/src/api/go2rtc/api/discover.js.map +1 -0
  167. package/dist/server/src/api/go2rtc/api/index.d.ts +1 -1
  168. package/dist/server/src/api/go2rtc/api/index.js +15 -4
  169. package/dist/server/src/api/go2rtc/api/index.js.map +1 -1
  170. package/dist/server/src/api/go2rtc/api/streams.d.ts +3 -1
  171. package/dist/server/src/api/go2rtc/api/streams.js +66 -9
  172. package/dist/server/src/api/go2rtc/api/streams.js.map +1 -1
  173. package/dist/server/src/api/go2rtc/index.d.ts +2 -0
  174. package/dist/server/src/api/go2rtc/index.js +3 -0
  175. package/dist/server/src/api/go2rtc/index.js.map +1 -1
  176. package/dist/server/src/api/go2rtc/queue.js +3 -3
  177. package/dist/server/src/api/go2rtc/queue.js.map +1 -1
  178. package/dist/server/src/api/go2rtc/types.d.ts +66 -11
  179. package/dist/server/src/api/index.d.ts +4 -0
  180. package/dist/server/src/api/index.js +45 -9
  181. package/dist/server/src/api/index.js.map +1 -1
  182. package/dist/server/src/api/middlewares/authPermission.middleware.d.ts +1 -0
  183. package/dist/server/src/api/middlewares/authPermission.middleware.js +11 -2
  184. package/dist/server/src/api/middlewares/authPermission.middleware.js.map +1 -1
  185. package/dist/server/src/api/middlewares/authValidation.middleware.js +20 -12
  186. package/dist/server/src/api/middlewares/authValidation.middleware.js.map +1 -1
  187. package/dist/server/src/api/middlewares/pagination.middleware.js +45 -53
  188. package/dist/server/src/api/middlewares/pagination.middleware.js.map +1 -1
  189. package/dist/server/src/api/plugins/proxy.plugin.d.ts +14 -0
  190. package/dist/server/src/api/plugins/proxy.plugin.js +200 -0
  191. package/dist/server/src/api/plugins/proxy.plugin.js.map +1 -0
  192. package/dist/server/src/api/routes/cameras.routes.js +56 -30
  193. package/dist/server/src/api/routes/cameras.routes.js.map +1 -1
  194. package/dist/server/src/api/routes/plugins.routes.js +65 -63
  195. package/dist/server/src/api/routes/plugins.routes.js.map +1 -1
  196. package/dist/server/src/api/routes/system.routes.js +7 -1
  197. package/dist/server/src/api/routes/system.routes.js.map +1 -1
  198. package/dist/server/src/api/routes/users.routes.js +8 -8
  199. package/dist/server/src/api/routes/users.routes.js.map +1 -1
  200. package/dist/server/src/api/schemas/backup.schema.d.ts +3 -3
  201. package/dist/server/src/api/schemas/backup.schema.js +1 -1
  202. package/dist/server/src/api/schemas/backup.schema.js.map +1 -1
  203. package/dist/server/src/api/schemas/cameras.schema.d.ts +1413 -529
  204. package/dist/server/src/api/schemas/cameras.schema.js +228 -182
  205. package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
  206. package/dist/server/src/api/schemas/config.schema.d.ts +29 -41
  207. package/dist/server/src/api/schemas/config.schema.js +10 -21
  208. package/dist/server/src/api/schemas/config.schema.js.map +1 -1
  209. package/dist/server/src/api/schemas/go2rtc.schema.d.ts +194 -162
  210. package/dist/server/src/api/schemas/go2rtc.schema.js +33 -58
  211. package/dist/server/src/api/schemas/go2rtc.schema.js.map +1 -1
  212. package/dist/server/src/api/schemas/plugins.schema.d.ts +17 -17
  213. package/dist/server/src/api/schemas/plugins.schema.js +1 -1
  214. package/dist/server/src/api/schemas/plugins.schema.js.map +1 -1
  215. package/dist/server/src/api/schemas/storage.schema.d.ts +22 -0
  216. package/dist/server/src/api/schemas/storage.schema.js +5 -0
  217. package/dist/server/src/api/schemas/storage.schema.js.map +1 -0
  218. package/dist/server/src/api/schemas/system.schema.d.ts +171 -3
  219. package/dist/server/src/api/schemas/system.schema.js +30 -3
  220. package/dist/server/src/api/schemas/system.schema.js.map +1 -1
  221. package/dist/server/src/api/schemas/users.schema.d.ts +98 -254
  222. package/dist/server/src/api/schemas/users.schema.js +6 -6
  223. package/dist/server/src/api/schemas/users.schema.js.map +1 -1
  224. package/dist/server/src/api/services/auth.service.d.ts +5 -5
  225. package/dist/server/src/api/services/auth.service.js +26 -35
  226. package/dist/server/src/api/services/auth.service.js.map +1 -1
  227. package/dist/server/src/api/services/cameras.service.d.ts +11 -16
  228. package/dist/server/src/api/services/cameras.service.js +143 -310
  229. package/dist/server/src/api/services/cameras.service.js.map +1 -1
  230. package/dist/server/src/api/services/plugins.service.d.ts +3 -1
  231. package/dist/server/src/api/services/plugins.service.js +48 -50
  232. package/dist/server/src/api/services/plugins.service.js.map +1 -1
  233. package/dist/server/src/api/services/users.service.d.ts +1 -0
  234. package/dist/server/src/api/services/users.service.js +20 -14
  235. package/dist/server/src/api/services/users.service.js.map +1 -1
  236. package/dist/server/src/api/types/index.d.ts +57 -46
  237. package/dist/server/src/api/types/index.js +0 -4
  238. package/dist/server/src/api/types/index.js.map +1 -1
  239. package/dist/server/src/api/utils/cert.d.ts +5 -1
  240. package/dist/server/src/api/utils/cert.js +24 -26
  241. package/dist/server/src/api/utils/cert.js.map +1 -1
  242. package/dist/server/src/api/utils/constants.d.ts +4 -2
  243. package/dist/server/src/api/utils/constants.js +4 -2
  244. package/dist/server/src/api/utils/constants.js.map +1 -1
  245. package/dist/server/src/api/utils/fetch.d.ts +1 -1
  246. package/dist/server/src/api/utils/fetch.js +2 -2
  247. package/dist/server/src/api/utils/fetch.js.map +1 -1
  248. package/dist/server/src/api/websocket/index.d.ts +1 -0
  249. package/dist/server/src/api/websocket/index.js +14 -9
  250. package/dist/server/src/api/websocket/index.js.map +1 -1
  251. package/dist/server/src/api/websocket/nsp/logs.d.ts +10 -2
  252. package/dist/server/src/api/websocket/nsp/logs.js +75 -27
  253. package/dist/server/src/api/websocket/nsp/logs.js.map +1 -1
  254. package/dist/server/src/api/websocket/nsp/metrics.d.ts +20 -12
  255. package/dist/server/src/api/websocket/nsp/metrics.js +188 -117
  256. package/dist/server/src/api/websocket/nsp/metrics.js.map +1 -1
  257. package/dist/server/src/api/websocket/nsp/plugins.d.ts +1 -1
  258. package/dist/server/src/api/websocket/nsp/plugins.js +3 -5
  259. package/dist/server/src/api/websocket/nsp/plugins.js.map +1 -1
  260. package/dist/server/src/api/websocket/nsp/server.js +6 -0
  261. package/dist/server/src/api/websocket/nsp/server.js.map +1 -1
  262. package/dist/server/src/api/websocket/types.d.ts +4 -2
  263. package/dist/server/src/api.d.ts +3 -4
  264. package/dist/server/src/api.js +13 -13
  265. package/dist/server/src/api.js.map +1 -1
  266. package/dist/server/src/camera/classes.d.ts +2 -0
  267. package/dist/server/src/camera/classes.js +24 -0
  268. package/dist/server/src/camera/classes.js.map +1 -0
  269. package/dist/server/src/camera/controller.d.ts +30 -18
  270. package/dist/server/src/camera/controller.js +236 -202
  271. package/dist/server/src/camera/controller.js.map +1 -1
  272. package/dist/server/src/camera/device.d.ts +34 -0
  273. package/dist/server/src/camera/device.js +327 -0
  274. package/dist/server/src/camera/device.js.map +1 -0
  275. package/dist/server/src/camera/frameWorker.d.ts +32 -31
  276. package/dist/server/src/camera/frameWorker.js +257 -247
  277. package/dist/server/src/camera/frameWorker.js.map +1 -1
  278. package/dist/server/src/camera/index.d.ts +92 -0
  279. package/dist/server/src/camera/index.js +531 -0
  280. package/dist/server/src/camera/index.js.map +1 -0
  281. package/dist/server/src/camera/interfaces.d.ts +17 -0
  282. package/dist/server/src/camera/interfaces.js +99 -0
  283. package/dist/server/src/camera/interfaces.js.map +1 -0
  284. package/dist/server/src/camera/iou.d.ts +2 -0
  285. package/dist/server/src/camera/iou.js +123 -0
  286. package/dist/server/src/camera/iou.js.map +1 -0
  287. package/dist/server/src/camera/polygon.d.ts +4 -0
  288. package/dist/server/src/camera/polygon.js +192 -0
  289. package/dist/server/src/camera/polygon.js.map +1 -0
  290. package/dist/server/src/camera/python/__init__.py +0 -0
  291. package/dist/server/src/camera/python/classes.py +41 -0
  292. package/dist/server/src/camera/python/interfaces.py +130 -0
  293. package/dist/server/src/camera/python/iou.py +158 -0
  294. package/dist/server/src/camera/python/polygon.py +230 -0
  295. package/dist/server/src/camera/python/typings.py +50 -0
  296. package/dist/server/src/camera/python/video_frame.py +143 -0
  297. package/dist/server/src/camera/session.d.ts +37 -0
  298. package/dist/server/src/camera/session.js +160 -0
  299. package/dist/server/src/camera/session.js.map +1 -0
  300. package/dist/server/src/camera/streaming/fmp4-session.d.ts +17 -0
  301. package/dist/server/src/camera/streaming/fmp4-session.js +308 -0
  302. package/dist/server/src/camera/streaming/fmp4-session.js.map +1 -0
  303. package/dist/server/src/camera/streaming/peer-connection.d.ts +26 -0
  304. package/dist/server/src/camera/streaming/peer-connection.js +213 -0
  305. package/dist/server/src/camera/streaming/peer-connection.js.map +1 -0
  306. package/dist/server/src/camera/streaming/rtsp-session.d.ts +19 -0
  307. package/dist/server/src/camera/streaming/rtsp-session.js +253 -0
  308. package/dist/server/src/camera/streaming/rtsp-session.js.map +1 -0
  309. package/dist/server/src/camera/streaming/webrtc-connection.d.ts +44 -0
  310. package/dist/server/src/camera/streaming/webrtc-connection.js +177 -0
  311. package/dist/server/src/camera/streaming/webrtc-connection.js.map +1 -0
  312. package/dist/server/src/camera/streaming/werift-session.d.ts +19 -0
  313. package/dist/server/src/camera/streaming/werift-session.js +246 -0
  314. package/dist/server/src/camera/streaming/werift-session.js.map +1 -0
  315. package/dist/server/src/camera/types.d.ts +16 -10
  316. package/dist/server/src/camera/utils.d.ts +9 -0
  317. package/dist/server/src/camera/utils.js +416 -0
  318. package/dist/server/src/camera/utils.js.map +1 -0
  319. package/dist/server/src/camera/videoFrame.d.ts +18 -0
  320. package/dist/server/src/camera/videoFrame.js +88 -0
  321. package/dist/server/src/camera/videoFrame.js.map +1 -0
  322. package/dist/server/src/cloud/index.d.ts +12 -0
  323. package/dist/server/src/cloud/index.js +49 -0
  324. package/dist/server/src/cloud/index.js.map +1 -0
  325. package/dist/server/src/cloud/remote/cloudflare.d.ts +7 -0
  326. package/dist/server/src/cloud/remote/cloudflare.js +12 -0
  327. package/dist/server/src/cloud/remote/cloudflare.js.map +1 -0
  328. package/dist/server/src/cloud/remote/upnp.d.ts +7 -0
  329. package/dist/server/src/cloud/remote/upnp.js +12 -0
  330. package/dist/server/src/cloud/remote/upnp.js.map +1 -0
  331. package/dist/server/src/cloud/remote/utils.d.ts +3 -0
  332. package/dist/server/src/cloud/remote/utils.js +20 -0
  333. package/dist/server/src/cloud/remote/utils.js.map +1 -0
  334. package/dist/server/src/cloud/types.d.ts +15 -0
  335. package/dist/server/src/cloud/types.js +11 -0
  336. package/dist/server/src/cloud/types.js.map +1 -0
  337. package/dist/server/src/decoder/child.d.ts +1 -0
  338. package/dist/server/src/decoder/child.js +749 -0
  339. package/dist/server/src/decoder/child.js.map +1 -0
  340. package/dist/server/src/decoder/imageUtils.d.ts +22 -0
  341. package/dist/server/src/decoder/imageUtils.js +196 -0
  342. package/dist/server/src/decoder/imageUtils.js.map +1 -0
  343. package/dist/server/src/decoder/manager.d.ts +19 -0
  344. package/dist/server/src/decoder/manager.js +208 -0
  345. package/dist/server/src/decoder/manager.js.map +1 -0
  346. package/dist/server/src/decoder/python/__init__.py +0 -0
  347. package/dist/server/src/decoder/python/child.py +903 -0
  348. package/dist/server/src/decoder/python/image_utils.py +196 -0
  349. package/dist/server/src/decoder/python/pool.py +45 -0
  350. package/dist/server/src/decoder/python/typings.py +57 -0
  351. package/dist/server/src/decoder/python/utils.py +70 -0
  352. package/dist/server/src/decoder/types.d.ts +23 -0
  353. package/dist/server/src/decoder/types.js.map +1 -0
  354. package/dist/server/src/decoder/utils.d.ts +13 -0
  355. package/dist/server/src/decoder/utils.js +45 -0
  356. package/dist/server/src/decoder/utils.js.map +1 -0
  357. package/dist/server/src/decoder/wasm/build/decoder.d.ts +43 -0
  358. package/dist/server/src/decoder/wasm/build/decoder.js +108 -0
  359. package/dist/server/src/decoder/wasm/build/decoder.wasm +0 -0
  360. package/dist/server/src/decoder/worker.d.ts +1 -0
  361. package/dist/server/src/decoder/worker.js +79 -0
  362. package/dist/server/src/decoder/worker.js.map +1 -0
  363. package/dist/server/src/go2rtc/index.d.ts +1 -0
  364. package/dist/server/src/go2rtc/index.js +27 -9
  365. package/dist/server/src/go2rtc/index.js.map +1 -1
  366. package/dist/server/src/go2rtc/types.d.ts +5 -4
  367. package/dist/server/src/go2rtc/types.js +6 -2
  368. package/dist/server/src/go2rtc/types.js.map +1 -1
  369. package/dist/server/src/main.js +19 -5
  370. package/dist/server/src/main.js.map +1 -1
  371. package/dist/server/src/manager/coreManager.d.ts +16 -0
  372. package/dist/server/src/manager/coreManager.js +95 -0
  373. package/dist/server/src/manager/coreManager.js.map +1 -0
  374. package/dist/server/src/manager/deviceManager.d.ts +12 -0
  375. package/dist/server/src/manager/deviceManager.js +130 -0
  376. package/dist/server/src/manager/deviceManager.js.map +1 -0
  377. package/dist/server/src/manager/types.d.ts +15 -0
  378. package/dist/server/src/manager/types.js +2 -0
  379. package/dist/server/src/manager/types.js.map +1 -0
  380. package/dist/server/src/plugins/index.d.ts +3 -1
  381. package/dist/server/src/plugins/index.js +42 -21
  382. package/dist/server/src/plugins/index.js.map +1 -1
  383. package/dist/server/src/plugins/plugin.d.ts +3 -3
  384. package/dist/server/src/plugins/plugin.js +13 -20
  385. package/dist/server/src/plugins/plugin.js.map +1 -1
  386. package/dist/server/src/plugins/runtime/base.d.ts +54 -0
  387. package/dist/server/src/plugins/runtime/base.js +223 -0
  388. package/dist/server/src/plugins/runtime/base.js.map +1 -0
  389. package/dist/server/src/plugins/runtime/index.d.ts +5 -0
  390. package/dist/server/src/plugins/runtime/index.js +13 -0
  391. package/dist/server/src/plugins/runtime/index.js.map +1 -0
  392. package/dist/server/src/plugins/runtime/node/child.d.ts +22 -0
  393. package/dist/server/src/plugins/runtime/node/child.js +152 -0
  394. package/dist/server/src/plugins/runtime/node/child.js.map +1 -0
  395. package/dist/server/src/plugins/runtime/node/index.d.ts +7 -0
  396. package/dist/server/src/plugins/runtime/node/index.js +54 -0
  397. package/dist/server/src/plugins/runtime/node/index.js.map +1 -0
  398. package/dist/server/src/plugins/runtime/node/plugin.d.ts +24 -0
  399. package/dist/server/src/plugins/runtime/node/plugin.js +128 -0
  400. package/dist/server/src/plugins/runtime/node/plugin.js.map +1 -0
  401. package/dist/server/src/plugins/runtime/node/pluginApi.d.ts +16 -0
  402. package/dist/server/src/plugins/runtime/node/pluginApi.js +18 -0
  403. package/dist/server/src/plugins/runtime/node/pluginApi.js.map +1 -0
  404. package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.d.ts +25 -0
  405. package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js +230 -0
  406. package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js.map +1 -0
  407. package/dist/server/src/plugins/runtime/node/proxy/coreManager.d.ts +16 -0
  408. package/dist/server/src/plugins/runtime/node/proxy/coreManager.js +98 -0
  409. package/dist/server/src/plugins/runtime/node/proxy/coreManager.js.map +1 -0
  410. package/dist/server/src/plugins/runtime/node/proxy/deviceManager.d.ts +19 -0
  411. package/dist/server/src/plugins/runtime/node/proxy/deviceManager.js +144 -0
  412. package/dist/server/src/plugins/runtime/node/proxy/deviceManager.js.map +1 -0
  413. package/dist/server/src/plugins/runtime/node/storage.d.ts +34 -0
  414. package/dist/server/src/plugins/runtime/node/storage.js +313 -0
  415. package/dist/server/src/plugins/runtime/node/storage.js.map +1 -0
  416. package/dist/server/src/plugins/runtime/node/storageController.d.ts +18 -0
  417. package/dist/server/src/plugins/runtime/node/storageController.js +67 -0
  418. package/dist/server/src/plugins/runtime/node/storageController.js.map +1 -0
  419. package/dist/server/src/plugins/runtime/python/__init__.py +0 -0
  420. package/dist/server/src/plugins/runtime/python/child.py +248 -0
  421. package/dist/server/src/plugins/runtime/python/index.d.ts +9 -0
  422. package/dist/server/src/plugins/runtime/python/index.js +57 -0
  423. package/dist/server/src/plugins/runtime/python/index.js.map +1 -0
  424. package/dist/server/src/plugins/runtime/python/namespaces.py +101 -0
  425. package/dist/server/src/plugins/runtime/python/plugin.py +155 -0
  426. package/dist/server/src/plugins/runtime/python/plugin_api.py +29 -0
  427. package/dist/server/src/plugins/runtime/python/proxy/camera_device.py +1732 -0
  428. package/dist/server/src/plugins/runtime/python/proxy/core_manager.py +126 -0
  429. package/dist/server/src/plugins/runtime/python/proxy/device_manager.py +197 -0
  430. package/dist/server/src/plugins/runtime/python/schema.py +99 -0
  431. package/dist/server/src/plugins/runtime/python/storage.py +353 -0
  432. package/dist/server/src/plugins/runtime/python/storage_controller.py +102 -0
  433. package/dist/server/src/plugins/runtime/python/typings.py +195 -0
  434. package/dist/server/src/plugins/schema.d.ts +27 -34
  435. package/dist/server/src/plugins/schema.js +358 -369
  436. package/dist/server/src/plugins/schema.js.map +1 -1
  437. package/dist/server/src/plugins/types.d.ts +43 -1
  438. package/dist/server/src/plugins/types.js +16 -0
  439. package/dist/server/src/plugins/types.js.map +1 -1
  440. package/dist/server/src/plugins/worker.d.ts +12 -31
  441. package/dist/server/src/plugins/worker.js +89 -343
  442. package/dist/server/src/plugins/worker.js.map +1 -1
  443. package/dist/server/src/rpc/index.d.ts +32 -0
  444. package/dist/server/src/rpc/index.js +103 -0
  445. package/dist/server/src/rpc/index.js.map +1 -0
  446. package/dist/server/src/rpc/namespaces.d.ts +35 -0
  447. package/dist/server/src/rpc/namespaces.js +42 -0
  448. package/dist/server/src/rpc/namespaces.js.map +1 -0
  449. package/dist/server/src/{nats → rpc}/server.d.ts +6 -2
  450. package/dist/server/src/{nats → rpc}/server.js +76 -55
  451. package/dist/server/src/rpc/server.js.map +1 -0
  452. package/dist/server/src/rpc/types.d.ts +111 -0
  453. package/dist/server/src/rpc/types.js +2 -0
  454. package/dist/server/src/{nats → rpc}/types.js.map +1 -1
  455. package/dist/server/src/{nats → rpc}/utils.d.ts +1 -1
  456. package/dist/server/src/rpc/utils.js.map +1 -0
  457. package/dist/server/src/services/config/constants.js +12 -48
  458. package/dist/server/src/services/config/constants.js.map +1 -1
  459. package/dist/server/src/services/config/defaults.d.ts +12 -0
  460. package/dist/server/src/services/config/defaults.js +55 -0
  461. package/dist/server/src/services/config/defaults.js.map +1 -0
  462. package/dist/server/src/services/config/index.d.ts +57 -9
  463. package/dist/server/src/services/config/index.js +277 -130
  464. package/dist/server/src/services/config/index.js.map +1 -1
  465. package/dist/server/src/services/config/types.d.ts +10 -4
  466. package/dist/server/src/types.d.ts +3 -0
  467. package/dist/server/src/utils/path.d.ts +5 -0
  468. package/dist/server/src/utils/path.js +12 -0
  469. package/dist/server/src/utils/path.js.map +1 -0
  470. package/dist/server/src/utils/pythonInstaller.d.ts +46 -0
  471. package/dist/server/src/utils/pythonInstaller.js +463 -0
  472. package/dist/server/src/utils/pythonInstaller.js.map +1 -0
  473. package/package.json +57 -45
  474. package/types/fastify.d.ts +14 -0
  475. package/dist/interface/@intlify.Do1-T-x0.0.0.49.js +0 -15
  476. package/dist/interface/@mdi.CbjpODVZ.0.0.49.js +0 -1
  477. package/dist/interface/@tanstack.CgZ4BVuY.0.0.49.js +0 -1
  478. package/dist/interface/@vue.DeX8WChi.0.0.49.js +0 -17
  479. package/dist/interface/@vueform.WCJNykTK.0.0.49.js +0 -1
  480. package/dist/interface/@vueuse.fmA4o7MO.0.0.49.js +0 -1
  481. package/dist/interface/Account.D_hgF7as.0.0.49.js +0 -1
  482. package/dist/interface/Adminpanel.Cr2ysRnk.0.0.49.js +0 -2
  483. package/dist/interface/Appearance.DJPnnakw.0.0.49.js +0 -1
  484. package/dist/interface/Backup.DWrnTw65.0.0.49.js +0 -1
  485. package/dist/interface/Camera.Cm8bv5Jw.0.0.49.js +0 -1
  486. package/dist/interface/Cameras.BdMnnB_B.0.0.49.js +0 -1
  487. package/dist/interface/Camview.CvyTACeS.0.0.49.js +0 -1
  488. package/dist/interface/Config.R58trs6R.0.0.49.js +0 -1
  489. package/dist/interface/Console.ByS6OcfG.0.0.49.js +0 -4
  490. package/dist/interface/FirstSteps.BSZVBND8.0.0.49.js +0 -1
  491. package/dist/interface/NewCamera.CpKY8-_z.0.0.49.js +0 -469
  492. package/dist/interface/Plugin.ucDXXC6d.0.0.49.js +0 -1
  493. package/dist/interface/Plugins.Bl6Yy3fd.0.0.49.js +0 -1
  494. package/dist/interface/Recordings.Bm-_HDqk.0.0.49.js +0 -1
  495. package/dist/interface/Recordings.CVFqRJTQ.0.0.49.js +0 -1
  496. package/dist/interface/Settings.ClbXnv3j.0.0.49.js +0 -1
  497. package/dist/interface/System.BE0hX95Q.0.0.49.js +0 -4
  498. package/dist/interface/User.Ih1R_8u4.0.0.49.js +0 -1
  499. package/dist/interface/VConfigEditor.vue_vue_type_script_setup_true_lang.CAHg6HiL.0.0.49.js +0 -2
  500. package/dist/interface/VConsole.B9yVZ89i.0.0.49.js +0 -1
  501. package/dist/interface/VPlayer.DWJVzwuw.0.0.49.js +0 -4
  502. package/dist/interface/VPluginCard.pJNHjHpP.0.0.49.js +0 -4
  503. package/dist/interface/ace-builds.S1varnlI.0.0.49.js +0 -970
  504. package/dist/interface/apexcharts.BQn4Fbzn.0.0.49.js +0 -838
  505. package/dist/interface/assets/@vueform.0.0.49.CroAHJs8.css +0 -1
  506. package/dist/interface/assets/@xterm.0.0.49.CFbL2ovg.css +0 -32
  507. package/dist/interface/assets/Account.0.0.49.Bnw6Lbtd.css +0 -1
  508. package/dist/interface/assets/Adminpanel.0.0.49.a3t1v3MB.css +0 -1
  509. package/dist/interface/assets/Camera.0.0.49.Br9s6-lM.css +0 -1
  510. package/dist/interface/assets/Cameras.0.0.49.Buf1Dgce.css +0 -1
  511. package/dist/interface/assets/Camview.0.0.49.B7Cja2ry.css +0 -1
  512. package/dist/interface/assets/Config.0.0.49.DNGo2krN.css +0 -1
  513. package/dist/interface/assets/Console.0.0.49.Bh8l9QnM.css +0 -1
  514. package/dist/interface/assets/FirstSteps.0.0.49.Mu8VPl13.css +0 -1
  515. package/dist/interface/assets/NewCamera.0.0.49.DtjxW0Pf.css +0 -1
  516. package/dist/interface/assets/Plugin.0.0.49.YIpAU1_n.css +0 -1
  517. package/dist/interface/assets/Plugins.0.0.49.DXSoO9M1.css +0 -1
  518. package/dist/interface/assets/Settings.0.0.49.CVmui2kE.css +0 -1
  519. package/dist/interface/assets/User.0.0.49.BiGtIFqt.css +0 -1
  520. package/dist/interface/assets/VConsole.0.0.49.BCqKHpmJ.css +0 -1
  521. package/dist/interface/assets/VPlayer.0.0.49.C4lm2rVR.css +0 -1
  522. package/dist/interface/assets/VPluginCard.0.0.49.C8Lj6X-J.css +0 -1
  523. package/dist/interface/assets/main.0.0.49.OJngntGT.css +0 -1
  524. package/dist/interface/assets/vue3-toastify.0.0.49.DHXAGmwn.css +0 -1
  525. package/dist/interface/assets/vuetify.0.0.49.Dua9WSqa.css +0 -5
  526. package/dist/interface/axios.DIsA03vz.0.0.49.js +0 -6
  527. package/dist/interface/backup.DO02r0Uq.0.0.49.js +0 -1
  528. package/dist/interface/dnd-core.De50QAoi.0.0.49.js +0 -1
  529. package/dist/interface/engine.io-client.BkCVneko.0.0.49.js +0 -1
  530. package/dist/interface/fast-deep-equal.Cba0yG7P.0.0.49.js +0 -1
  531. package/dist/interface/fonts/Inter/Inter-Regular.ttf +0 -0
  532. package/dist/interface/highlight.js.B_E0LW5C.0.0.49.js +0 -2
  533. package/dist/interface/hookable.B8xFkYCm.0.0.49.js +0 -1
  534. package/dist/interface/linkify-it.B6s2BWlj.0.0.49.js +0 -1
  535. package/dist/interface/main.BBe3SGhH.0.0.49.js +0 -4
  536. package/dist/interface/perfect-debounce.Cp2ysxOb.0.0.49.js +0 -1
  537. package/dist/interface/pinia.ggULzsrQ.0.0.49.js +0 -5
  538. package/dist/interface/plugins.D11FBqVV.0.0.49.js +0 -1
  539. package/dist/interface/react-dnd-touch-backend.Bu6wFEmw.0.0.49.js +0 -1
  540. package/dist/interface/rxjs.BoFuGUYG.0.0.49.js +0 -3
  541. package/dist/interface/socket.io-client.DkEQDv7C.0.0.49.js +0 -1
  542. package/dist/interface/socket.io-parser.DIURoCw8.0.0.49.js +0 -1
  543. package/dist/interface/system.D_LabhBl.0.0.49.js +0 -1
  544. package/dist/interface/types.Cz9TaZAP.0.0.49.js +0 -1
  545. package/dist/interface/utils.mAKpSMLY.0.0.49.js +0 -1
  546. package/dist/interface/uuid.Ch9TGLTe.0.0.49.js +0 -1
  547. package/dist/interface/vee-validate.8pUAwQ7T.0.0.49.js +0 -5
  548. package/dist/interface/vue-i18n.CBqdKRmG.0.0.49.js +0 -5
  549. package/dist/interface/vue-inline-svg.ZWpe_tFT.0.0.49.js +0 -1
  550. package/dist/interface/vue-router.DvFvaoP2.0.0.49.js +0 -5
  551. package/dist/interface/vue3-apexcharts.BHSDC9pf.0.0.49.js +0 -1
  552. package/dist/interface/vue3-dnd.DbCy3Qbj.0.0.49.js +0 -1
  553. package/dist/interface/vue3-toastify.JJyrPHKk.0.0.49.js +0 -1
  554. package/dist/interface/vuetify.kkqUjVJA.0.0.49.js +0 -5
  555. package/dist/interface/zod.bkdEMpUp.0.0.49.js +0 -1
  556. package/dist/server/src/api/utils/cameraSource.d.ts +0 -6
  557. package/dist/server/src/api/utils/cameraSource.js +0 -51
  558. package/dist/server/src/api/utils/cameraSource.js.map +0 -1
  559. package/dist/server/src/api/websocket/go2rtc.d.ts +0 -21
  560. package/dist/server/src/api/websocket/go2rtc.js +0 -88
  561. package/dist/server/src/api/websocket/go2rtc.js.map +0 -1
  562. package/dist/server/src/api/websocket/nsp/proxy.d.ts +0 -27
  563. package/dist/server/src/api/websocket/nsp/proxy.js +0 -127
  564. package/dist/server/src/api/websocket/nsp/proxy.js.map +0 -1
  565. package/dist/server/src/nats/index.d.ts +0 -40
  566. package/dist/server/src/nats/index.js +0 -164
  567. package/dist/server/src/nats/index.js.map +0 -1
  568. package/dist/server/src/nats/proxy/cameraDevice.d.ts +0 -22
  569. package/dist/server/src/nats/proxy/cameraDevice.js +0 -249
  570. package/dist/server/src/nats/proxy/cameraDevice.js.map +0 -1
  571. package/dist/server/src/nats/proxy/coreManager.d.ts +0 -14
  572. package/dist/server/src/nats/proxy/coreManager.js +0 -68
  573. package/dist/server/src/nats/proxy/coreManager.js.map +0 -1
  574. package/dist/server/src/nats/proxy/deviceManager.d.ts +0 -14
  575. package/dist/server/src/nats/proxy/deviceManager.js +0 -101
  576. package/dist/server/src/nats/proxy/deviceManager.js.map +0 -1
  577. package/dist/server/src/nats/server.js.map +0 -1
  578. package/dist/server/src/nats/types.d.ts +0 -18
  579. package/dist/server/src/nats/utils.js.map +0 -1
  580. /package/dist/interface/assets/{Backup.0.0.49.CX0rT0QJ.css → SettingsBackup.CX0rT0QJ.0.0.50-internal.1.css} +0 -0
  581. /package/dist/interface/assets/{highlight.0.0.49.Ch2EwETz.css → highlight.Ch2EwETz.0.0.50-internal.1.css} +0 -0
  582. /package/dist/interface/assets/{logo-256.0.0.49.BCQk9H1-.png → logo-256.BCQk9H1-.0.0.50-internal.1.png} +0 -0
  583. /package/dist/interface/assets/{logo-512.0.0.49.DLKVOU2S.png → logo-512.DLKVOU2S.0.0.50-internal.1.png} +0 -0
  584. /package/dist/interface/assets/{logo.0.0.49.DmEiRk0z.png → logo.DmEiRk0z.0.0.50-internal.1.png} +0 -0
  585. /package/dist/interface/assets/{mode-json.0.0.49.Br7xisR1.js → mode-json.Br7xisR1.0.0.50-internal.1.js} +0 -0
  586. /package/dist/interface/assets/{mode-yaml.0.0.49.CIYL8U3d.js → mode-yaml.CIYL8U3d.0.0.50-internal.1.js} +0 -0
  587. /package/dist/interface/{@babel.l0sNRNKZ.0.0.49.js → js/@babel.l0sNRNKZ.0.0.50-internal.1.js} +0 -0
  588. /package/dist/interface/{@react-dnd.CcwRs9xb.0.0.49.js → js/@react-dnd.CcwRs9xb.0.0.50-internal.1.js} +0 -0
  589. /package/dist/interface/{@socket.io.Dkula2eQ.0.0.49.js → js/@socket.io.Dkula2eQ.0.0.50-internal.1.js} +0 -0
  590. /package/dist/interface/{birpc.l0sNRNKZ.0.0.49.js → js/birpc.l0sNRNKZ.0.0.50-internal.1.js} +0 -0
  591. /package/dist/interface/{compare-versions.DqEOhma6.0.0.49.js → js/compare-versions.DqEOhma6.0.0.50-internal.1.js} +0 -0
  592. /package/dist/interface/{dijkstrajs.C00ieaqj.0.0.49.js → js/dijkstrajs.C00ieaqj.0.0.50-internal.1.js} +0 -0
  593. /package/dist/interface/{engine.io-parser.BiEtp6m2.0.0.49.js → js/engine.io-parser.BiEtp6m2.0.0.50-internal.1.js} +0 -0
  594. /package/dist/interface/{entities.C20TfXL6.0.0.49.js → js/entities.C20TfXL6.0.0.50-internal.1.js} +0 -0
  595. /package/dist/interface/{ev-emitter.X5f1qa-c.0.0.49.js → js/ev-emitter.X5f1qa-c.0.0.50-internal.1.js} +0 -0
  596. /package/dist/interface/{get-size.D1dS-IaP.0.0.49.js → js/get-size.D1dS-IaP.0.0.50-internal.1.js} +0 -0
  597. /package/dist/interface/{vue.l0sNRNKZ.0.0.49.js → js/hookable.l0sNRNKZ.0.0.50-internal.1.js} +0 -0
  598. /package/dist/interface/{mdurl.k9Sl0PQj.0.0.49.js → js/mdurl.k9Sl0PQj.0.0.50-internal.1.js} +0 -0
  599. /package/dist/interface/{punycode.js.Dj65hjkv.0.0.49.js → js/punycode.js.Dj65hjkv.0.0.50-internal.1.js} +0 -0
  600. /package/dist/interface/{react-dnd-html5-backend.1HQjlkwI.0.0.49.js → js/react-dnd-html5-backend.1HQjlkwI.0.0.50-internal.1.js} +0 -0
  601. /package/dist/interface/{redux.BFxtlG_c.0.0.49.js → js/redux.BFxtlG_c.0.0.50-internal.1.js} +0 -0
  602. /package/dist/interface/{tslib.9k7AwCpt.0.0.49.js → js/tslib.9k7AwCpt.0.0.50-internal.1.js} +0 -0
  603. /package/dist/interface/{uc.micro.kMc2yuuw.0.0.49.js → js/uc.micro.kMc2yuuw.0.0.50-internal.1.js} +0 -0
  604. /package/dist/server/src/{nats → decoder}/types.js +0 -0
  605. /package/dist/server/src/{nats → rpc}/utils.js +0 -0
@@ -1,420 +1,409 @@
1
- import { z } from 'zod';
2
- import { generateJsonFromSchema, getValueByPath, isArrayType, isEnumType, isNumberType, isObjectType, isStringType } from '@camera.ui/plugineer/schema';
3
- const isISO8601 = (value) => {
4
- const iso8601Regex = /^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(.\d+)?(Z|[+-]\d{2}:\d{2})?)?$/;
5
- return iso8601Regex.test(value);
1
+ import { isEqual } from '@camera.ui/common/utils';
2
+ import * as zod from 'zod';
3
+ // Type guards for schema identification
4
+ export const isStringType = (schema) => {
5
+ return schema.type === 'string' && !('enum' in schema);
6
6
  };
7
- const isTime = (value, options) => {
8
- const timeRegex = options.mode === 'withSeconds' ? /^([01]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/ : /^([01]?[0-9]|2[0-3]):([0-5][0-9])$/;
9
- return timeRegex.test(value);
7
+ export const isNumberType = (schema) => {
8
+ return schema.type === 'number';
10
9
  };
11
- const isEmail = (value) => {
12
- const emailRegex = /^\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b$/;
13
- return emailRegex.test(value);
10
+ export const isBooleanType = (schema) => {
11
+ return schema.type === 'boolean';
14
12
  };
15
- const isUUID = (value) => {
16
- const uuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/;
17
- return uuidRegex.test(value);
13
+ export const isEnumType = (schema) => {
14
+ return schema.type === 'string' && 'enum' in schema;
18
15
  };
19
- const isIP = (value, version) => {
20
- const ipRegex = version === 4 ? /^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/ : /^\s*([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4})\s*$/;
21
- return ipRegex.test(value);
16
+ export const isArrayType = (schema) => {
17
+ return schema.type === 'array';
22
18
  };
23
- export const generateSchema = (value) => {
24
- switch (true) {
25
- case value === undefined:
26
- case typeof value === 'undefined':
27
- case typeof value === 'function':
28
- case typeof value === 'symbol':
29
- case value instanceof Date:
30
- throw new TypeError(`Invalid JSON value: ${String(value)}`);
31
- /**
32
- * @see https://json-schema.org/understanding-json-schema/reference/numeric.html
33
- */
34
- case typeof value === 'number':
35
- return generateNumberSchema();
36
- /**
37
- * @see https://json-schema.org/understanding-json-schema/reference/boolean.html
38
- */
39
- case typeof value === 'boolean':
40
- return genereateBooleanSchema();
41
- /**
42
- * @see https://json-schema.org/understanding-json-schema/reference/string.html
43
- */
44
- case typeof value === 'string':
45
- return generateStringSchema(value);
46
- /**
47
- * @see https://json-schema.org/understanding-json-schema/reference/array.html
48
- */
49
- case Array.isArray(value):
50
- const allPrimitives = value.every((item) => typeof item === 'string' || typeof item === 'number' || typeof item === 'boolean');
51
- if (allPrimitives) {
52
- return generateEnumSchema(value);
53
- }
54
- else {
55
- return generateArraySchema(value);
56
- }
57
- /**
58
- * @see https://json-schema.org/understanding-json-schema/reference/object.html
59
- */
60
- case value instanceof Object:
61
- return generateObjectSchema(value);
62
- default:
63
- throw new TypeError(`Invalid JSON value: ${value}`);
64
- }
19
+ export const isButtonType = (schema) => {
20
+ return schema.type === 'button';
65
21
  };
66
- export const generateRootSchema = (value) => {
67
- const schema = {};
68
- Object.entries(value).forEach(([key, subValue]) => {
69
- schema[key] = generateSchema(subValue);
70
- });
71
- return { schema };
22
+ export const isSubmitType = (schema) => {
23
+ return schema.type === 'submit';
24
+ };
25
+ export const isValidableStringType = (schema) => {
26
+ return isStringType(schema) && (!schema.format || (schema.format !== 'qrCode' && schema.format !== 'image'));
72
27
  };
73
- export const generateJsonFromSchemaWithConfig = (jsonSchema, config, path = '') => {
74
- switch (jsonSchema.type) {
28
+ export const isConfigDefault = (config, schemas) => {
29
+ // Early exit for empty config
30
+ if (!config || Object.keys(config).length === 0) {
31
+ return true; // Empty config is considered default
32
+ }
33
+ // Filter out button and submit types as they don't have values
34
+ const validSchemas = schemas.filter((schema) => !isButtonType(schema) && !isSubmitType(schema));
35
+ // Check each schema field
36
+ for (const schema of validSchemas) {
37
+ const currentValue = getValueByKey(config, schema.key);
38
+ const defaultValue = generateDefaultValue(schema);
39
+ // Skip comparison if the field is not in the config
40
+ if (currentValue === undefined)
41
+ continue;
42
+ // Compare values based on type
43
+ if (!isEqual(currentValue, defaultValue, true)) {
44
+ return false; // Found a non-default value
45
+ }
46
+ }
47
+ return true; // All values match defaults
48
+ };
49
+ // Generate default value for a schema field
50
+ export const generateDefaultValue = (schema) => {
51
+ // Return explicit default if provided
52
+ if ('defaultValue' in schema && schema.defaultValue !== undefined) {
53
+ return schema.defaultValue;
54
+ }
55
+ // Generate default based on type
56
+ switch (schema.type) {
75
57
  case 'string':
58
+ if (isEnumType(schema)) {
59
+ return schema.multiple ? [] : schema.required ? schema.enum[0] : '';
60
+ }
61
+ return '';
76
62
  case 'number':
63
+ return 0;
77
64
  case 'boolean':
78
- const value = getValueByPath(config, path);
79
- return value !== undefined ? value : generateJsonFromSchema(jsonSchema);
80
- case 'object':
81
- if (jsonSchema.properties) {
82
- return Object.entries(jsonSchema.properties).reduce((obj, [key, schema]) => {
83
- const newPath = path + (path.length > 0 ? '.' : '') + key;
84
- obj[key] = generateJsonFromSchemaWithConfig(schema, config, newPath);
85
- return obj;
86
- }, {});
87
- }
88
- return {};
65
+ return false;
89
66
  case 'array':
90
- if (jsonSchema.items) {
91
- const items = jsonSchema.items;
92
- const arrayConfig = getValueByPath(config, path) ?? [];
93
- return arrayConfig.map((itemConfig, index) => generateJsonFromSchemaWithConfig(items, itemConfig, path + `[${index}]`));
94
- }
95
67
  return [];
96
68
  default:
97
69
  return undefined;
98
70
  }
99
71
  };
100
- export const generateStorableConfig = (jsonSchema, config) => {
101
- const newConfig = {};
102
- const processSchema = (schema, value) => {
103
- if (isObjectType(schema) && schema.properties) {
104
- const result = {};
105
- Object.entries(schema.properties).forEach(([key, propSchema]) => {
106
- const propValue = processSchema(propSchema, value?.[key]);
107
- if (propValue !== undefined) {
108
- result[key] = propValue;
109
- }
110
- });
111
- return Object.keys(result).length > 0 ? result : undefined;
112
- }
113
- else if (isArrayType(schema) && schema.items && Array.isArray(value)) {
114
- const result = value.map((item) => processSchema(schema.items, item)).filter((item) => item !== undefined);
115
- return result.length > 0 ? result : undefined;
116
- }
117
- else if (schema.store) {
118
- return value;
119
- }
120
- return undefined;
121
- };
122
- Object.entries(jsonSchema).forEach(([key, schema]) => {
123
- const result = processSchema(schema, config[key]);
124
- if (result !== undefined) {
125
- newConfig[key] = result;
126
- }
127
- });
128
- return newConfig;
72
+ // Generate a config object from schema definitions
73
+ export const generateConfigFromSchemas = (schemas) => {
74
+ const config = {};
75
+ for (const schema of schemas) {
76
+ // Skip button and submit types as they don't have values
77
+ if (isButtonType(schema) || isSubmitType(schema))
78
+ continue;
79
+ config[schema.key] = generateDefaultValue(schema);
80
+ }
81
+ return config;
129
82
  };
130
- export const schemaIsReadonly = (jsonSchema, group) => {
131
- if (!group) {
132
- // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
133
- return jsonSchema.readonly !== undefined
134
- ? jsonSchema.readonly
135
- : isObjectType(jsonSchema) && jsonSchema.properties
136
- ? Object.values(jsonSchema.properties).some((property) => schemaIsReadonly(property))
137
- : isArrayType(jsonSchema) && jsonSchema.items
138
- ? schemaIsReadonly(jsonSchema.items)
139
- : false;
83
+ // Get value from config by key
84
+ export const getValueByKey = (config = {}, key) => {
85
+ // For simple keys without nesting
86
+ if (!key.includes('.') && !key.includes('[')) {
87
+ return config[key];
140
88
  }
141
- else {
142
- if (!jsonSchema.group || jsonSchema.group !== group) {
143
- return true;
144
- }
145
- if (jsonSchema.group === group) {
146
- if (isObjectType(jsonSchema) && jsonSchema.properties) {
147
- const groupedSchema = Object.values(jsonSchema.properties);
148
- return groupedSchema.every((property) => schemaIsReadonly(property));
149
- }
150
- else if (isArrayType(jsonSchema) && jsonSchema.items) {
151
- return schemaIsReadonly(jsonSchema.items, group);
152
- }
153
- return jsonSchema.readonly ?? false;
89
+ // For nested keys or array access
90
+ const keys = key.split('.').reduce((acc, part) => {
91
+ if (part.includes('[')) {
92
+ const [keyPart, indexPart] = part.split('[');
93
+ acc.push(keyPart, indexPart.slice(0, -1)); // Remove closing bracket
154
94
  }
155
- else if (isObjectType(jsonSchema) && jsonSchema.properties) {
156
- const groupedSchema = Object.values(jsonSchema.properties).filter((property) => property.group === group);
157
- return groupedSchema.every((property) => schemaIsReadonly(property, group));
95
+ else {
96
+ acc.push(part);
158
97
  }
159
- else if (isArrayType(jsonSchema) && jsonSchema.items) {
160
- return schemaIsReadonly(jsonSchema.items, group);
98
+ return acc;
99
+ }, []);
100
+ let current = config;
101
+ for (const k of keys) {
102
+ if (current === undefined || current === null) {
103
+ return undefined;
161
104
  }
162
- return false;
105
+ current = current[k];
163
106
  }
107
+ return current;
164
108
  };
165
- export const schemaIsStorable = (jsonSchema, group) => {
166
- if (!group) {
167
- // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
168
- return jsonSchema.store !== undefined
169
- ? jsonSchema.store
170
- : isObjectType(jsonSchema) && jsonSchema.properties
171
- ? Object.values(jsonSchema.properties).some((property) => schemaIsStorable(property))
172
- : isArrayType(jsonSchema) && jsonSchema.items
173
- ? schemaIsStorable(jsonSchema.items)
174
- : false;
109
+ // Set value in config by key
110
+ export const setValueByKey = (config, key, value) => {
111
+ // For simple keys without nesting
112
+ if (!key.includes('.') && !key.includes('[')) {
113
+ config[key] = value;
114
+ return;
175
115
  }
176
- else {
177
- if (!jsonSchema.group || jsonSchema.group !== group) {
178
- return false;
116
+ // For nested keys or array access
117
+ const keys = key.split('.').reduce((acc, part) => {
118
+ if (part.includes('[')) {
119
+ const [keyPart, indexPart] = part.split('[');
120
+ acc.push(keyPart, indexPart.slice(0, -1)); // Remove closing bracket
179
121
  }
180
- if (jsonSchema.group === group) {
181
- if (isObjectType(jsonSchema) && jsonSchema.properties) {
182
- const groupedSchema = Object.values(jsonSchema.properties);
183
- return groupedSchema.some((property) => schemaIsStorable(property));
184
- }
185
- else if (isArrayType(jsonSchema) && jsonSchema.items) {
186
- return schemaIsStorable(jsonSchema.items, group);
187
- }
188
- return jsonSchema.store ?? false;
189
- }
190
- else if (isObjectType(jsonSchema) && jsonSchema.properties) {
191
- const groupedSchema = Object.values(jsonSchema.properties).filter((property) => property.group === group);
192
- return groupedSchema.some((property) => schemaIsStorable(property));
122
+ else {
123
+ acc.push(part);
193
124
  }
194
- else if (isArrayType(jsonSchema) && jsonSchema.items) {
195
- return schemaIsStorable(jsonSchema.items, group);
125
+ return acc;
126
+ }, []);
127
+ const lastKey = keys.pop();
128
+ if (!lastKey)
129
+ return;
130
+ let current = config;
131
+ for (const k of keys) {
132
+ if (current[k] === undefined || current[k] === null) {
133
+ // Create object or array as needed
134
+ const nextKey = keys[keys.indexOf(k) + 1];
135
+ current[k] = !isNaN(Number(nextKey)) ? [] : {};
196
136
  }
197
- return false;
137
+ current = current[k];
198
138
  }
139
+ current[lastKey] = value;
199
140
  };
200
- export const generateZodSchemaFromRoot = (rootSchema) => {
201
- const zodObjectSchema = {};
202
- Object.entries(rootSchema.schema).forEach(([key, jsonSchema]) => {
203
- zodObjectSchema[key] = generateZodSchema(jsonSchema);
204
- });
205
- return z.object(zodObjectSchema).strict();
141
+ // Find schema by key
142
+ export const findSchemaByKey = (schemas, key) => {
143
+ return schemas.find((schema) => schema.key === key);
206
144
  };
207
- export const generateZodSchema = (jsonSchema) => {
208
- switch (jsonSchema.type) {
209
- case 'string':
210
- case 'number':
211
- case 'boolean':
212
- if (isEnumType(jsonSchema)) {
213
- return createEnumSchema(jsonSchema);
214
- }
215
- else if (isStringType(jsonSchema)) {
216
- return createZodStringSchema(jsonSchema);
217
- }
218
- else if (isNumberType(jsonSchema)) {
219
- return createZodNumberSchema(jsonSchema);
220
- }
221
- else {
222
- return createZodBooleanSchema(jsonSchema);
223
- }
224
- case 'object':
225
- return createZodObjectSchema(jsonSchema);
226
- case 'array':
227
- return createZodArraySchema(jsonSchema);
228
- case 'button':
229
- return z.any();
145
+ // Remove callback functions from schema - useful for serialization
146
+ export const removeCallbacksFromSchema = (schema) => {
147
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
148
+ const { onSet, onGet, onClick, ...rest } = schema;
149
+ if (isArrayType(rest) && rest.items) {
150
+ rest.items = removeCallbacksFromSchema(rest.items);
230
151
  }
152
+ return rest;
231
153
  };
232
- export const generateNumberSchema = () => {
233
- // return { type: Number.isInteger(value) ? 'integer' : 'number' };
234
- return { type: 'number' };
235
- };
236
- export const genereateBooleanSchema = () => {
237
- return { type: 'boolean' };
154
+ // Remove callbacks from all schemas
155
+ export const removeCallbacksFromSchemas = (schemas) => {
156
+ return schemas.map((schema) => removeCallbacksFromSchema(schema));
238
157
  };
239
- export const generateStringSchema = (value) => {
240
- const stringObject = { type: 'string' };
241
- if (isISO8601(value)) {
242
- stringObject.format = value.includes('T') ? 'date-time' : 'date';
243
- }
244
- if (isTime(value.split('+')[0], { mode: 'withSeconds' })) {
245
- stringObject.format = 'time';
246
- }
247
- if (isEmail(value)) {
248
- stringObject.format = 'email';
249
- }
250
- if (isUUID(value)) {
251
- stringObject.format = 'uuid';
252
- }
253
- if (isIP(value, 4)) {
254
- stringObject.format = 'ipv4';
255
- }
256
- if (isIP(value, 6)) {
257
- stringObject.format = 'ipv6';
158
+ // Generate storable config (only include fields with store: true)
159
+ export const generateStorableConfig = (schemas, config) => {
160
+ const storableConfig = {};
161
+ for (const schema of schemas) {
162
+ if ('store' in schema && schema.store && !isButtonType(schema) && !isSubmitType(schema)) {
163
+ const value = getValueByKey(config, schema.key);
164
+ if (value !== undefined) {
165
+ storableConfig[schema.key] = value;
166
+ }
167
+ }
258
168
  }
259
- return stringObject;
169
+ return storableConfig;
260
170
  };
261
- export const generateEnumSchema = (value) => {
262
- return { type: 'string', enum: value.map((item) => item.toString()) };
171
+ // Check if schema fields have a specific group
172
+ export const getSchemasByGroup = (schemas, group) => {
173
+ if (!group)
174
+ return schemas;
175
+ return schemas.filter((schema) => 'group' in schema && schema.group === group);
263
176
  };
264
- export const generateObjectSchema = (value) => {
265
- if (!Object.keys(value).length) {
266
- return { type: 'object' };
267
- }
268
- const properties = {};
269
- Object.entries(value).forEach(([key, value]) => {
270
- const schema = generateSchema(value);
271
- schema.key = key;
272
- schema.description = schema.description ?? `Description for ${key}`;
273
- schema.required = schema.required ?? true;
274
- schema.readonly = schema.readonly ?? false;
275
- properties[key] = schema;
276
- });
277
- return { type: 'object', properties };
177
+ // Check if all schemas in a group are readonly
178
+ export const schemaGroupIsReadonly = (schemas, group) => {
179
+ const groupSchemas = getSchemasByGroup(schemas, group);
180
+ return groupSchemas.length > 0 && groupSchemas.every((schema) => 'readonly' in schema && schema.readonly);
278
181
  };
279
- export const generateObjectSchemaWithButtons = (value, buttons) => {
280
- const baseSchema = {
281
- ...generateObjectSchema(value),
282
- buttons: buttons,
182
+ // Check if any schema in a group is storable
183
+ export const schemaGroupIsStorable = (schemas, group) => {
184
+ const groupSchemas = getSchemasByGroup(schemas, group);
185
+ return groupSchemas.length > 0 && groupSchemas.some((schema) => 'store' in schema && schema.store);
186
+ };
187
+ // Format validation for string types
188
+ export const isValidFormat = (value, format) => {
189
+ if (!format)
190
+ return true;
191
+ const validations = {
192
+ 'date-time': (val) => /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(.\d+)?(Z|[+-]\d{2}:\d{2})?$/.test(val),
193
+ date: (val) => /^\d{4}-\d{2}-\d{2}$/.test(val),
194
+ time: (val) => /^([01]?[0-9]|2[0-3]):([0-5][0-9])(:([0-5][0-9]))?$/.test(val),
195
+ email: (val) => /^\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b$/.test(val),
196
+ uuid: (val) => /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/.test(val),
197
+ ipv4: (val) => /^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/.test(val),
198
+ ipv6: (val) => /^\s*([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4})\s*$/.test(val),
199
+ // Add more validations as needed
283
200
  };
284
- return baseSchema;
201
+ return format in validations ? validations[format](value) : true;
285
202
  };
286
- export const generateArraySchema = (array) => {
287
- if (array.length === 0) {
288
- return { type: 'array' };
203
+ // Validate a value against a schema
204
+ export const validateValue = (value, schema) => {
205
+ if (isButtonType(schema) || isSubmitType(schema))
206
+ return true;
207
+ // Check required fields
208
+ if ('required' in schema && schema.required && (value === undefined || value === null || value === '')) {
209
+ return false;
289
210
  }
290
- const allObjects = array.every((item) => typeof item === 'object' && item !== null && !Array.isArray(item));
291
- const allStrings = array.every((item) => typeof item === 'string');
292
- const allNumbers = array.every((item) => typeof item === 'number');
293
- if (allObjects) {
294
- const schemaProperties = {};
295
- const keyPresenceCount = {};
296
- // Gather all keys and their presence count
297
- array.forEach((obj) => {
298
- Object.keys(obj).forEach((key) => {
299
- keyPresenceCount[key] = (keyPresenceCount[key] || 0) + 1;
300
- });
301
- });
302
- array.forEach((obj) => {
303
- Object.entries(obj).forEach(([key, value]) => {
304
- if (!schemaProperties[key]) {
305
- const isRequired = keyPresenceCount[key] === array.length;
306
- schemaProperties[key] = {
307
- ...generateSchema(value),
308
- required: isRequired,
309
- title: key,
310
- description: `Description for ${key}`,
311
- readonly: false,
312
- };
211
+ switch (schema.type) {
212
+ case 'string':
213
+ if (isEnumType(schema)) {
214
+ if (schema.multiple) {
215
+ return Array.isArray(value) && value.every((v) => schema.enum.includes(v));
313
216
  }
314
- });
315
- });
316
- return {
317
- type: 'array',
318
- items: { type: 'object', properties: schemaProperties },
319
- };
320
- }
321
- else if (allStrings) {
322
- return { type: 'array', items: { type: 'string' } };
323
- }
324
- else if (allNumbers) {
325
- return { type: 'array', items: { type: 'number' } };
326
- }
327
- else {
328
- return { type: 'array', items: { type: 'boolean' } };
217
+ else {
218
+ return schema.enum.includes(value);
219
+ }
220
+ }
221
+ else {
222
+ if (typeof value !== 'string')
223
+ return false;
224
+ if (schema.minLength !== undefined && value.length < schema.minLength)
225
+ return false;
226
+ if (schema.maxLength !== undefined && value.length > schema.maxLength)
227
+ return false;
228
+ if (schema.format)
229
+ return isValidFormat(value, schema.format);
230
+ return true;
231
+ }
232
+ case 'number':
233
+ if (typeof value !== 'number')
234
+ return false;
235
+ if (schema.minimum !== undefined && value < schema.minimum)
236
+ return false;
237
+ if (schema.maximum !== undefined && value > schema.maximum)
238
+ return false;
239
+ return true;
240
+ case 'boolean':
241
+ return typeof value === 'boolean';
242
+ case 'array':
243
+ if (!Array.isArray(value))
244
+ return false;
245
+ return value.every((item) => validateValue(item, schema.items));
246
+ default:
247
+ return true;
329
248
  }
330
249
  };
331
- export const createZodStringSchema = (jsonSchema) => {
332
- let schema = z.string();
333
- if (jsonSchema.required)
334
- schema = schema.nonempty('Required');
335
- if (jsonSchema.minLength !== undefined)
336
- schema = schema.min(jsonSchema.minLength);
337
- if (jsonSchema.maxLength !== undefined)
338
- schema = schema.max(jsonSchema.maxLength);
339
- if (jsonSchema.format) {
340
- switch (jsonSchema.format) {
341
- case 'date-time':
342
- schema = schema.refine((value) => isISO8601(value) && value.includes('T'), { message: 'Invalid date-time' });
343
- break;
344
- case 'date':
345
- schema = schema.refine((value) => isISO8601(value), { message: 'Invalid date' });
346
- break;
347
- case 'time':
348
- schema = schema.refine((value) => isTime(value.split('+')[0], { mode: 'withSeconds' }), { message: 'Invalid time' });
349
- break;
350
- case 'email':
351
- schema = schema.refine((value) => isEmail(value), { message: 'Invalid email' });
352
- break;
353
- case 'uuid':
354
- schema = schema.refine((value) => isUUID(value), { message: 'Invalid uuid' });
355
- break;
356
- case 'ipv4':
357
- schema = schema.refine((value) => isIP(value, 4), { message: 'Invalid ipv4' });
358
- break;
359
- case 'ipv6':
360
- schema = schema.refine((value) => isIP(value, 6), { message: 'Invalid ipv6' });
361
- break;
362
- // case 'password':
363
- // schema = schema.refine((value) => isStrongPassword(value), { message: 'Invalid password' });
364
- // break;
365
- // case 'qrCode':
366
- // schema = schema.refine((value) => isBase64(value), { message: 'Invalid qrCode' });
367
- // break;
250
+ // Validate entire config against schema
251
+ export const validateConfig = (config, schemas) => {
252
+ const errors = {};
253
+ for (const schema of schemas) {
254
+ // Skip button and submit types
255
+ if (isButtonType(schema) || isSubmitType(schema))
256
+ continue;
257
+ const value = getValueByKey(config, schema.key);
258
+ const fieldErrors = [];
259
+ // Required field check
260
+ if ('required' in schema && schema.required && (value === undefined || value === null || value === '')) {
261
+ fieldErrors.push('This field is required');
262
+ }
263
+ // Type-specific validation
264
+ if (value !== undefined && value !== null) {
265
+ if (isStringType(schema)) {
266
+ if (typeof value !== 'string') {
267
+ fieldErrors.push('Value must be a string');
268
+ }
269
+ else {
270
+ if (schema.minLength !== undefined && value.length < schema.minLength) {
271
+ fieldErrors.push(`Minimum length is ${schema.minLength}`);
272
+ }
273
+ if (schema.maxLength !== undefined && value.length > schema.maxLength) {
274
+ fieldErrors.push(`Maximum length is ${schema.maxLength}`);
275
+ }
276
+ if (schema.format && !isValidFormat(value, schema.format)) {
277
+ fieldErrors.push(`Invalid ${schema.format} format`);
278
+ }
279
+ }
280
+ }
281
+ else if (isNumberType(schema)) {
282
+ if (typeof value !== 'number') {
283
+ fieldErrors.push('Value must be a number');
284
+ }
285
+ else {
286
+ if (schema.minimum !== undefined && value < schema.minimum) {
287
+ fieldErrors.push(`Minimum value is ${schema.minimum}`);
288
+ }
289
+ if (schema.maximum !== undefined && value > schema.maximum) {
290
+ fieldErrors.push(`Maximum value is ${schema.maximum}`);
291
+ }
292
+ }
293
+ }
294
+ else if (isBooleanType(schema)) {
295
+ if (typeof value !== 'boolean') {
296
+ fieldErrors.push('Value must be a boolean');
297
+ }
298
+ }
299
+ else if (isEnumType(schema)) {
300
+ if (schema.multiple) {
301
+ if (!Array.isArray(value)) {
302
+ fieldErrors.push('Value must be an array');
303
+ }
304
+ else if (!value.every((v) => schema.enum.includes(v))) {
305
+ fieldErrors.push('Invalid selection');
306
+ }
307
+ }
308
+ else if (!schema.enum.includes(value)) {
309
+ fieldErrors.push('Invalid selection');
310
+ }
311
+ }
312
+ else if (isArrayType(schema)) {
313
+ if (!Array.isArray(value)) {
314
+ fieldErrors.push('Value must be an array');
315
+ }
316
+ else {
317
+ value.forEach((item, index) => {
318
+ if (!validateValue(item, schema.items)) {
319
+ fieldErrors.push(`Invalid item at index ${index}`);
320
+ }
321
+ });
322
+ }
323
+ }
324
+ }
325
+ if (fieldErrors.length > 0) {
326
+ errors[schema.key] = fieldErrors;
368
327
  }
369
328
  }
370
- return jsonSchema.required ? schema : schema.optional();
371
- };
372
- export const createZodNumberSchema = (jsonSchema) => {
373
- let schema = z.number();
374
- if (jsonSchema.minimum !== undefined)
375
- schema = schema.min(jsonSchema.minimum);
376
- if (jsonSchema.maximum !== undefined)
377
- schema = schema.max(jsonSchema.maximum);
378
- if (jsonSchema.required)
379
- schema = schema.refine((value) => value !== undefined && typeof value === 'number', { message: 'Required' });
380
- return jsonSchema.required ? schema : schema.optional();
381
- };
382
- export const createZodBooleanSchema = (jsonSchema) => {
383
- const schema = z.boolean();
384
- return jsonSchema.required ? schema : schema.optional();
385
- };
386
- export const createEnumSchema = (jsonSchema) => {
387
- const enumValues = jsonSchema.enum.map((item) => (jsonSchema.required ? z.literal(item) : z.literal(item).optional()));
388
- const schema = jsonSchema.required
389
- ? z.union(enumValues)
390
- : z.any().transform((val) => (!val || val === '' || !jsonSchema.enum.some((v) => v === val) ? undefined : val));
391
- if (jsonSchema.multiple) {
392
- return jsonSchema.required ? schema.array() : schema.array().optional();
393
- }
394
- return jsonSchema.required ? schema : schema.optional();
329
+ return errors;
395
330
  };
396
- export const createZodObjectSchema = (jsonSchema) => {
397
- let schema;
398
- if (jsonSchema.properties) {
399
- const zodObjectProperties = Object.entries(jsonSchema.properties).reduce((acc, [key, value]) => {
400
- acc[key] = generateZodSchema(value);
401
- return acc;
402
- }, {});
403
- schema = z.object(zodObjectProperties).strict();
331
+ // Generate a Zod schema for a single JSON schema field
332
+ export const generateZodSchemaField = (schema) => {
333
+ // Skip validation for button and submit types
334
+ if (isButtonType(schema) || isSubmitType(schema)) {
335
+ return zod.any();
404
336
  }
405
- else {
406
- schema = z.record(z.any());
337
+ // Build schema based on type
338
+ switch (schema.type) {
339
+ case 'string':
340
+ // Handle enum type
341
+ if (isEnumType(schema)) {
342
+ if (schema.multiple) {
343
+ // Multiple selection
344
+ let arraySchema = zod.array(zod.string().refine((val) => schema.enum.includes(val), { message: 'Invalid selection' }));
345
+ if (schema.required) {
346
+ arraySchema = arraySchema.min(1, { message: 'Required' });
347
+ }
348
+ return schema.required ? arraySchema : arraySchema.optional();
349
+ }
350
+ else {
351
+ // Single selection
352
+ const enumSchema = zod.enum(schema.enum);
353
+ return schema.required ? enumSchema : enumSchema.optional();
354
+ }
355
+ }
356
+ // Regular string
357
+ let strSchema = zod.string();
358
+ // Add validation for required fields
359
+ if (schema.required) {
360
+ strSchema = strSchema.nonempty('Required');
361
+ }
362
+ // Add length validations
363
+ if (schema.minLength !== undefined) {
364
+ strSchema = strSchema.min(schema.minLength);
365
+ }
366
+ if (schema.maxLength !== undefined) {
367
+ strSchema = strSchema.max(schema.maxLength);
368
+ }
369
+ // Add validation for format
370
+ if (schema.format) {
371
+ strSchema = strSchema.refine((val) => !val || val.trim() === '' || isValidFormat(val, schema.format), {
372
+ message: `Invalid ${schema.format} format`,
373
+ });
374
+ }
375
+ return schema.required ? strSchema : strSchema.optional();
376
+ case 'number':
377
+ let numSchema = zod.number();
378
+ if (schema.minimum !== undefined) {
379
+ numSchema = numSchema.min(schema.minimum);
380
+ }
381
+ if (schema.maximum !== undefined) {
382
+ numSchema = numSchema.max(schema.maximum);
383
+ }
384
+ if (schema.required) {
385
+ numSchema = numSchema.refine((val) => val !== undefined && val !== null, { message: 'Required' });
386
+ }
387
+ return schema.required ? numSchema : numSchema.optional();
388
+ case 'boolean':
389
+ return schema.required ? zod.boolean() : zod.boolean().optional();
390
+ case 'array':
391
+ const schemaItems = generateZodSchemaField(schema.items);
392
+ const arraySchema = zod.array(schemaItems);
393
+ return schema.required ? arraySchema : arraySchema.optional();
394
+ default:
395
+ return schema.required ? zod.any() : zod.any().optional();
407
396
  }
408
- return jsonSchema.required ? schema : schema.optional();
409
397
  };
410
- export const createZodArraySchema = (jsonSchema) => {
411
- let schema;
412
- if (jsonSchema.items) {
413
- schema = generateZodSchema(jsonSchema.items).array();
414
- }
415
- else {
416
- schema = z.any().array();
417
- }
418
- return jsonSchema.required ? schema : schema.optional();
398
+ // // Generate a complete Zod schema from an array of JSON schemas
399
+ export const generateZodSchema = (schemas) => {
400
+ const zodSchemaObj = {};
401
+ schemas.forEach((schema) => {
402
+ // Skip button and submit types as they don't need validation
403
+ if (!isButtonType(schema) && !isSubmitType(schema)) {
404
+ zodSchemaObj[schema.key] = generateZodSchemaField(schema);
405
+ }
406
+ });
407
+ return zod.object(zodSchemaObj);
419
408
  };
420
409
  //# sourceMappingURL=schema.js.map