camstreamerlib 4.0.0-beta.8 → 4.0.0-beta.80
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 +863 -27
- package/cjs/CamOverlayAPI.js +135 -92
- package/cjs/CamScripterAPI.d.ts +44 -17
- package/cjs/CamScripterAPI.js +52 -42
- package/cjs/CamStreamerAPI.d.ts +70 -14
- package/cjs/CamStreamerAPI.js +100 -44
- package/cjs/CamSwitcherAPI.d.ts +158 -43
- package/cjs/CamSwitcherAPI.js +138 -122
- package/cjs/PlaneTrackerAPI.d.ts +239 -0
- package/cjs/PlaneTrackerAPI.js +247 -0
- package/cjs/VapixAPI.d.ts +94 -42
- package/cjs/VapixAPI.js +314 -232
- package/cjs/{CreatePackage.js → bin/CreatePackage.js} +44 -18
- package/cjs/errors/errors.d.ts +65 -4
- package/cjs/errors/errors.js +138 -7
- package/cjs/index.d.ts +20 -4
- package/cjs/index.js +28 -5
- package/cjs/internal/ProxyClient.d.ts +8 -9
- package/cjs/internal/ProxyClient.js +28 -32
- 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/cjs/{CamOverlayPainter → 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 +6 -5
- package/cjs/node/DefaultClient.js +10 -12
- 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/types/CamOverlayAPI/CamOverlayAPI.d.ts +4330 -0
- package/cjs/types/CamOverlayAPI/CamOverlayAPI.js +92 -0
- package/cjs/types/CamOverlayAPI/accuweatherSchema.d.ts +84 -0
- package/cjs/types/CamOverlayAPI/accuweatherSchema.js +47 -0
- package/cjs/types/CamOverlayAPI/customGraphicsSchema.d.ts +700 -0
- package/cjs/types/CamOverlayAPI/customGraphicsSchema.js +72 -0
- package/cjs/types/CamOverlayAPI/imagesSchema.d.ts +95 -0
- package/cjs/types/CamOverlayAPI/imagesSchema.js +9 -0
- package/cjs/types/CamOverlayAPI/index.d.ts +11 -0
- package/cjs/types/CamOverlayAPI/index.js +27 -0
- package/cjs/types/CamOverlayAPI/infotickerSchema.d.ts +96 -0
- package/cjs/types/CamOverlayAPI/infotickerSchema.js +26 -0
- package/cjs/types/CamOverlayAPI/pipSchema.d.ts +125 -0
- package/cjs/types/CamOverlayAPI/pipSchema.js +39 -0
- package/cjs/types/CamOverlayAPI/ptzCompassSchema.d.ts +96 -0
- package/cjs/types/CamOverlayAPI/ptzCompassSchema.js +26 -0
- package/cjs/types/CamOverlayAPI/ptzSchema.d.ts +118 -0
- 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/types/CamOverlayAPI/screenSharingSchema.d.ts +58 -0
- package/cjs/types/CamOverlayAPI/screenSharingSchema.js +8 -0
- package/cjs/types/CamOverlayAPI/serviceCommonTypes.d.ts +145 -0
- package/cjs/types/CamOverlayAPI/serviceCommonTypes.js +91 -0
- package/cjs/types/CamOverlayAPI/webCameraSharingSchema.d.ts +58 -0
- 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 +239 -0
- package/cjs/types/CamStreamerAPI/CamStreamerAPI.js +48 -0
- package/cjs/types/CamStreamerAPI/facebookSchema.d.ts +18 -0
- package/cjs/types/CamStreamerAPI/facebookSchema.js +11 -0
- package/cjs/types/CamStreamerAPI/hlsSchema.d.ts +18 -0
- package/cjs/types/CamStreamerAPI/hlsSchema.js +11 -0
- package/cjs/types/CamStreamerAPI/index.d.ts +9 -0
- package/cjs/types/CamStreamerAPI/index.js +25 -0
- package/cjs/types/CamStreamerAPI/mpegDvbSchema.d.ts +69 -0
- package/cjs/types/CamStreamerAPI/mpegDvbSchema.js +28 -0
- package/{esm/types/CamStreamerAPI.d.ts → cjs/types/CamStreamerAPI/oldStreamSchema.d.ts} +41 -43
- package/cjs/types/CamStreamerAPI/oldStreamSchema.js +50 -0
- package/cjs/types/CamStreamerAPI/rtmpSchema.d.ts +18 -0
- package/cjs/types/CamStreamerAPI/rtmpSchema.js +11 -0
- package/cjs/types/CamStreamerAPI/sdCardSchema.d.ts +18 -0
- package/cjs/types/CamStreamerAPI/sdCardSchema.js +11 -0
- package/cjs/types/CamStreamerAPI/streamCommonTypes.d.ts +17 -0
- package/cjs/types/CamStreamerAPI/streamCommonTypes.js +18 -0
- package/cjs/types/CamStreamerAPI/windySchema.d.ts +18 -0
- package/cjs/types/CamStreamerAPI/windySchema.js +11 -0
- package/cjs/types/CamStreamerAPI/youtubeSchema.d.ts +18 -0
- package/cjs/types/CamStreamerAPI/youtubeSchema.js +11 -0
- package/cjs/types/CamSwitcherAPI.d.ts +145 -66
- 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 +254 -164
- package/cjs/types/VapixAPI.js +66 -11
- 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 +1637 -0
- package/cjs/types/ws/PlaneTrackerEvents.js +196 -0
- package/cjs/web/DefaultClient.d.ts +7 -5
- package/cjs/web/DefaultClient.js +26 -10
- 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 +135 -92
- package/esm/CamScripterAPI.js +50 -40
- package/esm/CamStreamerAPI.js +98 -43
- package/esm/CamSwitcherAPI.js +136 -120
- package/esm/PlaneTrackerAPI.js +243 -0
- package/esm/VapixAPI.js +314 -232
- package/esm/{CreatePackage.js → bin/CreatePackage.js} +16 -16
- package/esm/errors/errors.js +120 -6
- package/esm/index.js +20 -4
- package/esm/internal/ProxyClient.js +28 -32
- 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 +10 -12
- 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/types/CamOverlayAPI/accuweatherSchema.js +44 -0
- package/esm/types/CamOverlayAPI/customGraphicsSchema.js +69 -0
- package/esm/types/CamOverlayAPI/imagesSchema.js +6 -0
- package/esm/types/CamOverlayAPI/index.js +11 -0
- package/esm/types/CamOverlayAPI/infotickerSchema.js +23 -0
- package/esm/types/CamOverlayAPI/pipSchema.js +36 -0
- package/esm/types/CamOverlayAPI/ptzCompassSchema.js +23 -0
- 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/types/CamOverlayAPI/serviceCommonTypes.js +88 -0
- 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 +38 -0
- package/esm/types/CamStreamerAPI/facebookSchema.js +5 -0
- package/esm/types/CamStreamerAPI/hlsSchema.js +5 -0
- package/esm/types/CamStreamerAPI/index.js +9 -0
- package/esm/types/CamStreamerAPI/mpegDvbSchema.js +22 -0
- package/esm/types/CamStreamerAPI/oldStreamSchema.js +47 -0
- package/esm/types/CamStreamerAPI/rtmpSchema.js +5 -0
- package/esm/types/CamStreamerAPI/sdCardSchema.js +5 -0
- package/esm/types/CamStreamerAPI/streamCommonTypes.js +15 -0
- package/esm/types/CamStreamerAPI/windySchema.js +5 -0
- package/esm/types/CamStreamerAPI/youtubeSchema.js +5 -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 -10
- 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 +193 -0
- package/esm/web/DefaultClient.js +26 -10
- 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 +44 -11
- package/types/CamOverlayAPI.d.ts +867 -0
- package/types/CamScripterAPI.d.ts +46 -0
- package/types/CamStreamerAPI.d.ts +72 -0
- package/types/CamSwitcherAPI.d.ts +167 -0
- package/types/PlaneTrackerAPI.d.ts +239 -0
- package/types/VapixAPI.d.ts +118 -0
- package/types/bin/CreatePackage.d.ts +1 -0
- package/types/errors/errors.d.ts +98 -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/{esm → 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/types/types/CamOverlayAPI/CamOverlayAPI.d.ts +4330 -0
- package/types/types/CamOverlayAPI/accuweatherSchema.d.ts +84 -0
- package/types/types/CamOverlayAPI/customGraphicsSchema.d.ts +700 -0
- package/types/types/CamOverlayAPI/imagesSchema.d.ts +95 -0
- package/types/types/CamOverlayAPI/index.d.ts +11 -0
- package/types/types/CamOverlayAPI/infotickerSchema.d.ts +96 -0
- package/types/types/CamOverlayAPI/pipSchema.d.ts +125 -0
- package/types/types/CamOverlayAPI/ptzCompassSchema.d.ts +96 -0
- package/types/types/CamOverlayAPI/ptzSchema.d.ts +118 -0
- package/types/types/CamOverlayAPI/scoreBoardSchema.d.ts +357 -0
- package/types/types/CamOverlayAPI/screenSharingSchema.d.ts +58 -0
- package/types/types/CamOverlayAPI/serviceCommonTypes.d.ts +145 -0
- package/types/types/CamOverlayAPI/webCameraSharingSchema.d.ts +58 -0
- 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 +239 -0
- package/types/types/CamStreamerAPI/facebookSchema.d.ts +18 -0
- package/types/types/CamStreamerAPI/hlsSchema.d.ts +18 -0
- package/types/types/CamStreamerAPI/index.d.ts +9 -0
- package/types/types/CamStreamerAPI/mpegDvbSchema.d.ts +69 -0
- package/{cjs/types/CamStreamerAPI.d.ts → types/types/CamStreamerAPI/oldStreamSchema.d.ts} +41 -43
- package/types/types/CamStreamerAPI/rtmpSchema.d.ts +18 -0
- package/types/types/CamStreamerAPI/sdCardSchema.d.ts +18 -0
- package/types/types/CamStreamerAPI/streamCommonTypes.d.ts +17 -0
- package/types/types/CamStreamerAPI/windySchema.d.ts +18 -0
- package/types/types/CamStreamerAPI/youtubeSchema.d.ts +18 -0
- package/{esm → types}/types/CamSwitcherAPI.d.ts +145 -66
- 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 +254 -164
- 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 +1637 -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 -39
- package/cjs/internal/common.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 -188
- package/cjs/types/CamOverlayAPI.js +0 -47
- package/cjs/types/CamStreamerAPI.js +0 -28
- package/esm/CamOverlayAPI.d.ts +0 -31
- 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 -66
- 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 -11
- package/esm/internal/ProxyClient.d.ts +0 -11
- package/esm/internal/common.d.ts +0 -39
- package/esm/internal/common.js +0 -20
- 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 -188
- package/esm/types/CamOverlayAPI.js +0 -44
- package/esm/types/CamScripterAPI.d.ts +0 -67
- package/esm/types/CamStreamerAPI.js +0 -25
- package/esm/web/DefaultClient.d.ts +0 -6
- 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/CamSwitcherAPI.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { AddNewClipError } from './errors/errors';
|
|
3
|
-
import {
|
|
4
|
-
import { storageInfoListSchema, outputInfoSchema, audioPushInfoSchema, clipListSchema, playlistQueueSchema, streamSaveLoadSchema, clipSaveLoadSchema, playlistSaveLoadSchema, trackerSaveLoadSchema, } from './types/CamSwitcherAPI';
|
|
5
|
-
import { networkCameraListSchema } from './types/common';
|
|
2
|
+
import { AddNewClipError, JsonParseError, ParameterNotFoundError, ErrorWithResponse } from './errors/errors';
|
|
3
|
+
import { isClip, isNullish } from './internal/utils';
|
|
4
|
+
import { storageInfoListSchema, outputInfoSchema, audioPushInfoSchema, clipListSchema, playlistQueueSchema, streamSaveLoadSchema, clipSaveLoadSchema, playlistSaveLoadSchema, trackerSaveLoadSchema, secondaryAudioSettingsSchema, globalAudioSettingsSchema, } from './types/CamSwitcherAPI';
|
|
5
|
+
import { networkCameraListSchema, } from './types/common';
|
|
6
6
|
import { VapixAPI } from './VapixAPI';
|
|
7
7
|
import { isFirmwareVersionAtLeast } from './internal/versionCompare';
|
|
8
|
-
import { isClip } from './internal/utils';
|
|
9
8
|
import { FIRMWARE_WITH_BITRATE_MODES_SUPPORT } from './internal/constants';
|
|
10
|
-
|
|
9
|
+
import { ProxyClient } from './internal/ProxyClient';
|
|
10
|
+
const BASE_PATH = '/local/camswitcher/api';
|
|
11
11
|
export class CamSwitcherAPI {
|
|
12
12
|
client;
|
|
13
13
|
CustomFormData;
|
|
@@ -15,111 +15,127 @@ export class CamSwitcherAPI {
|
|
|
15
15
|
constructor(client, CustomFormData = FormData) {
|
|
16
16
|
this.client = client;
|
|
17
17
|
this.CustomFormData = CustomFormData;
|
|
18
|
-
this.vapixAgent = new VapixAPI(client
|
|
19
|
-
}
|
|
20
|
-
static
|
|
21
|
-
static
|
|
22
|
-
static
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
18
|
+
this.vapixAgent = new VapixAPI(client);
|
|
19
|
+
}
|
|
20
|
+
static getProxyPath = () => `${BASE_PATH}/proxy.cgi`;
|
|
21
|
+
static getWsEventsPath = () => `/local/camswitcher/events`;
|
|
22
|
+
static getClipPreviewPath = (clipId, storage) => `${BASE_PATH}/clip_preview.cgi?clip_name=${clipId}&storage=${storage}`;
|
|
23
|
+
getClient(proxyParams) {
|
|
24
|
+
return proxyParams ? new ProxyClient(this.client, proxyParams) : this.client;
|
|
25
|
+
}
|
|
26
|
+
async checkCameraTime(options) {
|
|
27
|
+
const res = await this._getJson(`${BASE_PATH}/camera_time.cgi`, undefined, options);
|
|
28
|
+
return z.boolean().parse(res.data);
|
|
29
|
+
}
|
|
30
|
+
async getNetworkCameraList(options) {
|
|
31
|
+
const res = await this._getJson(`${BASE_PATH}/network_camera_list.cgi`, undefined, options);
|
|
32
|
+
return networkCameraListSchema.parse(res.data);
|
|
33
|
+
}
|
|
34
|
+
async generateSilence(sampleRate, channels, options) {
|
|
35
|
+
const agent = this.getClient(options?.proxyParams);
|
|
36
|
+
await agent.get({
|
|
37
|
+
path: `${BASE_PATH}/generate_silence.cgi`,
|
|
38
|
+
parameters: {
|
|
39
|
+
sample_rate: sampleRate.toString(),
|
|
40
|
+
channels,
|
|
41
|
+
},
|
|
42
|
+
timeout: options?.timeout,
|
|
27
43
|
});
|
|
28
44
|
}
|
|
29
|
-
async
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const data = await this.get(`${baseUrl}/network_camera_list.cgi`);
|
|
35
|
-
return networkCameraListSchema.parse(data);
|
|
36
|
-
}
|
|
37
|
-
async getMaxFps(source) {
|
|
38
|
-
const data = await this.get(`${baseUrl}/get_max_framerate.cgi`, {
|
|
39
|
-
video_source: source.toString(),
|
|
40
|
-
});
|
|
41
|
-
return z.number().parse(data);
|
|
45
|
+
async getMaxFps(source, options) {
|
|
46
|
+
const res = await this._getJson(`${BASE_PATH}/get_max_framerate.cgi`, {
|
|
47
|
+
video_source: source,
|
|
48
|
+
}, options);
|
|
49
|
+
return z.number().parse(res.data);
|
|
42
50
|
}
|
|
43
|
-
async getStorageInfo() {
|
|
44
|
-
const
|
|
45
|
-
return storageInfoListSchema.parse(data);
|
|
51
|
+
async getStorageInfo(options) {
|
|
52
|
+
const res = await this._getJson(`${BASE_PATH}/get_storage.cgi`, undefined, options);
|
|
53
|
+
return storageInfoListSchema.parse(res.data);
|
|
46
54
|
}
|
|
47
|
-
async wsAuthorization() {
|
|
48
|
-
const
|
|
49
|
-
return z.string().parse(data);
|
|
55
|
+
async wsAuthorization(options) {
|
|
56
|
+
const res = await this._getJson(`${BASE_PATH}/ws_authorization.cgi`, undefined, options);
|
|
57
|
+
return z.string().parse(res.data);
|
|
50
58
|
}
|
|
51
|
-
async getOutputInfo() {
|
|
52
|
-
const
|
|
53
|
-
return outputInfoSchema.parse(data);
|
|
59
|
+
async getOutputInfo(options) {
|
|
60
|
+
const res = await this._getJson(`${BASE_PATH}/output_info.cgi`, undefined, options);
|
|
61
|
+
return outputInfoSchema.parse(res.data);
|
|
54
62
|
}
|
|
55
|
-
async getAudioPushInfo() {
|
|
56
|
-
const
|
|
57
|
-
return audioPushInfoSchema.parse(data);
|
|
63
|
+
async getAudioPushInfo(options) {
|
|
64
|
+
const res = await this._getJson(`${BASE_PATH}/audio_push_info.cgi`, undefined, options);
|
|
65
|
+
return audioPushInfoSchema.parse(res.data);
|
|
58
66
|
}
|
|
59
|
-
async getStreamSaveList() {
|
|
60
|
-
const
|
|
61
|
-
return streamSaveLoadSchema.parse(data);
|
|
67
|
+
async getStreamSaveList(options) {
|
|
68
|
+
const res = await this._getJson(`${BASE_PATH}/streams.cgi`, { action: 'get' }, options);
|
|
69
|
+
return streamSaveLoadSchema.parse(res.data);
|
|
62
70
|
}
|
|
63
|
-
async getClipSaveList() {
|
|
64
|
-
const
|
|
65
|
-
return clipSaveLoadSchema.parse(data);
|
|
71
|
+
async getClipSaveList(options) {
|
|
72
|
+
const res = await this._getJson(`${BASE_PATH}/clips.cgi`, { action: 'get' }, options);
|
|
73
|
+
return clipSaveLoadSchema.parse(res.data);
|
|
66
74
|
}
|
|
67
|
-
async getPlaylistSaveList() {
|
|
68
|
-
const
|
|
69
|
-
return playlistSaveLoadSchema.parse(data);
|
|
75
|
+
async getPlaylistSaveList(options) {
|
|
76
|
+
const res = await this._getJson(`${BASE_PATH}/playlists.cgi`, { action: 'get' }, options);
|
|
77
|
+
return playlistSaveLoadSchema.parse(res.data);
|
|
70
78
|
}
|
|
71
|
-
async getTrackerSaveList() {
|
|
72
|
-
const
|
|
73
|
-
return trackerSaveLoadSchema.parse(data);
|
|
79
|
+
async getTrackerSaveList(options) {
|
|
80
|
+
const res = await this._getJson(`${BASE_PATH}/trackers.cgi`, { action: 'get' }, options);
|
|
81
|
+
return trackerSaveLoadSchema.parse(res.data);
|
|
74
82
|
}
|
|
75
|
-
async setStreamSaveList(data) {
|
|
76
|
-
|
|
83
|
+
async setStreamSaveList(data, options) {
|
|
84
|
+
await this._post(`${BASE_PATH}/streams.cgi`, JSON.stringify(data), { action: 'set' }, options);
|
|
77
85
|
}
|
|
78
|
-
async setClipSaveList(data) {
|
|
79
|
-
|
|
86
|
+
async setClipSaveList(data, options) {
|
|
87
|
+
await this._post(`${BASE_PATH}/clips.cgi`, JSON.stringify(data), { action: 'set' }, options);
|
|
80
88
|
}
|
|
81
|
-
async setPlaylistSaveList(data) {
|
|
82
|
-
|
|
89
|
+
async setPlaylistSaveList(data, options) {
|
|
90
|
+
await this._post(`${BASE_PATH}/playlists.cgi`, JSON.stringify(data), { action: 'set' }, options);
|
|
83
91
|
}
|
|
84
|
-
async setTrackerSaveList(data) {
|
|
85
|
-
|
|
92
|
+
async setTrackerSaveList(data, options) {
|
|
93
|
+
await this._post(`${BASE_PATH}/trackers.cgi`, JSON.stringify(data), { action: 'set' }, options);
|
|
86
94
|
}
|
|
87
|
-
async playlistSwitch(playlistName) {
|
|
88
|
-
await this.
|
|
95
|
+
async playlistSwitch(playlistName, options) {
|
|
96
|
+
await this._getJson(`${BASE_PATH}/playlist_switch.cgi`, { playlist_name: playlistName }, options);
|
|
89
97
|
}
|
|
90
|
-
async playlistQueuePush(playlistName) {
|
|
91
|
-
await this.
|
|
98
|
+
async playlistQueuePush(playlistName, options) {
|
|
99
|
+
await this._getJson(`${BASE_PATH}/playlist_queue_push.cgi`, { playlist_name: playlistName }, options);
|
|
92
100
|
}
|
|
93
|
-
async playlistQueueClear() {
|
|
94
|
-
await this.
|
|
101
|
+
async playlistQueueClear(options) {
|
|
102
|
+
await this._getJson(`${BASE_PATH}/playlist_queue_clear.cgi`, undefined, options);
|
|
95
103
|
}
|
|
96
|
-
async playlistQueueList() {
|
|
97
|
-
const
|
|
98
|
-
return playlistQueueSchema.parse(data).playlistQueueList;
|
|
104
|
+
async playlistQueueList(options) {
|
|
105
|
+
const res = await this._getJson(`${BASE_PATH}/playlist_queue_list.cgi`, undefined, options);
|
|
106
|
+
return playlistQueueSchema.parse(res.data).playlistQueueList;
|
|
99
107
|
}
|
|
100
|
-
async playlistQueuePlayNext() {
|
|
101
|
-
await this.
|
|
108
|
+
async playlistQueuePlayNext(options) {
|
|
109
|
+
await this._getJson(`${BASE_PATH}/playlist_queue_play_next.cgi`, undefined, options);
|
|
102
110
|
}
|
|
103
|
-
async addNewClip(file, clipType, storage,
|
|
111
|
+
async addNewClip(file, clipType, storage, clipId, fileName, options) {
|
|
112
|
+
const path = `${BASE_PATH}/clip_upload.cgi`;
|
|
104
113
|
const formData = new this.CustomFormData();
|
|
105
|
-
formData.append('clip_name',
|
|
114
|
+
formData.append('clip_name', clipId);
|
|
106
115
|
formData.append('clip_type', clipType);
|
|
107
116
|
formData.append('file', file, fileName);
|
|
108
|
-
const
|
|
109
|
-
const res = await
|
|
117
|
+
const agent = this.getClient(options?.proxyParams);
|
|
118
|
+
const res = await agent.post({
|
|
119
|
+
path,
|
|
120
|
+
data: formData,
|
|
121
|
+
parameters: {
|
|
122
|
+
storage: storage,
|
|
123
|
+
},
|
|
124
|
+
timeout: options?.timeout,
|
|
125
|
+
});
|
|
110
126
|
const output = (await res.json());
|
|
111
127
|
if (output.status !== 200) {
|
|
112
128
|
throw new AddNewClipError(output.message);
|
|
113
129
|
}
|
|
114
130
|
}
|
|
115
|
-
removeClip(
|
|
116
|
-
|
|
131
|
+
async removeClip(clipId, storage, options) {
|
|
132
|
+
await this._getJson(`${BASE_PATH}/clip_remove.cgi`, { clip_name: clipId, storage }, options);
|
|
117
133
|
}
|
|
118
|
-
async getClipList() {
|
|
119
|
-
const
|
|
120
|
-
return clipListSchema.parse(data).clip_list;
|
|
134
|
+
async getClipList(options) {
|
|
135
|
+
const res = await this._getJson(`${BASE_PATH}/clip_list.cgi`, undefined, options);
|
|
136
|
+
return clipListSchema.parse(res.data).clip_list;
|
|
121
137
|
}
|
|
122
|
-
setCamSwitchOptions(data, cameraFWVersion) {
|
|
138
|
+
setCamSwitchOptions(data, cameraFWVersion, options) {
|
|
123
139
|
const bitrateVapixParams = parseBitrateOptionsToBitrateVapixParams(cameraFWVersion, data.bitrateMode, data);
|
|
124
140
|
const saveData = {
|
|
125
141
|
video: {
|
|
@@ -137,9 +153,9 @@ export class CamSwitcherAPI {
|
|
|
137
153
|
},
|
|
138
154
|
keyboard: data.keyboard,
|
|
139
155
|
};
|
|
140
|
-
return this.setParamFromCameraJSON(CSW_PARAM_NAMES.SETTINGS, saveData);
|
|
156
|
+
return this.setParamFromCameraJSON(CSW_PARAM_NAMES.SETTINGS, saveData, options);
|
|
141
157
|
}
|
|
142
|
-
setGlobalAudioSettings(settings) {
|
|
158
|
+
setGlobalAudioSettings(settings, options) {
|
|
143
159
|
let acceptedType = 'NONE';
|
|
144
160
|
if (settings.type === 'source' && settings.source) {
|
|
145
161
|
if (isClip(settings.source)) {
|
|
@@ -155,9 +171,9 @@ export class CamSwitcherAPI {
|
|
|
155
171
|
clip_name: settings.source,
|
|
156
172
|
storage: settings.storage,
|
|
157
173
|
};
|
|
158
|
-
return this.setParamFromCameraJSON(CSW_PARAM_NAMES.MASTER_AUDIO, data);
|
|
174
|
+
return this.setParamFromCameraJSON(CSW_PARAM_NAMES.MASTER_AUDIO, data, options);
|
|
159
175
|
}
|
|
160
|
-
setSecondaryAudioSettings(settings) {
|
|
176
|
+
setSecondaryAudioSettings(settings, options) {
|
|
161
177
|
const data = {
|
|
162
178
|
type: settings.type,
|
|
163
179
|
stream_name: settings.streamName ?? '',
|
|
@@ -166,19 +182,19 @@ export class CamSwitcherAPI {
|
|
|
166
182
|
secondary_audio_level: settings.secondaryAudioLevel,
|
|
167
183
|
master_audio_level: settings.masterAudioLevel,
|
|
168
184
|
};
|
|
169
|
-
return this.setParamFromCameraJSON(CSW_PARAM_NAMES.SECONDARY_AUDIO, data);
|
|
185
|
+
return this.setParamFromCameraJSON(CSW_PARAM_NAMES.SECONDARY_AUDIO, data, options);
|
|
170
186
|
}
|
|
171
|
-
setDefaultPlaylist(
|
|
172
|
-
const value = JSON.stringify({ default_playlist_id:
|
|
187
|
+
setDefaultPlaylist(playlistId, options) {
|
|
188
|
+
const value = JSON.stringify({ default_playlist_id: playlistId });
|
|
173
189
|
return this.vapixAgent.setParameter({
|
|
174
190
|
[CSW_PARAM_NAMES.DEFAULT_PLAYLIST]: value,
|
|
175
|
-
},
|
|
191
|
+
}, options);
|
|
176
192
|
}
|
|
177
|
-
setPermanentRtspUrlToken(token) {
|
|
178
|
-
return this.vapixAgent.setParameter({ [CSW_PARAM_NAMES.RTSP_TOKEN]: token },
|
|
193
|
+
setPermanentRtspUrlToken(token, options) {
|
|
194
|
+
return this.vapixAgent.setParameter({ [CSW_PARAM_NAMES.RTSP_TOKEN]: token }, options);
|
|
179
195
|
}
|
|
180
|
-
async getCamSwitchOptions() {
|
|
181
|
-
const saveData = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.SETTINGS);
|
|
196
|
+
async getCamSwitchOptions(options) {
|
|
197
|
+
const saveData = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.SETTINGS, options);
|
|
182
198
|
if (isNullish(saveData.video)) {
|
|
183
199
|
return saveData;
|
|
184
200
|
}
|
|
@@ -203,12 +219,12 @@ export class CamSwitcherAPI {
|
|
|
203
219
|
keyboard: saveData.keyboard,
|
|
204
220
|
};
|
|
205
221
|
}
|
|
206
|
-
async getGlobalAudioSettings() {
|
|
222
|
+
async getGlobalAudioSettings(options) {
|
|
207
223
|
const settings = {
|
|
208
224
|
type: 'fromSource',
|
|
209
225
|
source: 'fromSource',
|
|
210
226
|
};
|
|
211
|
-
const res = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.MASTER_AUDIO);
|
|
227
|
+
const res = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.MASTER_AUDIO, options);
|
|
212
228
|
if (res.type === 'STREAM') {
|
|
213
229
|
settings.type = 'source';
|
|
214
230
|
settings.source = res.stream_name;
|
|
@@ -218,52 +234,52 @@ export class CamSwitcherAPI {
|
|
|
218
234
|
settings.source = res.clip_name;
|
|
219
235
|
settings.storage = res.storage;
|
|
220
236
|
}
|
|
221
|
-
return settings;
|
|
237
|
+
return globalAudioSettingsSchema.parse(settings);
|
|
222
238
|
}
|
|
223
|
-
async getSecondaryAudioSettings() {
|
|
224
|
-
const res = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.SECONDARY_AUDIO);
|
|
239
|
+
async getSecondaryAudioSettings(options) {
|
|
240
|
+
const res = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.SECONDARY_AUDIO, options);
|
|
225
241
|
const settings = {
|
|
226
242
|
type: res.type ?? 'NONE',
|
|
227
243
|
streamName: res.stream_name,
|
|
228
244
|
clipName: res.clip_name,
|
|
229
|
-
storage: res.storage,
|
|
245
|
+
storage: res.storage ?? 'SD_DISK',
|
|
230
246
|
secondaryAudioLevel: res.secondary_audio_level ?? 1,
|
|
231
247
|
masterAudioLevel: res.master_audio_level ?? 1,
|
|
232
248
|
};
|
|
233
|
-
return settings;
|
|
249
|
+
return secondaryAudioSettingsSchema.parse(settings);
|
|
234
250
|
}
|
|
235
|
-
async getPermanentRtspUrlToken() {
|
|
251
|
+
async getPermanentRtspUrlToken(options) {
|
|
236
252
|
const paramName = CSW_PARAM_NAMES.RTSP_TOKEN;
|
|
237
|
-
const res = await this.vapixAgent.getParameter([paramName],
|
|
238
|
-
return res[paramName] ?? '';
|
|
253
|
+
const res = await this.vapixAgent.getParameter([paramName], options);
|
|
254
|
+
return z.string().parse(res[paramName] ?? '');
|
|
239
255
|
}
|
|
240
|
-
async
|
|
241
|
-
const
|
|
256
|
+
async _getJson(path, parameters, options) {
|
|
257
|
+
const agent = this.getClient(options?.proxyParams);
|
|
258
|
+
const res = await agent.get({ path, parameters, timeout: options?.timeout });
|
|
242
259
|
if (res.ok) {
|
|
243
|
-
|
|
244
|
-
return d.data;
|
|
260
|
+
return await res.json();
|
|
245
261
|
}
|
|
246
262
|
else {
|
|
247
|
-
throw new
|
|
263
|
+
throw new ErrorWithResponse(res);
|
|
248
264
|
}
|
|
249
265
|
}
|
|
250
|
-
async
|
|
251
|
-
const
|
|
266
|
+
async _post(path, data, parameters, options, headers) {
|
|
267
|
+
const agent = this.getClient(options?.proxyParams);
|
|
268
|
+
const res = await agent.post({ path, data, parameters, timeout: options?.timeout, headers });
|
|
252
269
|
if (res.ok) {
|
|
253
|
-
|
|
254
|
-
return parsed.message === 'OK';
|
|
270
|
+
return await res.json();
|
|
255
271
|
}
|
|
256
272
|
else {
|
|
257
|
-
throw new
|
|
273
|
+
throw new ErrorWithResponse(res);
|
|
258
274
|
}
|
|
259
275
|
}
|
|
260
|
-
setParamFromCameraJSON(paramName, data) {
|
|
276
|
+
setParamFromCameraJSON(paramName, data, options) {
|
|
261
277
|
const params = {};
|
|
262
278
|
params[paramName] = JSON.stringify(data);
|
|
263
|
-
return this.vapixAgent.setParameter(params,
|
|
279
|
+
return this.vapixAgent.setParameter(params, options);
|
|
264
280
|
}
|
|
265
|
-
async getParamFromCameraAndJSONParse(paramName) {
|
|
266
|
-
const data = await this.vapixAgent.getParameter([paramName],
|
|
281
|
+
async getParamFromCameraAndJSONParse(paramName, options) {
|
|
282
|
+
const data = await this.vapixAgent.getParameter([paramName], options);
|
|
267
283
|
if (data[paramName] !== undefined) {
|
|
268
284
|
try {
|
|
269
285
|
if (data[paramName] === '') {
|
|
@@ -274,10 +290,10 @@ export class CamSwitcherAPI {
|
|
|
274
290
|
}
|
|
275
291
|
}
|
|
276
292
|
catch {
|
|
277
|
-
throw new
|
|
293
|
+
throw new JsonParseError(paramName, data[paramName]);
|
|
278
294
|
}
|
|
279
295
|
}
|
|
280
|
-
throw new
|
|
296
|
+
throw new ParameterNotFoundError(paramName);
|
|
281
297
|
}
|
|
282
298
|
}
|
|
283
299
|
const CSW_PARAM_NAMES = {
|
|
@@ -291,7 +307,7 @@ const parseBitrateOptionsToBitrateVapixParams = (firmWareVersion, bitrateMode, c
|
|
|
291
307
|
if (!isFirmwareVersionAtLeast(firmWareVersion, FIRMWARE_WITH_BITRATE_MODES_SUPPORT)) {
|
|
292
308
|
return `videomaxbitrate=${cameraOptions.maximumBitRate}`;
|
|
293
309
|
}
|
|
294
|
-
if (bitrateMode ===
|
|
310
|
+
if (bitrateMode === undefined) {
|
|
295
311
|
return '';
|
|
296
312
|
}
|
|
297
313
|
const data = {
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { paramToUrl } from './internal/utils';
|
|
3
|
+
import { blackListSchema, cameraSettingsSchema, flightInfoSchema, getIcaoSchema, mapInfoSchema, priorityListSchema, serverSettingsSchema, trackingModeSchema, whiteListSchema, wsAliasResponseSchema, zonesSchema, } from './types/PlaneTrackerAPI';
|
|
4
|
+
import { CannotSetCoordsInAutoModeError, ImportSettingsError, InvalidAltitudeError, InvalidLatLngError, ParsingBlobError, ResetCalibrationError, ServerError, BadRequestError, ErrorWithResponse, } from './errors/errors';
|
|
5
|
+
import { ProxyClient } from './internal/ProxyClient';
|
|
6
|
+
import { cameraListSchema } from './types/GenetecAgent';
|
|
7
|
+
const BASE_PATH = '/local/planetracker';
|
|
8
|
+
export class PlaneTrackerAPI {
|
|
9
|
+
client;
|
|
10
|
+
apiUser;
|
|
11
|
+
constructor(client, apiUser) {
|
|
12
|
+
this.client = client;
|
|
13
|
+
this.apiUser = apiUser;
|
|
14
|
+
}
|
|
15
|
+
static getProxyPath = () => `${BASE_PATH}/proxy.cgi`;
|
|
16
|
+
static getWsEventsPath = () => `${BASE_PATH}/package/ws`;
|
|
17
|
+
getClient(proxyParams) {
|
|
18
|
+
return proxyParams ? new ProxyClient(this.client, proxyParams) : this.client;
|
|
19
|
+
}
|
|
20
|
+
async checkCameraTime(options) {
|
|
21
|
+
const res = await this._getJson(`${BASE_PATH}/camera_time.cgi`, undefined, options);
|
|
22
|
+
return z.boolean().parse(res.state);
|
|
23
|
+
}
|
|
24
|
+
async serverRunCheck(options) {
|
|
25
|
+
const agent = this.getClient(options?.proxyParams);
|
|
26
|
+
return await agent.get({ path: `${BASE_PATH}/package/serverRunCheck.cgi`, timeout: options?.timeout });
|
|
27
|
+
}
|
|
28
|
+
async getLiveViewAlias(rtspUrl, options) {
|
|
29
|
+
const agent = this.getClient(options?.proxyParams);
|
|
30
|
+
const res = await agent.get({
|
|
31
|
+
path: `${BASE_PATH}/getLiveViewAlias.cgi`,
|
|
32
|
+
parameters: { rtsp_url: rtspUrl },
|
|
33
|
+
timeout: options?.timeout,
|
|
34
|
+
});
|
|
35
|
+
return wsAliasResponseSchema.parse(await res.json());
|
|
36
|
+
}
|
|
37
|
+
async resetPtzCalibration(options) {
|
|
38
|
+
const agent = this.getClient(options?.proxyParams);
|
|
39
|
+
const res = await agent.get({
|
|
40
|
+
path: `${BASE_PATH}/package/resetPtzCalibration.cgi`,
|
|
41
|
+
parameters: this.apiUser,
|
|
42
|
+
timeout: options?.timeout,
|
|
43
|
+
});
|
|
44
|
+
if (!res.ok) {
|
|
45
|
+
throw new ResetCalibrationError('PTZ', res);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
async resetFocusCalibration(options) {
|
|
49
|
+
const agent = this.getClient(options?.proxyParams);
|
|
50
|
+
const res = await agent.get({
|
|
51
|
+
path: `${BASE_PATH}/package/resetFocusCalibration.cgi`,
|
|
52
|
+
parameters: this.apiUser,
|
|
53
|
+
timeout: options?.timeout,
|
|
54
|
+
});
|
|
55
|
+
if (!res.ok) {
|
|
56
|
+
throw new ResetCalibrationError('FOCUS', res);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async fetchCameraSettings(options) {
|
|
60
|
+
const res = await this._getJson(`${BASE_PATH}/package_camera_settings.cgi`, { action: 'get' }, options);
|
|
61
|
+
return cameraSettingsSchema.parse(res);
|
|
62
|
+
}
|
|
63
|
+
async setCameraSettings(settings, options) {
|
|
64
|
+
return await this._postJsonEncoded(`${BASE_PATH}/package_camera_settings.cgi`, settings, {
|
|
65
|
+
action: 'set',
|
|
66
|
+
}, options);
|
|
67
|
+
}
|
|
68
|
+
async fetchServerSettings(options) {
|
|
69
|
+
const res = await this._getJson(`${BASE_PATH}/package_server_settings.cgi`, { action: 'get' }, options);
|
|
70
|
+
return serverSettingsSchema.parse(res);
|
|
71
|
+
}
|
|
72
|
+
async exportAppSettings(dataType, options) {
|
|
73
|
+
return await this._getBlob(`${BASE_PATH}/package_data.cgi`, { action: 'EXPORT', dataType }, options);
|
|
74
|
+
}
|
|
75
|
+
async importAppSettings(dataType, formData, options) {
|
|
76
|
+
const agent = this.getClient(options?.proxyParams);
|
|
77
|
+
const res = await agent.post({
|
|
78
|
+
path: `${BASE_PATH}/package_data.cgi`,
|
|
79
|
+
data: formData,
|
|
80
|
+
parameters: { action: 'IMPORT', dataType },
|
|
81
|
+
timeout: options?.timeout,
|
|
82
|
+
});
|
|
83
|
+
if (!res.ok) {
|
|
84
|
+
throw new ImportSettingsError(res);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async fetchFlightInfo(icao, options) {
|
|
88
|
+
const res = await this._getJson(`${BASE_PATH}/package/flightInfo.cgi`, { icao }, options);
|
|
89
|
+
return flightInfoSchema.parse(res);
|
|
90
|
+
}
|
|
91
|
+
async getTrackingMode(options) {
|
|
92
|
+
const res = await this._getJson(`${BASE_PATH}/package/getTrackingMode.cgi`, undefined, options);
|
|
93
|
+
return trackingModeSchema.parse(res);
|
|
94
|
+
}
|
|
95
|
+
async setTrackingMode(mode, options) {
|
|
96
|
+
await this._postJsonEncoded(`${BASE_PATH}/package/setTrackingMode.cgi`, { mode }, this.apiUser, options);
|
|
97
|
+
}
|
|
98
|
+
async startTrackingPlane(icao, options) {
|
|
99
|
+
const agent = this.getClient(options?.proxyParams);
|
|
100
|
+
await agent.get({
|
|
101
|
+
path: `${BASE_PATH}/package/trackIcao.cgi`,
|
|
102
|
+
parameters: { icao, ...this.apiUser },
|
|
103
|
+
timeout: options?.timeout,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
async stopTrackingPlane(options) {
|
|
107
|
+
const agent = this.getClient(options?.proxyParams);
|
|
108
|
+
await agent.get({
|
|
109
|
+
path: `${BASE_PATH}/package/resetIcao.cgi`,
|
|
110
|
+
parameters: this.apiUser,
|
|
111
|
+
timeout: options?.timeout,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
async getIcao(by, value, options) {
|
|
115
|
+
const res = await this._getJson(`${BASE_PATH}/package/getIcao.cgi`, { [by]: value }, options);
|
|
116
|
+
return getIcaoSchema.parse(res).icao;
|
|
117
|
+
}
|
|
118
|
+
async getPriorityList(options) {
|
|
119
|
+
const res = await this._getJson(`${BASE_PATH}/package/getPriorityList.cgi`, undefined, options);
|
|
120
|
+
return priorityListSchema.parse(res).priorityList;
|
|
121
|
+
}
|
|
122
|
+
async setPriorityList(priorityList, options) {
|
|
123
|
+
return await this._postJsonEncoded(`${BASE_PATH}/package/setPriorityList.cgi`, { priorityList }, this.apiUser, options);
|
|
124
|
+
}
|
|
125
|
+
async getWhiteList(options) {
|
|
126
|
+
const res = await this._getJson(`${BASE_PATH}/package/getWhiteList.cgi`, undefined, options);
|
|
127
|
+
return whiteListSchema.parse(res).whiteList;
|
|
128
|
+
}
|
|
129
|
+
async setWhiteList(whiteList, options) {
|
|
130
|
+
return await this._postJsonEncoded(`${BASE_PATH}/package/setWhiteList.cgi`, { whiteList }, this.apiUser, options);
|
|
131
|
+
}
|
|
132
|
+
async getBlackList(options) {
|
|
133
|
+
const res = await this._getJson(`${BASE_PATH}/package/getBlackList.cgi`, undefined, options);
|
|
134
|
+
return blackListSchema.parse(res).blackList;
|
|
135
|
+
}
|
|
136
|
+
async setBlackList(blackList, options) {
|
|
137
|
+
return await this._postJsonEncoded(`${BASE_PATH}/package/setBlackList.cgi`, { blackList }, this.apiUser, options);
|
|
138
|
+
}
|
|
139
|
+
async fetchMapInfo(options) {
|
|
140
|
+
const res = await this._getJson(`${BASE_PATH}/package/getMapInfo.cgi`, undefined, options);
|
|
141
|
+
return mapInfoSchema.parse(res);
|
|
142
|
+
}
|
|
143
|
+
async getZones(options) {
|
|
144
|
+
const res = await this._getJson(`${BASE_PATH}/package/getZones.cgi`, undefined, options);
|
|
145
|
+
return zonesSchema.parse(res);
|
|
146
|
+
}
|
|
147
|
+
async setZones(zones, options) {
|
|
148
|
+
await this._postJsonEncoded(`${BASE_PATH}/package/setZones.cgi`, zones, this.apiUser, options);
|
|
149
|
+
}
|
|
150
|
+
async goToCoordinates(lat, lon, alt, options) {
|
|
151
|
+
const agent = this.getClient(options?.proxyParams);
|
|
152
|
+
const res = await agent.get({
|
|
153
|
+
path: `${BASE_PATH}/package/goToCoordinates.cgi`,
|
|
154
|
+
parameters: { lat, lon, alt, ...this.apiUser },
|
|
155
|
+
timeout: options?.timeout,
|
|
156
|
+
});
|
|
157
|
+
if (!res.ok) {
|
|
158
|
+
if (res.status === 400 && res.statusText === 'Cannot set coordinates in automatic mode') {
|
|
159
|
+
throw new CannotSetCoordsInAutoModeError();
|
|
160
|
+
}
|
|
161
|
+
if (res.status === 400 && res.statusText === 'Invalid lat/lon parameters') {
|
|
162
|
+
throw new InvalidLatLngError();
|
|
163
|
+
}
|
|
164
|
+
if (res.status === 400 && res.statusText === 'Invalid alt parameter') {
|
|
165
|
+
throw new InvalidAltitudeError();
|
|
166
|
+
}
|
|
167
|
+
if (res.status === 400) {
|
|
168
|
+
throw new BadRequestError(res);
|
|
169
|
+
}
|
|
170
|
+
if (res.status === 500) {
|
|
171
|
+
throw new ServerError();
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
async checkGenetecConnection(params, options) {
|
|
176
|
+
return await this._postUrlEncoded(`${BASE_PATH}/package/checkGenetecConnection.cgi`, params, options);
|
|
177
|
+
}
|
|
178
|
+
async getGenetecCameraList(params, options) {
|
|
179
|
+
const res = await this._postUrlEncoded(`${BASE_PATH}/package/getGenetecCameraList.cgi`, params, options);
|
|
180
|
+
return cameraListSchema.parse(await res.json());
|
|
181
|
+
}
|
|
182
|
+
async _getJson(path, parameters, options, headers) {
|
|
183
|
+
const agent = this.getClient(options?.proxyParams);
|
|
184
|
+
const res = await agent.get({ path, parameters, timeout: options?.timeout, headers });
|
|
185
|
+
if (res.ok) {
|
|
186
|
+
return await res.json();
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
throw new ErrorWithResponse(res);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
async _getBlob(path, parameters, options) {
|
|
193
|
+
const agent = this.getClient(options?.proxyParams);
|
|
194
|
+
const res = await agent.get({ path, parameters, timeout: options?.timeout });
|
|
195
|
+
if (res.ok) {
|
|
196
|
+
return await this.parseBlobResponse(res);
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
throw new ErrorWithResponse(res);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
async parseBlobResponse(response) {
|
|
203
|
+
try {
|
|
204
|
+
return (await response.blob());
|
|
205
|
+
}
|
|
206
|
+
catch (err) {
|
|
207
|
+
throw new ParsingBlobError(err);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
async _postJsonEncoded(path, data, parameters, options) {
|
|
211
|
+
const agent = this.getClient(options?.proxyParams);
|
|
212
|
+
const jsonData = JSON.stringify(data);
|
|
213
|
+
const res = await agent.post({
|
|
214
|
+
path,
|
|
215
|
+
data: jsonData,
|
|
216
|
+
parameters,
|
|
217
|
+
headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' },
|
|
218
|
+
timeout: options?.timeout,
|
|
219
|
+
});
|
|
220
|
+
if (res.ok) {
|
|
221
|
+
return res;
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
throw new ErrorWithResponse(res);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
async _postUrlEncoded(path, params, options) {
|
|
228
|
+
const data = paramToUrl(params);
|
|
229
|
+
const agent = this.getClient(options?.proxyParams);
|
|
230
|
+
const res = await agent.post({
|
|
231
|
+
path,
|
|
232
|
+
data,
|
|
233
|
+
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
234
|
+
timeout: options?.timeout,
|
|
235
|
+
});
|
|
236
|
+
if (res.ok) {
|
|
237
|
+
return res;
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
throw new ErrorWithResponse(res);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|