camstreamerlib 4.0.0-beta.13 → 4.0.0-beta.130

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