camstreamerlib 4.0.0-beta.9 → 4.0.0-beta.91

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 (360) hide show
  1. package/README.md +143 -38
  2. package/cjs/CamOverlayAPI.d.ts +579 -340
  3. package/cjs/CamOverlayAPI.js +121 -151
  4. package/cjs/CamScripterAPI.d.ts +44 -17
  5. package/cjs/CamScripterAPI.js +50 -34
  6. package/cjs/CamStreamerAPI.d.ts +588 -14
  7. package/cjs/CamStreamerAPI.js +171 -44
  8. package/cjs/CamSwitcherAPI.d.ts +158 -43
  9. package/cjs/CamSwitcherAPI.js +138 -122
  10. package/cjs/PlaneTrackerAPI.d.ts +241 -0
  11. package/cjs/PlaneTrackerAPI.js +254 -0
  12. package/cjs/VapixAPI.d.ts +95 -43
  13. package/cjs/VapixAPI.js +314 -232
  14. package/cjs/{CreatePackage.js → bin/CreatePackage.js} +44 -18
  15. package/cjs/errors/errors.d.ts +69 -4
  16. package/cjs/errors/errors.js +138 -7
  17. package/cjs/index.d.ts +20 -7
  18. package/cjs/index.js +28 -9
  19. package/cjs/internal/ProxyClient.d.ts +8 -9
  20. package/cjs/internal/ProxyClient.js +28 -34
  21. package/cjs/internal/WsEvents.d.ts +37 -0
  22. package/cjs/{CamSwitcherEvents.js → internal/WsEvents.js} +28 -22
  23. package/cjs/internal/types.d.ts +47 -0
  24. package/cjs/internal/types.js +2 -0
  25. package/cjs/internal/utils.d.ts +3 -1
  26. package/cjs/internal/utils.js +15 -3
  27. package/cjs/internal/versionCompare.d.ts +2 -2
  28. package/cjs/node/CamOverlayDrawingAPI.d.ts +41 -0
  29. package/cjs/{CamOverlayDrawingAPI.js → node/CamOverlayDrawingAPI.js} +28 -20
  30. package/{esm → cjs/node}/CamOverlayPainter/Frame.d.ts +8 -37
  31. package/cjs/{CamOverlayPainter → node/CamOverlayPainter}/Frame.js +33 -0
  32. package/cjs/{CamOverlayPainter → node/CamOverlayPainter}/Painter.d.ts +5 -21
  33. package/cjs/{CamOverlayPainter → node/CamOverlayPainter}/Painter.js +5 -17
  34. package/cjs/node/CamOverlayPainter/ResourceManager.d.ts +15 -0
  35. package/cjs/node/CamOverlayPainter/ResourceManager.js +72 -0
  36. package/cjs/node/CamScripterAPICameraEventsGenerator.d.ts +31 -0
  37. package/cjs/{CamScripterAPICameraEventsGenerator.js → node/CamScripterAPICameraEventsGenerator.js} +13 -13
  38. package/cjs/node/DefaultClient.d.ts +6 -5
  39. package/cjs/node/DefaultClient.js +10 -12
  40. package/cjs/{internal → node}/Digest.js +24 -1
  41. package/cjs/node/Digest.test.js +13 -0
  42. package/cjs/node/HttpRequestSender.d.ts +1 -0
  43. package/cjs/node/HttpRequestSender.js +14 -4
  44. package/cjs/node/HttpServer.d.ts +1 -1
  45. package/cjs/node/HttpServer.js +29 -6
  46. package/cjs/node/TimeZoneDaemon.d.ts +6 -0
  47. package/cjs/node/TimeZoneDaemon.js +29 -0
  48. package/cjs/node/VapixEvents.d.ts +16 -0
  49. package/cjs/{VapixEvents.js → node/VapixEvents.js} +10 -10
  50. package/cjs/node/WsClient.d.ts +9 -18
  51. package/cjs/node/WsClient.js +27 -20
  52. package/cjs/node/events/AxisCameraStationEvents.d.ts +12 -0
  53. package/cjs/node/events/AxisCameraStationEvents.js +53 -0
  54. package/cjs/node/events/GenetecAgent.d.ts +16 -0
  55. package/cjs/node/events/GenetecAgent.js +124 -0
  56. package/cjs/node/index.d.ts +18 -2
  57. package/cjs/node/index.js +39 -5
  58. package/cjs/{models/CamOverlayAPI/widgetsSchema.d.ts → types/CamOverlayAPI/CamOverlayAPI.d.ts} +2343 -836
  59. package/cjs/types/CamOverlayAPI/CamOverlayAPI.js +92 -0
  60. package/cjs/{models → types}/CamOverlayAPI/accuweatherSchema.d.ts +19 -19
  61. package/cjs/{models → types}/CamOverlayAPI/accuweatherSchema.js +7 -8
  62. package/cjs/{models → types}/CamOverlayAPI/customGraphicsSchema.d.ts +110 -109
  63. package/cjs/{models → types}/CamOverlayAPI/customGraphicsSchema.js +5 -6
  64. package/{esm/models → cjs/types}/CamOverlayAPI/imagesSchema.d.ts +21 -21
  65. package/cjs/types/CamOverlayAPI/imagesSchema.js +9 -0
  66. package/cjs/{models → types}/CamOverlayAPI/index.d.ts +2 -4
  67. package/cjs/{models → types}/CamOverlayAPI/index.js +2 -4
  68. package/cjs/{models → types}/CamOverlayAPI/infotickerSchema.d.ts +27 -27
  69. package/cjs/{models → types}/CamOverlayAPI/infotickerSchema.js +6 -7
  70. package/{esm/models → cjs/types}/CamOverlayAPI/pipSchema.d.ts +23 -23
  71. package/cjs/{models → types}/CamOverlayAPI/pipSchema.js +5 -6
  72. package/{esm/models → cjs/types}/CamOverlayAPI/ptzCompassSchema.d.ts +20 -17
  73. package/cjs/{models → types}/CamOverlayAPI/ptzCompassSchema.js +5 -5
  74. package/{esm/models → cjs/types}/CamOverlayAPI/ptzSchema.d.ts +30 -30
  75. package/cjs/types/CamOverlayAPI/ptzSchema.js +12 -0
  76. package/cjs/types/CamOverlayAPI/scoreBoardSchema.d.ts +357 -0
  77. package/cjs/types/CamOverlayAPI/scoreBoardSchema.js +132 -0
  78. package/cjs/{models → types}/CamOverlayAPI/screenSharingSchema.d.ts +17 -17
  79. package/cjs/types/CamOverlayAPI/screenSharingSchema.js +8 -0
  80. package/{esm/models/CamOverlayAPI/widgetCommonSchema.d.ts → cjs/types/CamOverlayAPI/serviceCommonTypes.d.ts} +79 -60
  81. package/cjs/{models/CamOverlayAPI/widgetCommonSchema.js → types/CamOverlayAPI/serviceCommonTypes.js} +33 -18
  82. package/{esm/models → cjs/types}/CamOverlayAPI/webCameraSharingSchema.d.ts +17 -17
  83. package/cjs/types/CamOverlayAPI/webCameraSharingSchema.js +8 -0
  84. package/cjs/types/CamOverlayDrawingAPI.d.ts +48 -0
  85. package/cjs/types/CamOverlayDrawingAPI.js +2 -0
  86. package/cjs/types/CamOverlayPainter.d.ts +76 -0
  87. package/cjs/types/CamOverlayPainter.js +14 -0
  88. package/cjs/types/CamScripterAPI.d.ts +86 -23
  89. package/cjs/types/CamScripterAPI.js +24 -8
  90. package/cjs/types/CamScripterAPICameraEventsGenerator.d.ts +45 -0
  91. package/cjs/types/CamScripterAPICameraEventsGenerator.js +2 -0
  92. package/cjs/types/CamStreamerAPI/CamStreamerAPI.d.ts +3839 -0
  93. package/cjs/types/CamStreamerAPI/CamStreamerAPI.js +75 -0
  94. package/cjs/types/CamStreamerAPI/facebookSchema.d.ts +202 -0
  95. package/cjs/types/CamStreamerAPI/facebookSchema.js +11 -0
  96. package/cjs/types/CamStreamerAPI/hlsSchema.d.ts +202 -0
  97. package/cjs/types/CamStreamerAPI/hlsSchema.js +11 -0
  98. package/cjs/types/CamStreamerAPI/index.d.ts +9 -0
  99. package/cjs/types/CamStreamerAPI/index.js +25 -0
  100. package/cjs/types/CamStreamerAPI/mpegDvbSchema.d.ts +250 -0
  101. package/cjs/types/CamStreamerAPI/mpegDvbSchema.js +27 -0
  102. package/cjs/types/{CamStreamerAPI.d.ts → CamStreamerAPI/oldStreamSchema.d.ts} +96 -27
  103. package/cjs/types/CamStreamerAPI/oldStreamSchema.js +53 -0
  104. package/cjs/types/CamStreamerAPI/rtmpSchema.d.ts +202 -0
  105. package/cjs/types/CamStreamerAPI/rtmpSchema.js +11 -0
  106. package/cjs/types/CamStreamerAPI/sdCardSchema.d.ts +202 -0
  107. package/cjs/types/CamStreamerAPI/sdCardSchema.js +11 -0
  108. package/cjs/types/CamStreamerAPI/streamCommonTypes.d.ts +369 -0
  109. package/cjs/types/CamStreamerAPI/streamCommonTypes.js +65 -0
  110. package/cjs/types/CamStreamerAPI/windySchema.d.ts +202 -0
  111. package/cjs/types/CamStreamerAPI/windySchema.js +11 -0
  112. package/cjs/types/CamStreamerAPI/youtubeSchema.d.ts +202 -0
  113. package/cjs/types/CamStreamerAPI/youtubeSchema.js +11 -0
  114. package/cjs/types/CamSwitcherAPI.d.ts +189 -110
  115. package/cjs/types/CamSwitcherAPI.js +38 -1
  116. package/cjs/{events → types}/GenetecAgent.d.ts +47 -47
  117. package/cjs/types/GenetecAgent.js +31 -0
  118. package/cjs/types/PlaneTrackerAPI.d.ts +980 -0
  119. package/cjs/types/PlaneTrackerAPI.js +333 -0
  120. package/cjs/types/VapixAPI.d.ts +338 -248
  121. package/cjs/types/VapixAPI.js +66 -11
  122. package/cjs/types/VapixEvents.d.ts +15 -0
  123. package/cjs/types/VapixEvents.js +2 -0
  124. package/cjs/types/common.d.ts +18 -5
  125. package/cjs/types/common.js +5 -2
  126. package/cjs/types/ws/CamOverlayEvents.d.ts +88 -0
  127. package/cjs/types/ws/CamOverlayEvents.js +19 -0
  128. package/cjs/types/ws/CamStreamerEvents.d.ts +249 -0
  129. package/cjs/types/ws/CamStreamerEvents.js +32 -0
  130. package/cjs/types/ws/PlaneTrackerEvents.d.ts +1703 -0
  131. package/cjs/types/ws/PlaneTrackerEvents.js +207 -0
  132. package/cjs/web/DefaultClient.d.ts +7 -8
  133. package/cjs/web/DefaultClient.js +25 -9
  134. package/cjs/web/WsClient.d.ts +9 -5
  135. package/cjs/web/WsClient.js +16 -18
  136. package/cjs/ws/CamOverlayEvents.d.ts +8 -0
  137. package/cjs/ws/CamOverlayEvents.js +24 -0
  138. package/cjs/ws/CamStreamerEvents.d.ts +8 -0
  139. package/cjs/ws/CamStreamerEvents.js +24 -0
  140. package/cjs/ws/CamSwitcherEvents.d.ts +8 -0
  141. package/cjs/ws/CamSwitcherEvents.js +24 -0
  142. package/cjs/ws/PlaneTrackerEvents.d.ts +9 -0
  143. package/cjs/ws/PlaneTrackerEvents.js +30 -0
  144. package/esm/CamOverlayAPI.js +120 -150
  145. package/esm/CamScripterAPI.js +48 -32
  146. package/esm/CamStreamerAPI.js +166 -40
  147. package/esm/CamSwitcherAPI.js +136 -120
  148. package/esm/PlaneTrackerAPI.js +250 -0
  149. package/esm/VapixAPI.js +314 -232
  150. package/esm/{CreatePackage.js → bin/CreatePackage.js} +16 -16
  151. package/esm/errors/errors.js +120 -6
  152. package/esm/index.js +20 -7
  153. package/esm/internal/ProxyClient.js +28 -34
  154. package/esm/{CamSwitcherEvents.js → internal/WsEvents.js} +26 -20
  155. package/esm/internal/types.js +1 -0
  156. package/esm/internal/utils.js +11 -1
  157. package/esm/{CamOverlayDrawingAPI.js → node/CamOverlayDrawingAPI.js} +26 -18
  158. package/esm/{CamOverlayPainter → node/CamOverlayPainter}/Frame.js +33 -0
  159. package/esm/{CamOverlayPainter → node/CamOverlayPainter}/Painter.js +2 -13
  160. package/esm/{CamOverlayPainter → node/CamOverlayPainter}/ResourceManager.js +7 -5
  161. package/esm/{CamScripterAPICameraEventsGenerator.js → node/CamScripterAPICameraEventsGenerator.js} +11 -11
  162. package/esm/node/DefaultClient.js +10 -12
  163. package/esm/node/Digest.test.js +11 -0
  164. package/esm/node/HttpRequestSender.js +14 -4
  165. package/esm/node/HttpServer.js +1 -1
  166. package/esm/node/TimeZoneDaemon.js +25 -0
  167. package/esm/{VapixEvents.js → node/VapixEvents.js} +10 -10
  168. package/esm/node/WsClient.js +22 -15
  169. package/esm/{events → node/events}/AxisCameraStationEvents.js +18 -13
  170. package/esm/node/events/GenetecAgent.js +120 -0
  171. package/esm/node/index.js +18 -2
  172. package/esm/types/CamOverlayAPI/CamOverlayAPI.js +76 -0
  173. package/esm/{models → types}/CamOverlayAPI/accuweatherSchema.js +3 -4
  174. package/esm/{models → types}/CamOverlayAPI/customGraphicsSchema.js +3 -4
  175. package/esm/types/CamOverlayAPI/imagesSchema.js +6 -0
  176. package/esm/{models → types}/CamOverlayAPI/index.js +2 -4
  177. package/esm/{models → types}/CamOverlayAPI/infotickerSchema.js +3 -4
  178. package/esm/{models → types}/CamOverlayAPI/pipSchema.js +4 -5
  179. package/esm/{models → types}/CamOverlayAPI/ptzCompassSchema.js +4 -4
  180. package/esm/types/CamOverlayAPI/ptzSchema.js +9 -0
  181. package/esm/types/CamOverlayAPI/scoreBoardSchema.js +129 -0
  182. package/esm/types/CamOverlayAPI/screenSharingSchema.js +5 -0
  183. package/esm/{models/CamOverlayAPI/widgetCommonSchema.js → types/CamOverlayAPI/serviceCommonTypes.js} +32 -17
  184. package/esm/types/CamOverlayAPI/webCameraSharingSchema.js +5 -0
  185. package/esm/types/CamOverlayDrawingAPI.js +1 -0
  186. package/esm/types/CamOverlayPainter.js +11 -0
  187. package/esm/types/CamScripterAPI.js +23 -7
  188. package/esm/types/CamScripterAPICameraEventsGenerator.js +1 -0
  189. package/esm/types/CamStreamerAPI/CamStreamerAPI.js +65 -0
  190. package/esm/types/CamStreamerAPI/facebookSchema.js +5 -0
  191. package/esm/types/CamStreamerAPI/hlsSchema.js +5 -0
  192. package/esm/types/CamStreamerAPI/index.js +9 -0
  193. package/esm/types/CamStreamerAPI/mpegDvbSchema.js +21 -0
  194. package/esm/types/CamStreamerAPI/oldStreamSchema.js +50 -0
  195. package/esm/types/CamStreamerAPI/rtmpSchema.js +5 -0
  196. package/esm/types/CamStreamerAPI/sdCardSchema.js +5 -0
  197. package/esm/types/CamStreamerAPI/streamCommonTypes.js +62 -0
  198. package/esm/types/CamStreamerAPI/windySchema.js +5 -0
  199. package/esm/types/CamStreamerAPI/youtubeSchema.js +5 -0
  200. package/esm/types/CamSwitcherAPI.js +38 -1
  201. package/esm/types/GenetecAgent.js +28 -0
  202. package/esm/types/PlaneTrackerAPI.js +330 -0
  203. package/esm/types/VapixAPI.js +65 -10
  204. package/esm/types/VapixEvents.js +1 -0
  205. package/esm/types/common.js +4 -1
  206. package/esm/types/ws/CamOverlayEvents.js +16 -0
  207. package/esm/types/ws/CamStreamerEvents.js +29 -0
  208. package/esm/types/ws/PlaneTrackerEvents.js +204 -0
  209. package/esm/web/DefaultClient.js +25 -9
  210. package/esm/web/WsClient.js +16 -18
  211. package/esm/ws/CamOverlayEvents.js +20 -0
  212. package/esm/ws/CamStreamerEvents.js +20 -0
  213. package/esm/ws/CamSwitcherEvents.js +20 -0
  214. package/esm/ws/PlaneTrackerEvents.js +26 -0
  215. package/package.json +44 -11
  216. package/{esm → types}/CamOverlayAPI.d.ts +579 -340
  217. package/types/CamScripterAPI.d.ts +46 -0
  218. package/types/CamStreamerAPI.d.ts +590 -0
  219. package/types/CamSwitcherAPI.d.ts +167 -0
  220. package/types/PlaneTrackerAPI.d.ts +241 -0
  221. package/types/VapixAPI.d.ts +118 -0
  222. package/types/bin/CreatePackage.d.ts +1 -0
  223. package/types/errors/errors.d.ts +102 -0
  224. package/types/index.d.ts +27 -0
  225. package/types/internal/ProxyClient.d.ts +10 -0
  226. package/types/internal/WsEvents.d.ts +37 -0
  227. package/types/internal/types.d.ts +47 -0
  228. package/{esm → types}/internal/utils.d.ts +3 -1
  229. package/{esm → types}/internal/versionCompare.d.ts +2 -2
  230. package/types/node/CamOverlayDrawingAPI.d.ts +41 -0
  231. package/{cjs → types/node}/CamOverlayPainter/Frame.d.ts +8 -37
  232. package/{esm → types/node}/CamOverlayPainter/Painter.d.ts +5 -21
  233. package/types/node/CamOverlayPainter/ResourceManager.d.ts +15 -0
  234. package/types/node/CamScripterAPICameraEventsGenerator.d.ts +31 -0
  235. package/types/node/DefaultClient.d.ts +16 -0
  236. package/types/node/Digest.test.d.ts +1 -0
  237. package/{esm → types}/node/HttpRequestSender.d.ts +1 -0
  238. package/{esm → types}/node/HttpServer.d.ts +1 -1
  239. package/types/node/TimeZoneDaemon.d.ts +6 -0
  240. package/types/node/VapixEvents.d.ts +16 -0
  241. package/types/node/WsClient.d.ts +30 -0
  242. package/types/node/events/AxisCameraStationEvents.d.ts +12 -0
  243. package/types/node/events/GenetecAgent.d.ts +16 -0
  244. package/types/node/index.d.ts +18 -0
  245. package/{esm/models/CamOverlayAPI/widgetsSchema.d.ts → types/types/CamOverlayAPI/CamOverlayAPI.d.ts} +2343 -836
  246. package/{esm/models → types/types}/CamOverlayAPI/accuweatherSchema.d.ts +19 -19
  247. package/{esm/models → types/types}/CamOverlayAPI/customGraphicsSchema.d.ts +110 -109
  248. package/{cjs/models → types/types}/CamOverlayAPI/imagesSchema.d.ts +21 -21
  249. package/{esm/models → types/types}/CamOverlayAPI/index.d.ts +2 -4
  250. package/{esm/models → types/types}/CamOverlayAPI/infotickerSchema.d.ts +27 -27
  251. package/{cjs/models → types/types}/CamOverlayAPI/pipSchema.d.ts +23 -23
  252. package/{cjs/models → types/types}/CamOverlayAPI/ptzCompassSchema.d.ts +20 -17
  253. package/{cjs/models → types/types}/CamOverlayAPI/ptzSchema.d.ts +30 -30
  254. package/types/types/CamOverlayAPI/scoreBoardSchema.d.ts +357 -0
  255. package/{esm/models → types/types}/CamOverlayAPI/screenSharingSchema.d.ts +17 -17
  256. package/{cjs/models/CamOverlayAPI/widgetCommonSchema.d.ts → types/types/CamOverlayAPI/serviceCommonTypes.d.ts} +79 -60
  257. package/{cjs/models → types/types}/CamOverlayAPI/webCameraSharingSchema.d.ts +17 -17
  258. package/types/types/CamOverlayDrawingAPI.d.ts +48 -0
  259. package/types/types/CamOverlayPainter.d.ts +76 -0
  260. package/types/types/CamScripterAPI.d.ts +130 -0
  261. package/types/types/CamScripterAPICameraEventsGenerator.d.ts +45 -0
  262. package/types/types/CamStreamerAPI/CamStreamerAPI.d.ts +3839 -0
  263. package/types/types/CamStreamerAPI/facebookSchema.d.ts +202 -0
  264. package/types/types/CamStreamerAPI/hlsSchema.d.ts +202 -0
  265. package/types/types/CamStreamerAPI/index.d.ts +9 -0
  266. package/types/types/CamStreamerAPI/mpegDvbSchema.d.ts +250 -0
  267. package/{esm/types/CamStreamerAPI.d.ts → types/types/CamStreamerAPI/oldStreamSchema.d.ts} +96 -27
  268. package/types/types/CamStreamerAPI/rtmpSchema.d.ts +202 -0
  269. package/types/types/CamStreamerAPI/sdCardSchema.d.ts +202 -0
  270. package/types/types/CamStreamerAPI/streamCommonTypes.d.ts +369 -0
  271. package/types/types/CamStreamerAPI/windySchema.d.ts +202 -0
  272. package/types/types/CamStreamerAPI/youtubeSchema.d.ts +202 -0
  273. package/{esm → types}/types/CamSwitcherAPI.d.ts +189 -110
  274. package/{esm/events → types/types}/GenetecAgent.d.ts +47 -47
  275. package/types/types/PlaneTrackerAPI.d.ts +980 -0
  276. package/{esm → types}/types/VapixAPI.d.ts +338 -248
  277. package/types/types/VapixEvents.d.ts +15 -0
  278. package/{esm → types}/types/common.d.ts +18 -5
  279. package/types/types/ws/CamOverlayEvents.d.ts +88 -0
  280. package/types/types/ws/CamStreamerEvents.d.ts +249 -0
  281. package/types/types/ws/PlaneTrackerEvents.d.ts +1703 -0
  282. package/types/web/DefaultClient.d.ts +8 -0
  283. package/types/web/WsClient.d.ts +17 -0
  284. package/types/ws/CamOverlayEvents.d.ts +8 -0
  285. package/types/ws/CamStreamerEvents.d.ts +8 -0
  286. package/types/ws/CamSwitcherEvents.d.ts +8 -0
  287. package/types/ws/PlaneTrackerEvents.d.ts +9 -0
  288. package/cjs/CamOverlayDrawingAPI.d.ts +0 -86
  289. package/cjs/CamOverlayPainter/ResourceManager.d.ts +0 -14
  290. package/cjs/CamOverlayPainter/ResourceManager.js +0 -46
  291. package/cjs/CamScripterAPICameraEventsGenerator.d.ts +0 -74
  292. package/cjs/CamSwitcherEvents.d.ts +0 -18
  293. package/cjs/VapixEvents.d.ts +0 -43
  294. package/cjs/events/AxisCameraStationEvents.d.ts +0 -9
  295. package/cjs/events/AxisCameraStationEvents.js +0 -48
  296. package/cjs/events/GenetecAgent.js +0 -123
  297. package/cjs/internal/common.d.ts +0 -39
  298. package/cjs/internal/common.js +0 -27
  299. package/cjs/models/CamOverlayAPI/constants.d.ts +0 -11
  300. package/cjs/models/CamOverlayAPI/constants.js +0 -14
  301. package/cjs/models/CamOverlayAPI/fileSchema.d.ts +0 -28
  302. package/cjs/models/CamOverlayAPI/fileSchema.js +0 -17
  303. package/cjs/models/CamOverlayAPI/imagesSchema.js +0 -10
  304. package/cjs/models/CamOverlayAPI/ptzSchema.js +0 -13
  305. package/cjs/models/CamOverlayAPI/screenSharingSchema.js +0 -9
  306. package/cjs/models/CamOverlayAPI/webCameraSharingSchema.js +0 -9
  307. package/cjs/models/CamOverlayAPI/widgetsSchema.js +0 -27
  308. package/cjs/node/WsEventClient.d.ts +0 -13
  309. package/cjs/node/WsEventClient.js +0 -22
  310. package/cjs/types/CamOverlayAPI.d.ts +0 -328
  311. package/cjs/types/CamOverlayAPI.js +0 -26
  312. package/cjs/types/CamStreamerAPI.js +0 -28
  313. package/esm/CamOverlayDrawingAPI.d.ts +0 -86
  314. package/esm/CamOverlayPainter/ResourceManager.d.ts +0 -14
  315. package/esm/CamScripterAPI.d.ts +0 -19
  316. package/esm/CamScripterAPICameraEventsGenerator.d.ts +0 -74
  317. package/esm/CamStreamerAPI.d.ts +0 -16
  318. package/esm/CamSwitcherAPI.d.ts +0 -52
  319. package/esm/CamSwitcherEvents.d.ts +0 -18
  320. package/esm/VapixAPI.d.ts +0 -66
  321. package/esm/VapixEvents.d.ts +0 -43
  322. package/esm/errors/errors.d.ts +0 -37
  323. package/esm/events/AxisCameraStationEvents.d.ts +0 -9
  324. package/esm/events/GenetecAgent.js +0 -119
  325. package/esm/index.d.ts +0 -14
  326. package/esm/internal/ProxyClient.d.ts +0 -11
  327. package/esm/internal/common.d.ts +0 -39
  328. package/esm/internal/common.js +0 -20
  329. package/esm/models/CamOverlayAPI/constants.d.ts +0 -11
  330. package/esm/models/CamOverlayAPI/constants.js +0 -11
  331. package/esm/models/CamOverlayAPI/fileSchema.d.ts +0 -28
  332. package/esm/models/CamOverlayAPI/fileSchema.js +0 -14
  333. package/esm/models/CamOverlayAPI/imagesSchema.js +0 -7
  334. package/esm/models/CamOverlayAPI/ptzSchema.js +0 -10
  335. package/esm/models/CamOverlayAPI/screenSharingSchema.js +0 -6
  336. package/esm/models/CamOverlayAPI/webCameraSharingSchema.js +0 -6
  337. package/esm/models/CamOverlayAPI/widgetsSchema.js +0 -24
  338. package/esm/node/DefaultClient.d.ts +0 -15
  339. package/esm/node/WsClient.d.ts +0 -39
  340. package/esm/node/WsEventClient.d.ts +0 -13
  341. package/esm/node/WsEventClient.js +0 -18
  342. package/esm/types/CamOverlayAPI.d.ts +0 -328
  343. package/esm/types/CamOverlayAPI.js +0 -14
  344. package/esm/types/CamScripterAPI.d.ts +0 -67
  345. package/esm/types/CamStreamerAPI.js +0 -25
  346. package/esm/web/DefaultClient.d.ts +0 -9
  347. package/esm/web/WsClient.d.ts +0 -13
  348. package/esm/web/index.d.ts +0 -2
  349. /package/cjs/{CreatePackage.d.ts → bin/CreatePackage.d.ts} +0 -0
  350. /package/cjs/{internal → node}/Digest.d.ts +0 -0
  351. /package/{esm/CreatePackage.d.ts → cjs/node/Digest.test.d.ts} +0 -0
  352. /package/cjs/types/{CamSwitcherEvents.d.ts → ws/CamSwitcherEvents.d.ts} +0 -0
  353. /package/cjs/types/{CamSwitcherEvents.js → ws/CamSwitcherEvents.js} +0 -0
  354. /package/esm/{internal → node}/Digest.js +0 -0
  355. /package/esm/types/{CamSwitcherEvents.js → ws/CamSwitcherEvents.js} +0 -0
  356. /package/{esm → types}/internal/constants.d.ts +0 -0
  357. /package/{esm → types}/internal/transformers.d.ts +0 -0
  358. /package/{esm/internal → types/node}/Digest.d.ts +0 -0
  359. /package/{esm/types → types/types/ws}/CamSwitcherEvents.d.ts +0 -0
  360. /package/{esm/node → types/web}/index.d.ts +0 -0
