camstreamerlib 4.0.0-beta.3 → 4.0.0-beta.31

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.
Files changed (194) hide show
  1. package/README.md +8 -2
  2. package/cjs/CamOverlayAPI.d.ts +48 -26
  3. package/cjs/CamOverlayAPI.js +171 -88
  4. package/cjs/CamOverlayDrawingAPI.d.ts +2 -47
  5. package/cjs/CamOverlayDrawingAPI.js +6 -3
  6. package/cjs/CamOverlayPainter/Frame.d.ts +8 -37
  7. package/cjs/CamOverlayPainter/Frame.js +33 -0
  8. package/cjs/CamOverlayPainter/Painter.d.ts +16 -10
  9. package/cjs/CamOverlayPainter/Painter.js +6 -5
  10. package/cjs/CamOverlayPainter/ResourceManager.d.ts +3 -2
  11. package/cjs/CamOverlayPainter/ResourceManager.js +8 -11
  12. package/cjs/CamScripterAPI.d.ts +34 -16
  13. package/cjs/CamScripterAPI.js +50 -41
  14. package/cjs/CamScripterAPICameraEventsGenerator.d.ts +1 -1
  15. package/cjs/CamScripterAPICameraEventsGenerator.js +6 -3
  16. package/cjs/CamStreamerAPI.d.ts +17 -14
  17. package/cjs/CamStreamerAPI.js +32 -32
  18. package/cjs/CamSwitcherAPI.d.ts +43 -37
  19. package/cjs/CamSwitcherAPI.js +123 -114
  20. package/cjs/CamSwitcherEvents.d.ts +1 -1
  21. package/cjs/PlaneTrackerAPI.d.ts +43 -0
  22. package/cjs/PlaneTrackerAPI.js +211 -0
  23. package/cjs/VapixAPI.d.ts +56 -42
  24. package/cjs/VapixAPI.js +305 -216
  25. package/cjs/VapixEvents.d.ts +1 -1
  26. package/cjs/VapixEvents.js +3 -3
  27. package/cjs/errors/errors.d.ts +3 -0
  28. package/cjs/errors/errors.js +8 -1
  29. package/cjs/events/AxisCameraStationEvents.d.ts +7 -4
  30. package/cjs/events/AxisCameraStationEvents.js +23 -18
  31. package/cjs/events/GenetecAgent.d.ts +6 -3
  32. package/cjs/events/GenetecAgent.js +30 -19
  33. package/cjs/index.d.ts +14 -1
  34. package/cjs/index.js +23 -2
  35. package/cjs/internal/Digest.js +6 -6
  36. package/cjs/internal/ProxyClient.d.ts +8 -9
  37. package/cjs/internal/ProxyClient.js +25 -29
  38. package/cjs/internal/types.d.ts +42 -0
  39. package/cjs/internal/types.js +2 -0
  40. package/cjs/internal/utils.d.ts +4 -1
  41. package/cjs/internal/utils.js +22 -3
  42. package/cjs/internal/versionCompare.d.ts +2 -2
  43. package/cjs/node/DefaultClient.d.ts +5 -6
  44. package/cjs/node/DefaultClient.js +12 -14
  45. package/cjs/node/HttpRequestSender.d.ts +1 -0
  46. package/cjs/node/HttpRequestSender.js +13 -3
  47. package/cjs/node/HttpServer.js +1 -1
  48. package/cjs/node/WsClient.d.ts +2 -1
  49. package/cjs/node/index.d.ts +2 -0
  50. package/cjs/node/index.js +18 -1
  51. package/cjs/types/CamOverlayAPI/CamOverlayAPI.d.ts +3071 -0
  52. package/cjs/types/CamOverlayAPI/CamOverlayAPI.js +127 -0
  53. package/cjs/types/CamOverlayAPI/accuweatherSchema.d.ts +114 -0
  54. package/cjs/types/CamOverlayAPI/accuweatherSchema.js +50 -0
  55. package/cjs/types/CamOverlayAPI/customGraphicsSchema.d.ts +783 -0
  56. package/cjs/types/CamOverlayAPI/customGraphicsSchema.js +75 -0
  57. package/cjs/types/CamOverlayAPI/imagesSchema.d.ts +122 -0
  58. package/cjs/types/CamOverlayAPI/imagesSchema.js +12 -0
  59. package/cjs/types/CamOverlayAPI/index.d.ts +9 -0
  60. package/cjs/types/CamOverlayAPI/index.js +25 -0
  61. package/cjs/types/CamOverlayAPI/infotickerSchema.d.ts +130 -0
  62. package/cjs/types/CamOverlayAPI/infotickerSchema.js +29 -0
  63. package/cjs/types/CamOverlayAPI/pipSchema.d.ts +166 -0
  64. package/cjs/types/CamOverlayAPI/pipSchema.js +42 -0
  65. package/cjs/types/CamOverlayAPI/ptzCompassSchema.d.ts +126 -0
  66. package/cjs/types/CamOverlayAPI/ptzCompassSchema.js +28 -0
  67. package/cjs/types/CamOverlayAPI/ptzSchema.d.ts +146 -0
  68. package/cjs/types/CamOverlayAPI/ptzSchema.js +15 -0
  69. package/cjs/types/CamOverlayAPI/screenSharingSchema.d.ts +79 -0
  70. package/cjs/types/CamOverlayAPI/screenSharingSchema.js +11 -0
  71. package/cjs/types/CamOverlayAPI/webCameraSharingSchema.d.ts +79 -0
  72. package/cjs/types/CamOverlayAPI/webCameraSharingSchema.js +11 -0
  73. package/cjs/types/CamOverlayDrawingAPI.d.ts +58 -0
  74. package/cjs/types/CamOverlayDrawingAPI.js +2 -0
  75. package/cjs/types/CamOverlayPainter.d.ts +74 -0
  76. package/cjs/types/CamOverlayPainter.js +2 -0
  77. package/cjs/types/CamScripterAPI.d.ts +82 -17
  78. package/cjs/types/CamScripterAPI.js +22 -7
  79. package/cjs/types/CamStreamerAPI.d.ts +16 -5
  80. package/cjs/types/CamStreamerAPI.js +5 -1
  81. package/cjs/types/CamSwitcherAPI.d.ts +4 -6
  82. package/cjs/types/CamSwitcherEvents.d.ts +77 -0
  83. package/cjs/types/CamSwitcherEvents.js +8 -0
  84. package/cjs/types/PlaneTrackerAPI.d.ts +8 -0
  85. package/cjs/types/PlaneTrackerAPI.js +2 -0
  86. package/cjs/types/VapixAPI.d.ts +635 -520
  87. package/cjs/types/VapixAPI.js +62 -24
  88. package/cjs/types/common.d.ts +14 -5
  89. package/cjs/web/DefaultClient.d.ts +5 -5
  90. package/cjs/web/DefaultClient.js +22 -10
  91. package/cjs/web/WsClient.js +2 -2
  92. package/esm/CamOverlayAPI.d.ts +48 -26
  93. package/esm/CamOverlayAPI.js +167 -84
  94. package/esm/CamOverlayDrawingAPI.d.ts +2 -47
  95. package/esm/CamOverlayDrawingAPI.js +6 -3
  96. package/esm/CamOverlayPainter/Frame.d.ts +8 -37
  97. package/esm/CamOverlayPainter/Frame.js +33 -0
  98. package/esm/CamOverlayPainter/Painter.d.ts +16 -10
  99. package/esm/CamOverlayPainter/Painter.js +5 -3
  100. package/esm/CamOverlayPainter/ResourceManager.d.ts +3 -2
  101. package/esm/CamOverlayPainter/ResourceManager.js +7 -11
  102. package/esm/CamScripterAPI.d.ts +34 -16
  103. package/esm/CamScripterAPI.js +46 -37
  104. package/esm/CamScripterAPICameraEventsGenerator.d.ts +1 -1
  105. package/esm/CamScripterAPICameraEventsGenerator.js +6 -3
  106. package/esm/CamStreamerAPI.d.ts +17 -14
  107. package/esm/CamStreamerAPI.js +32 -32
  108. package/esm/CamSwitcherAPI.d.ts +43 -37
  109. package/esm/CamSwitcherAPI.js +116 -107
  110. package/esm/CamSwitcherEvents.d.ts +1 -1
  111. package/esm/PlaneTrackerAPI.d.ts +43 -0
  112. package/esm/PlaneTrackerAPI.js +207 -0
  113. package/esm/VapixAPI.d.ts +56 -42
  114. package/esm/VapixAPI.js +297 -208
  115. package/esm/VapixEvents.d.ts +1 -1
  116. package/esm/VapixEvents.js +3 -3
  117. package/esm/errors/errors.d.ts +3 -0
  118. package/esm/errors/errors.js +6 -0
  119. package/esm/events/AxisCameraStationEvents.d.ts +7 -4
  120. package/esm/events/AxisCameraStationEvents.js +18 -13
  121. package/esm/events/GenetecAgent.d.ts +6 -3
  122. package/esm/events/GenetecAgent.js +20 -9
  123. package/esm/index.d.ts +14 -1
  124. package/esm/index.js +14 -1
  125. package/esm/internal/Digest.js +6 -6
  126. package/esm/internal/ProxyClient.d.ts +8 -9
  127. package/esm/internal/ProxyClient.js +25 -29
  128. package/esm/internal/types.d.ts +42 -0
  129. package/esm/internal/types.js +1 -0
  130. package/esm/internal/utils.d.ts +4 -1
  131. package/esm/internal/utils.js +17 -1
  132. package/esm/internal/versionCompare.d.ts +2 -2
  133. package/esm/node/DefaultClient.d.ts +5 -6
  134. package/esm/node/DefaultClient.js +12 -14
  135. package/esm/node/HttpRequestSender.d.ts +1 -0
  136. package/esm/node/HttpRequestSender.js +13 -3
  137. package/esm/node/HttpServer.js +1 -1
  138. package/esm/node/WsClient.d.ts +2 -1
  139. package/esm/node/index.d.ts +2 -0
  140. package/esm/node/index.js +2 -0
  141. package/esm/types/CamOverlayAPI/CamOverlayAPI.d.ts +3071 -0
  142. package/esm/types/CamOverlayAPI/CamOverlayAPI.js +124 -0
  143. package/esm/types/CamOverlayAPI/accuweatherSchema.d.ts +114 -0
  144. package/esm/types/CamOverlayAPI/accuweatherSchema.js +46 -0
  145. package/esm/types/CamOverlayAPI/customGraphicsSchema.d.ts +783 -0
  146. package/esm/types/CamOverlayAPI/customGraphicsSchema.js +71 -0
  147. package/esm/types/CamOverlayAPI/imagesSchema.d.ts +122 -0
  148. package/esm/types/CamOverlayAPI/imagesSchema.js +8 -0
  149. package/esm/types/CamOverlayAPI/index.d.ts +9 -0
  150. package/esm/types/CamOverlayAPI/index.js +9 -0
  151. package/esm/types/CamOverlayAPI/infotickerSchema.d.ts +130 -0
  152. package/esm/types/CamOverlayAPI/infotickerSchema.js +25 -0
  153. package/esm/types/CamOverlayAPI/pipSchema.d.ts +166 -0
  154. package/esm/types/CamOverlayAPI/pipSchema.js +38 -0
  155. package/esm/types/CamOverlayAPI/ptzCompassSchema.d.ts +126 -0
  156. package/esm/types/CamOverlayAPI/ptzCompassSchema.js +24 -0
  157. package/esm/types/CamOverlayAPI/ptzSchema.d.ts +146 -0
  158. package/esm/types/CamOverlayAPI/ptzSchema.js +11 -0
  159. package/esm/types/CamOverlayAPI/screenSharingSchema.d.ts +79 -0
  160. package/esm/types/CamOverlayAPI/screenSharingSchema.js +7 -0
  161. package/esm/types/CamOverlayAPI/webCameraSharingSchema.d.ts +79 -0
  162. package/esm/types/CamOverlayAPI/webCameraSharingSchema.js +7 -0
  163. package/esm/types/CamOverlayDrawingAPI.d.ts +58 -0
  164. package/esm/types/CamOverlayDrawingAPI.js +1 -0
  165. package/esm/types/CamOverlayPainter.d.ts +74 -0
  166. package/esm/types/CamOverlayPainter.js +1 -0
  167. package/esm/types/CamScripterAPI.d.ts +82 -17
  168. package/esm/types/CamScripterAPI.js +21 -6
  169. package/esm/types/CamStreamerAPI.d.ts +16 -5
  170. package/esm/types/CamStreamerAPI.js +4 -0
  171. package/esm/types/CamSwitcherAPI.d.ts +4 -6
  172. package/esm/types/CamSwitcherEvents.d.ts +77 -0
  173. package/esm/types/CamSwitcherEvents.js +8 -0
  174. package/esm/types/PlaneTrackerAPI.d.ts +8 -0
  175. package/esm/types/PlaneTrackerAPI.js +1 -0
  176. package/esm/types/VapixAPI.d.ts +635 -520
  177. package/esm/types/VapixAPI.js +61 -23
  178. package/esm/types/common.d.ts +14 -5
  179. package/esm/web/DefaultClient.d.ts +5 -5
  180. package/esm/web/DefaultClient.js +22 -10
  181. package/esm/web/WsClient.js +2 -2
  182. package/package.json +9 -8
  183. package/cjs/internal/common.d.ts +0 -39
  184. package/cjs/internal/common.js +0 -27
  185. package/cjs/node/WsEventClient.d.ts +0 -13
  186. package/cjs/node/WsEventClient.js +0 -22
  187. package/cjs/types/CamOverlayAPI.d.ts +0 -188
  188. package/cjs/types/CamOverlayAPI.js +0 -47
  189. package/esm/internal/common.d.ts +0 -39
  190. package/esm/internal/common.js +0 -20
  191. package/esm/node/WsEventClient.d.ts +0 -13
  192. package/esm/node/WsEventClient.js +0 -18
  193. package/esm/types/CamOverlayAPI.d.ts +0 -188
  194. package/esm/types/CamOverlayAPI.js +0 -44
