camstreamerlib 4.0.0-beta.9 → 4.0.0-beta.91
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +143 -38
- package/cjs/CamOverlayAPI.d.ts +579 -340
- package/cjs/CamOverlayAPI.js +121 -151
- package/cjs/CamScripterAPI.d.ts +44 -17
- package/cjs/CamScripterAPI.js +50 -34
- package/cjs/CamStreamerAPI.d.ts +588 -14
- package/cjs/CamStreamerAPI.js +171 -44
- package/cjs/CamSwitcherAPI.d.ts +158 -43
- package/cjs/CamSwitcherAPI.js +138 -122
- package/cjs/PlaneTrackerAPI.d.ts +241 -0
- package/cjs/PlaneTrackerAPI.js +254 -0
- package/cjs/VapixAPI.d.ts +95 -43
- package/cjs/VapixAPI.js +314 -232
- package/cjs/{CreatePackage.js → bin/CreatePackage.js} +44 -18
- package/cjs/errors/errors.d.ts +69 -4
- package/cjs/errors/errors.js +138 -7
- package/cjs/index.d.ts +20 -7
- package/cjs/index.js +28 -9
- package/cjs/internal/ProxyClient.d.ts +8 -9
- package/cjs/internal/ProxyClient.js +28 -34
- package/cjs/internal/WsEvents.d.ts +37 -0
- package/cjs/{CamSwitcherEvents.js → internal/WsEvents.js} +28 -22
- package/cjs/internal/types.d.ts +47 -0
- package/cjs/internal/types.js +2 -0
- package/cjs/internal/utils.d.ts +3 -1
- package/cjs/internal/utils.js +15 -3
- package/cjs/internal/versionCompare.d.ts +2 -2
- package/cjs/node/CamOverlayDrawingAPI.d.ts +41 -0
- package/cjs/{CamOverlayDrawingAPI.js → node/CamOverlayDrawingAPI.js} +28 -20
- package/{esm → cjs/node}/CamOverlayPainter/Frame.d.ts +8 -37
- package/cjs/{CamOverlayPainter → node/CamOverlayPainter}/Frame.js +33 -0
- package/cjs/{CamOverlayPainter → node/CamOverlayPainter}/Painter.d.ts +5 -21
- package/cjs/{CamOverlayPainter → node/CamOverlayPainter}/Painter.js +5 -17
- package/cjs/node/CamOverlayPainter/ResourceManager.d.ts +15 -0
- package/cjs/node/CamOverlayPainter/ResourceManager.js +72 -0
- package/cjs/node/CamScripterAPICameraEventsGenerator.d.ts +31 -0
- package/cjs/{CamScripterAPICameraEventsGenerator.js → node/CamScripterAPICameraEventsGenerator.js} +13 -13
- package/cjs/node/DefaultClient.d.ts +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/{models/CamOverlayAPI/widgetsSchema.d.ts → types/CamOverlayAPI/CamOverlayAPI.d.ts} +2343 -836
- package/cjs/types/CamOverlayAPI/CamOverlayAPI.js +92 -0
- package/cjs/{models → types}/CamOverlayAPI/accuweatherSchema.d.ts +19 -19
- package/cjs/{models → types}/CamOverlayAPI/accuweatherSchema.js +7 -8
- package/cjs/{models → types}/CamOverlayAPI/customGraphicsSchema.d.ts +110 -109
- package/cjs/{models → types}/CamOverlayAPI/customGraphicsSchema.js +5 -6
- package/{esm/models → cjs/types}/CamOverlayAPI/imagesSchema.d.ts +21 -21
- package/cjs/types/CamOverlayAPI/imagesSchema.js +9 -0
- package/cjs/{models → types}/CamOverlayAPI/index.d.ts +2 -4
- package/cjs/{models → types}/CamOverlayAPI/index.js +2 -4
- package/cjs/{models → types}/CamOverlayAPI/infotickerSchema.d.ts +27 -27
- package/cjs/{models → types}/CamOverlayAPI/infotickerSchema.js +6 -7
- package/{esm/models → cjs/types}/CamOverlayAPI/pipSchema.d.ts +23 -23
- package/cjs/{models → types}/CamOverlayAPI/pipSchema.js +5 -6
- package/{esm/models → cjs/types}/CamOverlayAPI/ptzCompassSchema.d.ts +20 -17
- package/cjs/{models → types}/CamOverlayAPI/ptzCompassSchema.js +5 -5
- package/{esm/models → cjs/types}/CamOverlayAPI/ptzSchema.d.ts +30 -30
- package/cjs/types/CamOverlayAPI/ptzSchema.js +12 -0
- package/cjs/types/CamOverlayAPI/scoreBoardSchema.d.ts +357 -0
- package/cjs/types/CamOverlayAPI/scoreBoardSchema.js +132 -0
- package/cjs/{models → types}/CamOverlayAPI/screenSharingSchema.d.ts +17 -17
- package/cjs/types/CamOverlayAPI/screenSharingSchema.js +8 -0
- package/{esm/models/CamOverlayAPI/widgetCommonSchema.d.ts → cjs/types/CamOverlayAPI/serviceCommonTypes.d.ts} +79 -60
- package/cjs/{models/CamOverlayAPI/widgetCommonSchema.js → types/CamOverlayAPI/serviceCommonTypes.js} +33 -18
- package/{esm/models → cjs/types}/CamOverlayAPI/webCameraSharingSchema.d.ts +17 -17
- package/cjs/types/CamOverlayAPI/webCameraSharingSchema.js +8 -0
- package/cjs/types/CamOverlayDrawingAPI.d.ts +48 -0
- package/cjs/types/CamOverlayDrawingAPI.js +2 -0
- package/cjs/types/CamOverlayPainter.d.ts +76 -0
- package/cjs/types/CamOverlayPainter.js +14 -0
- package/cjs/types/CamScripterAPI.d.ts +86 -23
- package/cjs/types/CamScripterAPI.js +24 -8
- package/cjs/types/CamScripterAPICameraEventsGenerator.d.ts +45 -0
- package/cjs/types/CamScripterAPICameraEventsGenerator.js +2 -0
- package/cjs/types/CamStreamerAPI/CamStreamerAPI.d.ts +3839 -0
- package/cjs/types/CamStreamerAPI/CamStreamerAPI.js +75 -0
- package/cjs/types/CamStreamerAPI/facebookSchema.d.ts +202 -0
- package/cjs/types/CamStreamerAPI/facebookSchema.js +11 -0
- package/cjs/types/CamStreamerAPI/hlsSchema.d.ts +202 -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 +250 -0
- package/cjs/types/CamStreamerAPI/mpegDvbSchema.js +27 -0
- package/cjs/types/{CamStreamerAPI.d.ts → CamStreamerAPI/oldStreamSchema.d.ts} +96 -27
- package/cjs/types/CamStreamerAPI/oldStreamSchema.js +53 -0
- package/cjs/types/CamStreamerAPI/rtmpSchema.d.ts +202 -0
- package/cjs/types/CamStreamerAPI/rtmpSchema.js +11 -0
- package/cjs/types/CamStreamerAPI/sdCardSchema.d.ts +202 -0
- package/cjs/types/CamStreamerAPI/sdCardSchema.js +11 -0
- package/cjs/types/CamStreamerAPI/streamCommonTypes.d.ts +369 -0
- package/cjs/types/CamStreamerAPI/streamCommonTypes.js +65 -0
- package/cjs/types/CamStreamerAPI/windySchema.d.ts +202 -0
- package/cjs/types/CamStreamerAPI/windySchema.js +11 -0
- package/cjs/types/CamStreamerAPI/youtubeSchema.d.ts +202 -0
- package/cjs/types/CamStreamerAPI/youtubeSchema.js +11 -0
- package/cjs/types/CamSwitcherAPI.d.ts +189 -110
- package/cjs/types/CamSwitcherAPI.js +38 -1
- package/cjs/{events → types}/GenetecAgent.d.ts +47 -47
- package/cjs/types/GenetecAgent.js +31 -0
- package/cjs/types/PlaneTrackerAPI.d.ts +980 -0
- package/cjs/types/PlaneTrackerAPI.js +333 -0
- package/cjs/types/VapixAPI.d.ts +338 -248
- 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 +1703 -0
- package/cjs/types/ws/PlaneTrackerEvents.js +207 -0
- package/cjs/web/DefaultClient.d.ts +7 -8
- package/cjs/web/DefaultClient.js +25 -9
- package/cjs/web/WsClient.d.ts +9 -5
- package/cjs/web/WsClient.js +16 -18
- package/cjs/ws/CamOverlayEvents.d.ts +8 -0
- package/cjs/ws/CamOverlayEvents.js +24 -0
- package/cjs/ws/CamStreamerEvents.d.ts +8 -0
- package/cjs/ws/CamStreamerEvents.js +24 -0
- package/cjs/ws/CamSwitcherEvents.d.ts +8 -0
- package/cjs/ws/CamSwitcherEvents.js +24 -0
- package/cjs/ws/PlaneTrackerEvents.d.ts +9 -0
- package/cjs/ws/PlaneTrackerEvents.js +30 -0
- package/esm/CamOverlayAPI.js +120 -150
- package/esm/CamScripterAPI.js +48 -32
- package/esm/CamStreamerAPI.js +166 -40
- package/esm/CamSwitcherAPI.js +136 -120
- package/esm/PlaneTrackerAPI.js +250 -0
- package/esm/VapixAPI.js +314 -232
- package/esm/{CreatePackage.js → bin/CreatePackage.js} +16 -16
- package/esm/errors/errors.js +120 -6
- package/esm/index.js +20 -7
- package/esm/internal/ProxyClient.js +28 -34
- package/esm/{CamSwitcherEvents.js → internal/WsEvents.js} +26 -20
- package/esm/internal/types.js +1 -0
- package/esm/internal/utils.js +11 -1
- package/esm/{CamOverlayDrawingAPI.js → node/CamOverlayDrawingAPI.js} +26 -18
- package/esm/{CamOverlayPainter → node/CamOverlayPainter}/Frame.js +33 -0
- package/esm/{CamOverlayPainter → node/CamOverlayPainter}/Painter.js +2 -13
- package/esm/{CamOverlayPainter → node/CamOverlayPainter}/ResourceManager.js +7 -5
- package/esm/{CamScripterAPICameraEventsGenerator.js → node/CamScripterAPICameraEventsGenerator.js} +11 -11
- package/esm/node/DefaultClient.js +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/{models → types}/CamOverlayAPI/accuweatherSchema.js +3 -4
- package/esm/{models → types}/CamOverlayAPI/customGraphicsSchema.js +3 -4
- package/esm/types/CamOverlayAPI/imagesSchema.js +6 -0
- package/esm/{models → types}/CamOverlayAPI/index.js +2 -4
- package/esm/{models → types}/CamOverlayAPI/infotickerSchema.js +3 -4
- package/esm/{models → types}/CamOverlayAPI/pipSchema.js +4 -5
- package/esm/{models → types}/CamOverlayAPI/ptzCompassSchema.js +4 -4
- package/esm/types/CamOverlayAPI/ptzSchema.js +9 -0
- package/esm/types/CamOverlayAPI/scoreBoardSchema.js +129 -0
- package/esm/types/CamOverlayAPI/screenSharingSchema.js +5 -0
- package/esm/{models/CamOverlayAPI/widgetCommonSchema.js → types/CamOverlayAPI/serviceCommonTypes.js} +32 -17
- package/esm/types/CamOverlayAPI/webCameraSharingSchema.js +5 -0
- package/esm/types/CamOverlayDrawingAPI.js +1 -0
- package/esm/types/CamOverlayPainter.js +11 -0
- package/esm/types/CamScripterAPI.js +23 -7
- package/esm/types/CamScripterAPICameraEventsGenerator.js +1 -0
- package/esm/types/CamStreamerAPI/CamStreamerAPI.js +65 -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 +21 -0
- package/esm/types/CamStreamerAPI/oldStreamSchema.js +50 -0
- package/esm/types/CamStreamerAPI/rtmpSchema.js +5 -0
- package/esm/types/CamStreamerAPI/sdCardSchema.js +5 -0
- package/esm/types/CamStreamerAPI/streamCommonTypes.js +62 -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 +204 -0
- package/esm/web/DefaultClient.js +25 -9
- package/esm/web/WsClient.js +16 -18
- package/esm/ws/CamOverlayEvents.js +20 -0
- package/esm/ws/CamStreamerEvents.js +20 -0
- package/esm/ws/CamSwitcherEvents.js +20 -0
- package/esm/ws/PlaneTrackerEvents.js +26 -0
- package/package.json +44 -11
- package/{esm → types}/CamOverlayAPI.d.ts +579 -340
- package/types/CamScripterAPI.d.ts +46 -0
- package/types/CamStreamerAPI.d.ts +590 -0
- package/types/CamSwitcherAPI.d.ts +167 -0
- package/types/PlaneTrackerAPI.d.ts +241 -0
- package/types/VapixAPI.d.ts +118 -0
- package/types/bin/CreatePackage.d.ts +1 -0
- package/types/errors/errors.d.ts +102 -0
- package/types/index.d.ts +27 -0
- package/types/internal/ProxyClient.d.ts +10 -0
- package/types/internal/WsEvents.d.ts +37 -0
- package/types/internal/types.d.ts +47 -0
- package/{esm → types}/internal/utils.d.ts +3 -1
- package/{esm → types}/internal/versionCompare.d.ts +2 -2
- package/types/node/CamOverlayDrawingAPI.d.ts +41 -0
- package/{cjs → types/node}/CamOverlayPainter/Frame.d.ts +8 -37
- package/{esm → types/node}/CamOverlayPainter/Painter.d.ts +5 -21
- package/types/node/CamOverlayPainter/ResourceManager.d.ts +15 -0
- package/types/node/CamScripterAPICameraEventsGenerator.d.ts +31 -0
- package/types/node/DefaultClient.d.ts +16 -0
- package/types/node/Digest.test.d.ts +1 -0
- package/{esm → types}/node/HttpRequestSender.d.ts +1 -0
- package/{esm → types}/node/HttpServer.d.ts +1 -1
- package/types/node/TimeZoneDaemon.d.ts +6 -0
- package/types/node/VapixEvents.d.ts +16 -0
- package/types/node/WsClient.d.ts +30 -0
- package/types/node/events/AxisCameraStationEvents.d.ts +12 -0
- package/types/node/events/GenetecAgent.d.ts +16 -0
- package/types/node/index.d.ts +18 -0
- package/{esm/models/CamOverlayAPI/widgetsSchema.d.ts → types/types/CamOverlayAPI/CamOverlayAPI.d.ts} +2343 -836
- package/{esm/models → types/types}/CamOverlayAPI/accuweatherSchema.d.ts +19 -19
- package/{esm/models → types/types}/CamOverlayAPI/customGraphicsSchema.d.ts +110 -109
- package/{cjs/models → types/types}/CamOverlayAPI/imagesSchema.d.ts +21 -21
- package/{esm/models → types/types}/CamOverlayAPI/index.d.ts +2 -4
- package/{esm/models → types/types}/CamOverlayAPI/infotickerSchema.d.ts +27 -27
- package/{cjs/models → types/types}/CamOverlayAPI/pipSchema.d.ts +23 -23
- package/{cjs/models → types/types}/CamOverlayAPI/ptzCompassSchema.d.ts +20 -17
- package/{cjs/models → types/types}/CamOverlayAPI/ptzSchema.d.ts +30 -30
- package/types/types/CamOverlayAPI/scoreBoardSchema.d.ts +357 -0
- package/{esm/models → types/types}/CamOverlayAPI/screenSharingSchema.d.ts +17 -17
- package/{cjs/models/CamOverlayAPI/widgetCommonSchema.d.ts → types/types/CamOverlayAPI/serviceCommonTypes.d.ts} +79 -60
- package/{cjs/models → types/types}/CamOverlayAPI/webCameraSharingSchema.d.ts +17 -17
- package/types/types/CamOverlayDrawingAPI.d.ts +48 -0
- package/types/types/CamOverlayPainter.d.ts +76 -0
- package/types/types/CamScripterAPI.d.ts +130 -0
- package/types/types/CamScripterAPICameraEventsGenerator.d.ts +45 -0
- package/types/types/CamStreamerAPI/CamStreamerAPI.d.ts +3839 -0
- package/types/types/CamStreamerAPI/facebookSchema.d.ts +202 -0
- package/types/types/CamStreamerAPI/hlsSchema.d.ts +202 -0
- package/types/types/CamStreamerAPI/index.d.ts +9 -0
- package/types/types/CamStreamerAPI/mpegDvbSchema.d.ts +250 -0
- package/{esm/types/CamStreamerAPI.d.ts → types/types/CamStreamerAPI/oldStreamSchema.d.ts} +96 -27
- package/types/types/CamStreamerAPI/rtmpSchema.d.ts +202 -0
- package/types/types/CamStreamerAPI/sdCardSchema.d.ts +202 -0
- package/types/types/CamStreamerAPI/streamCommonTypes.d.ts +369 -0
- package/types/types/CamStreamerAPI/windySchema.d.ts +202 -0
- package/types/types/CamStreamerAPI/youtubeSchema.d.ts +202 -0
- package/{esm → types}/types/CamSwitcherAPI.d.ts +189 -110
- package/{esm/events → types/types}/GenetecAgent.d.ts +47 -47
- package/types/types/PlaneTrackerAPI.d.ts +980 -0
- package/{esm → types}/types/VapixAPI.d.ts +338 -248
- package/types/types/VapixEvents.d.ts +15 -0
- package/{esm → types}/types/common.d.ts +18 -5
- package/types/types/ws/CamOverlayEvents.d.ts +88 -0
- package/types/types/ws/CamStreamerEvents.d.ts +249 -0
- package/types/types/ws/PlaneTrackerEvents.d.ts +1703 -0
- package/types/web/DefaultClient.d.ts +8 -0
- package/types/web/WsClient.d.ts +17 -0
- package/types/ws/CamOverlayEvents.d.ts +8 -0
- package/types/ws/CamStreamerEvents.d.ts +8 -0
- package/types/ws/CamSwitcherEvents.d.ts +8 -0
- package/types/ws/PlaneTrackerEvents.d.ts +9 -0
- package/cjs/CamOverlayDrawingAPI.d.ts +0 -86
- package/cjs/CamOverlayPainter/ResourceManager.d.ts +0 -14
- package/cjs/CamOverlayPainter/ResourceManager.js +0 -46
- package/cjs/CamScripterAPICameraEventsGenerator.d.ts +0 -74
- package/cjs/CamSwitcherEvents.d.ts +0 -18
- package/cjs/VapixEvents.d.ts +0 -43
- package/cjs/events/AxisCameraStationEvents.d.ts +0 -9
- package/cjs/events/AxisCameraStationEvents.js +0 -48
- package/cjs/events/GenetecAgent.js +0 -123
- package/cjs/internal/common.d.ts +0 -39
- package/cjs/internal/common.js +0 -27
- package/cjs/models/CamOverlayAPI/constants.d.ts +0 -11
- package/cjs/models/CamOverlayAPI/constants.js +0 -14
- package/cjs/models/CamOverlayAPI/fileSchema.d.ts +0 -28
- package/cjs/models/CamOverlayAPI/fileSchema.js +0 -17
- package/cjs/models/CamOverlayAPI/imagesSchema.js +0 -10
- package/cjs/models/CamOverlayAPI/ptzSchema.js +0 -13
- package/cjs/models/CamOverlayAPI/screenSharingSchema.js +0 -9
- package/cjs/models/CamOverlayAPI/webCameraSharingSchema.js +0 -9
- package/cjs/models/CamOverlayAPI/widgetsSchema.js +0 -27
- package/cjs/node/WsEventClient.d.ts +0 -13
- package/cjs/node/WsEventClient.js +0 -22
- package/cjs/types/CamOverlayAPI.d.ts +0 -328
- package/cjs/types/CamOverlayAPI.js +0 -26
- package/cjs/types/CamStreamerAPI.js +0 -28
- package/esm/CamOverlayDrawingAPI.d.ts +0 -86
- package/esm/CamOverlayPainter/ResourceManager.d.ts +0 -14
- package/esm/CamScripterAPI.d.ts +0 -19
- package/esm/CamScripterAPICameraEventsGenerator.d.ts +0 -74
- package/esm/CamStreamerAPI.d.ts +0 -16
- package/esm/CamSwitcherAPI.d.ts +0 -52
- package/esm/CamSwitcherEvents.d.ts +0 -18
- package/esm/VapixAPI.d.ts +0 -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 -14
- 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/models/CamOverlayAPI/constants.d.ts +0 -11
- package/esm/models/CamOverlayAPI/constants.js +0 -11
- package/esm/models/CamOverlayAPI/fileSchema.d.ts +0 -28
- package/esm/models/CamOverlayAPI/fileSchema.js +0 -14
- package/esm/models/CamOverlayAPI/imagesSchema.js +0 -7
- package/esm/models/CamOverlayAPI/ptzSchema.js +0 -10
- package/esm/models/CamOverlayAPI/screenSharingSchema.js +0 -6
- package/esm/models/CamOverlayAPI/webCameraSharingSchema.js +0 -6
- package/esm/models/CamOverlayAPI/widgetsSchema.js +0 -24
- package/esm/node/DefaultClient.d.ts +0 -15
- package/esm/node/WsClient.d.ts +0 -39
- package/esm/node/WsEventClient.d.ts +0 -13
- package/esm/node/WsEventClient.js +0 -18
- package/esm/types/CamOverlayAPI.d.ts +0 -328
- package/esm/types/CamOverlayAPI.js +0 -14
- package/esm/types/CamScripterAPI.d.ts +0 -67
- package/esm/types/CamStreamerAPI.js +0 -25
- package/esm/web/DefaultClient.d.ts +0 -9
- 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/CamStreamerAPI.js
CHANGED
|
@@ -1,61 +1,187 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ProxyClient } from './internal/ProxyClient';
|
|
3
|
+
import { audioFileListSchema, storageListSchema, streamSchema, } from './types/CamStreamerAPI/CamStreamerAPI';
|
|
4
|
+
import { ErrorWithResponse, UtcTimeFetchError, WsAuthorizationError, MigrationError, ParsingBlobError, } from './errors/errors';
|
|
5
|
+
import { oldStringStreamSchema, oldStringStreamSchemaWithId, } from './types/CamStreamerAPI/oldStreamSchema';
|
|
6
|
+
import { paramToUrl } from './internal/utils';
|
|
7
|
+
const BASE_PATH = '/local/camstreamer';
|
|
4
8
|
export class CamStreamerAPI {
|
|
5
9
|
client;
|
|
6
|
-
constructor(
|
|
7
|
-
|
|
8
|
-
|
|
10
|
+
constructor(client) {
|
|
11
|
+
this.client = client;
|
|
12
|
+
}
|
|
13
|
+
static getProxyPath = () => `${BASE_PATH}/proxy.cgi`;
|
|
14
|
+
getClient(proxyParams) {
|
|
15
|
+
return proxyParams ? new ProxyClient(this.client, proxyParams) : this.client;
|
|
16
|
+
}
|
|
17
|
+
async wsAuthorization(options) {
|
|
18
|
+
const res = await this._getJson(`${BASE_PATH}/ws_authorization.cgi`, undefined, options);
|
|
19
|
+
if (res.status !== 200) {
|
|
20
|
+
throw new WsAuthorizationError(res.message);
|
|
9
21
|
}
|
|
10
|
-
|
|
11
|
-
|
|
22
|
+
return z.string().parse(res.data);
|
|
23
|
+
}
|
|
24
|
+
async getUtcTime(options) {
|
|
25
|
+
const res = await this._getJson(`${BASE_PATH}/get_utc_time.cgi`, undefined, options);
|
|
26
|
+
if (res.status !== 200) {
|
|
27
|
+
throw new UtcTimeFetchError(res.message);
|
|
28
|
+
}
|
|
29
|
+
return z.number().parse(res.data);
|
|
30
|
+
}
|
|
31
|
+
async getStreamList(options) {
|
|
32
|
+
const res = await this._getJson(`${BASE_PATH}/stream_list.cgi`, { action: 'get' }, options);
|
|
33
|
+
const oldStreamListRecord = z.record(z.string(), oldStringStreamSchema).safeParse(res.data);
|
|
34
|
+
if (oldStreamListRecord.success) {
|
|
35
|
+
const data = Object.entries(oldStreamListRecord.data).map(([id, streamData]) => ({
|
|
36
|
+
id: parseInt(id),
|
|
37
|
+
...parseCameraStreamResponse(streamData),
|
|
38
|
+
}));
|
|
39
|
+
throw new MigrationError([], data);
|
|
40
|
+
}
|
|
41
|
+
const newStreamData = [];
|
|
42
|
+
const oldStreamData = [];
|
|
43
|
+
for (const streamData of res.data.streamList) {
|
|
44
|
+
const newStreamParse = streamSchema.safeParse(streamData);
|
|
45
|
+
if (newStreamParse.success) {
|
|
46
|
+
newStreamData.push(newStreamParse.data);
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
const oldStreamParse = oldStringStreamSchemaWithId.safeParse(streamData);
|
|
50
|
+
if (oldStreamParse.success) {
|
|
51
|
+
oldStreamData.push({
|
|
52
|
+
id: parseInt(oldStreamParse.data.id),
|
|
53
|
+
...parseCameraStreamResponse(oldStreamParse.data),
|
|
54
|
+
});
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
throw new Error('Failed to parse some stream entries');
|
|
12
58
|
}
|
|
59
|
+
if (oldStreamData.length > 0) {
|
|
60
|
+
throw new MigrationError(newStreamData, oldStreamData);
|
|
61
|
+
}
|
|
62
|
+
return newStreamData;
|
|
63
|
+
}
|
|
64
|
+
async setStreamList(streamList, options) {
|
|
65
|
+
await this._postJsonEncoded(`${BASE_PATH}/stream_list.cgi`, JSON.stringify({ streamList }), {
|
|
66
|
+
action: 'set',
|
|
67
|
+
}, options);
|
|
13
68
|
}
|
|
14
|
-
async
|
|
15
|
-
const
|
|
16
|
-
|
|
69
|
+
async getStream(streamId, options) {
|
|
70
|
+
const res = await this._getJson(`${BASE_PATH}/stream_list.cgi`, { action: 'get', stream_id: streamId }, options);
|
|
71
|
+
const newStream = streamSchema.safeParse(res.data);
|
|
72
|
+
if (newStream.success) {
|
|
73
|
+
return newStream.data;
|
|
74
|
+
}
|
|
75
|
+
const oldStream = oldStringStreamSchema.passthrough().parse(res.data);
|
|
76
|
+
throw new MigrationError([], [{ id: streamId, ...parseCameraStreamResponse(oldStream) }]);
|
|
17
77
|
}
|
|
18
|
-
async
|
|
19
|
-
|
|
20
|
-
|
|
78
|
+
async setStream(streamId, streamData, options) {
|
|
79
|
+
await this._postJsonEncoded(`${BASE_PATH}/stream_list.cgi`, JSON.stringify(streamData), {
|
|
80
|
+
action: 'set',
|
|
81
|
+
stream_id: streamId,
|
|
82
|
+
}, options);
|
|
21
83
|
}
|
|
22
|
-
async
|
|
23
|
-
const
|
|
24
|
-
return
|
|
84
|
+
async isStreaming(streamId, options) {
|
|
85
|
+
const res = await this._getJson(`${BASE_PATH}/get_streamstat.cgi`, { stream_id: streamId }, options);
|
|
86
|
+
return res.data.is_streaming === 1;
|
|
25
87
|
}
|
|
26
|
-
async
|
|
27
|
-
const {
|
|
28
|
-
|
|
29
|
-
stream_id: streamID,
|
|
30
|
-
streamDelay: streamDelay ?? '',
|
|
31
|
-
startTime: startTime ?? 'null',
|
|
32
|
-
stopTime: stopTime ?? 'null',
|
|
33
|
-
...rest,
|
|
34
|
-
});
|
|
88
|
+
async listFiles(options) {
|
|
89
|
+
const res = await this._getJson(`${BASE_PATH}/upload_audio.cgi`, { action: 'list' }, options);
|
|
90
|
+
return audioFileListSchema.parse(res.data);
|
|
35
91
|
}
|
|
36
|
-
async
|
|
37
|
-
await this.
|
|
92
|
+
async uploadFile(formData, storage, options) {
|
|
93
|
+
await this._post(`${BASE_PATH}/upload_audio.cgi`, formData, {
|
|
94
|
+
action: 'upload',
|
|
95
|
+
storage: storage,
|
|
96
|
+
}, options);
|
|
38
97
|
}
|
|
39
|
-
async
|
|
40
|
-
|
|
41
|
-
return response.data.is_streaming === 1;
|
|
98
|
+
async removeFile(fileParams, options) {
|
|
99
|
+
await this._postUrlEncoded(`${BASE_PATH}/upload_audio.cgi`, { action: 'remove', ...fileParams }, options, undefined);
|
|
42
100
|
}
|
|
43
|
-
async
|
|
44
|
-
await this.
|
|
101
|
+
async getFileStorage(options) {
|
|
102
|
+
const res = await this._getJson(`${BASE_PATH}/upload_audio.cgi`, { action: 'get_storage' }, options);
|
|
103
|
+
return storageListSchema.parse(res.data);
|
|
45
104
|
}
|
|
46
|
-
|
|
47
|
-
return this.
|
|
105
|
+
async getFileFromCamera(path, options) {
|
|
106
|
+
return await this._getBlob(`${BASE_PATH}/audio.cgi`, { path }, options);
|
|
48
107
|
}
|
|
49
|
-
async
|
|
50
|
-
|
|
108
|
+
async _getJson(path, parameters, options) {
|
|
109
|
+
const agent = this.getClient(options?.proxyParams);
|
|
110
|
+
const res = await agent.get({ path, parameters, timeout: options?.timeout });
|
|
111
|
+
if (res.ok) {
|
|
112
|
+
return await res.json();
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
throw new ErrorWithResponse(res);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
async _getBlob(path, parameters, options) {
|
|
119
|
+
const agent = this.getClient(options?.proxyParams);
|
|
120
|
+
const res = await agent.get({ path, parameters, timeout: options?.timeout });
|
|
121
|
+
if (res.ok) {
|
|
122
|
+
return await this.parseBlobResponse(res);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
throw new ErrorWithResponse(res);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
async parseBlobResponse(response) {
|
|
129
|
+
try {
|
|
130
|
+
return (await response.blob());
|
|
131
|
+
}
|
|
132
|
+
catch (err) {
|
|
133
|
+
throw new ParsingBlobError(err);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
async _postUrlEncoded(path, parameters, options, headers) {
|
|
137
|
+
const data = paramToUrl(parameters);
|
|
138
|
+
const baseHeaders = { 'Content-Type': 'application/x-www-form-urlencoded' };
|
|
139
|
+
return this._post(path, data, undefined, options, { ...baseHeaders, ...headers });
|
|
140
|
+
}
|
|
141
|
+
async _postJsonEncoded(path, data, parameters, options, headers) {
|
|
142
|
+
const agent = this.getClient(options?.proxyParams);
|
|
143
|
+
const baseHeaders = { 'Accept': 'application/json', 'Content-Type': 'application/json' };
|
|
144
|
+
return agent.post({
|
|
145
|
+
path,
|
|
146
|
+
data,
|
|
147
|
+
parameters,
|
|
148
|
+
timeout: options?.timeout,
|
|
149
|
+
headers: { ...baseHeaders, ...headers },
|
|
150
|
+
});
|
|
51
151
|
}
|
|
52
|
-
async
|
|
53
|
-
const
|
|
152
|
+
async _post(path, data, parameters, options, headers) {
|
|
153
|
+
const agent = this.getClient(options?.proxyParams);
|
|
154
|
+
const res = await agent.post({ path, data, parameters, headers, timeout: options?.timeout });
|
|
54
155
|
if (res.ok) {
|
|
55
156
|
return await res.json();
|
|
56
157
|
}
|
|
57
158
|
else {
|
|
58
|
-
throw new
|
|
159
|
+
throw new ErrorWithResponse(res);
|
|
59
160
|
}
|
|
60
161
|
}
|
|
61
162
|
}
|
|
163
|
+
export const parseCameraStreamResponse = (cameraStreamData) => {
|
|
164
|
+
return {
|
|
165
|
+
enabled: parseInt(cameraStreamData.enabled),
|
|
166
|
+
active: parseInt(cameraStreamData.active),
|
|
167
|
+
audioSource: cameraStreamData.audioSource,
|
|
168
|
+
avSyncMsec: parseInt(cameraStreamData.avSyncMsec),
|
|
169
|
+
internalVapixParameters: cameraStreamData.internalVapixParameters,
|
|
170
|
+
userVapixParameters: cameraStreamData.userVapixParameters,
|
|
171
|
+
outputParameters: cameraStreamData.outputParameters,
|
|
172
|
+
outputType: cameraStreamData.outputType,
|
|
173
|
+
mediaServerUrl: cameraStreamData.mediaServerUrl,
|
|
174
|
+
inputType: cameraStreamData.inputType,
|
|
175
|
+
inputUrl: cameraStreamData.inputUrl,
|
|
176
|
+
forceStereo: parseInt(cameraStreamData.forceStereo),
|
|
177
|
+
streamDelay: isNaN(parseInt(cameraStreamData.streamDelay)) ? null : parseInt(cameraStreamData.streamDelay),
|
|
178
|
+
statusLed: parseInt(cameraStreamData.statusLed),
|
|
179
|
+
statusPort: cameraStreamData.statusPort,
|
|
180
|
+
callApi: parseInt(cameraStreamData.callApi),
|
|
181
|
+
trigger: cameraStreamData.trigger,
|
|
182
|
+
schedule: cameraStreamData.schedule,
|
|
183
|
+
prepareAhead: parseInt(cameraStreamData.prepareAhead),
|
|
184
|
+
startTime: isNaN(parseInt(cameraStreamData.startTime)) ? null : parseInt(cameraStreamData.startTime),
|
|
185
|
+
stopTime: isNaN(parseInt(cameraStreamData.stopTime)) ? null : parseInt(cameraStreamData.stopTime),
|
|
186
|
+
};
|
|
187
|
+
};
|
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 = {
|