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