@@ -1,61 +1,187 @@
1
- import { isClient, responseStringify } from './internal/common';
2
- import { DefaultClient } from './node/DefaultClient';
3
- import { streamAttributesSchema, streamListSchema, } from './types/CamStreamerAPI';
1
+ import { z } from 'zod';
2
+ import { ProxyClient } from './internal/ProxyClient';
3
+ import { audioFileListSchema, storageListSchema, streamSchema, } from './types/CamStreamerAPI/CamStreamerAPI';
4
+ import { ErrorWithResponse, UtcTimeFetchError, WsAuthorizationError, MigrationError, ParsingBlobError, } from './errors/errors';
5
+ import { oldStringStreamSchema, oldStringStreamSchemaWithId, } from './types/CamStreamerAPI/oldStreamSchema';
6
+ import { paramToUrl } from './internal/utils';
7
+ const BASE_PATH = '/local/camstreamer';
4
8
  export class CamStreamerAPI {
5
9
  client;
6
- constructor(options = {}) {
7
- if (isClient(options)) {
8
- this.client = options;
10
+ constructor(client) {
11
+ this.client = client;
12
+ }
13
+ static getProxyPath = () => `${BASE_PATH}/proxy.cgi`;
14
+ getClient(proxyParams) {
15
+ return proxyParams ? new ProxyClient(this.client, proxyParams) : this.client;
16
+ }
17
+ async wsAuthorization(options) {
18
+ const res = await this._getJson(`${BASE_PATH}/ws_authorization.cgi`, undefined, options);
19
+ if (res.status !== 200) {
20
+ throw new WsAuthorizationError(res.message);
9
21
  }
10
- else {
11
- this.client = new DefaultClient(options);
22
+ return z.string().parse(res.data);
23
+ }
24
+ async getUtcTime(options) {
25
+ const res = await this._getJson(`${BASE_PATH}/get_utc_time.cgi`, undefined, options);
26
+ if (res.status !== 200) {
27
+ throw new UtcTimeFetchError(res.message);
28
+ }
29
+ return z.number().parse(res.data);
30
+ }
31
+ async getStreamList(options) {
32
+ const res = await this._getJson(`${BASE_PATH}/stream_list.cgi`, { action: 'get' }, options);
33
+ const oldStreamListRecord = z.record(z.string(), oldStringStreamSchema).safeParse(res.data);
34
+ if (oldStreamListRecord.success) {
35
+ const data = Object.entries(oldStreamListRecord.data).map(([id, streamData]) => ({
36
+ id: parseInt(id),
37
+ ...parseCameraStreamResponse(streamData),
38
+ }));
39
+ throw new MigrationError([], data);
40
+ }
41
+ const newStreamData = [];
42
+ const oldStreamData = [];
43
+ for (const streamData of res.data.streamList) {
44
+ const newStreamParse = streamSchema.safeParse(streamData);
45
+ if (newStreamParse.success) {
46
+ newStreamData.push(newStreamParse.data);
47
+ continue;
48
+ }
49
+ const oldStreamParse = oldStringStreamSchemaWithId.safeParse(streamData);
50
+ if (oldStreamParse.success) {
51
+ oldStreamData.push({
52
+ id: parseInt(oldStreamParse.data.id),
53
+ ...parseCameraStreamResponse(oldStreamParse.data),
54
+ });
55
+ continue;
56
+ }
57
+ throw new Error('Failed to parse some stream entries');
12
58
  }
59
+ if (oldStreamData.length > 0) {
60
+ throw new MigrationError(newStreamData, oldStreamData);
61
+ }
62
+ return newStreamData;
63
+ }
64
+ async setStreamList(streamList, options) {
65
+ await this._postJsonEncoded(`${BASE_PATH}/stream_list.cgi`, JSON.stringify({ streamList }), {
66
+ action: 'set',
67
+ }, options);
13
68
  }
14
- async getStreamList() {
15
- const streamListRes = await this.get('/local/camstreamer/stream/list.cgi');
16
- return streamListSchema.parse(streamListRes.data);
69
+ async getStream(streamId, options) {
70
+ const res = await this._getJson(`${BASE_PATH}/stream_list.cgi`, { action: 'get', stream_id: streamId }, options);
71
+ const newStream = streamSchema.safeParse(res.data);
72
+ if (newStream.success) {
73
+ return newStream.data;
74
+ }
75
+ const oldStream = oldStringStreamSchema.passthrough().parse(res.data);
76
+ throw new MigrationError([], [{ id: streamId, ...parseCameraStreamResponse(oldStream) }]);
17
77
  }
18
- async getStream(streamID) {
19
- const stream = await this.get(`/local/camstreamer/stream/get.cgi?stream_id=${streamID}`);
20
- return streamAttributesSchema.parse(stream.data);
78
+ async setStream(streamId, streamData, options) {
79
+ await this._postJsonEncoded(`${BASE_PATH}/stream_list.cgi`, JSON.stringify(streamData), {
80
+ action: 'set',
81
+ stream_id: streamId,
82
+ }, options);
21
83
  }
22
- async getStreamParameter(streamID, paramName) {
23
- const stream = await this.get(`/local/camstreamer/stream/get.cgi?stream_id=${streamID}`);
24
- return stream.data[paramName];
84
+ async isStreaming(streamId, options) {
85
+ const res = await this._getJson(`${BASE_PATH}/get_streamstat.cgi`, { stream_id: streamId }, options);
86
+ return res.data.is_streaming === 1;
25
87
  }
26
- async setStream(streamID, params) {
27
- const { streamDelay, startTime, stopTime, ...rest } = params;
28
- await this.get('/local/camstreamer/stream/set.cgi', {
29
- stream_id: streamID,
30
- streamDelay: streamDelay ?? '',
31
- startTime: startTime ?? 'null',
32
- stopTime: stopTime ?? 'null',
33
- ...rest,
34
- });
88
+ async listFiles(options) {
89
+ const res = await this._getJson(`${BASE_PATH}/upload_audio.cgi`, { action: 'list' }, options);
90
+ return audioFileListSchema.parse(res.data);
35
91
  }
36
- async setStreamParameter(streamID, paramName, value) {
37
- await this.get(`/local/camstreamer/stream/set.cgi?stream_id=${streamID}&${paramName}=${value}`);
92
+ async uploadFile(formData, storage, options) {
93
+ await this._post(`${BASE_PATH}/upload_audio.cgi`, formData, {
94
+ action: 'upload',
95
+ storage: storage,
96
+ }, options);
38
97
  }
39
- async isStreaming(streamID) {
40
- const response = await this.get(`/local/camstreamer/get_streamstat.cgi?stream_id=${streamID}`);
41
- return response.data.is_streaming === 1;
98
+ async removeFile(fileParams, options) {
99
+ await this._postUrlEncoded(`${BASE_PATH}/upload_audio.cgi`, { action: 'remove', ...fileParams }, options, undefined);
42
100
  }
43
- async deleteStream(streamID) {
44
- await this.get('/local/camstreamer/stream/remove.cgi', { stream_id: streamID });
101
+ async getFileStorage(options) {
102
+ const res = await this._getJson(`${BASE_PATH}/upload_audio.cgi`, { action: 'get_storage' }, options);
103
+ return storageListSchema.parse(res.data);
45
104
  }
46
- wsAutoratization() {
47
- return this.get('/local/camstreamer/ws_authorization.cgi');
105
+ async getFileFromCamera(path, options) {
106
+ return await this._getBlob(`${BASE_PATH}/audio.cgi`, { path }, options);
48
107
  }
49
- async getUtcTime() {
50
- return await this.get('/local/camstreamer/get_utc_time.cgi');
108
+ async _getJson(path, parameters, options) {
109
+ const agent = this.getClient(options?.proxyParams);
110
+ const res = await agent.get({ path, parameters, timeout: options?.timeout });
111
+ if (res.ok) {
112
+ return await res.json();
113
+ }
114
+ else {
115
+ throw new ErrorWithResponse(res);
116
+ }
117
+ }
118
+ async _getBlob(path, parameters, options) {
119
+ const agent = this.getClient(options?.proxyParams);
120
+ const res = await agent.get({ path, parameters, timeout: options?.timeout });
121
+ if (res.ok) {
122
+ return await this.parseBlobResponse(res);
123
+ }
124
+ else {
125
+ throw new ErrorWithResponse(res);
126
+ }
127
+ }
128
+ async parseBlobResponse(response) {
129
+ try {
130
+ return (await response.blob());
131
+ }
132
+ catch (err) {
133
+ throw new ParsingBlobError(err);
134
+ }
135
+ }
136
+ async _postUrlEncoded(path, parameters, options, headers) {
137
+ const data = paramToUrl(parameters);
138
+ const baseHeaders = { 'Content-Type': 'application/x-www-form-urlencoded' };
139
+ return this._post(path, data, undefined, options, { ...baseHeaders, ...headers });
140
+ }
141
+ async _postJsonEncoded(path, data, parameters, options, headers) {
142
+ const agent = this.getClient(options?.proxyParams);
143
+ const baseHeaders = { 'Accept': 'application/json', 'Content-Type': 'application/json' };
144
+ return agent.post({
145
+ path,
146
+ data,
147
+ parameters,
148
+ timeout: options?.timeout,
149
+ headers: { ...baseHeaders, ...headers },
150
+ });
51
151
  }
52
- async get(path, parameters) {
53
- const res = await this.client.get(path, parameters);
152
+ async _post(path, data, parameters, options, headers) {
153
+ const agent = this.getClient(options?.proxyParams);
154
+ const res = await agent.post({ path, data, parameters, headers, timeout: options?.timeout });
54
155
  if (res.ok) {
55
156
  return await res.json();
56
157
  }
57
158
  else {
58
- throw new Error(await responseStringify(res));
159
+ throw new ErrorWithResponse(res);
59
160
  }
60
161
  }
61
162
  }
163
+ export const parseCameraStreamResponse = (cameraStreamData) => {
164
+ return {
165
+ enabled: parseInt(cameraStreamData.enabled),
166
+ active: parseInt(cameraStreamData.active),
167
+ audioSource: cameraStreamData.audioSource,
168
+ avSyncMsec: parseInt(cameraStreamData.avSyncMsec),
169
+ internalVapixParameters: cameraStreamData.internalVapixParameters,
170
+ userVapixParameters: cameraStreamData.userVapixParameters,
171
+ outputParameters: cameraStreamData.outputParameters,
172
+ outputType: cameraStreamData.outputType,
173
+ mediaServerUrl: cameraStreamData.mediaServerUrl,
174
+ inputType: cameraStreamData.inputType,
175
+ inputUrl: cameraStreamData.inputUrl,
176
+ forceStereo: parseInt(cameraStreamData.forceStereo),
177
+ streamDelay: isNaN(parseInt(cameraStreamData.streamDelay)) ? null : parseInt(cameraStreamData.streamDelay),
178
+ statusLed: parseInt(cameraStreamData.statusLed),
179
+ statusPort: cameraStreamData.statusPort,
180
+ callApi: parseInt(cameraStreamData.callApi),
181
+ trigger: cameraStreamData.trigger,
182
+ schedule: cameraStreamData.schedule,
183
+ prepareAhead: parseInt(cameraStreamData.prepareAhead),
184
+ startTime: isNaN(parseInt(cameraStreamData.startTime)) ? null : parseInt(cameraStreamData.startTime),
185
+ stopTime: isNaN(parseInt(cameraStreamData.stopTime)) ? null : parseInt(cameraStreamData.stopTime),
186
+ };
187
+ };
@@ -1,13 +1,13 @@
1
1
  import { z } from 'zod';
2
- import { AddNewClipError } from './errors/errors';
3
- import { isNullish, responseStringify } from './internal/common';
4
- import { storageInfoListSchema, outputInfoSchema, audioPushInfoSchema, clipListSchema, playlistQueueSchema, streamSaveLoadSchema, clipSaveLoadSchema, playlistSaveLoadSchema, trackerSaveLoadSchema, } from './types/CamSwitcherAPI';
5
- import { networkCameraListSchema } from './types/common';
2
+ import { AddNewClipError, JsonParseError, ParameterNotFoundError, ErrorWithResponse } from './errors/errors';
3
+ import { isClip, isNullish } from './internal/utils';
4
+ import { storageInfoListSchema, outputInfoSchema, audioPushInfoSchema, clipListSchema, playlistQueueSchema, streamSaveLoadSchema, clipSaveLoadSchema, playlistSaveLoadSchema, trackerSaveLoadSchema, secondaryAudioSettingsSchema, globalAudioSettingsSchema, } from './types/CamSwitcherAPI';
5
+ import { networkCameraListSchema, } from './types/common';
6
6
  import { VapixAPI } from './VapixAPI';
7
7
  import { isFirmwareVersionAtLeast } from './internal/versionCompare';
8
- import { isClip } from './internal/utils';
9
8
  import { FIRMWARE_WITH_BITRATE_MODES_SUPPORT } from './internal/constants';
10
- const baseUrl = '/local/camswitcher/api';
9
+ import { ProxyClient } from './internal/ProxyClient';
10
+ const BASE_PATH = '/local/camswitcher/api';
11
11
  export class CamSwitcherAPI {
12
12
  client;
13
13
  CustomFormData;
@@ -15,111 +15,127 @@ export class CamSwitcherAPI {
15
15
  constructor(client, CustomFormData = FormData) {
16
16
  this.client = client;
17
17
  this.CustomFormData = CustomFormData;
18
- this.vapixAgent = new VapixAPI(client, () => '');
19
- }
20
- static getProxyUrlPath = () => `${baseUrl}/proxy.cgi`;
21
- static getWsEventsUrlPath = () => `/local/camswitcher/events`;
22
- static getClipPreviewUrlPath = (id, storage) => `${baseUrl}/clip_preview.cgi?clip_name=${id}&storage=${storage}`;
23
- async generateSilence(sampleRate, channels) {
24
- await this.client.get(`${baseUrl}/generate_silence.cgi`, {
25
- sample_rate: sampleRate.toString(),
26
- channels,
18
+ this.vapixAgent = new VapixAPI(client);
19
+ }
20
+ static getProxyPath = () => `${BASE_PATH}/proxy.cgi`;
21
+ static getWsEventsPath = () => `/local/camswitcher/events`;
22
+ static getClipPreviewPath = (clipId, storage) => `${BASE_PATH}/clip_preview.cgi?clip_name=${clipId}&storage=${storage}`;
23
+ getClient(proxyParams) {
24
+ return proxyParams ? new ProxyClient(this.client, proxyParams) : this.client;
25
+ }
26
+ async checkCameraTime(options) {
27
+ const res = await this._getJson(`${BASE_PATH}/camera_time.cgi`, undefined, options);
28
+ return z.boolean().parse(res.data);
29
+ }
30
+ async getNetworkCameraList(options) {
31
+ const res = await this._getJson(`${BASE_PATH}/network_camera_list.cgi`, undefined, options);
32
+ return networkCameraListSchema.parse(res.data);
33
+ }
34
+ async generateSilence(sampleRate, channels, options) {
35
+ const agent = this.getClient(options?.proxyParams);
36
+ await agent.get({
37
+ path: `${BASE_PATH}/generate_silence.cgi`,
38
+ parameters: {
39
+ sample_rate: sampleRate.toString(),
40
+ channels,
41
+ },
42
+ timeout: options?.timeout,
27
43
  });
28
44
  }
29
- async checkCameraTime() {
30
- const data = await this.get(`${baseUrl}/camera_time.cgi`);
31
- return z.boolean().parse(data);
32
- }
33
- async getIpListFromNetworkCheck() {
34
- const data = await this.get(`${baseUrl}/network_camera_list.cgi`);
35
- return networkCameraListSchema.parse(data);
36
- }
37
- async getMaxFps(source) {
38
- const data = await this.get(`${baseUrl}/get_max_framerate.cgi`, {
39
- video_source: source.toString(),
40
- });
41
- return z.number().parse(data);
45
+ async getMaxFps(source, options) {
46
+ const res = await this._getJson(`${BASE_PATH}/get_max_framerate.cgi`, {
47
+ video_source: source,
48
+ }, options);
49
+ return z.number().parse(res.data);
42
50
  }
43
- async getStorageInfo() {
44
- const data = await this.get(`${baseUrl}/get_storage.cgi`);
45
- return storageInfoListSchema.parse(data);
51
+ async getStorageInfo(options) {
52
+ const res = await this._getJson(`${BASE_PATH}/get_storage.cgi`, undefined, options);
53
+ return storageInfoListSchema.parse(res.data);
46
54
  }
47
- async wsAuthorization() {
48
- const data = await this.get(`${baseUrl}/ws_authorization.cgi`);
49
- return z.string().parse(data);
55
+ async wsAuthorization(options) {
56
+ const res = await this._getJson(`${BASE_PATH}/ws_authorization.cgi`, undefined, options);
57
+ return z.string().parse(res.data);
50
58
  }
51
- async getOutputInfo() {
52
- const data = await this.get(`${baseUrl}/output_info.cgi`);
53
- return outputInfoSchema.parse(data);
59
+ async getOutputInfo(options) {
60
+ const res = await this._getJson(`${BASE_PATH}/output_info.cgi`, undefined, options);
61
+ return outputInfoSchema.parse(res.data);
54
62
  }
55
- async getAudioPushInfo() {
56
- const data = await this.get(`${baseUrl}/audio_push_info.cgi`);
57
- return audioPushInfoSchema.parse(data);
63
+ async getAudioPushInfo(options) {
64
+ const res = await this._getJson(`${BASE_PATH}/audio_push_info.cgi`, undefined, options);
65
+ return audioPushInfoSchema.parse(res.data);
58
66
  }
59
- async getStreamSaveList() {
60
- const data = await this.get(`${baseUrl}/streams.cgi`, { action: 'get' });
61
- return streamSaveLoadSchema.parse(data);
67
+ async getStreamSaveList(options) {
68
+ const res = await this._getJson(`${BASE_PATH}/streams.cgi`, { action: 'get' }, options);
69
+ return streamSaveLoadSchema.parse(res.data);
62
70
  }
63
- async getClipSaveList() {
64
- const data = await this.get(`${baseUrl}/clips.cgi`, { action: 'get' });
65
- return clipSaveLoadSchema.parse(data);
71
+ async getClipSaveList(options) {
72
+ const res = await this._getJson(`${BASE_PATH}/clips.cgi`, { action: 'get' }, options);
73
+ return clipSaveLoadSchema.parse(res.data);
66
74
  }
67
- async getPlaylistSaveList() {
68
- const data = await this.get(`${baseUrl}/playlists.cgi`, { action: 'get' });
69
- return playlistSaveLoadSchema.parse(data);
75
+ async getPlaylistSaveList(options) {
76
+ const res = await this._getJson(`${BASE_PATH}/playlists.cgi`, { action: 'get' }, options);
77
+ return playlistSaveLoadSchema.parse(res.data);
70
78
  }
71
- async getTrackerSaveList() {
72
- const data = await this.get(`${baseUrl}/trackers.cgi`, { action: 'get' });
73
- return trackerSaveLoadSchema.parse(data);
79
+ async getTrackerSaveList(options) {
80
+ const res = await this._getJson(`${BASE_PATH}/trackers.cgi`, { action: 'get' }, options);
81
+ return trackerSaveLoadSchema.parse(res.data);
74
82
  }
75
- async setStreamSaveList(data) {
76
- return await this.set(`${baseUrl}/streams.cgi`, data, { action: 'set' });
83
+ async setStreamSaveList(data, options) {
84
+ await this._post(`${BASE_PATH}/streams.cgi`, JSON.stringify(data), { action: 'set' }, options);
77
85
  }
78
- async setClipSaveList(data) {
79
- return await this.set(`${baseUrl}/clips.cgi`, data, { action: 'set' });
86
+ async setClipSaveList(data, options) {
87
+ await this._post(`${BASE_PATH}/clips.cgi`, JSON.stringify(data), { action: 'set' }, options);
80
88
  }
81
- async setPlaylistSaveList(data) {
82
- return await this.set(`${baseUrl}/playlists.cgi`, data, { action: 'set' });
89
+ async setPlaylistSaveList(data, options) {
90
+ await this._post(`${BASE_PATH}/playlists.cgi`, JSON.stringify(data), { action: 'set' }, options);
83
91
  }
84
- async setTrackerSaveList(data) {
85
- return await this.set(`${baseUrl}/trackers.cgi`, data, { action: 'set' });
92
+ async setTrackerSaveList(data, options) {
93
+ await this._post(`${BASE_PATH}/trackers.cgi`, JSON.stringify(data), { action: 'set' }, options);
86
94
  }
87
- async playlistSwitch(playlistName) {
88
- await this.get(`${baseUrl}/playlist_switch.cgi?playlist_name=${playlistName}`);
95
+ async playlistSwitch(playlistName, options) {
96
+ await this._getJson(`${BASE_PATH}/playlist_switch.cgi`, { playlist_name: playlistName }, options);
89
97
  }
90
- async playlistQueuePush(playlistName) {
91
- await this.get(`${baseUrl}/playlist_queue_push.cgi?playlist_name=${playlistName}`);
98
+ async playlistQueuePush(playlistName, options) {
99
+ await this._getJson(`${BASE_PATH}/playlist_queue_push.cgi`, { playlist_name: playlistName }, options);
92
100
  }
93
- async playlistQueueClear() {
94
- await this.get(`${baseUrl}/playlist_queue_clear.cgi`);
101
+ async playlistQueueClear(options) {
102
+ await this._getJson(`${BASE_PATH}/playlist_queue_clear.cgi`, undefined, options);
95
103
  }
96
- async playlistQueueList() {
97
- const data = await this.get(`${baseUrl}/playlist_queue_list.cgi`);
98
- return playlistQueueSchema.parse(data).playlistQueueList;
104
+ async playlistQueueList(options) {
105
+ const res = await this._getJson(`${BASE_PATH}/playlist_queue_list.cgi`, undefined, options);
106
+ return playlistQueueSchema.parse(res.data).playlistQueueList;
99
107
  }
100
- async playlistQueuePlayNext() {
101
- await this.get(`${baseUrl}/playlist_queue_play_next.cgi`);
108
+ async playlistQueuePlayNext(options) {
109
+ await this._getJson(`${BASE_PATH}/playlist_queue_play_next.cgi`, undefined, options);
102
110
  }
103
- async addNewClip(file, clipType, storage, id, fileName) {
111
+ async addNewClip(file, clipType, storage, clipId, fileName, options) {
112
+ const path = `${BASE_PATH}/clip_upload.cgi`;
104
113
  const formData = new this.CustomFormData();
105
- formData.append('clip_name', id);
114
+ formData.append('clip_name', clipId);
106
115
  formData.append('clip_type', clipType);
107
116
  formData.append('file', file, fileName);
108
- const path = `${baseUrl}/clip_upload.cgi?storage=${storage}`;
109
- const res = await this.client.post(path, formData);
117
+ const agent = this.getClient(options?.proxyParams);
118
+ const res = await agent.post({
119
+ path,
120
+ data: formData,
121
+ parameters: {
122
+ storage: storage,
123
+ },
124
+ timeout: options?.timeout,
125
+ });
110
126
  const output = (await res.json());
111
127
  if (output.status !== 200) {
112
128
  throw new AddNewClipError(output.message);
113
129
  }
114
130
  }
115
- removeClip(id, storage) {
116
- return this.get(`${baseUrl}/clip_remove.cgi`, { clip_name: id, storage });
131
+ async removeClip(clipId, storage, options) {
132
+ await this._getJson(`${BASE_PATH}/clip_remove.cgi`, { clip_name: clipId, storage }, options);
117
133
  }
118
- async getClipList() {
119
- const data = await this.get(`${baseUrl}/clip_list.cgi`);
120
- return clipListSchema.parse(data).clip_list;
134
+ async getClipList(options) {
135
+ const res = await this._getJson(`${BASE_PATH}/clip_list.cgi`, undefined, options);
136
+ return clipListSchema.parse(res.data).clip_list;
121
137
  }
122
- setCamSwitchOptions(data, cameraFWVersion) {
138
+ setCamSwitchOptions(data, cameraFWVersion, options) {
123
139
  const bitrateVapixParams = parseBitrateOptionsToBitrateVapixParams(cameraFWVersion, data.bitrateMode, data);
124
140
  const saveData = {
125
141
  video: {
@@ -137,9 +153,9 @@ export class CamSwitcherAPI {
137
153
  },
138
154
  keyboard: data.keyboard,
139
155
  };
140
- return this.setParamFromCameraJSON(CSW_PARAM_NAMES.SETTINGS, saveData);
156
+ return this.setParamFromCameraJSON(CSW_PARAM_NAMES.SETTINGS, saveData, options);
141
157
  }
142
- setGlobalAudioSettings(settings) {
158
+ setGlobalAudioSettings(settings, options) {
143
159
  let acceptedType = 'NONE';
144
160
  if (settings.type === 'source' && settings.source) {
145
161
  if (isClip(settings.source)) {
@@ -155,9 +171,9 @@ export class CamSwitcherAPI {
155
171
  clip_name: settings.source,
156
172
  storage: settings.storage,
157
173
  };
158
- return this.setParamFromCameraJSON(CSW_PARAM_NAMES.MASTER_AUDIO, data);
174
+ return this.setParamFromCameraJSON(CSW_PARAM_NAMES.MASTER_AUDIO, data, options);
159
175
  }
160
- setSecondaryAudioSettings(settings) {
176
+ setSecondaryAudioSettings(settings, options) {
161
177
  const data = {
162
178
  type: settings.type,
163
179
  stream_name: settings.streamName ?? '',
@@ -166,19 +182,19 @@ export class CamSwitcherAPI {
166
182
  secondary_audio_level: settings.secondaryAudioLevel,
167
183
  master_audio_level: settings.masterAudioLevel,
168
184
  };
169
- return this.setParamFromCameraJSON(CSW_PARAM_NAMES.SECONDARY_AUDIO, data);
185
+ return this.setParamFromCameraJSON(CSW_PARAM_NAMES.SECONDARY_AUDIO, data, options);
170
186
  }
171
- setDefaultPlaylist(id) {
172
- const value = JSON.stringify({ default_playlist_id: id });
187
+ setDefaultPlaylist(playlistId, options) {
188
+ const value = JSON.stringify({ default_playlist_id: playlistId });
173
189
  return this.vapixAgent.setParameter({
174
190
  [CSW_PARAM_NAMES.DEFAULT_PLAYLIST]: value,
175
- }, null);
191
+ }, options);
176
192
  }
177
- setPermanentRtspUrlToken(token) {
178
- return this.vapixAgent.setParameter({ [CSW_PARAM_NAMES.RTSP_TOKEN]: token }, null);
193
+ setPermanentRtspUrlToken(token, options) {
194
+ return this.vapixAgent.setParameter({ [CSW_PARAM_NAMES.RTSP_TOKEN]: token }, options);
179
195
  }
180
- async getCamSwitchOptions() {
181
- const saveData = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.SETTINGS);
196
+ async getCamSwitchOptions(options) {
197
+ const saveData = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.SETTINGS, options);
182
198
  if (isNullish(saveData.video)) {
183
199
  return saveData;
184
200
  }
@@ -203,12 +219,12 @@ export class CamSwitcherAPI {
203
219
  keyboard: saveData.keyboard,
204
220
  };
205
221
  }
206
- async getGlobalAudioSettings() {
222
+ async getGlobalAudioSettings(options) {
207
223
  const settings = {
208
224
  type: 'fromSource',
209
225
  source: 'fromSource',
210
226
  };
211
- const res = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.MASTER_AUDIO);
227
+ const res = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.MASTER_AUDIO, options);
212
228
  if (res.type === 'STREAM') {
213
229
  settings.type = 'source';
214
230
  settings.source = res.stream_name;
@@ -218,52 +234,52 @@ export class CamSwitcherAPI {
218
234
  settings.source = res.clip_name;
219
235
  settings.storage = res.storage;
220
236
  }
221
- return settings;
237
+ return globalAudioSettingsSchema.parse(settings);
222
238
  }
223
- async getSecondaryAudioSettings() {
224
- const res = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.SECONDARY_AUDIO);
239
+ async getSecondaryAudioSettings(options) {
240
+ const res = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.SECONDARY_AUDIO, options);
225
241
  const settings = {
226
242
  type: res.type ?? 'NONE',
227
243
  streamName: res.stream_name,
228
244
  clipName: res.clip_name,
229
- storage: res.storage,
245
+ storage: res.storage ?? 'SD_DISK',
230
246
  secondaryAudioLevel: res.secondary_audio_level ?? 1,
231
247
  masterAudioLevel: res.master_audio_level ?? 1,
232
248
  };
233
- return settings;
249
+ return secondaryAudioSettingsSchema.parse(settings);
234
250
  }
235
- async getPermanentRtspUrlToken() {
251
+ async getPermanentRtspUrlToken(options) {
236
252
  const paramName = CSW_PARAM_NAMES.RTSP_TOKEN;
237
- const res = await this.vapixAgent.getParameter([paramName], null);
238
- return res[paramName] ?? '';
253
+ const res = await this.vapixAgent.getParameter([paramName], options);
254
+ return z.string().parse(res[paramName] ?? '');
239
255
  }
240
- async get(path, parameters = {}) {
241
- const res = await this.client.get(path, parameters);
256
+ async _getJson(path, parameters, options) {
257
+ const agent = this.getClient(options?.proxyParams);
258
+ const res = await agent.get({ path, parameters, timeout: options?.timeout });
242
259
  if (res.ok) {
243
- const d = (await res.json());
244
- return d.data;
260
+ return await res.json();
245
261
  }
246
262
  else {
247
- throw new Error(await responseStringify(res));
263
+ throw new ErrorWithResponse(res);
248
264
  }
249
265
  }
250
- async set(path, data, parameters = {}) {
251
- const res = await this.client.post(path, JSON.stringify(data), parameters);
266
+ async _post(path, data, parameters, options, headers) {
267
+ const agent = this.getClient(options?.proxyParams);
268
+ const res = await agent.post({ path, data, parameters, timeout: options?.timeout, headers });
252
269
  if (res.ok) {
253
- const parsed = await res.json();
254
- return parsed.message === 'OK';
270
+ return await res.json();
255
271
  }
256
272
  else {
257
- throw new Error(await responseStringify(res));
273
+ throw new ErrorWithResponse(res);
258
274
  }
259
275
  }
260
- setParamFromCameraJSON(paramName, data) {
276
+ setParamFromCameraJSON(paramName, data, options) {
261
277
  const params = {};
262
278
  params[paramName] = JSON.stringify(data);
263
- return this.vapixAgent.setParameter(params, null);
279
+ return this.vapixAgent.setParameter(params, options);
264
280
  }
265
- async getParamFromCameraAndJSONParse(paramName) {
266
- const data = await this.vapixAgent.getParameter([paramName], null);
281
+ async getParamFromCameraAndJSONParse(paramName, options) {
282
+ const data = await this.vapixAgent.getParameter([paramName], options);
267
283
  if (data[paramName] !== undefined) {
268
284
  try {
269
285
  if (data[paramName] === '') {
@@ -274,10 +290,10 @@ export class CamSwitcherAPI {
274
290
  }
275
291
  }
276
292
  catch {
277
- throw new Error('Error: in JSON parsing of ' + paramName + '. Cannot parse: ' + data[paramName]);
293
+ throw new JsonParseError(paramName, data[paramName]);
278
294
  }
279
295
  }
280
- throw new Error("Error: no parametr '" + paramName + "' was found");
296
+ throw new ParameterNotFoundError(paramName);
281
297
  }
282
298
  }
283
299
  const CSW_PARAM_NAMES = {
@@ -291,7 +307,7 @@ const parseBitrateOptionsToBitrateVapixParams = (firmWareVersion, bitrateMode, c
291
307
  if (!isFirmwareVersionAtLeast(firmWareVersion, FIRMWARE_WITH_BITRATE_MODES_SUPPORT)) {
292
308
  return `videomaxbitrate=${cameraOptions.maximumBitRate}`;
293
309
  }
294
- if (bitrateMode === null) {
310
+ if (bitrateMode === undefined) {
295
311
  return '';
296
312
  }
297
313
  const data = {