camstreamerlib 4.0.0-beta.13 → 4.0.0-beta.130
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 +560 -336
- package/cjs/CamOverlayAPI.js +99 -184
- package/cjs/CamScripterAPI.d.ts +41 -17
- package/cjs/CamScripterAPI.js +50 -56
- package/cjs/CamStreamerAPI.d.ts +3139 -14
- package/cjs/CamStreamerAPI.js +151 -52
- package/cjs/CamSwitcherAPI.d.ts +155 -42
- package/cjs/CamSwitcherAPI.js +134 -189
- package/cjs/PlaneTrackerAPI.d.ts +236 -0
- package/cjs/PlaneTrackerAPI.js +194 -0
- package/cjs/VapixAPI.d.ts +84 -43
- package/cjs/VapixAPI.js +312 -216
- package/cjs/{CreatePackage.js → bin/CreatePackage.js} +44 -18
- package/cjs/errors/errors.d.ts +70 -4
- package/cjs/errors/errors.js +140 -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} +2534 -746
- package/cjs/types/CamOverlayAPI/CamOverlayAPI.js +131 -0
- package/cjs/{models → types}/CamOverlayAPI/accuweatherSchema.d.ts +15 -15
- package/cjs/{models → types}/CamOverlayAPI/accuweatherSchema.js +7 -8
- package/cjs/{models → types}/CamOverlayAPI/customGraphicsSchema.d.ts +106 -105
- package/cjs/{models → types}/CamOverlayAPI/customGraphicsSchema.js +5 -6
- package/{esm/models → cjs/types}/CamOverlayAPI/imagesSchema.d.ts +17 -17
- 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 +25 -25
- package/cjs/{models → types}/CamOverlayAPI/infotickerSchema.js +6 -7
- package/{esm/models → cjs/types}/CamOverlayAPI/pipSchema.d.ts +19 -19
- package/cjs/{models → types}/CamOverlayAPI/pipSchema.js +5 -6
- package/{esm/models → cjs/types}/CamOverlayAPI/ptzCompassSchema.d.ts +16 -13
- package/cjs/{models → types}/CamOverlayAPI/ptzCompassSchema.js +5 -5
- package/{esm/models → cjs/types}/CamOverlayAPI/ptzSchema.d.ts +26 -26
- 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 +13 -13
- package/cjs/types/CamOverlayAPI/screenSharingSchema.js +8 -0
- package/{esm/models/CamOverlayAPI/widgetCommonSchema.d.ts → cjs/types/CamOverlayAPI/serviceCommonTypes.d.ts} +75 -56
- package/cjs/{models/CamOverlayAPI/widgetCommonSchema.js → types/CamOverlayAPI/serviceCommonTypes.js} +33 -18
- package/{esm/models → cjs/types}/CamOverlayAPI/webCameraSharingSchema.d.ts +13 -13
- 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 +22299 -0
- package/cjs/types/CamStreamerAPI/CamStreamerAPI.js +165 -0
- package/cjs/types/CamStreamerAPI/facebookSchema.d.ts +501 -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 +500 -0
- package/cjs/types/CamStreamerAPI/streamCommonTypes.js +119 -0
- package/cjs/types/CamStreamerAPI/streamsSchema.d.ts +7379 -0
- package/cjs/types/CamStreamerAPI/streamsSchema.js +59 -0
- package/cjs/types/CamStreamerAPI/windySchema.d.ts +435 -0
- package/cjs/types/CamStreamerAPI/windySchema.js +11 -0
- package/cjs/types/CamStreamerAPI/youtubeSchema.d.ts +468 -0
- package/cjs/types/CamStreamerAPI/youtubeSchema.js +22 -0
- package/cjs/types/CamSwitcherAPI.d.ts +181 -121
- package/cjs/types/CamSwitcherAPI.js +31 -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 +255 -15
- package/cjs/types/VapixAPI.js +66 -3
- package/cjs/types/VapixEvents.d.ts +15 -0
- package/cjs/types/VapixEvents.js +2 -0
- package/cjs/types/common.d.ts +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 +149 -51
- package/esm/CamSwitcherAPI.js +137 -192
- package/esm/PlaneTrackerAPI.js +190 -0
- package/esm/VapixAPI.js +314 -218
- package/esm/{CreatePackage.js → bin/CreatePackage.js} +16 -16
- package/esm/errors/errors.js +122 -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 +110 -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 +142 -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 +116 -0
- package/esm/types/CamStreamerAPI/streamsSchema.js +53 -0
- package/esm/types/CamStreamerAPI/windySchema.js +5 -0
- package/esm/types/CamStreamerAPI/youtubeSchema.js +16 -0
- package/esm/types/CamSwitcherAPI.js +31 -1
- package/esm/types/GenetecAgent.js +28 -0
- package/esm/types/PlaneTrackerAPI.js +330 -0
- package/esm/types/VapixAPI.js +65 -2
- package/esm/types/VapixEvents.js +1 -0
- package/esm/types/common.js +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 +43 -9
- package/{esm → types}/CamOverlayAPI.d.ts +560 -336
- package/types/CamScripterAPI.d.ts +43 -0
- package/types/CamStreamerAPI.d.ts +3141 -0
- package/types/CamSwitcherAPI.d.ts +165 -0
- package/types/PlaneTrackerAPI.d.ts +236 -0
- package/types/VapixAPI.d.ts +119 -0
- package/types/bin/CreatePackage.d.ts +1 -0
- package/types/errors/errors.d.ts +103 -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} +2534 -746
- package/{esm/models → types/types}/CamOverlayAPI/accuweatherSchema.d.ts +15 -15
- package/{esm/models → types/types}/CamOverlayAPI/customGraphicsSchema.d.ts +106 -105
- package/{cjs/models → types/types}/CamOverlayAPI/imagesSchema.d.ts +17 -17
- package/{esm/models → types/types}/CamOverlayAPI/index.d.ts +2 -4
- package/{esm/models → types/types}/CamOverlayAPI/infotickerSchema.d.ts +25 -25
- package/{cjs/models → types/types}/CamOverlayAPI/pipSchema.d.ts +19 -19
- package/{cjs/models → types/types}/CamOverlayAPI/ptzCompassSchema.d.ts +16 -13
- package/{cjs/models → types/types}/CamOverlayAPI/ptzSchema.d.ts +26 -26
- package/types/types/CamOverlayAPI/scoreBoardSchema.d.ts +357 -0
- package/{esm/models → types/types}/CamOverlayAPI/screenSharingSchema.d.ts +13 -13
- package/{cjs/models/CamOverlayAPI/widgetCommonSchema.d.ts → types/types/CamOverlayAPI/serviceCommonTypes.d.ts} +75 -56
- package/{cjs/models → types/types}/CamOverlayAPI/webCameraSharingSchema.d.ts +13 -13
- 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 +22299 -0
- package/types/types/CamStreamerAPI/facebookSchema.d.ts +501 -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 +500 -0
- package/types/types/CamStreamerAPI/streamsSchema.d.ts +7379 -0
- package/types/types/CamStreamerAPI/windySchema.d.ts +435 -0
- package/types/types/CamStreamerAPI/youtubeSchema.d.ts +468 -0
- package/{esm → types}/types/CamSwitcherAPI.d.ts +181 -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 +255 -15
- 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/CamStreamerAPI.js
CHANGED
|
@@ -1,55 +1,153 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
return
|
|
19
|
-
}
|
|
20
|
-
async
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
async
|
|
31
|
-
await this.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return
|
|
36
|
-
}
|
|
37
|
-
async
|
|
38
|
-
await this.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { audioFileListSchema, srtStreamStatisticsSchema, storageListSchema, streamSchema, streamStatsSchema, } from './types/CamStreamerAPI/CamStreamerAPI';
|
|
3
|
+
import { UtcTimeFetchError, WsAuthorizationError, MigrationError } from './errors/errors';
|
|
4
|
+
import { oldStringStreamSchema, oldStringStreamSchemaWithId, } from './types/CamStreamerAPI/oldStreamSchema';
|
|
5
|
+
import { BasicAPI } from './internal/BasicAPI';
|
|
6
|
+
const BASE_PATH = '/local/camstreamer';
|
|
7
|
+
export class CamStreamerAPI extends BasicAPI {
|
|
8
|
+
static getProxyPath = () => `${BASE_PATH}/proxy.cgi`;
|
|
9
|
+
static getWsEventsPath = () => `${BASE_PATH}/events`;
|
|
10
|
+
async checkAPIAvailable(options) {
|
|
11
|
+
await this._getJson(`${BASE_PATH}/api_check.cgi`, undefined, options);
|
|
12
|
+
}
|
|
13
|
+
async wsAuthorization(options) {
|
|
14
|
+
const res = await this._getJson(`${BASE_PATH}/ws_authorization.cgi`, undefined, options);
|
|
15
|
+
if (res.status !== 200) {
|
|
16
|
+
throw new WsAuthorizationError(res.message);
|
|
17
|
+
}
|
|
18
|
+
return z.string().parse(res.data);
|
|
19
|
+
}
|
|
20
|
+
async getUtcTime(options) {
|
|
21
|
+
const res = await this._getJson(`${BASE_PATH}/get_utc_time.cgi`, undefined, options);
|
|
22
|
+
if (res.status !== 200) {
|
|
23
|
+
throw new UtcTimeFetchError(res.message);
|
|
24
|
+
}
|
|
25
|
+
return z.number().parse(res.data);
|
|
26
|
+
}
|
|
27
|
+
async getMaxFps(source = 0, options) {
|
|
28
|
+
return await this._getJson(`${BASE_PATH}/get_max_framerate.cgi`, { video_source: source.toString() }, options);
|
|
29
|
+
}
|
|
30
|
+
async isCSPassValid(pass, options) {
|
|
31
|
+
const res = await this._getJson(`${BASE_PATH}/check_pass.cgi`, { pass }, options);
|
|
32
|
+
return res.data === '1';
|
|
33
|
+
}
|
|
34
|
+
async getCamStreamerAppLog(options) {
|
|
35
|
+
return await this._getText(`${BASE_PATH}/view_log.cgi`, undefined, options);
|
|
36
|
+
}
|
|
37
|
+
async getStreamList(options) {
|
|
38
|
+
const res = await this._getJson(`${BASE_PATH}/stream_list.cgi`, { action: 'get' }, options);
|
|
39
|
+
const oldStreamListRecord = z.record(z.string(), oldStringStreamSchema).safeParse(res.data);
|
|
40
|
+
if (oldStreamListRecord.success) {
|
|
41
|
+
const data = Object.entries(oldStreamListRecord.data).map(([streamId, streamData]) => ({
|
|
42
|
+
streamId,
|
|
43
|
+
...parseCameraStreamResponse(streamData),
|
|
44
|
+
}));
|
|
45
|
+
throw new MigrationError([], data);
|
|
46
|
+
}
|
|
47
|
+
const newStreamData = [];
|
|
48
|
+
const oldStreamData = [];
|
|
49
|
+
const invalidStreamData = [];
|
|
50
|
+
for (const streamData of res.data.streamList) {
|
|
51
|
+
const newStreamParse = streamSchema.safeParse(streamData);
|
|
52
|
+
if (newStreamParse.success) {
|
|
53
|
+
newStreamData.push(newStreamParse.data);
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
const oldStreamParse = oldStringStreamSchemaWithId.safeParse(streamData);
|
|
57
|
+
if (oldStreamParse.success) {
|
|
58
|
+
oldStreamData.push({
|
|
59
|
+
streamId: oldStreamParse.data.streamId,
|
|
60
|
+
...parseCameraStreamResponse(oldStreamParse.data),
|
|
61
|
+
});
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
invalidStreamData.push(streamData);
|
|
50
65
|
}
|
|
51
|
-
|
|
52
|
-
throw new
|
|
66
|
+
if (oldStreamData.length > 0 || invalidStreamData.length > 0) {
|
|
67
|
+
throw new MigrationError(newStreamData, oldStreamData, invalidStreamData);
|
|
68
|
+
}
|
|
69
|
+
return newStreamData;
|
|
70
|
+
}
|
|
71
|
+
async setStreamList(streamList, options) {
|
|
72
|
+
await this._postJsonEncoded(`${BASE_PATH}/stream_list.cgi`, { streamList }, {
|
|
73
|
+
action: 'set',
|
|
74
|
+
}, options);
|
|
75
|
+
}
|
|
76
|
+
async getStream(streamId, options) {
|
|
77
|
+
const res = await this._getJson(`${BASE_PATH}/stream_list.cgi`, { action: 'get', stream_id: streamId }, options);
|
|
78
|
+
const newStream = streamSchema.safeParse(res.data);
|
|
79
|
+
if (newStream.success) {
|
|
80
|
+
return newStream.data;
|
|
53
81
|
}
|
|
82
|
+
const oldStream = oldStringStreamSchema.passthrough().parse(res.data);
|
|
83
|
+
throw new MigrationError([], [{ streamId, ...parseCameraStreamResponse(oldStream) }]);
|
|
84
|
+
}
|
|
85
|
+
async setStream(streamId, streamData, options) {
|
|
86
|
+
await this._postJsonEncoded(`${BASE_PATH}/stream_list.cgi`, streamData, {
|
|
87
|
+
action: 'set',
|
|
88
|
+
stream_id: streamId,
|
|
89
|
+
}, options);
|
|
90
|
+
}
|
|
91
|
+
async getStreamNetworkStatistics(streamId, options) {
|
|
92
|
+
const res = await this._getJson(`${BASE_PATH}/get_streamstat.cgi`, { stream_id: streamId }, options);
|
|
93
|
+
return streamStatsSchema.parse(res.data);
|
|
94
|
+
}
|
|
95
|
+
async getSrtStreamStatistics(streamId, options) {
|
|
96
|
+
const res = await this._getJson(`${BASE_PATH}/srt_statistics.cgi`, { stream_id: streamId }, options);
|
|
97
|
+
return srtStreamStatisticsSchema.parse(res.data);
|
|
98
|
+
}
|
|
99
|
+
async setStreamEnabled(streamId, enabled, options) {
|
|
100
|
+
await this._postUrlEncoded(`${BASE_PATH}/set_stream_enabled.cgi`, { stream_id: streamId, enabled: enabled ? 1 : 0 }, options);
|
|
101
|
+
}
|
|
102
|
+
async setStreamActive(streamId, active, options) {
|
|
103
|
+
await this._postUrlEncoded(`${BASE_PATH}/set_stream_active.cgi`, { stream_id: streamId, active: active ? 1 : 0 }, options);
|
|
104
|
+
}
|
|
105
|
+
async listFiles(options) {
|
|
106
|
+
const res = await this._getJson(`${BASE_PATH}/upload_audio.cgi`, { action: 'list' }, options);
|
|
107
|
+
return audioFileListSchema.parse(res.data);
|
|
108
|
+
}
|
|
109
|
+
async uploadFile(formData, storage, options) {
|
|
110
|
+
await this._post(`${BASE_PATH}/upload_audio.cgi`, formData, {
|
|
111
|
+
action: 'upload',
|
|
112
|
+
storage: storage,
|
|
113
|
+
}, options);
|
|
114
|
+
}
|
|
115
|
+
async removeFile(fileParams, options) {
|
|
116
|
+
await this._postUrlEncoded(`${BASE_PATH}/upload_audio.cgi`, { action: 'remove', ...fileParams }, options);
|
|
117
|
+
}
|
|
118
|
+
async getFileStorage(options) {
|
|
119
|
+
const res = await this._getJson(`${BASE_PATH}/upload_audio.cgi`, { action: 'get_storage' }, options);
|
|
120
|
+
return storageListSchema.parse(res.data);
|
|
121
|
+
}
|
|
122
|
+
async getFileFromCamera(path, options) {
|
|
123
|
+
return await this._getBlob(`${BASE_PATH}/audio.cgi`, { path }, options);
|
|
124
|
+
}
|
|
125
|
+
downloadReport(options) {
|
|
126
|
+
return this._getText(`${BASE_PATH}/report.cgi`, undefined, options);
|
|
54
127
|
}
|
|
55
128
|
}
|
|
129
|
+
export const parseCameraStreamResponse = (cameraStreamData) => {
|
|
130
|
+
return {
|
|
131
|
+
enabled: parseInt(cameraStreamData.enabled),
|
|
132
|
+
active: parseInt(cameraStreamData.active),
|
|
133
|
+
audioSource: cameraStreamData.audioSource,
|
|
134
|
+
avSyncMsec: parseInt(cameraStreamData.avSyncMsec),
|
|
135
|
+
internalVapixParameters: cameraStreamData.internalVapixParameters,
|
|
136
|
+
userVapixParameters: cameraStreamData.userVapixParameters,
|
|
137
|
+
outputParameters: cameraStreamData.outputParameters,
|
|
138
|
+
outputType: cameraStreamData.outputType,
|
|
139
|
+
mediaServerUrl: cameraStreamData.mediaServerUrl,
|
|
140
|
+
inputType: cameraStreamData.inputType,
|
|
141
|
+
inputUrl: cameraStreamData.inputUrl,
|
|
142
|
+
forceStereo: parseInt(cameraStreamData.forceStereo),
|
|
143
|
+
streamDelay: isNaN(parseInt(cameraStreamData.streamDelay)) ? null : parseInt(cameraStreamData.streamDelay),
|
|
144
|
+
statusLed: parseInt(cameraStreamData.statusLed),
|
|
145
|
+
statusPort: cameraStreamData.statusPort,
|
|
146
|
+
callApi: parseInt(cameraStreamData.callApi),
|
|
147
|
+
trigger: cameraStreamData.trigger,
|
|
148
|
+
schedule: cameraStreamData.schedule,
|
|
149
|
+
prepareAhead: parseInt(cameraStreamData.prepareAhead),
|
|
150
|
+
startTime: isNaN(parseInt(cameraStreamData.startTime)) ? null : parseInt(cameraStreamData.startTime),
|
|
151
|
+
stopTime: isNaN(parseInt(cameraStreamData.stopTime)) ? null : parseInt(cameraStreamData.stopTime),
|
|
152
|
+
};
|
|
153
|
+
};
|
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, } 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,10 @@ 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);
|
|
280
284
|
}
|
|
281
285
|
}
|
|
282
286
|
const CSW_PARAM_NAMES = {
|
|
@@ -286,62 +290,3 @@ const CSW_PARAM_NAMES = {
|
|
|
286
290
|
RTSP_TOKEN: 'Camswitcher.RTSPAccessToken',
|
|
287
291
|
DEFAULT_PLAYLIST: 'Camswitcher.DefaultPlaylist',
|
|
288
292
|
};
|
|
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
|
-
};
|