camstreamerlib 4.0.0-beta.15 → 4.0.0-beta.151

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 (358) hide show
  1. package/README.md +143 -38
  2. package/cjs/CamOverlayAPI.d.ts +603 -327
  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 +3556 -14
  7. package/cjs/CamStreamerAPI.js +170 -52
  8. package/cjs/CamSwitcherAPI.d.ts +158 -42
  9. package/cjs/CamSwitcherAPI.js +148 -189
  10. package/cjs/PlaneTrackerAPI.d.ts +236 -0
  11. package/cjs/PlaneTrackerAPI.js +194 -0
  12. package/cjs/VapixAPI.d.ts +90 -44
  13. package/cjs/VapixAPI.js +338 -208
  14. package/cjs/{CreatePackage.js → bin/CreatePackage.js} +44 -18
  15. package/cjs/errors/errors.d.ts +75 -4
  16. package/cjs/errors/errors.js +142 -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} +2794 -767
  64. package/cjs/types/CamOverlayAPI/CamOverlayAPI.js +135 -0
  65. package/cjs/{models → types}/CamOverlayAPI/accuweatherSchema.d.ts +19 -19
  66. package/cjs/{models → types}/CamOverlayAPI/accuweatherSchema.js +7 -8
  67. package/cjs/{models → types}/CamOverlayAPI/customGraphicsSchema.d.ts +108 -107
  68. package/cjs/{models → types}/CamOverlayAPI/customGraphicsSchema.js +5 -6
  69. package/cjs/types/CamOverlayAPI/htmlOverlaySchema.d.ts +81 -0
  70. package/cjs/types/CamOverlayAPI/htmlOverlaySchema.js +21 -0
  71. package/{esm/models → cjs/types}/CamOverlayAPI/imagesSchema.d.ts +19 -19
  72. package/cjs/types/CamOverlayAPI/imagesSchema.js +9 -0
  73. package/cjs/{models → types}/CamOverlayAPI/index.d.ts +3 -4
  74. package/cjs/{models → types}/CamOverlayAPI/index.js +3 -4
  75. package/cjs/{models → types}/CamOverlayAPI/infotickerSchema.d.ts +27 -27
  76. package/cjs/{models → types}/CamOverlayAPI/infotickerSchema.js +6 -7
  77. package/{esm/models → cjs/types}/CamOverlayAPI/pipSchema.d.ts +21 -21
  78. package/cjs/{models → types}/CamOverlayAPI/pipSchema.js +5 -6
  79. package/{esm/models → cjs/types}/CamOverlayAPI/ptzCompassSchema.d.ts +18 -15
  80. package/cjs/{models → types}/CamOverlayAPI/ptzCompassSchema.js +5 -5
  81. package/cjs/{models → types}/CamOverlayAPI/ptzSchema.d.ts +28 -28
  82. package/cjs/types/CamOverlayAPI/ptzSchema.js +12 -0
  83. package/cjs/types/CamOverlayAPI/scoreBoardSchema.d.ts +357 -0
  84. package/cjs/types/CamOverlayAPI/scoreBoardSchema.js +132 -0
  85. package/{esm/models → cjs/types}/CamOverlayAPI/screenSharingSchema.d.ts +15 -15
  86. package/cjs/types/CamOverlayAPI/screenSharingSchema.js +8 -0
  87. package/{esm/models/CamOverlayAPI/widgetCommonSchema.d.ts → cjs/types/CamOverlayAPI/serviceCommonTypes.d.ts} +80 -60
  88. package/cjs/{models/CamOverlayAPI/widgetCommonSchema.js → types/CamOverlayAPI/serviceCommonTypes.js} +39 -21
  89. package/{esm/models → cjs/types}/CamOverlayAPI/webCameraSharingSchema.d.ts +15 -15
  90. package/cjs/types/CamOverlayAPI/webCameraSharingSchema.js +8 -0
  91. package/cjs/types/CamOverlayDrawingAPI.d.ts +48 -0
  92. package/cjs/types/CamOverlayDrawingAPI.js +2 -0
  93. package/cjs/types/CamOverlayPainter.d.ts +76 -0
  94. package/cjs/types/CamOverlayPainter.js +14 -0
  95. package/cjs/types/CamScripterAPI.d.ts +86 -23
  96. package/cjs/types/CamScripterAPI.js +24 -8
  97. package/cjs/types/CamScripterAPICameraEventsGenerator.d.ts +45 -0
  98. package/cjs/types/CamScripterAPICameraEventsGenerator.js +2 -0
  99. package/cjs/types/CamStreamerAPI/CamStreamerAPI.d.ts +26085 -0
  100. package/cjs/types/CamStreamerAPI/CamStreamerAPI.js +222 -0
  101. package/cjs/types/CamStreamerAPI/facebookSchema.d.ts +574 -0
  102. package/cjs/types/CamStreamerAPI/facebookSchema.js +23 -0
  103. package/cjs/types/CamStreamerAPI/index.d.ts +6 -0
  104. package/cjs/types/CamStreamerAPI/index.js +22 -0
  105. package/cjs/types/{CamStreamerAPI.d.ts → CamStreamerAPI/oldStreamSchema.d.ts} +104 -35
  106. package/cjs/types/CamStreamerAPI/oldStreamSchema.js +53 -0
  107. package/cjs/types/CamStreamerAPI/streamCommonTypes.d.ts +570 -0
  108. package/cjs/types/CamStreamerAPI/streamCommonTypes.js +123 -0
  109. package/cjs/types/CamStreamerAPI/streamsSchema.d.ts +8642 -0
  110. package/cjs/types/CamStreamerAPI/streamsSchema.js +81 -0
  111. package/cjs/types/CamStreamerAPI/windySchema.d.ts +534 -0
  112. package/cjs/types/CamStreamerAPI/windySchema.js +19 -0
  113. package/cjs/types/CamStreamerAPI/youtubeSchema.d.ts +542 -0
  114. package/cjs/types/CamStreamerAPI/youtubeSchema.js +22 -0
  115. package/cjs/types/CamSwitcherAPI.d.ts +205 -121
  116. package/cjs/types/CamSwitcherAPI.js +38 -1
  117. package/cjs/{events → types}/GenetecAgent.d.ts +47 -47
  118. package/cjs/types/GenetecAgent.js +31 -0
  119. package/cjs/types/PlaneTrackerAPI.d.ts +980 -0
  120. package/cjs/types/PlaneTrackerAPI.js +333 -0
  121. package/cjs/types/VapixAPI.d.ts +264 -22
  122. package/cjs/types/VapixAPI.js +68 -4
  123. package/cjs/types/VapixEvents.d.ts +15 -0
  124. package/cjs/types/VapixEvents.js +2 -0
  125. package/cjs/types/common.d.ts +43 -3
  126. package/cjs/types/common.js +17 -2
  127. package/cjs/types/ws/CamOverlayEvents.d.ts +88 -0
  128. package/cjs/types/ws/CamOverlayEvents.js +19 -0
  129. package/cjs/types/ws/CamStreamerEvents.d.ts +282 -0
  130. package/cjs/types/ws/CamStreamerEvents.js +36 -0
  131. package/cjs/types/ws/PlaneTrackerEvents.d.ts +1703 -0
  132. package/cjs/types/ws/PlaneTrackerEvents.js +207 -0
  133. package/cjs/web/DefaultClient.d.ts +7 -5
  134. package/cjs/web/DefaultClient.js +25 -11
  135. package/cjs/web/WsClient.d.ts +9 -5
  136. package/cjs/web/WsClient.js +16 -18
  137. package/cjs/ws/CamOverlayEvents.d.ts +8 -0
  138. package/cjs/ws/CamOverlayEvents.js +24 -0
  139. package/cjs/ws/CamStreamerEvents.d.ts +8 -0
  140. package/cjs/ws/CamStreamerEvents.js +24 -0
  141. package/cjs/ws/CamSwitcherEvents.d.ts +8 -0
  142. package/cjs/ws/CamSwitcherEvents.js +24 -0
  143. package/cjs/ws/PlaneTrackerEvents.d.ts +9 -0
  144. package/cjs/ws/PlaneTrackerEvents.js +30 -0
  145. package/esm/CamOverlayAPI.js +99 -184
  146. package/esm/CamScripterAPI.js +51 -57
  147. package/esm/CamStreamerAPI.js +168 -51
  148. package/esm/CamSwitcherAPI.js +151 -192
  149. package/esm/PlaneTrackerAPI.js +190 -0
  150. package/esm/VapixAPI.js +340 -210
  151. package/esm/{CreatePackage.js → bin/CreatePackage.js} +16 -16
  152. package/esm/errors/errors.js +124 -6
  153. package/esm/index.js +20 -8
  154. package/esm/internal/BasicAPI.js +89 -0
  155. package/esm/internal/ProxyClient.js +28 -34
  156. package/esm/{CamSwitcherEvents.js → internal/WsEvents.js} +31 -20
  157. package/esm/internal/constants.js +1 -0
  158. package/esm/internal/convertors.js +108 -0
  159. package/esm/internal/utils.js +0 -9
  160. package/esm/{CamOverlayDrawingAPI.js → node/CamOverlayDrawingAPI.js} +26 -18
  161. package/esm/{CamOverlayPainter → node/CamOverlayPainter}/Frame.js +33 -0
  162. package/esm/{CamOverlayPainter → node/CamOverlayPainter}/Painter.js +2 -13
  163. package/esm/{CamOverlayPainter → node/CamOverlayPainter}/ResourceManager.js +7 -5
  164. package/esm/{CamScripterAPICameraEventsGenerator.js → node/CamScripterAPICameraEventsGenerator.js} +11 -11
  165. package/esm/node/DefaultClient.js +12 -16
  166. package/esm/node/Digest.test.js +11 -0
  167. package/esm/node/HttpRequestSender.js +14 -4
  168. package/esm/node/HttpServer.js +1 -1
  169. package/esm/node/TimeZoneDaemon.js +25 -0
  170. package/esm/{VapixEvents.js → node/VapixEvents.js} +10 -10
  171. package/esm/node/WsClient.js +22 -15
  172. package/esm/{events → node/events}/AxisCameraStationEvents.js +18 -13
  173. package/esm/node/events/GenetecAgent.js +120 -0
  174. package/esm/node/index.js +18 -2
  175. package/esm/types/CamOverlayAPI/CamOverlayAPI.js +113 -0
  176. package/esm/{models → types}/CamOverlayAPI/accuweatherSchema.js +3 -4
  177. package/esm/{models → types}/CamOverlayAPI/customGraphicsSchema.js +3 -4
  178. package/esm/types/CamOverlayAPI/htmlOverlaySchema.js +18 -0
  179. package/esm/types/CamOverlayAPI/imagesSchema.js +6 -0
  180. package/esm/{models → types}/CamOverlayAPI/index.js +3 -4
  181. package/esm/{models → types}/CamOverlayAPI/infotickerSchema.js +3 -4
  182. package/esm/{models → types}/CamOverlayAPI/pipSchema.js +4 -5
  183. package/esm/{models → types}/CamOverlayAPI/ptzCompassSchema.js +4 -4
  184. package/esm/types/CamOverlayAPI/ptzSchema.js +9 -0
  185. package/esm/types/CamOverlayAPI/scoreBoardSchema.js +129 -0
  186. package/esm/types/CamOverlayAPI/screenSharingSchema.js +5 -0
  187. package/esm/{models/CamOverlayAPI/widgetCommonSchema.js → types/CamOverlayAPI/serviceCommonTypes.js} +38 -20
  188. package/esm/types/CamOverlayAPI/webCameraSharingSchema.js +5 -0
  189. package/esm/types/CamOverlayDrawingAPI.js +1 -0
  190. package/esm/types/CamOverlayPainter.js +11 -0
  191. package/esm/types/CamScripterAPI.js +23 -7
  192. package/esm/types/CamScripterAPICameraEventsGenerator.js +1 -0
  193. package/esm/types/CamStreamerAPI/CamStreamerAPI.js +199 -0
  194. package/esm/types/CamStreamerAPI/facebookSchema.js +17 -0
  195. package/esm/types/CamStreamerAPI/index.js +6 -0
  196. package/esm/types/CamStreamerAPI/oldStreamSchema.js +50 -0
  197. package/esm/types/CamStreamerAPI/streamCommonTypes.js +120 -0
  198. package/esm/types/CamStreamerAPI/streamsSchema.js +75 -0
  199. package/esm/types/CamStreamerAPI/windySchema.js +13 -0
  200. package/esm/types/CamStreamerAPI/youtubeSchema.js +16 -0
  201. package/esm/types/CamSwitcherAPI.js +38 -1
  202. package/esm/types/GenetecAgent.js +28 -0
  203. package/esm/types/PlaneTrackerAPI.js +330 -0
  204. package/esm/types/VapixAPI.js +67 -3
  205. package/esm/types/VapixEvents.js +1 -0
  206. package/esm/types/common.js +16 -1
  207. package/esm/types/ws/CamOverlayEvents.js +16 -0
  208. package/esm/types/ws/CamStreamerEvents.js +33 -0
  209. package/esm/types/ws/PlaneTrackerEvents.js +204 -0
  210. package/esm/web/DefaultClient.js +25 -11
  211. package/esm/web/WsClient.js +16 -18
  212. package/esm/ws/CamOverlayEvents.js +20 -0
  213. package/esm/ws/CamStreamerEvents.js +20 -0
  214. package/esm/ws/CamSwitcherEvents.js +20 -0
  215. package/esm/ws/PlaneTrackerEvents.js +26 -0
  216. package/package.json +44 -10
  217. package/{esm → types}/CamOverlayAPI.d.ts +603 -327
  218. package/types/CamScripterAPI.d.ts +43 -0
  219. package/types/CamStreamerAPI.d.ts +3558 -0
  220. package/types/CamSwitcherAPI.d.ts +168 -0
  221. package/types/PlaneTrackerAPI.d.ts +236 -0
  222. package/types/VapixAPI.d.ts +124 -0
  223. package/types/bin/CreatePackage.d.ts +1 -0
  224. package/types/errors/errors.d.ts +108 -0
  225. package/types/index.d.ts +28 -0
  226. package/types/internal/BasicAPI.d.ts +15 -0
  227. package/types/internal/ProxyClient.d.ts +10 -0
  228. package/types/internal/WsEvents.d.ts +38 -0
  229. package/{esm → types}/internal/constants.d.ts +1 -0
  230. package/types/internal/convertors.d.ts +6 -0
  231. package/types/internal/types.d.ts +47 -0
  232. package/{esm → types}/internal/utils.d.ts +1 -3
  233. package/{esm → types}/internal/versionCompare.d.ts +2 -2
  234. package/types/node/CamOverlayDrawingAPI.d.ts +41 -0
  235. package/{cjs → types/node}/CamOverlayPainter/Frame.d.ts +8 -37
  236. package/{esm → types/node}/CamOverlayPainter/Painter.d.ts +5 -21
  237. package/types/node/CamOverlayPainter/ResourceManager.d.ts +15 -0
  238. package/types/node/CamScripterAPICameraEventsGenerator.d.ts +31 -0
  239. package/types/node/DefaultClient.d.ts +16 -0
  240. package/types/node/Digest.test.d.ts +1 -0
  241. package/{esm → types}/node/HttpRequestSender.d.ts +1 -0
  242. package/{esm → types}/node/HttpServer.d.ts +1 -1
  243. package/types/node/TimeZoneDaemon.d.ts +6 -0
  244. package/types/node/VapixEvents.d.ts +16 -0
  245. package/types/node/WsClient.d.ts +30 -0
  246. package/types/node/events/AxisCameraStationEvents.d.ts +12 -0
  247. package/types/node/events/GenetecAgent.d.ts +16 -0
  248. package/types/node/index.d.ts +18 -0
  249. package/{esm/models/CamOverlayAPI/widgetsSchema.d.ts → types/types/CamOverlayAPI/CamOverlayAPI.d.ts} +2794 -767
  250. package/{esm/models → types/types}/CamOverlayAPI/accuweatherSchema.d.ts +19 -19
  251. package/{esm/models → types/types}/CamOverlayAPI/customGraphicsSchema.d.ts +108 -107
  252. package/types/types/CamOverlayAPI/htmlOverlaySchema.d.ts +81 -0
  253. package/{cjs/models → types/types}/CamOverlayAPI/imagesSchema.d.ts +19 -19
  254. package/{esm/models → types/types}/CamOverlayAPI/index.d.ts +3 -4
  255. package/{esm/models → types/types}/CamOverlayAPI/infotickerSchema.d.ts +27 -27
  256. package/{cjs/models → types/types}/CamOverlayAPI/pipSchema.d.ts +21 -21
  257. package/{cjs/models → types/types}/CamOverlayAPI/ptzCompassSchema.d.ts +18 -15
  258. package/{esm/models → types/types}/CamOverlayAPI/ptzSchema.d.ts +28 -28
  259. package/types/types/CamOverlayAPI/scoreBoardSchema.d.ts +357 -0
  260. package/{cjs/models → types/types}/CamOverlayAPI/screenSharingSchema.d.ts +15 -15
  261. package/{cjs/models/CamOverlayAPI/widgetCommonSchema.d.ts → types/types/CamOverlayAPI/serviceCommonTypes.d.ts} +80 -60
  262. package/{cjs/models → types/types}/CamOverlayAPI/webCameraSharingSchema.d.ts +15 -15
  263. package/types/types/CamOverlayDrawingAPI.d.ts +48 -0
  264. package/types/types/CamOverlayPainter.d.ts +76 -0
  265. package/types/types/CamScripterAPI.d.ts +130 -0
  266. package/types/types/CamScripterAPICameraEventsGenerator.d.ts +45 -0
  267. package/types/types/CamStreamerAPI/CamStreamerAPI.d.ts +26085 -0
  268. package/types/types/CamStreamerAPI/facebookSchema.d.ts +574 -0
  269. package/types/types/CamStreamerAPI/index.d.ts +6 -0
  270. package/{esm/types/CamStreamerAPI.d.ts → types/types/CamStreamerAPI/oldStreamSchema.d.ts} +104 -35
  271. package/types/types/CamStreamerAPI/streamCommonTypes.d.ts +570 -0
  272. package/types/types/CamStreamerAPI/streamsSchema.d.ts +8642 -0
  273. package/types/types/CamStreamerAPI/windySchema.d.ts +534 -0
  274. package/types/types/CamStreamerAPI/youtubeSchema.d.ts +542 -0
  275. package/{esm → types}/types/CamSwitcherAPI.d.ts +205 -121
  276. package/{esm/events → types/types}/GenetecAgent.d.ts +47 -47
  277. package/types/types/PlaneTrackerAPI.d.ts +980 -0
  278. package/{esm → types}/types/VapixAPI.d.ts +264 -22
  279. package/types/types/VapixEvents.d.ts +15 -0
  280. package/types/types/common.d.ts +77 -0
  281. package/types/types/ws/CamOverlayEvents.d.ts +88 -0
  282. package/types/types/ws/CamStreamerEvents.d.ts +282 -0
  283. package/types/types/ws/PlaneTrackerEvents.d.ts +1703 -0
  284. package/types/web/DefaultClient.d.ts +8 -0
  285. package/types/web/WsClient.d.ts +17 -0
  286. package/types/ws/CamOverlayEvents.d.ts +8 -0
  287. package/types/ws/CamStreamerEvents.d.ts +8 -0
  288. package/types/ws/CamSwitcherEvents.d.ts +8 -0
  289. package/types/ws/PlaneTrackerEvents.d.ts +9 -0
  290. package/cjs/CamOverlayDrawingAPI.d.ts +0 -86
  291. package/cjs/CamOverlayPainter/ResourceManager.d.ts +0 -14
  292. package/cjs/CamOverlayPainter/ResourceManager.js +0 -46
  293. package/cjs/CamScripterAPICameraEventsGenerator.d.ts +0 -74
  294. package/cjs/CamSwitcherEvents.d.ts +0 -18
  295. package/cjs/VapixEvents.d.ts +0 -43
  296. package/cjs/events/AxisCameraStationEvents.d.ts +0 -10
  297. package/cjs/events/GenetecAgent.js +0 -123
  298. package/cjs/models/CamOverlayAPI/constants.d.ts +0 -11
  299. package/cjs/models/CamOverlayAPI/constants.js +0 -14
  300. package/cjs/models/CamOverlayAPI/fileSchema.d.ts +0 -28
  301. package/cjs/models/CamOverlayAPI/fileSchema.js +0 -17
  302. package/cjs/models/CamOverlayAPI/imagesSchema.js +0 -10
  303. package/cjs/models/CamOverlayAPI/ptzSchema.js +0 -13
  304. package/cjs/models/CamOverlayAPI/screenSharingSchema.js +0 -9
  305. package/cjs/models/CamOverlayAPI/webCameraSharingSchema.js +0 -9
  306. package/cjs/models/CamOverlayAPI/widgetsSchema.js +0 -27
  307. package/cjs/node/WsEventClient.d.ts +0 -13
  308. package/cjs/node/WsEventClient.js +0 -22
  309. package/cjs/types/CamOverlayAPI.d.ts +0 -328
  310. package/cjs/types/CamOverlayAPI.js +0 -26
  311. package/cjs/types/CamStreamerAPI.js +0 -28
  312. package/esm/CamOverlayDrawingAPI.d.ts +0 -86
  313. package/esm/CamOverlayPainter/ResourceManager.d.ts +0 -14
  314. package/esm/CamScripterAPI.d.ts +0 -19
  315. package/esm/CamScripterAPICameraEventsGenerator.d.ts +0 -74
  316. package/esm/CamStreamerAPI.d.ts +0 -16
  317. package/esm/CamSwitcherAPI.d.ts +0 -52
  318. package/esm/CamSwitcherEvents.d.ts +0 -18
  319. package/esm/VapixAPI.d.ts +0 -78
  320. package/esm/VapixEvents.d.ts +0 -43
  321. package/esm/errors/errors.d.ts +0 -37
  322. package/esm/events/AxisCameraStationEvents.d.ts +0 -10
  323. package/esm/events/GenetecAgent.js +0 -119
  324. package/esm/index.d.ts +0 -16
  325. package/esm/internal/ProxyClient.d.ts +0 -11
  326. package/esm/internal/types.d.ts +0 -35
  327. package/esm/models/CamOverlayAPI/constants.d.ts +0 -11
  328. package/esm/models/CamOverlayAPI/constants.js +0 -11
  329. package/esm/models/CamOverlayAPI/fileSchema.d.ts +0 -28
  330. package/esm/models/CamOverlayAPI/fileSchema.js +0 -14
  331. package/esm/models/CamOverlayAPI/imagesSchema.js +0 -7
  332. package/esm/models/CamOverlayAPI/ptzSchema.js +0 -10
  333. package/esm/models/CamOverlayAPI/screenSharingSchema.js +0 -6
  334. package/esm/models/CamOverlayAPI/webCameraSharingSchema.js +0 -6
  335. package/esm/models/CamOverlayAPI/widgetsSchema.js +0 -24
  336. package/esm/node/DefaultClient.d.ts +0 -16
  337. package/esm/node/WsClient.d.ts +0 -39
  338. package/esm/node/WsEventClient.d.ts +0 -13
  339. package/esm/node/WsEventClient.js +0 -18
  340. package/esm/types/CamOverlayAPI.d.ts +0 -328
  341. package/esm/types/CamOverlayAPI.js +0 -14
  342. package/esm/types/CamScripterAPI.d.ts +0 -67
  343. package/esm/types/CamStreamerAPI.js +0 -25
  344. package/esm/types/common.d.ts +0 -37
  345. package/esm/web/DefaultClient.d.ts +0 -6
  346. package/esm/web/WsClient.d.ts +0 -13
  347. package/esm/web/index.d.ts +0 -2
  348. package/cjs/{CreatePackage.d.ts → bin/CreatePackage.d.ts} +0 -0
  349. package/cjs/{internal → node}/Digest.d.ts +0 -0
  350. package/{esm/CreatePackage.d.ts → cjs/node/Digest.test.d.ts} +0 -0
  351. package/{esm/types → cjs/types/ws}/CamSwitcherEvents.d.ts +8 -8
  352. package/cjs/types/{CamSwitcherEvents.js → ws/CamSwitcherEvents.js} +0 -0
  353. package/esm/{internal → node}/Digest.js +0 -0
  354. package/esm/types/{CamSwitcherEvents.js → ws/CamSwitcherEvents.js} +0 -0
  355. package/{esm → types}/internal/transformers.d.ts +0 -0
  356. package/{esm/internal → types/node}/Digest.d.ts +0 -0
  357. package/{cjs/types → types/types/ws}/CamSwitcherEvents.d.ts +8 -8
  358. /package/{esm/node → types/web}/index.d.ts +0 -0