@@ -1,46 +1,52 @@
1
- import { IClient } from './internal/common';
1
+ import { IClient, TResponse } from './internal/types';
2
2
  import { TAudioPushInfo, TOutputInfo, TStorageInfo, TStreamSaveList, TClipList, TStreamSaveLoadList, TClipSaveLoadList, TPlaylistSaveLoadList, TTrackerSaveList, TrackerSaveLoadList, TClipSaveList, TPlaylistSaveList, TCameraOptions, TGlobalAudioSettings, TSecondaryAudioSettings } from './types/CamSwitcherAPI';
3
- import { TAudioChannel, TNetworkCamera, TStorageType } from './types/common';
4
- export declare class CamSwitcherAPI<Client extends IClient = IClient> {
3
+ import { TAudioChannel, THttpRequestOptions, TNetworkCamera, TProxyParams, TStorageType } from './types/common';
4
+ import { ProxyClient } from './internal/ProxyClient';
5
+ export declare class CamSwitcherAPI<Client extends IClient<TResponse> = IClient<TResponse>> {
5
6
  client: Client;
7
+ private CustomFormData;
6
8
  private vapixAgent;
7
- constructor(client: Client);
9
+ constructor(client: Client, CustomFormData?: {
10
+ new (form?: HTMLFormElement | undefined, submitter?: HTMLElement | null | undefined): FormData;
11
+ prototype: FormData;
12
+ });
8
13
  static getProxyUrlPath: () => string;
9
14
  static getWsEventsUrlPath: () => string;
10
15
  static getClipPreviewUrlPath: (id: string, storage: TStorageType) => string;
11
- generateSilence(sampleRate: number, channels: TAudioChannel): Promise<void>;
12
- checkCameraTime(): Promise<boolean>;
13
- getIpListFromNetworkCheck(): Promise<TNetworkCamera[]>;
14
- getMaxFps(source: number): Promise<number>;
15
- getStorageInfo(): Promise<TStorageInfo[]>;
16
- wsAuthorization(): Promise<string>;
17
- getOutputInfo(): Promise<TOutputInfo>;
18
- getAudioPushInfo(): Promise<TAudioPushInfo>;
19
- getStreamSaveList(): Promise<TStreamSaveLoadList>;
20
- getClipSaveList(): Promise<TClipSaveLoadList>;
21
- getPlaylistSaveList(): Promise<TPlaylistSaveLoadList>;
22
- getTrackerSaveList(): Promise<TrackerSaveLoadList>;
23
- setStreamSaveList(data: TStreamSaveList): Promise<boolean>;
24
- setClipSaveList(data: TClipSaveList): Promise<boolean>;
25
- setPlaylistSaveList(data: TPlaylistSaveList): Promise<boolean>;
26
- setTrackerSaveList(data: TTrackerSaveList): Promise<boolean>;
27
- playlistSwitch(playlistName: string): Promise<void>;
28
- playlistQueuePush(playlistName: string): Promise<void>;
29
- playlistQueueClear(): Promise<void>;
30
- playlistQueueList(): Promise<string[]>;
31
- playlistQueuePlayNext(): Promise<void>;
32
- addNewClip(file: any, clipType: 'video' | 'audio', storage: TStorageType, id: string, fileName?: string): Promise<void>;
33
- removeClip(id: string, storage: TStorageType): Promise<any>;
34
- getClipList(): Promise<TClipList>;
35
- setCamSwitchOptions(data: TCameraOptions, cameraFWVersion: string): Promise<boolean>;
36
- setGlobalAudioSettings(settings: TGlobalAudioSettings): Promise<boolean>;
37
- setSecondaryAudioSettings(settings: TSecondaryAudioSettings): Promise<boolean>;
38
- setDefaultPlaylist(id: string): Promise<boolean>;
39
- setPermanentRtspUrlToken(token: string): Promise<boolean>;
40
- getCamSwitchOptions(): Promise<Partial<TCameraOptions>>;
41
- getGlobalAudioSettings(): Promise<TGlobalAudioSettings>;
42
- getSecondaryAudioSettings(): Promise<TSecondaryAudioSettings>;
43
- getPermanentRtspUrlToken(): Promise<string>;
16
+ getClient(proxyParams?: TProxyParams): Client | ProxyClient<Client>;
17
+ generateSilence(sampleRate: number, channels: TAudioChannel, options?: THttpRequestOptions): Promise<void>;
18
+ checkCameraTime(options?: THttpRequestOptions): Promise<boolean>;
19
+ getNetworkCameraList(options?: THttpRequestOptions): Promise<TNetworkCamera[]>;
20
+ getMaxFps(source: number, options?: THttpRequestOptions): Promise<number>;
21
+ getStorageInfo(options?: THttpRequestOptions): Promise<TStorageInfo[]>;
22
+ wsAuthorization(options?: THttpRequestOptions): Promise<string>;
23
+ getOutputInfo(options?: THttpRequestOptions): Promise<TOutputInfo>;
24
+ getAudioPushInfo(options?: THttpRequestOptions): Promise<TAudioPushInfo>;
25
+ getStreamSaveList(options?: THttpRequestOptions): Promise<TStreamSaveLoadList>;
26
+ getClipSaveList(options?: THttpRequestOptions): Promise<TClipSaveLoadList>;
27
+ getPlaylistSaveList(options?: THttpRequestOptions): Promise<TPlaylistSaveLoadList>;
28
+ getTrackerSaveList(options?: THttpRequestOptions): Promise<TrackerSaveLoadList>;
29
+ setStreamSaveList(data: TStreamSaveList, options?: THttpRequestOptions): Promise<boolean>;
30
+ setClipSaveList(data: TClipSaveList, options?: THttpRequestOptions): Promise<boolean>;
31
+ setPlaylistSaveList(data: TPlaylistSaveList, options?: THttpRequestOptions): Promise<boolean>;
32
+ setTrackerSaveList(data: TTrackerSaveList, options?: THttpRequestOptions): Promise<boolean>;
33
+ playlistSwitch(playlistName: string, options?: THttpRequestOptions): Promise<void>;
34
+ playlistQueuePush(playlistName: string, options?: THttpRequestOptions): Promise<void>;
35
+ playlistQueueClear(options?: THttpRequestOptions): Promise<void>;
36
+ playlistQueueList(options?: THttpRequestOptions): Promise<string[]>;
37
+ playlistQueuePlayNext(options?: THttpRequestOptions): Promise<void>;
38
+ addNewClip(file: any, clipType: 'video' | 'audio', storage: TStorageType, id: string, fileName?: string, options?: THttpRequestOptions): Promise<void>;
39
+ removeClip(id: string, storage: TStorageType, options?: THttpRequestOptions): Promise<any>;
40
+ getClipList(options?: THttpRequestOptions): Promise<TClipList>;
41
+ setCamSwitchOptions(data: TCameraOptions, cameraFWVersion: string, options?: THttpRequestOptions): Promise<boolean>;
42
+ setGlobalAudioSettings(settings: TGlobalAudioSettings, options?: THttpRequestOptions): Promise<boolean>;
43
+ setSecondaryAudioSettings(settings: TSecondaryAudioSettings, options?: THttpRequestOptions): Promise<boolean>;
44
+ setDefaultPlaylist(id: string, options?: THttpRequestOptions): Promise<boolean>;
45
+ setPermanentRtspUrlToken(token: string, options?: THttpRequestOptions): Promise<boolean>;
46
+ getCamSwitchOptions(options?: THttpRequestOptions): Promise<Partial<TCameraOptions>>;
47
+ getGlobalAudioSettings(options?: THttpRequestOptions): Promise<TGlobalAudioSettings>;
48
+ getSecondaryAudioSettings(options?: THttpRequestOptions): Promise<TSecondaryAudioSettings>;
49
+ getPermanentRtspUrlToken(options?: THttpRequestOptions): Promise<string>;
44
50
  private get;
45
51
  private set;
46
52
  private setParamFromCameraJSON;
@@ -3,124 +3,135 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CamSwitcherAPI = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const errors_1 = require("./errors/errors");
6
- const common_1 = require("./internal/common");
6
+ const utils_1 = require("./internal/utils");
7
7
  const CamSwitcherAPI_1 = require("./types/CamSwitcherAPI");
8
- const common_2 = require("./types/common");
8
+ const common_1 = require("./types/common");
9
9
  const VapixAPI_1 = require("./VapixAPI");
10
10
  const versionCompare_1 = require("./internal/versionCompare");
11
- const utils_1 = require("./internal/utils");
12
11
  const constants_1 = require("./internal/constants");
13
- const baseUrl = '/local/camswitcher/api';
12
+ const ProxyClient_1 = require("./internal/ProxyClient");
13
+ const BASE_PATH = '/local/camswitcher/api';
14
14
  class CamSwitcherAPI {
15
15
  client;
16
+ CustomFormData;
16
17
  vapixAgent;
17
- constructor(client) {
18
+ constructor(client, CustomFormData = FormData) {
18
19
  this.client = client;
19
- this.vapixAgent = new VapixAPI_1.VapixAPI(client, () => '');
20
+ this.CustomFormData = CustomFormData;
21
+ this.vapixAgent = new VapixAPI_1.VapixAPI(client);
20
22
  }
21
- static getProxyUrlPath = () => `${baseUrl}/proxy.cgi`;
23
+ static getProxyUrlPath = () => `${BASE_PATH}/proxy.cgi`;
22
24
  static getWsEventsUrlPath = () => `/local/camswitcher/events`;
23
- static getClipPreviewUrlPath = (id, storage) => `${baseUrl}/clip_preview.cgi?clip_name=${id}&storage=${storage}`;
24
- async generateSilence(sampleRate, channels) {
25
- await this.client.get(`${baseUrl}/generate_silence.cgi`, {
26
- sample_rate: sampleRate.toString(),
27
- channels,
25
+ static getClipPreviewUrlPath = (id, storage) => `${BASE_PATH}/clip_preview.cgi?clip_name=${id}&storage=${storage}`;
26
+ getClient(proxyParams) {
27
+ return proxyParams ? new ProxyClient_1.ProxyClient(this.client, proxyParams) : this.client;
28
+ }
29
+ async generateSilence(sampleRate, channels, options) {
30
+ const agent = this.getClient(options?.proxyParams);
31
+ await agent.get({
32
+ path: `${BASE_PATH}/generate_silence.cgi`,
33
+ parameters: {
34
+ sample_rate: sampleRate.toString(),
35
+ channels,
36
+ },
37
+ timeout: options?.timeout,
28
38
  });
29
39
  }
30
- async checkCameraTime() {
31
- const data = await this.get(`${baseUrl}/camera_time.cgi`);
40
+ async checkCameraTime(options) {
41
+ const data = await this.get(`${BASE_PATH}/camera_time.cgi`, undefined, options);
32
42
  return zod_1.z.boolean().parse(data);
33
43
  }
34
- async getIpListFromNetworkCheck() {
35
- const data = await this.get(`${baseUrl}/network_camera_list.cgi`);
36
- return common_2.networkCameraListSchema.parse(data);
44
+ async getNetworkCameraList(options) {
45
+ const data = await this.get(`${BASE_PATH}/network_camera_list.cgi`, undefined, options);
46
+ return common_1.networkCameraListSchema.parse(data);
37
47
  }
38
- async getMaxFps(source) {
39
- const data = await this.get(`${baseUrl}/get_max_framerate.cgi`, {
48
+ async getMaxFps(source, options) {
49
+ const data = await this.get(`${BASE_PATH}/get_max_framerate.cgi`, {
40
50
  video_source: source.toString(),
41
- });
51
+ }, options);
42
52
  return zod_1.z.number().parse(data);
43
53
  }
44
- async getStorageInfo() {
45
- const data = await this.get(`${baseUrl}/get_storage.cgi`);
54
+ async getStorageInfo(options) {
55
+ const data = await this.get(`${BASE_PATH}/get_storage.cgi`, undefined, options);
46
56
  return CamSwitcherAPI_1.storageInfoListSchema.parse(data);
47
57
  }
48
- async wsAuthorization() {
49
- const data = await this.get(`${baseUrl}/ws_authorization.cgi`);
58
+ async wsAuthorization(options) {
59
+ const data = await this.get(`${BASE_PATH}/ws_authorization.cgi`, undefined, options);
50
60
  return zod_1.z.string().parse(data);
51
61
  }
52
- async getOutputInfo() {
53
- const data = await this.get(`${baseUrl}/output_info.cgi`);
62
+ async getOutputInfo(options) {
63
+ const data = await this.get(`${BASE_PATH}/output_info.cgi`, undefined, options);
54
64
  return CamSwitcherAPI_1.outputInfoSchema.parse(data);
55
65
  }
56
- async getAudioPushInfo() {
57
- const data = await this.get(`${baseUrl}/audio_push_info.cgi`);
66
+ async getAudioPushInfo(options) {
67
+ const data = await this.get(`${BASE_PATH}/audio_push_info.cgi`, undefined, options);
58
68
  return CamSwitcherAPI_1.audioPushInfoSchema.parse(data);
59
69
  }
60
- async getStreamSaveList() {
61
- const data = await this.get(`${baseUrl}/streams.cgi`, { action: 'get' });
70
+ async getStreamSaveList(options) {
71
+ const data = await this.get(`${BASE_PATH}/streams.cgi`, { action: 'get' }, options);
62
72
  return CamSwitcherAPI_1.streamSaveLoadSchema.parse(data);
63
73
  }
64
- async getClipSaveList() {
65
- const data = await this.get(`${baseUrl}/clips.cgi`, { action: 'get' });
74
+ async getClipSaveList(options) {
75
+ const data = await this.get(`${BASE_PATH}/clips.cgi`, { action: 'get' }, options);
66
76
  return CamSwitcherAPI_1.clipSaveLoadSchema.parse(data);
67
77
  }
68
- async getPlaylistSaveList() {
69
- const data = await this.get(`${baseUrl}/playlists.cgi`, { action: 'get' });
78
+ async getPlaylistSaveList(options) {
79
+ const data = await this.get(`${BASE_PATH}/playlists.cgi`, { action: 'get' }, options);
70
80
  return CamSwitcherAPI_1.playlistSaveLoadSchema.parse(data);
71
81
  }
72
- async getTrackerSaveList() {
73
- const data = await this.get(`${baseUrl}/trackers.cgi`, { action: 'get' });
82
+ async getTrackerSaveList(options) {
83
+ const data = await this.get(`${BASE_PATH}/trackers.cgi`, { action: 'get' }, options);
74
84
  return CamSwitcherAPI_1.trackerSaveLoadSchema.parse(data);
75
85
  }
76
- async setStreamSaveList(data) {
77
- return await this.set(`${baseUrl}/streams.cgi`, data, { action: 'set' });
86
+ async setStreamSaveList(data, options) {
87
+ return await this.set(`${BASE_PATH}/streams.cgi`, data, { action: 'set' }, options);
78
88
  }
79
- async setClipSaveList(data) {
80
- return await this.set(`${baseUrl}/clips.cgi`, data, { action: 'set' });
89
+ async setClipSaveList(data, options) {
90
+ return await this.set(`${BASE_PATH}/clips.cgi`, data, { action: 'set' }, options);
81
91
  }
82
- async setPlaylistSaveList(data) {
83
- return await this.set(`${baseUrl}/playlists.cgi`, data, { action: 'set' });
92
+ async setPlaylistSaveList(data, options) {
93
+ return await this.set(`${BASE_PATH}/playlists.cgi`, data, { action: 'set' }, options);
84
94
  }
85
- async setTrackerSaveList(data) {
86
- return await this.set(`${baseUrl}/trackers.cgi`, data, { action: 'set' });
95
+ async setTrackerSaveList(data, options) {
96
+ return await this.set(`${BASE_PATH}/trackers.cgi`, data, { action: 'set' }, options);
87
97
  }
88
- async playlistSwitch(playlistName) {
89
- await this.get(`${baseUrl}/playlist_switch.cgi?playlist_name=${playlistName}`);
98
+ async playlistSwitch(playlistName, options) {
99
+ await this.get(`${BASE_PATH}/playlist_switch.cgi`, { playlist_name: playlistName }, options);
90
100
  }
91
- async playlistQueuePush(playlistName) {
92
- await this.get(`${baseUrl}/playlist_queue_push.cgi?playlist_name=${playlistName}`);
101
+ async playlistQueuePush(playlistName, options) {
102
+ await this.get(`${BASE_PATH}/playlist_queue_push.cgi`, { playlist_name: playlistName }, options);
93
103
  }
94
- async playlistQueueClear() {
95
- await this.get(`${baseUrl}/playlist_queue_clear.cgi`);
104
+ async playlistQueueClear(options) {
105
+ await this.get(`${BASE_PATH}/playlist_queue_clear.cgi`, undefined, options);
96
106
  }
97
- async playlistQueueList() {
98
- const data = await this.get(`${baseUrl}/playlist_queue_list.cgi`);
107
+ async playlistQueueList(options) {
108
+ const data = await this.get(`${BASE_PATH}/playlist_queue_list.cgi`, undefined, options);
99
109
  return CamSwitcherAPI_1.playlistQueueSchema.parse(data).playlistQueueList;
100
110
  }
101
- async playlistQueuePlayNext() {
102
- await this.get(`${baseUrl}/playlist_queue_play_next.cgi`);
111
+ async playlistQueuePlayNext(options) {
112
+ await this.get(`${BASE_PATH}/playlist_queue_play_next.cgi`, undefined, options);
103
113
  }
104
- async addNewClip(file, clipType, storage, id, fileName) {
105
- const formData = new FormData();
114
+ async addNewClip(file, clipType, storage, id, fileName, options) {
115
+ const path = `${BASE_PATH}/clip_upload.cgi?storage=${storage}`;
116
+ const formData = new this.CustomFormData();
106
117
  formData.append('clip_name', id);
107
118
  formData.append('clip_type', clipType);
108
119
  formData.append('file', file, fileName);
109
- const path = `${baseUrl}/clip_upload.cgi?storage=${storage}`;
110
- const res = await this.client.post(path, formData);
120
+ const agent = this.getClient(options?.proxyParams);
121
+ const res = await agent.post({ path, data: formData, timeout: options?.timeout });
111
122
  const output = (await res.json());
112
123
  if (output.status !== 200) {
113
124
  throw new errors_1.AddNewClipError(output.message);
114
125
  }
115
126
  }
116
- removeClip(id, storage) {
117
- return this.get(`${baseUrl}/clip_remove.cgi`, { clip_name: id, storage });
127
+ removeClip(id, storage, options) {
128
+ return this.get(`${BASE_PATH}/clip_remove.cgi`, { clip_name: id, storage }, options);
118
129
  }
119
- async getClipList() {
120
- const data = await this.get(`${baseUrl}/clip_list.cgi`);
130
+ async getClipList(options) {
131
+ const data = await this.get(`${BASE_PATH}/clip_list.cgi`, undefined, options);
121
132
  return CamSwitcherAPI_1.clipListSchema.parse(data).clip_list;
122
133
  }
123
- setCamSwitchOptions(data, cameraFWVersion) {
134
+ setCamSwitchOptions(data, cameraFWVersion, options) {
124
135
  const bitrateVapixParams = parseBitrateOptionsToBitrateVapixParams(cameraFWVersion, data.bitrateMode, data);
125
136
  const saveData = {
126
137
  video: {
@@ -138,9 +149,9 @@ class CamSwitcherAPI {
138
149
  },
139
150
  keyboard: data.keyboard,
140
151
  };
141
- return this.setParamFromCameraJSON(CSW_PARAM_NAMES.SETTINGS, saveData);
152
+ return this.setParamFromCameraJSON(CSW_PARAM_NAMES.SETTINGS, saveData, options);
142
153
  }
143
- setGlobalAudioSettings(settings) {
154
+ setGlobalAudioSettings(settings, options) {
144
155
  let acceptedType = 'NONE';
145
156
  if (settings.type === 'source' && settings.source) {
146
157
  if ((0, utils_1.isClip)(settings.source)) {
@@ -156,9 +167,9 @@ class CamSwitcherAPI {
156
167
  clip_name: settings.source,
157
168
  storage: settings.storage,
158
169
  };
159
- return this.setParamFromCameraJSON(CSW_PARAM_NAMES.MASTER_AUDIO, data);
170
+ return this.setParamFromCameraJSON(CSW_PARAM_NAMES.MASTER_AUDIO, data, options);
160
171
  }
161
- setSecondaryAudioSettings(settings) {
172
+ setSecondaryAudioSettings(settings, options) {
162
173
  const data = {
163
174
  type: settings.type,
164
175
  stream_name: settings.streamName ?? '',
@@ -167,34 +178,34 @@ class CamSwitcherAPI {
167
178
  secondary_audio_level: settings.secondaryAudioLevel,
168
179
  master_audio_level: settings.masterAudioLevel,
169
180
  };
170
- return this.setParamFromCameraJSON(CSW_PARAM_NAMES.SECONDARY_AUDIO, data);
181
+ return this.setParamFromCameraJSON(CSW_PARAM_NAMES.SECONDARY_AUDIO, data, options);
171
182
  }
172
- setDefaultPlaylist(id) {
183
+ setDefaultPlaylist(id, options) {
173
184
  const value = JSON.stringify({ default_playlist_id: id });
174
185
  return this.vapixAgent.setParameter({
175
186
  [CSW_PARAM_NAMES.DEFAULT_PLAYLIST]: value,
176
- }, null);
187
+ }, options);
177
188
  }
178
- setPermanentRtspUrlToken(token) {
179
- return this.vapixAgent.setParameter({ [CSW_PARAM_NAMES.RTSP_TOKEN]: token }, null);
189
+ setPermanentRtspUrlToken(token, options) {
190
+ return this.vapixAgent.setParameter({ [CSW_PARAM_NAMES.RTSP_TOKEN]: token }, options);
180
191
  }
181
- async getCamSwitchOptions() {
182
- const saveData = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.SETTINGS);
183
- if ((0, common_1.isNullish)(saveData.video)) {
192
+ async getCamSwitchOptions(options) {
193
+ const saveData = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.SETTINGS, options);
194
+ if ((0, utils_1.isNullish)(saveData.video)) {
184
195
  return saveData;
185
196
  }
186
- if (!(0, common_1.isNullish)(saveData.video?.bitrateVapixParams)) {
197
+ if (!(0, utils_1.isNullish)(saveData.video?.bitrateVapixParams)) {
187
198
  const bitrateOptions = parseVapixParamsToBitrateOptions(saveData.video.bitrateVapixParams);
188
199
  saveData.video.bitrateMode = bitrateOptions.bitrateMode;
189
200
  saveData.video.maximumBitRate = bitrateOptions.maximumBitRate;
190
201
  saveData.video.retentionTime = bitrateOptions.retentionTime;
191
202
  saveData.video.bitRateLimit = bitrateOptions.bitRateLimit;
192
203
  }
193
- if (!(0, common_1.isNullish)(saveData.video?.bitrateLimit)) {
204
+ if (!(0, utils_1.isNullish)(saveData.video?.bitrateLimit)) {
194
205
  saveData.video.maximumBitRate = saveData.video.bitrateLimit;
195
206
  saveData.video.bitrateMode = 'MBR';
196
207
  }
197
- if (!(0, common_1.isNullish)(saveData.video?.videoClipQuality)) {
208
+ if (!(0, utils_1.isNullish)(saveData.video?.videoClipQuality)) {
198
209
  saveData.video.maximumBitRate = saveData.video.videoClipQuality;
199
210
  }
200
211
  return {
@@ -204,12 +215,12 @@ class CamSwitcherAPI {
204
215
  keyboard: saveData.keyboard,
205
216
  };
206
217
  }
207
- async getGlobalAudioSettings() {
218
+ async getGlobalAudioSettings(options) {
208
219
  const settings = {
209
220
  type: 'fromSource',
210
221
  source: 'fromSource',
211
222
  };
212
- const res = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.MASTER_AUDIO);
223
+ const res = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.MASTER_AUDIO, options);
213
224
  if (res.type === 'STREAM') {
214
225
  settings.type = 'source';
215
226
  settings.source = res.stream_name;
@@ -221,8 +232,8 @@ class CamSwitcherAPI {
221
232
  }
222
233
  return settings;
223
234
  }
224
- async getSecondaryAudioSettings() {
225
- const res = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.SECONDARY_AUDIO);
235
+ async getSecondaryAudioSettings(options) {
236
+ const res = await this.getParamFromCameraAndJSONParse(CSW_PARAM_NAMES.SECONDARY_AUDIO, options);
226
237
  const settings = {
227
238
  type: res.type ?? 'NONE',
228
239
  streamName: res.stream_name,
@@ -233,38 +244,40 @@ class CamSwitcherAPI {
233
244
  };
234
245
  return settings;
235
246
  }
236
- async getPermanentRtspUrlToken() {
247
+ async getPermanentRtspUrlToken(options) {
237
248
  const paramName = CSW_PARAM_NAMES.RTSP_TOKEN;
238
- const res = await this.vapixAgent.getParameter([paramName], null);
249
+ const res = await this.vapixAgent.getParameter([paramName], options);
239
250
  return res[paramName] ?? '';
240
251
  }
241
- async get(path, parameters = {}) {
242
- const res = await this.client.get(path, parameters);
252
+ async get(path, parameters, options) {
253
+ const agent = this.getClient(options?.proxyParams);
254
+ const res = await agent.get({ path, parameters, timeout: options?.timeout });
243
255
  if (res.ok) {
244
256
  const d = (await res.json());
245
257
  return d.data;
246
258
  }
247
259
  else {
248
- throw new Error(await (0, common_1.responseStringify)(res));
260
+ throw new Error(await (0, utils_1.responseStringify)(res));
249
261
  }
250
262
  }
251
- async set(path, data, parameters = {}) {
252
- const res = await this.client.post(path, JSON.stringify(data), parameters);
263
+ async set(path, data, parameters, options) {
264
+ const agent = this.getClient(options?.proxyParams);
265
+ const res = await agent.post({ path, data: JSON.stringify(data), parameters, timeout: options?.timeout });
253
266
  if (res.ok) {
254
267
  const parsed = await res.json();
255
268
  return parsed.message === 'OK';
256
269
  }
257
270
  else {
258
- throw new Error(await (0, common_1.responseStringify)(res));
271
+ throw new Error(await (0, utils_1.responseStringify)(res));
259
272
  }
260
273
  }
261
- setParamFromCameraJSON(paramName, data) {
274
+ setParamFromCameraJSON(paramName, data, options) {
262
275
  const params = {};
263
276
  params[paramName] = JSON.stringify(data);
264
- return this.vapixAgent.setParameter(params, null);
277
+ return this.vapixAgent.setParameter(params, options);
265
278
  }
266
- async getParamFromCameraAndJSONParse(paramName) {
267
- const data = await this.vapixAgent.getParameter([paramName], null);
279
+ async getParamFromCameraAndJSONParse(paramName, options) {
280
+ const data = await this.vapixAgent.getParameter([paramName], options);
268
281
  if (data[paramName] !== undefined) {
269
282
  try {
270
283
  if (data[paramName] === '') {
@@ -296,16 +309,12 @@ const parseBitrateOptionsToBitrateVapixParams = (firmWareVersion, bitrateMode, c
296
309
  if (bitrateMode === null) {
297
310
  return '';
298
311
  }
299
- if (bitrateMode === 'VBR') {
300
- return 'videobitratemode=vbr';
301
- }
302
- if (bitrateMode === 'MBR') {
303
- return `videobitratemode=mbr&videomaxbitrate=${cameraOptions.maximumBitRate}`;
304
- }
305
- if (bitrateMode === 'ABR') {
306
- return `videobitratemode=abr&videoabrtargetbitrate=${cameraOptions.maximumBitRate}&videoabrretentiontime=${cameraOptions.retentionTime}&videoabrmaxbitrate=${cameraOptions.bitRateLimit}`;
307
- }
308
- throw new Error('Unknown bitrateMode param in getVapixParams method.');
312
+ const data = {
313
+ VBR: 'videobitratemode=vbr',
314
+ MBR: `videobitratemode=mbr&videomaxbitrate=${cameraOptions.maximumBitRate}`,
315
+ ABR: `videobitratemode=abr&videoabrtargetbitrate=${cameraOptions.maximumBitRate}&videoabrretentiontime=${cameraOptions.retentionTime}&videoabrmaxbitrate=${cameraOptions.bitRateLimit}`,
316
+ };
317
+ return data[bitrateMode];
309
318
  };
310
319
  const parseVapixParamsToBitrateOptions = (bitrateVapixParams) => {
311
320
  const params = {};
@@ -316,7 +325,7 @@ const parseVapixParamsToBitrateOptions = (bitrateVapixParams) => {
316
325
  const bitrateMode = params['videobitratemode'] !== undefined ? params['videobitratemode'].toUpperCase() : undefined;
317
326
  const hasLowerFw = bitrateMode === undefined && params['videomaxbitrate'] !== undefined;
318
327
  if (hasLowerFw) {
319
- const maximumBitRate = parseInt(params['videomaxbitrate'], 10);
328
+ const maximumBitRate = parseInt(params['videomaxbitrate'] ?? '0', 10);
320
329
  return {
321
330
  bitrateMode: 'MBR',
322
331
  maximumBitRate: maximumBitRate,
@@ -325,19 +334,19 @@ const parseVapixParamsToBitrateOptions = (bitrateVapixParams) => {
325
334
  };
326
335
  }
327
336
  if (bitrateMode === 'ABR') {
328
- const maximumBitRate = parseInt(params['videoabrtargetbitrate'], 10);
329
- const retentionTime = parseInt(params['videoabrretentiontime'], 10);
330
- const bitrateLimit = parseInt(params['videoabrmaxbitrate'], 10);
337
+ const maximumBitRate = parseInt(params['videoabrtargetbitrate'] ?? '0', 10);
338
+ const retentionTime = parseInt(params['videoabrretentiontime'] ?? '0', 10);
339
+ const bitRateLimit = parseInt(params['videoabrmaxbitrate'] ?? '0', 10);
331
340
  return {
332
- bitrateMode: bitrateMode,
333
- maximumBitRate: maximumBitRate,
334
- retentionTime: retentionTime,
335
- bitRateLimit: bitrateLimit,
341
+ bitrateMode,
342
+ maximumBitRate,
343
+ retentionTime,
344
+ bitRateLimit,
336
345
  };
337
346
  }
338
347
  else if (bitrateMode === 'MBR') {
339
- const maximumBitRate = parseInt(params['videomaxbitrate'], 10);
340
- const oldMaximumBitrateParamValue = parseInt(params['videombrmaxbitrate'], 10);
348
+ const maximumBitRate = params['videomaxbitrate'] !== undefined ? parseInt(params['videomaxbitrate'], 10) : null;
349
+ const oldMaximumBitrateParamValue = parseInt(params['videombrmaxbitrate'] ?? '0', 10);
341
350
  return {
342
351
  bitrateMode: bitrateMode,
343
352
  maximumBitRate: maximumBitRate ?? oldMaximumBitrateParamValue,
@@ -1,4 +1,4 @@
1
- import { IWebsocket } from './internal/common';
1
+ import { IWebsocket } from './internal/types';
2
2
  import { TCamSwitcherEventOfType, TCamSwitcherEventType } from './types/CamSwitcherEvents';
3
3
  type TListenerFunction<T extends TCamSwitcherEventType> = (data: TCamSwitcherEventOfType<T>, isInit: boolean) => void;
4
4
  export declare class CamSwitcherEvents<Event extends {
@@ -0,0 +1,43 @@
1
+ import { IClient, TBlobResponse, TParameters, TResponse } from './internal/types';
2
+ import { ICAO, TApiUser, TExportDataType, TImportDataType } from './types/PlaneTrackerAPI';
3
+ import { THttpRequestOptions, TProxyParams } from './types/common';
4
+ import { ProxyClient } from './internal/ProxyClient';
5
+ export declare class PlaneTrackerAPI<Client extends IClient<TResponse> = IClient<TResponse>> {
6
+ private client;
7
+ private apiUser;
8
+ constructor(client: Client, apiUser: TApiUser);
9
+ static getProxyUrlPath: () => string;
10
+ getClient(proxyParams?: TProxyParams): Client | ProxyClient<Client>;
11
+ checkCameraTime(options?: THttpRequestOptions): Promise<boolean>;
12
+ resetPtzCalibration: (options?: THttpRequestOptions) => Promise<TResponse>;
13
+ resetFocusCalibration: (options?: THttpRequestOptions) => Promise<TResponse>;
14
+ serverRunCheck: (options?: THttpRequestOptions) => Promise<TResponse>;
15
+ getLiveViewAlias: (rtspUrl: string, options?: THttpRequestOptions) => Promise<TResponse>;
16
+ fetchCameraSettings: (options?: THttpRequestOptions) => Promise<any>;
17
+ setCameraSettings: (settingsJsonString: string, options?: THttpRequestOptions) => Promise<TResponse>;
18
+ fetchServerSettings: (options?: THttpRequestOptions) => Promise<any>;
19
+ exportAppSettings: (dataType: TExportDataType, options?: THttpRequestOptions) => Promise<TBlobResponse<Client>>;
20
+ importAppSettings: (dataType: TImportDataType, formData: FormData, options?: THttpRequestOptions) => Promise<TResponse>;
21
+ fetchFlightInfo: (icao: ICAO, options?: THttpRequestOptions) => Promise<any>;
22
+ getTrackingMode: (options?: THttpRequestOptions) => Promise<any>;
23
+ setTrackingMode: (modeJsonString: string, options?: THttpRequestOptions) => Promise<TResponse>;
24
+ startTrackingPlane: (icao: ICAO, options?: THttpRequestOptions) => Promise<TResponse>;
25
+ stopTrackingPlane: (options?: THttpRequestOptions) => Promise<TResponse>;
26
+ getPriorityList: (options?: THttpRequestOptions) => Promise<any>;
27
+ setPriorityList: (priorityListJsonString: string, options?: THttpRequestOptions) => Promise<TResponse>;
28
+ getWhiteList: (options?: THttpRequestOptions) => Promise<any>;
29
+ setWhiteList: (whiteListJsonString: string, options?: THttpRequestOptions) => Promise<TResponse>;
30
+ getBlackList: (options?: THttpRequestOptions) => Promise<any>;
31
+ setBlackList: (blackListJsonString: string, options?: THttpRequestOptions) => Promise<TResponse>;
32
+ fetchMapInfo: (options?: THttpRequestOptions) => Promise<any>;
33
+ getZones: (options?: THttpRequestOptions) => Promise<any>;
34
+ setZones: (zonesJsonString: string, options?: THttpRequestOptions) => Promise<TResponse>;
35
+ goToCoordinates: (lat: number, lon: number, alt?: number, options?: THttpRequestOptions) => Promise<TResponse>;
36
+ checkGenetecConnection: (params: TParameters, options?: THttpRequestOptions) => Promise<TResponse>;
37
+ getGenetecCameraList: (params: TParameters, options?: THttpRequestOptions) => Promise<any>;
38
+ private _getJson;
39
+ private _getBlob;
40
+ private parseBlobResponse;
41
+ private _postJsonEncoded;
42
+ private _postUrlEncoded;
43
+ }