camstreamerlib 4.0.0-beta.15 → 4.0.0-beta.151
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +143 -38
- package/cjs/CamOverlayAPI.d.ts +603 -327
- package/cjs/CamOverlayAPI.js +99 -184
- package/cjs/CamScripterAPI.d.ts +41 -17
- package/cjs/CamScripterAPI.js +50 -56
- package/cjs/CamStreamerAPI.d.ts +3556 -14
- package/cjs/CamStreamerAPI.js +170 -52
- package/cjs/CamSwitcherAPI.d.ts +158 -42
- package/cjs/CamSwitcherAPI.js +148 -189
- package/cjs/PlaneTrackerAPI.d.ts +236 -0
- package/cjs/PlaneTrackerAPI.js +194 -0
- package/cjs/VapixAPI.d.ts +90 -44
- package/cjs/VapixAPI.js +338 -208
- package/cjs/{CreatePackage.js → bin/CreatePackage.js} +44 -18
- package/cjs/errors/errors.d.ts +75 -4
- package/cjs/errors/errors.js +142 -7
- package/cjs/index.d.ts +20 -8
- package/cjs/index.js +28 -12
- package/cjs/internal/BasicAPI.d.ts +15 -0
- package/cjs/internal/BasicAPI.js +93 -0
- package/cjs/internal/ProxyClient.d.ts +8 -9
- package/cjs/internal/ProxyClient.js +28 -34
- package/cjs/internal/WsEvents.d.ts +38 -0
- package/cjs/{CamSwitcherEvents.js → internal/WsEvents.js} +33 -22
- package/cjs/internal/constants.d.ts +1 -0
- package/cjs/internal/constants.js +2 -1
- package/cjs/internal/convertors.d.ts +6 -0
- package/cjs/internal/convertors.js +115 -0
- package/cjs/internal/types.d.ts +32 -20
- package/cjs/internal/utils.d.ts +1 -3
- package/cjs/internal/utils.js +1 -12
- 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 +6 -6
- package/cjs/node/DefaultClient.js +12 -16
- 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/{events → node/events}/AxisCameraStationEvents.js +18 -13
- 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} +2794 -767
- package/cjs/types/CamOverlayAPI/CamOverlayAPI.js +135 -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 +108 -107
- package/cjs/{models → types}/CamOverlayAPI/customGraphicsSchema.js +5 -6
- package/cjs/types/CamOverlayAPI/htmlOverlaySchema.d.ts +81 -0
- package/cjs/types/CamOverlayAPI/htmlOverlaySchema.js +21 -0
- package/{esm/models → cjs/types}/CamOverlayAPI/imagesSchema.d.ts +19 -19
- package/cjs/types/CamOverlayAPI/imagesSchema.js +9 -0
- package/cjs/{models → types}/CamOverlayAPI/index.d.ts +3 -4
- package/cjs/{models → types}/CamOverlayAPI/index.js +3 -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 +21 -21
- package/cjs/{models → types}/CamOverlayAPI/pipSchema.js +5 -6
- package/{esm/models → cjs/types}/CamOverlayAPI/ptzCompassSchema.d.ts +18 -15
- package/cjs/{models → types}/CamOverlayAPI/ptzCompassSchema.js +5 -5
- package/cjs/{models → types}/CamOverlayAPI/ptzSchema.d.ts +28 -28
- 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/{esm/models → cjs/types}/CamOverlayAPI/screenSharingSchema.d.ts +15 -15
- package/cjs/types/CamOverlayAPI/screenSharingSchema.js +8 -0
- package/{esm/models/CamOverlayAPI/widgetCommonSchema.d.ts → cjs/types/CamOverlayAPI/serviceCommonTypes.d.ts} +80 -60
- package/cjs/{models/CamOverlayAPI/widgetCommonSchema.js → types/CamOverlayAPI/serviceCommonTypes.js} +39 -21
- package/{esm/models → cjs/types}/CamOverlayAPI/webCameraSharingSchema.d.ts +15 -15
- 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 +26085 -0
- package/cjs/types/CamStreamerAPI/CamStreamerAPI.js +222 -0
- package/cjs/types/CamStreamerAPI/facebookSchema.d.ts +574 -0
- package/cjs/types/CamStreamerAPI/facebookSchema.js +23 -0
- package/cjs/types/CamStreamerAPI/index.d.ts +6 -0
- package/cjs/types/CamStreamerAPI/index.js +22 -0
- package/cjs/types/{CamStreamerAPI.d.ts → CamStreamerAPI/oldStreamSchema.d.ts} +104 -35
- package/cjs/types/CamStreamerAPI/oldStreamSchema.js +53 -0
- package/cjs/types/CamStreamerAPI/streamCommonTypes.d.ts +570 -0
- package/cjs/types/CamStreamerAPI/streamCommonTypes.js +123 -0
- package/cjs/types/CamStreamerAPI/streamsSchema.d.ts +8642 -0
- package/cjs/types/CamStreamerAPI/streamsSchema.js +81 -0
- package/cjs/types/CamStreamerAPI/windySchema.d.ts +534 -0
- package/cjs/types/CamStreamerAPI/windySchema.js +19 -0
- package/cjs/types/CamStreamerAPI/youtubeSchema.d.ts +542 -0
- package/cjs/types/CamStreamerAPI/youtubeSchema.js +22 -0
- package/cjs/types/CamSwitcherAPI.d.ts +205 -121
- 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 +264 -22
- package/cjs/types/VapixAPI.js +68 -4
- package/cjs/types/VapixEvents.d.ts +15 -0
- package/cjs/types/VapixEvents.js +2 -0
- package/cjs/types/common.d.ts +43 -3
- package/cjs/types/common.js +17 -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 +282 -0
- package/cjs/types/ws/CamStreamerEvents.js +36 -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 -5
- package/cjs/web/DefaultClient.js +25 -11
- 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 +99 -184
- package/esm/CamScripterAPI.js +51 -57
- package/esm/CamStreamerAPI.js +168 -51
- package/esm/CamSwitcherAPI.js +151 -192
- package/esm/PlaneTrackerAPI.js +190 -0
- package/esm/VapixAPI.js +340 -210
- package/esm/{CreatePackage.js → bin/CreatePackage.js} +16 -16
- package/esm/errors/errors.js +124 -6
- package/esm/index.js +20 -8
- package/esm/internal/BasicAPI.js +89 -0
- package/esm/internal/ProxyClient.js +28 -34
- package/esm/{CamSwitcherEvents.js → internal/WsEvents.js} +31 -20
- package/esm/internal/constants.js +1 -0
- package/esm/internal/convertors.js +108 -0
- package/esm/internal/utils.js +0 -9
- 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 -16
- 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 +113 -0
- package/esm/{models → types}/CamOverlayAPI/accuweatherSchema.js +3 -4
- package/esm/{models → types}/CamOverlayAPI/customGraphicsSchema.js +3 -4
- package/esm/types/CamOverlayAPI/htmlOverlaySchema.js +18 -0
- package/esm/types/CamOverlayAPI/imagesSchema.js +6 -0
- package/esm/{models → types}/CamOverlayAPI/index.js +3 -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} +38 -20
- 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 +199 -0
- package/esm/types/CamStreamerAPI/facebookSchema.js +17 -0
- package/esm/types/CamStreamerAPI/index.js +6 -0
- package/esm/types/CamStreamerAPI/oldStreamSchema.js +50 -0
- package/esm/types/CamStreamerAPI/streamCommonTypes.js +120 -0
- package/esm/types/CamStreamerAPI/streamsSchema.js +75 -0
- package/esm/types/CamStreamerAPI/windySchema.js +13 -0
- package/esm/types/CamStreamerAPI/youtubeSchema.js +16 -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 +67 -3
- package/esm/types/VapixEvents.js +1 -0
- package/esm/types/common.js +16 -1
- package/esm/types/ws/CamOverlayEvents.js +16 -0
- package/esm/types/ws/CamStreamerEvents.js +33 -0
- package/esm/types/ws/PlaneTrackerEvents.js +204 -0
- package/esm/web/DefaultClient.js +25 -11
- 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 -10
- package/{esm → types}/CamOverlayAPI.d.ts +603 -327
- package/types/CamScripterAPI.d.ts +43 -0
- package/types/CamStreamerAPI.d.ts +3558 -0
- package/types/CamSwitcherAPI.d.ts +168 -0
- package/types/PlaneTrackerAPI.d.ts +236 -0
- package/types/VapixAPI.d.ts +124 -0
- package/types/bin/CreatePackage.d.ts +1 -0
- package/types/errors/errors.d.ts +108 -0
- package/types/index.d.ts +28 -0
- package/types/internal/BasicAPI.d.ts +15 -0
- package/types/internal/ProxyClient.d.ts +10 -0
- package/types/internal/WsEvents.d.ts +38 -0
- package/{esm → types}/internal/constants.d.ts +1 -0
- package/types/internal/convertors.d.ts +6 -0
- package/types/internal/types.d.ts +47 -0
- package/{esm → types}/internal/utils.d.ts +1 -3
- 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} +2794 -767
- package/{esm/models → types/types}/CamOverlayAPI/accuweatherSchema.d.ts +19 -19
- package/{esm/models → types/types}/CamOverlayAPI/customGraphicsSchema.d.ts +108 -107
- package/types/types/CamOverlayAPI/htmlOverlaySchema.d.ts +81 -0
- package/{cjs/models → types/types}/CamOverlayAPI/imagesSchema.d.ts +19 -19
- package/{esm/models → types/types}/CamOverlayAPI/index.d.ts +3 -4
- package/{esm/models → types/types}/CamOverlayAPI/infotickerSchema.d.ts +27 -27
- package/{cjs/models → types/types}/CamOverlayAPI/pipSchema.d.ts +21 -21
- package/{cjs/models → types/types}/CamOverlayAPI/ptzCompassSchema.d.ts +18 -15
- package/{esm/models → types/types}/CamOverlayAPI/ptzSchema.d.ts +28 -28
- package/types/types/CamOverlayAPI/scoreBoardSchema.d.ts +357 -0
- package/{cjs/models → types/types}/CamOverlayAPI/screenSharingSchema.d.ts +15 -15
- package/{cjs/models/CamOverlayAPI/widgetCommonSchema.d.ts → types/types/CamOverlayAPI/serviceCommonTypes.d.ts} +80 -60
- package/{cjs/models → types/types}/CamOverlayAPI/webCameraSharingSchema.d.ts +15 -15
- 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 +26085 -0
- package/types/types/CamStreamerAPI/facebookSchema.d.ts +574 -0
- package/types/types/CamStreamerAPI/index.d.ts +6 -0
- package/{esm/types/CamStreamerAPI.d.ts → types/types/CamStreamerAPI/oldStreamSchema.d.ts} +104 -35
- package/types/types/CamStreamerAPI/streamCommonTypes.d.ts +570 -0
- package/types/types/CamStreamerAPI/streamsSchema.d.ts +8642 -0
- package/types/types/CamStreamerAPI/windySchema.d.ts +534 -0
- package/types/types/CamStreamerAPI/youtubeSchema.d.ts +542 -0
- package/{esm → types}/types/CamSwitcherAPI.d.ts +205 -121
- 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 +264 -22
- package/types/types/VapixEvents.d.ts +15 -0
- package/types/types/common.d.ts +77 -0
- package/types/types/ws/CamOverlayEvents.d.ts +88 -0
- package/types/types/ws/CamStreamerEvents.d.ts +282 -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 -10
- package/cjs/events/GenetecAgent.js +0 -123
- 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 -10
- package/esm/events/GenetecAgent.js +0 -119
- package/esm/index.d.ts +0 -16
- package/esm/internal/ProxyClient.d.ts +0 -11
- package/esm/internal/types.d.ts +0 -35
- 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 -16
- 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/types/common.d.ts +0 -37
- 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/{esm/types → cjs/types/ws}/CamSwitcherEvents.d.ts +8 -8
- 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/transformers.d.ts +0 -0
- package/{esm/internal → types/node}/Digest.d.ts +0 -0
- package/{cjs/types → types/types/ws}/CamSwitcherEvents.d.ts +8 -8
- /package/{esm/node → types/web}/index.d.ts +0 -0
package/esm/CamSwitcherAPI.js
CHANGED
|
@@ -1,125 +1,146 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { AddNewClipError } from './errors/errors';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import { AddNewClipError, JsonParseError, ParameterNotFoundError } from './errors/errors';
|
|
3
|
+
import { parseBitrateOptionsToVapixParams, parseVapixParamsToBitrateOptions } from './internal/convertors';
|
|
4
|
+
import { isClip, isNullish } from './internal/utils';
|
|
5
|
+
import { storageInfoListSchema, outputInfoSchema, audioPushInfoSchema, clipListSchema, playlistQueueSchema, streamSaveLoadSchema, clipSaveLoadSchema, playlistSaveLoadSchema, trackerSaveLoadSchema, secondaryAudioSettingsSchema, globalAudioSettingsSchema, clipFilesListSchema, } from './types/CamSwitcherAPI';
|
|
6
|
+
import { networkCameraListSchema, } from './types/common';
|
|
6
7
|
import { VapixAPI } from './VapixAPI';
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
export class CamSwitcherAPI {
|
|
11
|
-
client;
|
|
8
|
+
import { BasicAPI } from './internal/BasicAPI';
|
|
9
|
+
const BASE_PATH = '/local/camswitcher/api';
|
|
10
|
+
export class CamSwitcherAPI extends BasicAPI {
|
|
12
11
|
CustomFormData;
|
|
13
12
|
vapixAgent;
|
|
14
13
|
constructor(client, CustomFormData = FormData) {
|
|
15
|
-
|
|
14
|
+
super(client);
|
|
16
15
|
this.CustomFormData = CustomFormData;
|
|
17
|
-
this.vapixAgent = new VapixAPI(client
|
|
18
|
-
}
|
|
19
|
-
static
|
|
20
|
-
static
|
|
21
|
-
static
|
|
22
|
-
async
|
|
23
|
-
await this.
|
|
24
|
-
|
|
25
|
-
|
|
16
|
+
this.vapixAgent = new VapixAPI(client);
|
|
17
|
+
}
|
|
18
|
+
static getProxyPath = () => `${BASE_PATH}/proxy.cgi`;
|
|
19
|
+
static getWsEventsPath = () => `/local/camswitcher/events`;
|
|
20
|
+
static getClipPreviewPath = (clipId, storage) => `${BASE_PATH}/clip_preview.cgi?clip_name=${clipId}&storage=${storage}`;
|
|
21
|
+
async checkAPIAvailable(options) {
|
|
22
|
+
await this._getJson(`${BASE_PATH}/api_check.cgi`, undefined, options);
|
|
23
|
+
}
|
|
24
|
+
async checkCameraTime(options) {
|
|
25
|
+
const res = await this._getJson(`${BASE_PATH}/camera_time.cgi`, undefined, options);
|
|
26
|
+
return z.boolean().parse(res.data);
|
|
27
|
+
}
|
|
28
|
+
async getNetworkCameraList(options) {
|
|
29
|
+
const res = await this._getJson(`${BASE_PATH}/network_camera_list.cgi`, undefined, options);
|
|
30
|
+
return networkCameraListSchema.parse(res.data);
|
|
31
|
+
}
|
|
32
|
+
async generateSilence(sampleRate, channels, options) {
|
|
33
|
+
const agent = this.getClient(options?.proxyParams);
|
|
34
|
+
await agent.get({
|
|
35
|
+
path: `${BASE_PATH}/generate_silence.cgi`,
|
|
36
|
+
parameters: {
|
|
37
|
+
sample_rate: sampleRate.toString(),
|
|
38
|
+
channels,
|
|
39
|
+
},
|
|
40
|
+
timeout: options?.timeout,
|
|
26
41
|
});
|
|
27
42
|
}
|
|
28
|
-
async
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
const data = await this.get(`${baseUrl}/network_camera_list.cgi`);
|
|
34
|
-
return networkCameraListSchema.parse(data);
|
|
35
|
-
}
|
|
36
|
-
async getMaxFps(source) {
|
|
37
|
-
const data = await this.get(`${baseUrl}/get_max_framerate.cgi`, {
|
|
38
|
-
video_source: source.toString(),
|
|
39
|
-
});
|
|
40
|
-
return z.number().parse(data);
|
|
43
|
+
async getMaxFps(source, options) {
|
|
44
|
+
const res = await this._getJson(`${BASE_PATH}/get_max_framerate.cgi`, {
|
|
45
|
+
video_source: source,
|
|
46
|
+
}, options);
|
|
47
|
+
return z.number().parse(res.data);
|
|
41
48
|
}
|
|
42
|
-
async getStorageInfo() {
|
|
43
|
-
const
|
|
44
|
-
return storageInfoListSchema.parse(data);
|
|
49
|
+
async getStorageInfo(options) {
|
|
50
|
+
const res = await this._getJson(`${BASE_PATH}/get_storage.cgi`, undefined, options);
|
|
51
|
+
return storageInfoListSchema.parse(res.data);
|
|
45
52
|
}
|
|
46
|
-
async wsAuthorization() {
|
|
47
|
-
const
|
|
48
|
-
return z.string().parse(data);
|
|
53
|
+
async wsAuthorization(options) {
|
|
54
|
+
const res = await this._getJson(`${BASE_PATH}/ws_authorization.cgi`, undefined, options);
|
|
55
|
+
return z.string().parse(res.data);
|
|
49
56
|
}
|
|
50
|
-
async getOutputInfo() {
|
|
51
|
-
const
|
|
52
|
-
return outputInfoSchema.parse(data);
|
|
57
|
+
async getOutputInfo(options) {
|
|
58
|
+
const res = await this._getJson(`${BASE_PATH}/output_info.cgi`, undefined, options);
|
|
59
|
+
return outputInfoSchema.parse(res.data);
|
|
53
60
|
}
|
|
54
|
-
async getAudioPushInfo() {
|
|
55
|
-
const
|
|
56
|
-
return audioPushInfoSchema.parse(data);
|
|
61
|
+
async getAudioPushInfo(options) {
|
|
62
|
+
const res = await this._getJson(`${BASE_PATH}/audio_push_info.cgi`, undefined, options);
|
|
63
|
+
return audioPushInfoSchema.parse(res.data);
|
|
57
64
|
}
|
|
58
|
-
async getStreamSaveList() {
|
|
59
|
-
const
|
|
60
|
-
return streamSaveLoadSchema.parse(data);
|
|
65
|
+
async getStreamSaveList(options) {
|
|
66
|
+
const res = await this._getJson(`${BASE_PATH}/streams.cgi`, { action: 'get' }, options);
|
|
67
|
+
return streamSaveLoadSchema.parse(res.data);
|
|
61
68
|
}
|
|
62
|
-
async getClipSaveList() {
|
|
63
|
-
const
|
|
64
|
-
return clipSaveLoadSchema.parse(data);
|
|
69
|
+
async getClipSaveList(options) {
|
|
70
|
+
const res = await this._getJson(`${BASE_PATH}/clips.cgi`, { action: 'get' }, options);
|
|
71
|
+
return clipSaveLoadSchema.parse(res.data);
|
|
65
72
|
}
|
|
66
|
-
async getPlaylistSaveList() {
|
|
67
|
-
const
|
|
68
|
-
return playlistSaveLoadSchema.parse(data);
|
|
73
|
+
async getPlaylistSaveList(options) {
|
|
74
|
+
const res = await this._getJson(`${BASE_PATH}/playlists.cgi`, { action: 'get' }, options);
|
|
75
|
+
return playlistSaveLoadSchema.parse(res.data);
|
|
69
76
|
}
|
|
70
|
-
async getTrackerSaveList() {
|
|
71
|
-
const
|
|
72
|
-
return trackerSaveLoadSchema.parse(data);
|
|
77
|
+
async getTrackerSaveList(options) {
|
|
78
|
+
const res = await this._getJson(`${BASE_PATH}/trackers.cgi`, { action: 'get' }, options);
|
|
79
|
+
return trackerSaveLoadSchema.parse(res.data);
|
|
73
80
|
}
|
|
74
|
-
async setStreamSaveList(data) {
|
|
75
|
-
|
|
81
|
+
async setStreamSaveList(data, options) {
|
|
82
|
+
await this._post(`${BASE_PATH}/streams.cgi`, JSON.stringify(data), { action: 'set' }, options);
|
|
76
83
|
}
|
|
77
|
-
async setClipSaveList(data) {
|
|
78
|
-
|
|
84
|
+
async setClipSaveList(data, options) {
|
|
85
|
+
await this._post(`${BASE_PATH}/clips.cgi`, JSON.stringify(data), { action: 'set' }, options);
|
|
79
86
|
}
|
|
80
|
-
async setPlaylistSaveList(data) {
|
|
81
|
-
|
|
87
|
+
async setPlaylistSaveList(data, options) {
|
|
88
|
+
await this._post(`${BASE_PATH}/playlists.cgi`, JSON.stringify(data), { action: 'set' }, options);
|
|
82
89
|
}
|
|
83
|
-
async setTrackerSaveList(data) {
|
|
84
|
-
|
|
90
|
+
async setTrackerSaveList(data, options) {
|
|
91
|
+
await this._post(`${BASE_PATH}/trackers.cgi`, JSON.stringify(data), { action: 'set' }, options);
|
|
85
92
|
}
|
|
86
|
-
async playlistSwitch(playlistName) {
|
|
87
|
-
await this.
|
|
93
|
+
async playlistSwitch(playlistName, options) {
|
|
94
|
+
await this._getJson(`${BASE_PATH}/playlist_switch.cgi`, { playlist_name: playlistName }, options);
|
|
88
95
|
}
|
|
89
|
-
async playlistQueuePush(playlistName) {
|
|
90
|
-
await this.
|
|
96
|
+
async playlistQueuePush(playlistName, options) {
|
|
97
|
+
await this._getJson(`${BASE_PATH}/playlist_queue_push.cgi`, { playlist_name: playlistName }, options);
|
|
91
98
|
}
|
|
92
|
-
async playlistQueueClear() {
|
|
93
|
-
await this.
|
|
99
|
+
async playlistQueueClear(options) {
|
|
100
|
+
await this._getJson(`${BASE_PATH}/playlist_queue_clear.cgi`, undefined, options);
|
|
94
101
|
}
|
|
95
|
-
async playlistQueueList() {
|
|
96
|
-
const
|
|
97
|
-
return playlistQueueSchema.parse(data).playlistQueueList;
|
|
102
|
+
async playlistQueueList(options) {
|
|
103
|
+
const res = await this._getJson(`${BASE_PATH}/playlist_queue_list.cgi`, undefined, options);
|
|
104
|
+
return playlistQueueSchema.parse(res.data).playlistQueueList;
|
|
98
105
|
}
|
|
99
|
-
async playlistQueuePlayNext() {
|
|
100
|
-
await this.
|
|
106
|
+
async playlistQueuePlayNext(options) {
|
|
107
|
+
await this._getJson(`${BASE_PATH}/playlist_queue_play_next.cgi`, undefined, options);
|
|
101
108
|
}
|
|
102
|
-
async addNewClip(file, clipType, storage,
|
|
109
|
+
async addNewClip(file, clipType, storage, clipId, fileName, options) {
|
|
110
|
+
const path = `${BASE_PATH}/clip_upload.cgi`;
|
|
103
111
|
const formData = new this.CustomFormData();
|
|
104
|
-
formData.append('clip_name',
|
|
112
|
+
formData.append('clip_name', clipId);
|
|
105
113
|
formData.append('clip_type', clipType);
|
|
106
114
|
formData.append('file', file, fileName);
|
|
107
|
-
const
|
|
108
|
-
const res = await
|
|
115
|
+
const agent = this.getClient(options?.proxyParams);
|
|
116
|
+
const res = await agent.post({
|
|
117
|
+
path,
|
|
118
|
+
data: formData,
|
|
119
|
+
parameters: {
|
|
120
|
+
storage: storage,
|
|
121
|
+
},
|
|
122
|
+
timeout: options?.timeout,
|
|
123
|
+
});
|
|
109
124
|
const output = (await res.json());
|
|
110
125
|
if (output.status !== 200) {
|
|
111
126
|
throw new AddNewClipError(output.message);
|
|
112
127
|
}
|
|
113
128
|
}
|
|
114
|
-
removeClip(
|
|
115
|
-
|
|
129
|
+
async removeClip(clipId, storage, options) {
|
|
130
|
+
await this._getJson(`${BASE_PATH}/clip_remove.cgi`, { clip_name: clipId, storage }, options);
|
|
116
131
|
}
|
|
117
|
-
async getClipList() {
|
|
118
|
-
const
|
|
119
|
-
return clipListSchema.parse(data).clip_list;
|
|
132
|
+
async getClipList(options) {
|
|
133
|
+
const res = await this._getJson(`${BASE_PATH}/clip_list.cgi`, undefined, options);
|
|
134
|
+
return clipListSchema.parse(res.data).clip_list;
|
|
120
135
|
}
|
|
121
|
-
setCamSwitchOptions(data, cameraFWVersion) {
|
|
122
|
-
const
|
|
136
|
+
setCamSwitchOptions(data, cameraFWVersion, options) {
|
|
137
|
+
const bitrateData = {
|
|
138
|
+
bitrateMode: data.bitrateMode,
|
|
139
|
+
maximumBitRate: data.maximumBitRate,
|
|
140
|
+
retentionTime: data.retentionTime,
|
|
141
|
+
bitRateLimit: data.bitRateLimit,
|
|
142
|
+
};
|
|
143
|
+
const bitrateVapixParams = parseBitrateOptionsToVapixParams(cameraFWVersion, data.bitrateMode, bitrateData);
|
|
123
144
|
const saveData = {
|
|
124
145
|
video: {
|
|
125
146
|
resolution: data.resolution,
|
|
@@ -136,9 +157,9 @@ export class CamSwitcherAPI {
|
|
|
136
157
|
},
|
|
137
158
|
keyboard: data.keyboard,
|
|
138
159
|
};
|
|
139
|
-
return this.setParamFromCameraJSON(CSW_PARAM_NAMES.SETTINGS, saveData);
|
|
160
|
+
return this.setParamFromCameraJSON(CSW_PARAM_NAMES.SETTINGS, saveData, options);
|
|
140
161
|
}
|
|
141
|
-
setGlobalAudioSettings(settings) {
|
|
162
|
+
setGlobalAudioSettings(settings, options) {
|
|
142
163
|
let acceptedType = 'NONE';
|
|
143
164
|
if (settings.type === 'source' && settings.source) {
|
|
144
165
|
if (isClip(settings.source)) {
|
|
@@ -154,9 +175,9 @@ export class CamSwitcherAPI {
|
|
|
154
175
|
clip_name: settings.source,
|
|
155
176
|
storage: settings.storage,
|
|
156
177
|
};
|
|
157
|
-
return this.setParamFromCameraJSON(CSW_PARAM_NAMES.MASTER_AUDIO, data);
|
|
178
|
+
return this.setParamFromCameraJSON(CSW_PARAM_NAMES.MASTER_AUDIO, data, options);
|
|
158
179
|
}
|
|
159
|
-
setSecondaryAudioSettings(settings) {
|
|
180
|
+
setSecondaryAudioSettings(settings, options) {
|
|
160
181
|
const data = {
|
|
161
182
|
type: settings.type,
|
|
162
183
|
stream_name: settings.streamName ?? '',
|
|
@@ -165,19 +186,19 @@ export class CamSwitcherAPI {
|
|
|
165
186
|
secondary_audio_level: settings.secondaryAudioLevel,
|
|
166
187
|
master_audio_level: settings.masterAudioLevel,
|
|
167
188
|
};
|
|
168
|
-
return this.setParamFromCameraJSON(CSW_PARAM_NAMES.SECONDARY_AUDIO, data);
|
|
189
|
+
return this.setParamFromCameraJSON(CSW_PARAM_NAMES.SECONDARY_AUDIO, data, options);
|
|
169
190
|
}
|
|
170
|
-
setDefaultPlaylist(
|
|
171
|
-
const value = JSON.stringify({ default_playlist_id:
|
|
191
|
+
setDefaultPlaylist(playlistId, options) {
|
|
192
|
+
const value = JSON.stringify({ default_playlist_id: playlistId });
|
|
172
193
|
return this.vapixAgent.setParameter({
|
|
173
194
|
[CSW_PARAM_NAMES.DEFAULT_PLAYLIST]: value,
|
|
174
|
-
},
|
|
195
|
+
}, options);
|
|
175
196
|
}
|
|
176
|
-
setPermanentRtspUrlToken(token) {
|
|
177
|
-
return this.vapixAgent.setParameter({ [CSW_PARAM_NAMES.RTSP_TOKEN]: token },
|
|
197
|
+
setPermanentRtspUrlToken(token, options) {
|
|
198
|
+
return this.vapixAgent.setParameter({ [CSW_PARAM_NAMES.RTSP_TOKEN]: token }, options);
|
|
178
199
|
}
|
|
179
|
-
async getCamSwitchOptions() {
|
|
180
|
-
const saveData = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.SETTINGS);
|
|
200
|
+
async getCamSwitchOptions(options) {
|
|
201
|
+
const saveData = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.SETTINGS, options);
|
|
181
202
|
if (isNullish(saveData.video)) {
|
|
182
203
|
return saveData;
|
|
183
204
|
}
|
|
@@ -202,12 +223,12 @@ export class CamSwitcherAPI {
|
|
|
202
223
|
keyboard: saveData.keyboard,
|
|
203
224
|
};
|
|
204
225
|
}
|
|
205
|
-
async getGlobalAudioSettings() {
|
|
226
|
+
async getGlobalAudioSettings(options) {
|
|
206
227
|
const settings = {
|
|
207
228
|
type: 'fromSource',
|
|
208
229
|
source: 'fromSource',
|
|
209
230
|
};
|
|
210
|
-
const res = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.MASTER_AUDIO);
|
|
231
|
+
const res = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.MASTER_AUDIO, options);
|
|
211
232
|
if (res.type === 'STREAM') {
|
|
212
233
|
settings.type = 'source';
|
|
213
234
|
settings.source = res.stream_name;
|
|
@@ -217,52 +238,35 @@ export class CamSwitcherAPI {
|
|
|
217
238
|
settings.source = res.clip_name;
|
|
218
239
|
settings.storage = res.storage;
|
|
219
240
|
}
|
|
220
|
-
return settings;
|
|
241
|
+
return globalAudioSettingsSchema.parse(settings);
|
|
221
242
|
}
|
|
222
|
-
async getSecondaryAudioSettings() {
|
|
223
|
-
const res = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.SECONDARY_AUDIO);
|
|
243
|
+
async getSecondaryAudioSettings(options) {
|
|
244
|
+
const res = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.SECONDARY_AUDIO, options);
|
|
224
245
|
const settings = {
|
|
225
246
|
type: res.type ?? 'NONE',
|
|
226
247
|
streamName: res.stream_name,
|
|
227
248
|
clipName: res.clip_name,
|
|
228
|
-
storage: res.storage,
|
|
249
|
+
storage: res.storage ?? 'SD_DISK',
|
|
229
250
|
secondaryAudioLevel: res.secondary_audio_level ?? 1,
|
|
230
251
|
masterAudioLevel: res.master_audio_level ?? 1,
|
|
231
252
|
};
|
|
232
|
-
return settings;
|
|
253
|
+
return secondaryAudioSettingsSchema.parse(settings);
|
|
233
254
|
}
|
|
234
|
-
async getPermanentRtspUrlToken() {
|
|
255
|
+
async getPermanentRtspUrlToken(options) {
|
|
235
256
|
const paramName = CSW_PARAM_NAMES.RTSP_TOKEN;
|
|
236
|
-
const res = await this.vapixAgent.getParameter([paramName],
|
|
237
|
-
return res[paramName] ?? '';
|
|
238
|
-
}
|
|
239
|
-
async get(path, parameters = {}) {
|
|
240
|
-
const res = await this.client.get(path, parameters);
|
|
241
|
-
if (res.ok) {
|
|
242
|
-
const d = (await res.json());
|
|
243
|
-
return d.data;
|
|
244
|
-
}
|
|
245
|
-
else {
|
|
246
|
-
throw new Error(await responseStringify(res));
|
|
247
|
-
}
|
|
257
|
+
const res = await this.vapixAgent.getParameter([paramName], options);
|
|
258
|
+
return z.string().parse(res[paramName] ?? '');
|
|
248
259
|
}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
if (res.ok) {
|
|
252
|
-
const parsed = await res.json();
|
|
253
|
-
return parsed.message === 'OK';
|
|
254
|
-
}
|
|
255
|
-
else {
|
|
256
|
-
throw new Error(await responseStringify(res));
|
|
257
|
-
}
|
|
260
|
+
downloadReport(options) {
|
|
261
|
+
return this._getText(`${BASE_PATH}/report.cgi`, undefined, options);
|
|
258
262
|
}
|
|
259
|
-
setParamFromCameraJSON(paramName, data) {
|
|
263
|
+
setParamFromCameraJSON(paramName, data, options) {
|
|
260
264
|
const params = {};
|
|
261
265
|
params[paramName] = JSON.stringify(data);
|
|
262
|
-
return this.vapixAgent.setParameter(params,
|
|
266
|
+
return this.vapixAgent.setParameter(params, options);
|
|
263
267
|
}
|
|
264
|
-
async getParamFromCameraAndJSONParse(paramName) {
|
|
265
|
-
const data = await this.vapixAgent.getParameter([paramName],
|
|
268
|
+
async getParamFromCameraAndJSONParse(paramName, options) {
|
|
269
|
+
const data = await this.vapixAgent.getParameter([paramName], options);
|
|
266
270
|
if (data[paramName] !== undefined) {
|
|
267
271
|
try {
|
|
268
272
|
if (data[paramName] === '') {
|
|
@@ -273,10 +277,24 @@ export class CamSwitcherAPI {
|
|
|
273
277
|
}
|
|
274
278
|
}
|
|
275
279
|
catch {
|
|
276
|
-
throw new
|
|
280
|
+
throw new JsonParseError(paramName, data[paramName]);
|
|
277
281
|
}
|
|
278
282
|
}
|
|
279
|
-
throw new
|
|
283
|
+
throw new ParameterNotFoundError(paramName);
|
|
284
|
+
}
|
|
285
|
+
async getUploadedFileList(clipName, storage, options) {
|
|
286
|
+
const res = await this._getJson(`${BASE_PATH}/clip_files.cgi`, { clip_name: clipName, storage }, options);
|
|
287
|
+
return clipFilesListSchema.parse(res).data.files;
|
|
288
|
+
}
|
|
289
|
+
async downloadClipFile(fileName, storage, options) {
|
|
290
|
+
return await this._getBlob(`${BASE_PATH}/clip_download_file.cgi`, { file_name: fileName, storage }, options);
|
|
291
|
+
}
|
|
292
|
+
async uploadClipFiles(files, storage, options) {
|
|
293
|
+
const formData = new FormData();
|
|
294
|
+
for (const file of files) {
|
|
295
|
+
formData.append(file.name, file);
|
|
296
|
+
}
|
|
297
|
+
await this._post(`${BASE_PATH}/clip_upload_file.cgi`, formData, { storage }, options);
|
|
280
298
|
}
|
|
281
299
|
}
|
|
282
300
|
const CSW_PARAM_NAMES = {
|
|
@@ -286,62 +304,3 @@ const CSW_PARAM_NAMES = {
|
|
|
286
304
|
RTSP_TOKEN: 'Camswitcher.RTSPAccessToken',
|
|
287
305
|
DEFAULT_PLAYLIST: 'Camswitcher.DefaultPlaylist',
|
|
288
306
|
};
|
|
289
|
-
const parseBitrateOptionsToBitrateVapixParams = (firmWareVersion, bitrateMode, cameraOptions) => {
|
|
290
|
-
if (!isFirmwareVersionAtLeast(firmWareVersion, FIRMWARE_WITH_BITRATE_MODES_SUPPORT)) {
|
|
291
|
-
return `videomaxbitrate=${cameraOptions.maximumBitRate}`;
|
|
292
|
-
}
|
|
293
|
-
if (bitrateMode === null) {
|
|
294
|
-
return '';
|
|
295
|
-
}
|
|
296
|
-
const data = {
|
|
297
|
-
VBR: 'videobitratemode=vbr',
|
|
298
|
-
MBR: `videobitratemode=mbr&videomaxbitrate=${cameraOptions.maximumBitRate}`,
|
|
299
|
-
ABR: `videobitratemode=abr&videoabrtargetbitrate=${cameraOptions.maximumBitRate}&videoabrretentiontime=${cameraOptions.retentionTime}&videoabrmaxbitrate=${cameraOptions.bitRateLimit}`,
|
|
300
|
-
};
|
|
301
|
-
return data[bitrateMode];
|
|
302
|
-
};
|
|
303
|
-
const parseVapixParamsToBitrateOptions = (bitrateVapixParams) => {
|
|
304
|
-
const params = {};
|
|
305
|
-
const searchParams = new URLSearchParams(bitrateVapixParams);
|
|
306
|
-
searchParams.forEach((value, key) => {
|
|
307
|
-
params[key] = value;
|
|
308
|
-
});
|
|
309
|
-
const bitrateMode = params['videobitratemode'] !== undefined ? params['videobitratemode'].toUpperCase() : undefined;
|
|
310
|
-
const hasLowerFw = bitrateMode === undefined && params['videomaxbitrate'] !== undefined;
|
|
311
|
-
if (hasLowerFw) {
|
|
312
|
-
const maximumBitRate = parseInt(params['videomaxbitrate'] ?? '0', 10);
|
|
313
|
-
return {
|
|
314
|
-
bitrateMode: 'MBR',
|
|
315
|
-
maximumBitRate: maximumBitRate,
|
|
316
|
-
retentionTime: 1,
|
|
317
|
-
bitRateLimit: Math.floor(maximumBitRate * 1.1),
|
|
318
|
-
};
|
|
319
|
-
}
|
|
320
|
-
if (bitrateMode === 'ABR') {
|
|
321
|
-
const maximumBitRate = parseInt(params['videoabrtargetbitrate'] ?? '0', 10);
|
|
322
|
-
const retentionTime = parseInt(params['videoabrretentiontime'] ?? '0', 10);
|
|
323
|
-
const bitRateLimit = parseInt(params['videoabrmaxbitrate'] ?? '0', 10);
|
|
324
|
-
return {
|
|
325
|
-
bitrateMode,
|
|
326
|
-
maximumBitRate,
|
|
327
|
-
retentionTime,
|
|
328
|
-
bitRateLimit,
|
|
329
|
-
};
|
|
330
|
-
}
|
|
331
|
-
else if (bitrateMode === 'MBR') {
|
|
332
|
-
const maximumBitRate = params['videomaxbitrate'] !== undefined ? parseInt(params['videomaxbitrate'], 10) : null;
|
|
333
|
-
const oldMaximumBitrateParamValue = parseInt(params['videombrmaxbitrate'] ?? '0', 10);
|
|
334
|
-
return {
|
|
335
|
-
bitrateMode: bitrateMode,
|
|
336
|
-
maximumBitRate: maximumBitRate ?? oldMaximumBitrateParamValue,
|
|
337
|
-
retentionTime: 1,
|
|
338
|
-
bitRateLimit: Math.floor(maximumBitRate ?? oldMaximumBitrateParamValue * 1.1),
|
|
339
|
-
};
|
|
340
|
-
}
|
|
341
|
-
return {
|
|
342
|
-
bitrateMode: bitrateMode,
|
|
343
|
-
retentionTime: 1,
|
|
344
|
-
maximumBitRate: 0,
|
|
345
|
-
bitRateLimit: 0,
|
|
346
|
-
};
|
|
347
|
-
};
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { blackListSchema, cameraSettingsSchema, flightInfoSchema, getIcaoSchema, mapInfoSchema, priorityListSchema, serverSettingsSchema, trackingModeSchema, typePriorityListSchema, whiteListSchema, wsAliasResponseSchema, zonesSchema, } from './types/PlaneTrackerAPI';
|
|
3
|
+
import { CannotSetCoordsInAutoModeError, ImportSettingsError, InvalidAltitudeError, InvalidLatLngError, ResetCalibrationError, ServerError, BadRequestError, } from './errors/errors';
|
|
4
|
+
import { cameraListSchema } from './types/GenetecAgent';
|
|
5
|
+
import { BasicAPI } from './internal/BasicAPI';
|
|
6
|
+
const BASE_PATH = '/local/planetracker';
|
|
7
|
+
export class PlaneTrackerAPI extends BasicAPI {
|
|
8
|
+
apiUser;
|
|
9
|
+
constructor(client, apiUser) {
|
|
10
|
+
super(client);
|
|
11
|
+
this.apiUser = apiUser;
|
|
12
|
+
}
|
|
13
|
+
static getProxyPath = () => `${BASE_PATH}/proxy.cgi`;
|
|
14
|
+
static getWsEventsPath = () => `${BASE_PATH}/package/ws`;
|
|
15
|
+
async checkAPIAvailable(options) {
|
|
16
|
+
await this._getJson(`${BASE_PATH}/api_check.cgi`, undefined, options);
|
|
17
|
+
}
|
|
18
|
+
async checkCameraTime(options) {
|
|
19
|
+
const res = await this._getJson(`${BASE_PATH}/camera_time.cgi`, undefined, options);
|
|
20
|
+
return z.boolean().parse(res.state);
|
|
21
|
+
}
|
|
22
|
+
async serverRunCheck(options) {
|
|
23
|
+
const agent = this.getClient(options?.proxyParams);
|
|
24
|
+
return await agent.get({ path: `${BASE_PATH}/package/serverRunCheck.cgi`, timeout: options?.timeout });
|
|
25
|
+
}
|
|
26
|
+
async getLiveViewAlias(rtspUrl, options) {
|
|
27
|
+
const agent = this.getClient(options?.proxyParams);
|
|
28
|
+
const res = await agent.get({
|
|
29
|
+
path: `${BASE_PATH}/getLiveViewAlias.cgi`,
|
|
30
|
+
parameters: { rtsp_url: rtspUrl },
|
|
31
|
+
timeout: options?.timeout,
|
|
32
|
+
});
|
|
33
|
+
return wsAliasResponseSchema.parse(await res.json());
|
|
34
|
+
}
|
|
35
|
+
async resetPtzCalibration(options) {
|
|
36
|
+
const agent = this.getClient(options?.proxyParams);
|
|
37
|
+
const res = await agent.get({
|
|
38
|
+
path: `${BASE_PATH}/package/resetPtzCalibration.cgi`,
|
|
39
|
+
parameters: this.apiUser,
|
|
40
|
+
timeout: options?.timeout,
|
|
41
|
+
});
|
|
42
|
+
if (!res.ok) {
|
|
43
|
+
throw new ResetCalibrationError('PTZ', res);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
async resetFocusCalibration(options) {
|
|
47
|
+
const agent = this.getClient(options?.proxyParams);
|
|
48
|
+
const res = await agent.get({
|
|
49
|
+
path: `${BASE_PATH}/package/resetFocusCalibration.cgi`,
|
|
50
|
+
parameters: this.apiUser,
|
|
51
|
+
timeout: options?.timeout,
|
|
52
|
+
});
|
|
53
|
+
if (!res.ok) {
|
|
54
|
+
throw new ResetCalibrationError('FOCUS', res);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async fetchCameraSettings(options) {
|
|
58
|
+
const res = await this._getJson(`${BASE_PATH}/package_camera_settings.cgi`, { action: 'get' }, options);
|
|
59
|
+
return cameraSettingsSchema.parse(res);
|
|
60
|
+
}
|
|
61
|
+
async setCameraSettings(settings, options) {
|
|
62
|
+
return await this._postJsonEncoded(`${BASE_PATH}/package_camera_settings.cgi`, settings, {
|
|
63
|
+
action: 'set',
|
|
64
|
+
}, options);
|
|
65
|
+
}
|
|
66
|
+
async fetchServerSettings(options) {
|
|
67
|
+
const res = await this._getJson(`${BASE_PATH}/package_server_settings.cgi`, { action: 'get' }, options);
|
|
68
|
+
return serverSettingsSchema.parse(res);
|
|
69
|
+
}
|
|
70
|
+
async exportAppSettings(dataType, options) {
|
|
71
|
+
return await this._getBlob(`${BASE_PATH}/package_data.cgi`, { action: 'EXPORT', dataType }, options);
|
|
72
|
+
}
|
|
73
|
+
async importAppSettings(dataType, formData, options) {
|
|
74
|
+
const agent = this.getClient(options?.proxyParams);
|
|
75
|
+
const res = await agent.post({
|
|
76
|
+
path: `${BASE_PATH}/package_data.cgi`,
|
|
77
|
+
data: formData,
|
|
78
|
+
parameters: { action: 'IMPORT', dataType },
|
|
79
|
+
timeout: options?.timeout,
|
|
80
|
+
});
|
|
81
|
+
if (!res.ok) {
|
|
82
|
+
throw new ImportSettingsError(res);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
async fetchFlightInfo(icao, options) {
|
|
86
|
+
const res = await this._getJson(`${BASE_PATH}/package/flightInfo.cgi`, { icao }, options);
|
|
87
|
+
return flightInfoSchema.parse(res);
|
|
88
|
+
}
|
|
89
|
+
async getTrackingMode(options) {
|
|
90
|
+
const res = await this._getJson(`${BASE_PATH}/package/getTrackingMode.cgi`, undefined, options);
|
|
91
|
+
return trackingModeSchema.parse(res);
|
|
92
|
+
}
|
|
93
|
+
async setTrackingMode(mode, options) {
|
|
94
|
+
await this._postJsonEncoded(`${BASE_PATH}/package/setTrackingMode.cgi`, { mode }, this.apiUser, options);
|
|
95
|
+
}
|
|
96
|
+
async startTrackingPlane(icao, options) {
|
|
97
|
+
const agent = this.getClient(options?.proxyParams);
|
|
98
|
+
await agent.get({
|
|
99
|
+
path: `${BASE_PATH}/package/trackIcao.cgi`,
|
|
100
|
+
parameters: { icao, ...this.apiUser },
|
|
101
|
+
timeout: options?.timeout,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
async stopTrackingPlane(options) {
|
|
105
|
+
const agent = this.getClient(options?.proxyParams);
|
|
106
|
+
await agent.get({
|
|
107
|
+
path: `${BASE_PATH}/package/resetIcao.cgi`,
|
|
108
|
+
parameters: this.apiUser,
|
|
109
|
+
timeout: options?.timeout,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
async getIcao(by, value, options) {
|
|
113
|
+
const res = await this._getJson(`${BASE_PATH}/package/getIcao.cgi`, { [by]: value }, options);
|
|
114
|
+
return getIcaoSchema.parse(res).icao;
|
|
115
|
+
}
|
|
116
|
+
async getPriorityList(options) {
|
|
117
|
+
const res = await this._getJson(`${BASE_PATH}/package/getPriorityList.cgi`, undefined, options);
|
|
118
|
+
return priorityListSchema.parse(res).priorityList;
|
|
119
|
+
}
|
|
120
|
+
async setPriorityList(priorityList, options) {
|
|
121
|
+
return await this._postJsonEncoded(`${BASE_PATH}/package/setPriorityList.cgi`, { priorityList }, this.apiUser, options);
|
|
122
|
+
}
|
|
123
|
+
async getTypePriorityList(options) {
|
|
124
|
+
const res = await this._getJson(`${BASE_PATH}/package/getTypePriorityList.cgi`, undefined, options);
|
|
125
|
+
return typePriorityListSchema.parse(res).typePriorityList;
|
|
126
|
+
}
|
|
127
|
+
async setTypePriorityList(typePriorityList, options) {
|
|
128
|
+
return await this._postJsonEncoded(`${BASE_PATH}/package/setTypePriorityList.cgi`, { typePriorityList }, this.apiUser, options);
|
|
129
|
+
}
|
|
130
|
+
async getWhiteList(options) {
|
|
131
|
+
const res = await this._getJson(`${BASE_PATH}/package/getWhiteList.cgi`, undefined, options);
|
|
132
|
+
return whiteListSchema.parse(res).whiteList;
|
|
133
|
+
}
|
|
134
|
+
async setWhiteList(whiteList, options) {
|
|
135
|
+
return await this._postJsonEncoded(`${BASE_PATH}/package/setWhiteList.cgi`, { whiteList }, this.apiUser, options);
|
|
136
|
+
}
|
|
137
|
+
async getBlackList(options) {
|
|
138
|
+
const res = await this._getJson(`${BASE_PATH}/package/getBlackList.cgi`, undefined, options);
|
|
139
|
+
return blackListSchema.parse(res).blackList;
|
|
140
|
+
}
|
|
141
|
+
async setBlackList(blackList, options) {
|
|
142
|
+
return await this._postJsonEncoded(`${BASE_PATH}/package/setBlackList.cgi`, { blackList }, this.apiUser, options);
|
|
143
|
+
}
|
|
144
|
+
async fetchMapInfo(options) {
|
|
145
|
+
const res = await this._getJson(`${BASE_PATH}/package/getMapInfo.cgi`, undefined, options);
|
|
146
|
+
return mapInfoSchema.parse(res);
|
|
147
|
+
}
|
|
148
|
+
async getZones(options) {
|
|
149
|
+
const res = await this._getJson(`${BASE_PATH}/package/getZones.cgi`, undefined, options);
|
|
150
|
+
return zonesSchema.parse(res);
|
|
151
|
+
}
|
|
152
|
+
async setZones(zones, options) {
|
|
153
|
+
await this._postJsonEncoded(`${BASE_PATH}/package/setZones.cgi`, zones, this.apiUser, options);
|
|
154
|
+
}
|
|
155
|
+
async goToCoordinates(lat, lon, alt, options) {
|
|
156
|
+
const agent = this.getClient(options?.proxyParams);
|
|
157
|
+
const res = await agent.get({
|
|
158
|
+
path: `${BASE_PATH}/package/goToCoordinates.cgi`,
|
|
159
|
+
parameters: { lat, lon, alt, ...this.apiUser },
|
|
160
|
+
timeout: options?.timeout,
|
|
161
|
+
});
|
|
162
|
+
if (!res.ok) {
|
|
163
|
+
if (res.status === 400 && res.statusText === 'Cannot set coordinates in automatic mode') {
|
|
164
|
+
throw new CannotSetCoordsInAutoModeError();
|
|
165
|
+
}
|
|
166
|
+
if (res.status === 400 && res.statusText === 'Invalid lat/lon parameters') {
|
|
167
|
+
throw new InvalidLatLngError();
|
|
168
|
+
}
|
|
169
|
+
if (res.status === 400 && res.statusText === 'Invalid alt parameter') {
|
|
170
|
+
throw new InvalidAltitudeError();
|
|
171
|
+
}
|
|
172
|
+
if (res.status === 400) {
|
|
173
|
+
throw new BadRequestError(res);
|
|
174
|
+
}
|
|
175
|
+
if (res.status === 500) {
|
|
176
|
+
throw new ServerError();
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
downloadReport(options) {
|
|
181
|
+
return this._getText(`${BASE_PATH}/report.cgi`, undefined, options);
|
|
182
|
+
}
|
|
183
|
+
async checkGenetecConnection(params, options) {
|
|
184
|
+
return await this._postUrlEncoded(`${BASE_PATH}/package/checkGenetecConnection.cgi`, params, options);
|
|
185
|
+
}
|
|
186
|
+
async getGenetecCameraList(params, options) {
|
|
187
|
+
const res = await this._postUrlEncoded(`${BASE_PATH}/package/getGenetecCameraList.cgi`, params, options);
|
|
188
|
+
return cameraListSchema.parse(await res.json());
|
|
189
|
+
}
|
|
190
|
+
}
|