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