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