package/cjs/VapixAPI.js CHANGED
@@ -1,57 +1,72 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VapixAPI = void 0;
4
- const prettifyXml = require("prettify-xml");
5
4
  const utils_1 = require("./internal/utils");
6
5
  const VapixAPI_1 = require("./types/VapixAPI");
7
6
  const errors_1 = require("./errors/errors");
8
- const ProxyClient_1 = require("./internal/ProxyClient");
9
7
  const zod_1 = require("zod");
10
8
  const fast_xml_parser_1 = require("fast-xml-parser");
11
- class VapixAPI {
12
- client;
13
- constructor(client, getProxyUrl) {
14
- this.client = new ProxyClient_1.ProxyClient(client, getProxyUrl);
15
- }
16
- async getUrlEncoded(proxy, path, parameters, headers = {}) {
9
+ const BasicAPI_1 = require("./internal/BasicAPI");
10
+ class VapixAPI extends BasicAPI_1.BasicAPI {
11
+ CustomFormData;
12
+ constructor(client, CustomFormData = FormData) {
13
+ super(client);
14
+ this.CustomFormData = CustomFormData;
15
+ }
16
+ async postUrlEncoded(path, parameters, headers, options) {
17
17
  const data = (0, utils_1.paramToUrl)(parameters);
18
18
  const head = { ...headers, 'Content-Type': 'application/x-www-form-urlencoded' };
19
- const res = await this.client.post(proxy, path, data, {}, head);
19
+ const agent = this.getClient(options?.proxyParams);
20
+ const res = await agent.post({ path, data, headers: head, timeout: options?.timeout });
20
21
  if (!res.ok) {
21
- throw new Error(await (0, utils_1.responseStringify)(res));
22
+ throw new errors_1.ErrorWithResponse(res);
22
23
  }
23
24
  return res;
24
25
  }
25
- async postJson(proxy, path, jsonData, headers = {}) {
26
- const data = JSON.stringify(jsonData);
27
- const head = { ...headers, 'Content-Type': 'application/json' };
28
- const res = await this.client.post(proxy, path, data, {}, head);
26
+ async postJson(path, data, headers, options) {
27
+ const agent = this.getClient(options?.proxyParams);
28
+ const jsonData = JSON.stringify(data);
29
+ const res = await agent.post({
30
+ path,
31
+ data: jsonData,
32
+ headers: { ...headers, 'Content-Type': 'application/json' },
33
+ timeout: options?.timeout,
34
+ });
29
35
  if (!res.ok) {
30
- throw new Error(await (0, utils_1.responseStringify)(res));
36
+ throw new errors_1.ErrorWithResponse(res);
31
37
  }
32
38
  return res;
33
39
  }
34
- async getCameraImage(params, proxy = null) {
35
- return await this.client.get(proxy, '/axis-cgi/jpg/image.cgi', params);
40
+ async getCameraImage(parameters, options) {
41
+ const agent = this.getClient(options?.proxyParams);
42
+ return (await agent.get({
43
+ path: '/axis-cgi/jpg/image.cgi',
44
+ parameters,
45
+ timeout: options?.timeout,
46
+ }));
36
47
  }
37
- async getEventDeclarations(proxy = null) {
48
+ async getEventDeclarations(options) {
38
49
  const data = '<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope">' +
39
50
  '<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' +
40
51
  'xmlns:xsd="http://www.w3.org/2001/XMLSchema">' +
41
52
  '<GetEventInstances xmlns="http://www.axis.com/vapix/ws/event1"/>' +
42
53
  '</s:Body>' +
43
54
  '</s:Envelope>';
44
- const res = await this.client.post(proxy, '/vapix/services', data, { 'Content-Type': 'application/soap+xml' });
55
+ const agent = this.getClient(options?.proxyParams);
56
+ const res = await agent.post({
57
+ path: '/vapix/services',
58
+ data,
59
+ headers: { 'Content-Type': 'application/soap+xml' },
60
+ });
45
61
  if (!res.ok) {
46
- throw new Error(await (0, utils_1.responseStringify)(res));
62
+ throw new errors_1.ErrorWithResponse(res);
47
63
  }
48
- const declarations = await res.text();
49
- return prettifyXml(declarations);
64
+ return await res.text();
50
65
  }
51
- async getSupportedAudioSampleRate(proxy = null) {
52
- const url = '/axis-cgi/audio/streamingcapabilities.cgi';
66
+ async getSupportedAudioSampleRate(options) {
67
+ const path = '/axis-cgi/audio/streamingcapabilities.cgi';
53
68
  const jsonData = { apiVersion: '1.0', method: 'list' };
54
- const res = await this.postJson(proxy, url, jsonData);
69
+ const res = await this._postJsonEncoded(path, jsonData, undefined, options);
55
70
  const encoders = VapixAPI_1.audioSampleRatesResponseSchema.parse(await res.json()).data.encoders;
56
71
  const data = encoders.aac ?? encoders.AAC ?? [];
57
72
  return data.map((item) => {
@@ -61,7 +76,7 @@ class VapixAPI {
61
76
  };
62
77
  });
63
78
  }
64
- async performAutofocus(proxy = null) {
79
+ async performAutofocus(options) {
65
80
  try {
66
81
  const data = {
67
82
  apiVersion: '1',
@@ -74,19 +89,19 @@ class VapixAPI {
74
89
  ],
75
90
  },
76
91
  };
77
- await this.postJson(proxy, '/axis-cgi/opticscontrol.cgi', data);
92
+ await this._postJsonEncoded('/axis-cgi/opticscontrol.cgi', data, undefined, options);
78
93
  }
79
94
  catch (err) {
80
- await this.getUrlEncoded(proxy, '/axis-cgi/opticssetup.cgi', {
95
+ await this._postUrlEncoded('/axis-cgi/opticssetup.cgi', {
81
96
  autofocus: 'perform',
82
97
  source: '1',
83
- });
98
+ }, options);
84
99
  }
85
100
  }
86
- async checkSDCard(proxy = null) {
87
- const res = await this.getUrlEncoded(proxy, '/axis-cgi/disks/list.cgi', {
101
+ async checkSDCard(options) {
102
+ const res = await this._postUrlEncoded('/axis-cgi/disks/list.cgi', {
88
103
  diskid: 'SD_DISK',
89
- });
104
+ }, options);
90
105
  const xmlText = await res.text();
91
106
  const parser = new fast_xml_parser_1.XMLParser({
92
107
  ignoreAttributes: false,
@@ -95,23 +110,23 @@ class VapixAPI {
95
110
  });
96
111
  const result = parser.parse(xmlText);
97
112
  const data = result.root.disks.disk;
98
- return {
113
+ return VapixAPI_1.sdCardInfoSchema.parse({
99
114
  totalSize: parseInt(data.totalsize),
100
115
  freeSize: parseInt(data.freesize),
101
116
  status: VapixAPI_1.sdCardWatchedStatuses.includes(data.status) ? data.status : 'disconnected',
102
- };
117
+ });
103
118
  }
104
- mountSDCard(proxy = null) {
105
- return this._doSDCardMountAction('MOUNT', proxy);
119
+ mountSDCard(options) {
120
+ return this._doSDCardMountAction('MOUNT', options);
106
121
  }
107
- unmountSDCard(proxy = null) {
108
- return this._doSDCardMountAction('UNMOUNT', proxy);
122
+ unmountSDCard(options) {
123
+ return this._doSDCardMountAction('UNMOUNT', options);
109
124
  }
110
- async _doSDCardMountAction(action, proxy = null) {
111
- const res = await this.getUrlEncoded(proxy, '/axis-cgi/disks/mount.cgi', {
125
+ async _doSDCardMountAction(action, options) {
126
+ const res = await this._postUrlEncoded('/axis-cgi/disks/mount.cgi', {
112
127
  action: action,
113
128
  diskid: 'SD_DISK',
114
- });
129
+ }, options);
115
130
  const textXml = await res.text();
116
131
  const parser = new fast_xml_parser_1.XMLParser({
117
132
  ignoreAttributes: false,
@@ -121,15 +136,15 @@ class VapixAPI {
121
136
  const result = parser.parse(textXml);
122
137
  const job = result.root.job;
123
138
  if (job.result !== 'OK') {
124
- throw new errors_1.SDCardActionError(action, await (0, utils_1.responseStringify)(res));
139
+ throw new errors_1.SDCardActionError(action, job.description);
125
140
  }
126
141
  return Number(job.jobid);
127
142
  }
128
- async fetchSDCardJobProgress(jobId, proxy = null) {
129
- const res = await this.getUrlEncoded(proxy, '/disks/job.cgi', {
143
+ async fetchSDCardJobProgress(jobId, options) {
144
+ const res = await this._postUrlEncoded('/axis-cgi/disks/job.cgi', {
130
145
  jobid: String(jobId),
131
146
  diskid: 'SD_DISK',
132
- });
147
+ }, options);
133
148
  const textXml = await res.text();
134
149
  const parser = new fast_xml_parser_1.XMLParser({
135
150
  ignoreAttributes: false,
@@ -138,19 +153,19 @@ class VapixAPI {
138
153
  });
139
154
  const job = parser.parse(textXml).root.job;
140
155
  if (job.result !== 'OK') {
141
- throw new errors_1.SDCardJobError();
156
+ throw new errors_1.SDCardJobError(job.description);
142
157
  }
143
158
  return Number(job.progress);
144
159
  }
145
- downloadCameraReport(proxy = null) {
146
- return this.getUrlEncoded(proxy, '/axis-cgi/serverreport.cgi', { mode: 'text' });
160
+ downloadCameraReport(options) {
161
+ return this._getText('/axis-cgi/serverreport.cgi', { mode: 'text' }, options);
147
162
  }
148
- getSystemLog(proxy = null) {
149
- return this.getUrlEncoded(proxy, '/axis-cgi/admin/systemlog.cgi');
163
+ getSystemLog(options) {
164
+ return this._postUrlEncoded('/axis-cgi/admin/systemlog.cgi', {}, options);
150
165
  }
151
- async getMaxFps(channel, proxy = null) {
166
+ async getMaxFps(channel, options) {
152
167
  const data = { apiVersion: '1.0', method: 'getCaptureModes' };
153
- const res = await this.postJson(proxy, '/axis-cgi/capturemode.cgi', data);
168
+ const res = await this._postJsonEncoded('/axis-cgi/capturemode.cgi', data, undefined, options);
154
169
  const response = VapixAPI_1.maxFpsResponseSchema.parse(await res.json());
155
170
  const channels = response.data;
156
171
  if (channels === undefined) {
@@ -168,21 +183,40 @@ class VapixAPI {
168
183
  if ((0, utils_1.isNullish)(captureMode.maxFPS)) {
169
184
  throw new errors_1.MaxFPSError('FPS_NOT_SPECIFIED');
170
185
  }
171
- return captureMode.maxFPS;
186
+ return zod_1.z.number().parse(captureMode.maxFPS);
172
187
  }
173
- async getTimezone(proxy = null) {
174
- const data = { apiVersion: '1.0', method: 'getDateTimeInfo' };
175
- const res = await this.postJson(proxy, '/axis-cgi/time.cgi', data);
176
- return (await res.json())?.timeZone ?? 'Europe/Prague';
188
+ async getTimezone(options) {
189
+ try {
190
+ const agent = this.getClient(options?.proxyParams);
191
+ const resV2 = await agent.get({ path: '/config/rest/time/v2/timeZone', timeout: options?.timeout });
192
+ if (!resV2.ok) {
193
+ throw new errors_1.ErrorWithResponse(resV2);
194
+ }
195
+ const json = await resV2.json();
196
+ const data = VapixAPI_1.timeZoneSchema.parse(json);
197
+ if (data.status === 'error') {
198
+ throw new errors_1.TimezoneFetchError(data.error.message);
199
+ }
200
+ return data.data.activeTimeZone;
201
+ }
202
+ catch (error) {
203
+ console.warn('Failed to fetch time zone data from time API v2:', error instanceof Error ? error.message : JSON.stringify(error));
204
+ console.warn('Falling back to deprecated time API v1');
205
+ }
206
+ const data = await this.getDateTimeInfo(options);
207
+ if (data.data.timeZone === undefined) {
208
+ throw new errors_1.TimezoneNotSetupError();
209
+ }
210
+ return zod_1.z.string().parse(data.data.timeZone);
177
211
  }
178
- async getDateTimeInfo(proxy = null) {
212
+ async getDateTimeInfo(options) {
179
213
  const data = { apiVersion: '1.0', method: 'getDateTimeInfo' };
180
- const res = await this.postJson(proxy, '/axis-cgi/time.cgi', data);
214
+ const res = await this._postJsonEncoded('/axis-cgi/time.cgi', data, undefined, options);
181
215
  return VapixAPI_1.dateTimeinfoSchema.parse(await res.json());
182
216
  }
183
- async getDevicesSettings(proxy = null) {
217
+ async getDevicesSettings(options) {
184
218
  const data = { apiVersion: '1.0', method: 'getDevicesSettings' };
185
- const res = await this.postJson(proxy, '/axis-cgi/audiodevicecontrol.cgi', data);
219
+ const res = await this._postJsonEncoded('/axis-cgi/audiodevicecontrol.cgi', data, undefined, options);
186
220
  const result = VapixAPI_1.audioDeviceRequestSchema.parse(await res.json());
187
221
  return result.data.devices.map((device) => ({
188
222
  ...device,
@@ -190,46 +224,45 @@ class VapixAPI {
190
224
  outputs: (device.outputs || []).sort((a, b) => a.id.localeCompare(b.id)),
191
225
  }));
192
226
  }
193
- async fetchRemoteDeviceInfo(payload, proxy = null) {
194
- const res = await this.postJson(proxy, '/axis-cgi/basicdeviceinfo.cgi', payload);
227
+ async fetchRemoteDeviceInfo(payload, options) {
228
+ const res = await this._postJsonEncoded('/axis-cgi/basicdeviceinfo.cgi', payload, undefined, options);
195
229
  const json = await res.json();
196
230
  if ((0, utils_1.isNullish)(json.data)) {
197
231
  throw new errors_1.NoDeviceInfoError();
198
232
  }
199
233
  return json.data;
200
234
  }
201
- async getHeaders(proxy = null) {
235
+ async getHeaders(options) {
202
236
  const data = { apiVersion: '1.0', method: 'list' };
203
- const res = await this.postJson(proxy, '/axis-cgi/customhttpheader.cgi', data);
237
+ const res = await this._postJsonEncoded('/axis-cgi/customhttpheader.cgi', data, undefined, options);
204
238
  return zod_1.z.object({ data: zod_1.z.record(zod_1.z.string()) }).parse(await res.json()).data;
205
239
  }
206
- async setHeaders(headers, proxy = null) {
240
+ async setHeaders(headers, options) {
207
241
  const data = { apiVersion: '1.0', method: 'set', params: headers };
208
- return this.postJson(proxy, '/axis-cgi/customhttpheader.cgi', data);
242
+ return this._postJsonEncoded('/axis-cgi/customhttpheader.cgi', data, undefined, options);
209
243
  }
210
- async getParameter(paramNames, proxy = null) {
211
- const response = await this.getUrlEncoded(proxy, '/axis-cgi/param.cgi', {
244
+ async getParameter(paramNames, options) {
245
+ const response = await this._postUrlEncoded('/axis-cgi/param.cgi', {
212
246
  action: 'list',
213
247
  group: (0, utils_1.arrayToUrl)(paramNames),
214
- });
215
- return parseParameters(await response.text());
248
+ }, options);
249
+ return VapixAPI.parseParameters(await response.text());
216
250
  }
217
- async setParameter(params, proxy = null) {
218
- const res = await this.getUrlEncoded(proxy, '/axis-cgi/param.cgi', {
251
+ async setParameter(params, options) {
252
+ const res = await this._postUrlEncoded('/axis-cgi/param.cgi', {
219
253
  ...params,
220
254
  action: 'update',
221
- });
255
+ }, options);
222
256
  const responseText = await res.text();
223
257
  if (responseText.startsWith('# Error')) {
224
- throw new Error(responseText);
258
+ throw new errors_1.SettingParameterError(responseText);
225
259
  }
226
- return true;
227
260
  }
228
- async getGuardTourList(proxy = null) {
261
+ async getGuardTourList(options) {
229
262
  const gTourList = new Array();
230
- const response = await this.getParameter('GuardTour', proxy);
263
+ const response = await this.getParameter('GuardTour', options);
231
264
  for (let i = 0; i < 20; i++) {
232
- const gTourBaseName = 'root.GuardTour.G' + i;
265
+ const gTourBaseName = 'GuardTour.G' + i;
233
266
  if (gTourBaseName + '.CamNbr' in response) {
234
267
  const gTour = {
235
268
  id: gTourBaseName,
@@ -241,7 +274,7 @@ class VapixAPI {
241
274
  tour: [],
242
275
  };
243
276
  for (let j = 0; j < 100; j++) {
244
- const tourBaseName = 'root.GuardTour.G' + i + '.Tour.T' + j;
277
+ const tourBaseName = 'GuardTour.G' + i + '.Tour.T' + j;
245
278
  if (tourBaseName + '.MoveSpeed' in response) {
246
279
  const tour = {
247
280
  moveSpeed: response[tourBaseName + '.MoveSpeed'],
@@ -259,18 +292,18 @@ class VapixAPI {
259
292
  break;
260
293
  }
261
294
  }
262
- return gTourList;
295
+ return VapixAPI_1.guardTourSchema.parse(gTourList);
263
296
  }
264
- setGuardTourEnabled(guardTourID, enable, proxy = null) {
265
- const options = {};
266
- options[guardTourID + '.Running'] = enable ? 'yes' : 'no';
267
- return this.setParameter(options, proxy);
297
+ setGuardTourEnabled(guardTourId, enable, options) {
298
+ const params = {};
299
+ params[guardTourId + '.Running'] = enable ? 'yes' : 'no';
300
+ return this.setParameter(params, options);
268
301
  }
269
- async getPTZPresetList(channel, proxy = null) {
270
- const res = await this.getUrlEncoded(proxy, '/axis-cgi/com/ptz.cgi', {
302
+ async getPTZPresetList(channel, options) {
303
+ const res = await this._postUrlEncoded('/axis-cgi/com/ptz.cgi', {
271
304
  query: 'presetposcam',
272
- camera: channel.toString(),
273
- });
305
+ camera: channel,
306
+ }, options);
274
307
  const text = await res.text();
275
308
  const lines = text.split(/[\r\n]/);
276
309
  const positions = [];
@@ -283,68 +316,131 @@ class VapixAPI {
283
316
  }
284
317
  }
285
318
  }
286
- return positions;
319
+ return zod_1.z.array(zod_1.z.string()).parse(positions);
287
320
  }
288
- async listPTZ(camera, proxy = null) {
321
+ async listPTZ(camera, options) {
289
322
  const url = `/axis-cgi/com/ptz.cgi`;
290
- const response = await this.getUrlEncoded(proxy, url, {
323
+ const response = await this._postUrlEncoded(url, {
291
324
  camera,
292
325
  query: 'presetposcamdata',
293
326
  format: 'json',
294
- });
327
+ }, options);
295
328
  const text = await response.text();
296
329
  if (text === '') {
297
330
  throw new errors_1.PtzNotSupportedError();
298
331
  }
299
- return parseCameraPtzResponse(text)[camera] ?? [];
332
+ return VapixAPI.parseCameraPtzResponse(text)[camera] ?? [];
300
333
  }
301
- async listPtzVideoSourceOverview(proxy = null) {
302
- const response = await this.getUrlEncoded(proxy, '/axis-cgi/com/ptz.cgi', {
334
+ async listPtzVideoSourceOverview(options) {
335
+ const response = await this._postUrlEncoded('/axis-cgi/com/ptz.cgi', {
303
336
  query: 'presetposall',
304
337
  format: 'json',
305
- });
338
+ }, options);
306
339
  const text = await response.text();
307
340
  if (text === '') {
308
341
  throw new errors_1.PtzNotSupportedError();
309
342
  }
310
- const data = parseCameraPtzResponse(text);
343
+ const data = VapixAPI.parseCameraPtzResponse(text);
311
344
  const res = {};
312
345
  Object.keys(data)
313
346
  .map(Number)
314
347
  .forEach((camera) => {
315
- if (data[camera] !== undefined) {
316
- res[camera - 1] = data[camera]?.map(({ data: itemData, ...d }) => d);
348
+ const item = data[camera];
349
+ if (item !== undefined) {
350
+ res[camera - 1] = item.map(({ data: itemData, ...d }) => d);
317
351
  }
318
352
  });
319
- return res;
353
+ return VapixAPI_1.ptzOverviewSchema.parse(res);
320
354
  }
321
- goToPreset(channel, presetName, proxy = null) {
322
- return this.getUrlEncoded(proxy, '/axis-cgi/com/ptz.cgi', {
355
+ goToPreset(channel, presetName, options) {
356
+ return this._postUrlEncoded('/axis-cgi/com/ptz.cgi', {
323
357
  camera: channel.toString(),
324
358
  gotoserverpresetname: presetName,
325
- });
359
+ }, options);
326
360
  }
327
- async getPtzPosition(camera, proxy = null) {
328
- const res = await this.getUrlEncoded(proxy, '/axis-cgi/com/ptz.cgi', {
361
+ async getPtzPosition(camera, options) {
362
+ const res = await this._postUrlEncoded('/axis-cgi/com/ptz.cgi', {
329
363
  query: 'position',
330
364
  camera: camera.toString(),
331
- });
332
- const params = parseParameters(await res.text());
333
- return {
365
+ }, options);
366
+ const params = VapixAPI.parseParameters(await res.text());
367
+ return VapixAPI_1.cameraPTZItemDataSchema.parse({
334
368
  pan: Number(params.pan),
335
369
  tilt: Number(params.tilt),
336
370
  zoom: Number(params.zoom),
337
- };
338
- }
339
- async getInputState(port, proxy = null) {
340
- const response = await (await this.getUrlEncoded(proxy, '/axis-cgi/io/port.cgi', { checkactive: port.toString() })).text();
341
- return response.split('=')[1]?.indexOf('active') === 0;
342
- }
343
- async setOutputState(port, active, proxy = null) {
344
- return this.getUrlEncoded(proxy, '/axis-cgi/io/port.cgi', { action: active ? `${port}:/` : `${port}:\\` });
371
+ });
345
372
  }
346
- async getApplicationList(proxy = null) {
347
- const res = await this.client.get(proxy, '/axis-cgi/applications/list.cgi');
373
+ async getPorts(options) {
374
+ const res = await this._postJsonEncoded('/axis-cgi/io/portmanagement.cgi', {
375
+ apiVersion: '1.0',
376
+ context: '',
377
+ method: 'getPorts',
378
+ }, undefined, options);
379
+ const portResponseParsed = VapixAPI_1.getPortsResponseSchema.parse(await res.json());
380
+ return portResponseParsed.data.items;
381
+ }
382
+ async setPorts(ports, options) {
383
+ await this._postJsonEncoded('/axis-cgi/io/portmanagement.cgi', {
384
+ apiVersion: '1.0',
385
+ context: '',
386
+ method: 'setPorts',
387
+ params: { ports },
388
+ }, undefined, options);
389
+ }
390
+ async setPortStateSequence(port, sequence, options) {
391
+ await this._postJsonEncoded('/axis-cgi/io/portmanagement.cgi', {
392
+ apiVersion: '1.0',
393
+ context: '',
394
+ method: 'setStateSequence',
395
+ params: { port, sequence },
396
+ }, undefined, options);
397
+ }
398
+ async addCameraUser(username, pass, sgrp, comment, options) {
399
+ return await this._postUrlEncoded('/axis-cgi/pwdgrp.cgi', {
400
+ action: 'add',
401
+ user: username,
402
+ pwd: pass,
403
+ grp: 'users',
404
+ sgrp,
405
+ comment,
406
+ }, options);
407
+ }
408
+ async getCameraUsers(options) {
409
+ const res = await this._postUrlEncoded('/axis-cgi/pwdgrp.cgi', {
410
+ action: 'get',
411
+ }, options);
412
+ return await res.text();
413
+ }
414
+ async editCameraUser(username, pass, options) {
415
+ return await this._postUrlEncoded('/axis-cgi/pwdgrp.cgi', {
416
+ action: 'update',
417
+ user: username,
418
+ pwd: pass,
419
+ }, options);
420
+ }
421
+ async getRecordingRuleList(options) {
422
+ const res = await this._getText('/axis-cgi/record/continuous/listconfiguration.cgi', undefined, options);
423
+ return VapixAPI.parseXmlResponse(res, 'continuousrecordingconfigurations');
424
+ }
425
+ async addRecordingRule(params, options) {
426
+ const res = await this._getText('/axis-cgi/record/continuous/addconfiguration.cgi', params, options);
427
+ return VapixAPI.parseXmlResponse(res, 'configure');
428
+ }
429
+ async removeRecordingRule(profileId, options) {
430
+ const res = await this._getText('/axis-cgi/record/continuous/removeconfiguration.cgi', {
431
+ profile: profileId,
432
+ }, options);
433
+ return VapixAPI.parseXmlResponse(res, 'remove');
434
+ }
435
+ async getDiskInfo(diskId = 'all', options) {
436
+ const res = await this._getText('/axis-cgi/disks/list.cgi', {
437
+ diskid: diskId,
438
+ }, options);
439
+ return VapixAPI.parseXmlResponse(res, 'disks');
440
+ }
441
+ async getApplicationList(options) {
442
+ const agent = this.getClient(options?.proxyParams);
443
+ const res = await agent.get({ path: '/axis-cgi/applications/list.cgi', timeout: options?.timeout });
348
444
  const xml = await res.text();
349
445
  const parser = new fast_xml_parser_1.XMLParser({
350
446
  ignoreAttributes: false,
@@ -352,122 +448,156 @@ class VapixAPI {
352
448
  allowBooleanAttributes: true,
353
449
  });
354
450
  const result = parser.parse(xml);
355
- return result.reply.application.map((app) => {
451
+ let apps = result.reply.application ?? [];
452
+ if (!Array.isArray(apps)) {
453
+ apps = [apps];
454
+ }
455
+ const appList = apps.map((app) => {
356
456
  return {
357
457
  ...app,
358
- appId: VapixAPI_1.APP_IDS.find((id) => id.toLowerCase() === app.Name.toLowerCase()) ?? null,
458
+ appId: VapixAPI_1.ALL_APP_IDS.find((id) => id.toLowerCase() === app.Name.toLowerCase()) ?? null,
359
459
  };
360
460
  });
361
- }
362
- async startApplication(applicationID, proxy = null) {
363
- const res = await this.client.get(proxy, '/axis-cgi/applications/control.cgi', {
364
- package: applicationID.toLowerCase(),
365
- action: 'start',
461
+ return VapixAPI_1.applicationListSchema.parse(appList);
462
+ }
463
+ async startApplication(applicationId, options) {
464
+ const agent = this.getClient(options?.proxyParams);
465
+ const res = await agent.get({
466
+ path: '/axis-cgi/applications/control.cgi',
467
+ parameters: {
468
+ package: applicationId.toLowerCase(),
469
+ action: 'start',
470
+ },
471
+ timeout: options?.timeout,
366
472
  });
367
473
  const text = (await res.text()).trim().toLowerCase();
368
474
  if (text !== 'ok' && !(text.startsWith('error:') && text.substring(7) === '6')) {
369
- throw new errors_1.ApplicationAPIError('START', await (0, utils_1.responseStringify)(res));
475
+ throw new errors_1.ApplicationAPIError('START', text);
370
476
  }
371
477
  }
372
- async restartApplication(applicationID, proxy = null) {
373
- const res = await this.client.get(proxy, '/axis-cgi/applications/control.cgi', {
374
- package: applicationID.toLowerCase(),
375
- action: 'restart',
478
+ async restartApplication(applicationId, options) {
479
+ const agent = this.getClient(options?.proxyParams);
480
+ const res = await agent.get({
481
+ path: '/axis-cgi/applications/control.cgi',
482
+ parameters: {
483
+ package: applicationId.toLowerCase(),
484
+ action: 'restart',
485
+ },
486
+ timeout: options?.timeout,
376
487
  });
377
488
  const text = (await res.text()).trim().toLowerCase();
378
489
  if (text !== 'ok') {
379
- throw new errors_1.ApplicationAPIError('RESTART', await (0, utils_1.responseStringify)(res));
490
+ throw new errors_1.ApplicationAPIError('RESTART', text);
380
491
  }
381
492
  }
382
- async stopApplication(applicationID, proxy = null) {
383
- const res = await this.client.get(proxy, '/axis-cgi/applications/control.cgi', {
384
- package: applicationID.toLowerCase(),
385
- action: 'stop',
493
+ async stopApplication(applicationId, options) {
494
+ const agent = this.getClient(options?.proxyParams);
495
+ const res = await agent.get({
496
+ path: '/axis-cgi/applications/control.cgi',
497
+ parameters: {
498
+ package: applicationId.toLowerCase(),
499
+ action: 'stop',
500
+ },
501
+ timeout: options?.timeout,
386
502
  });
387
503
  const text = (await res.text()).trim().toLowerCase();
388
504
  if (text !== 'ok' && !(text.startsWith('error:') && text.substring(7) === '6')) {
389
- throw new errors_1.ApplicationAPIError('STOP', await (0, utils_1.responseStringify)(res));
505
+ throw new errors_1.ApplicationAPIError('STOP', text);
390
506
  }
391
507
  }
392
- async installApplication(data, fileName) {
393
- const formData = new FormData();
508
+ async installApplication(data, fileName, options) {
509
+ const formData = new this.CustomFormData();
394
510
  formData.append('packfil', data, fileName);
395
- const res = await this.client.post(null, '/axis-cgi/applications/upload.cgi', formData, {}, {
396
- contentType: 'application/octet-stream',
511
+ const agent = this.getClient(options?.proxyParams);
512
+ const res = await agent.post({
513
+ path: '/axis-cgi/applications/upload.cgi',
514
+ data: formData,
515
+ headers: {
516
+ contentType: 'application/octet-stream',
517
+ },
518
+ timeout: options?.timeout ?? 300000,
397
519
  });
398
520
  if (!res.ok) {
399
- throw new Error(await (0, utils_1.responseStringify)(res));
521
+ throw new errors_1.ErrorWithResponse(res);
400
522
  }
401
523
  const text = await res.text();
402
524
  if (text.length > 5) {
403
- throw new Error('installing error: ' + text);
404
- }
405
- }
406
- }
407
- exports.VapixAPI = VapixAPI;
408
- const parseParameters = (response) => {
409
- const params = {};
410
- const lines = response.split(/[\r\n]/);
411
- for (const line of lines) {
412
- if (line.length === 0 || line.substring(0, 7) === '# Error') {
413
- continue;
414
- }
415
- const delimiterPos = line.indexOf('=');
416
- if (delimiterPos !== -1) {
417
- const paramName = line.substring(0, delimiterPos).replace('root.', '');
418
- const paramValue = line.substring(delimiterPos + 1);
419
- params[paramName] = paramValue;
525
+ throw new errors_1.ApplicationAPIError('INSTALL', text);
420
526
  }
421
527
  }
422
- return params;
423
- };
424
- const parseCameraPtzResponse = (response) => {
425
- const json = JSON.parse(response);
426
- const parsed = {};
427
- Object.keys(json).forEach((key) => {
428
- if (!key.startsWith('Camera ')) {
429
- return;
430
- }
431
- const camera = Number(key.replace('Camera ', ''));
432
- if (json[key].presets !== undefined) {
433
- parsed[camera] = parsePtz(json[key].presets);
434
- }
435
- });
436
- return parsed;
437
- };
438
- const parsePtz = (parsed) => {
439
- const res = [];
440
- parsed.forEach((value) => {
441
- const delimiterPos = value.indexOf('=');
442
- if (delimiterPos === -1) {
443
- return;
444
- }
445
- if (!value.startsWith('presetposno')) {
446
- return;
447
- }
448
- const id = Number(value.substring(11, delimiterPos));
449
- if (Number.isNaN(id)) {
450
- return;
528
+ static parseParameters = (response) => {
529
+ const params = {};
530
+ const lines = response.split(/[\r\n]/);
531
+ for (const line of lines) {
532
+ if (line.length === 0 || line.substring(0, 7) === '# Error') {
533
+ continue;
534
+ }
535
+ const delimiterPos = line.indexOf('=');
536
+ if (delimiterPos !== -1) {
537
+ const paramName = line.substring(0, delimiterPos).replace('root.', '');
538
+ const paramValue = line.substring(delimiterPos + 1);
539
+ params[paramName] = paramValue;
540
+ }
451
541
  }
452
- const data = value.substring(delimiterPos + 1).split(':');
453
- const getValue = (valueName) => {
454
- for (const d of data) {
455
- const p = d.split('=');
456
- if (p[0] === valueName) {
457
- return Number(p[1]);
458
- }
542
+ return params;
543
+ };
544
+ static parseCameraPtzResponse = (response) => {
545
+ const json = JSON.parse(response);
546
+ const parsed = {};
547
+ Object.keys(json).forEach((key) => {
548
+ if (!key.startsWith('Camera ')) {
549
+ return;
550
+ }
551
+ const camera = Number(key.replace('Camera ', ''));
552
+ if (json[key].presets !== undefined) {
553
+ parsed[camera] = VapixAPI.parsePtz(json[key].presets);
459
554
  }
460
- return 0;
461
- };
462
- res.push({
463
- id,
464
- name: data[0] ?? 'Preset ' + id,
465
- data: {
466
- pan: getValue('pan'),
467
- tilt: getValue('tilt'),
468
- zoom: getValue('zoom'),
469
- },
470
555
  });
471
- });
472
- return res;
473
- };
556
+ return parsed;
557
+ };
558
+ static parsePtz = (parsed) => {
559
+ const res = [];
560
+ parsed.forEach((value) => {
561
+ const delimiterPos = value.indexOf('=');
562
+ if (delimiterPos === -1) {
563
+ return;
564
+ }
565
+ if (!value.startsWith('presetposno')) {
566
+ return;
567
+ }
568
+ const id = Number(value.substring(11, delimiterPos));
569
+ if (Number.isNaN(id)) {
570
+ return;
571
+ }
572
+ const data = value.substring(delimiterPos + 1).split(':');
573
+ const getValue = (valueName) => {
574
+ for (const d of data) {
575
+ const p = d.split('=');
576
+ if (p[0] === valueName) {
577
+ return Number(p[1]);
578
+ }
579
+ }
580
+ return 0;
581
+ };
582
+ res.push({
583
+ id,
584
+ name: data[0] ?? 'Preset ' + id,
585
+ data: {
586
+ pan: getValue('pan'),
587
+ tilt: getValue('tilt'),
588
+ zoom: getValue('zoom'),
589
+ },
590
+ });
591
+ });
592
+ return res;
593
+ };
594
+ static parseXmlResponse = (xml, nodeName) => {
595
+ const doc = new DOMParser().parseFromString(xml, 'text/xml');
596
+ const node = doc.getElementsByTagName(nodeName);
597
+ if (node.length !== 1) {
598
+ throw new Error('Invalid XML from camera');
599
+ }
600
+ return node[0];
601
+ };
602
+ }
603
+ exports.VapixAPI = VapixAPI;