sip-connector 14.1.2-7 → 15.1.0

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 (152) hide show
  1. package/dist/@SipConnector-BBhQzo-W.cjs +1 -0
  2. package/dist/@SipConnector-G96OmJEP.js +2248 -0
  3. package/dist/ApiManager/@ApiManager.d.ts +59 -0
  4. package/dist/ApiManager/__tests-utils__/helpers.d.ts +9 -0
  5. package/dist/ApiManager/constants.d.ts +72 -0
  6. package/dist/ApiManager/eventNames.d.ts +34 -0
  7. package/dist/ApiManager/index.d.ts +3 -0
  8. package/dist/ApiManager/types.d.ts +99 -0
  9. package/dist/CallManager/@CallManager.d.ts +26 -0
  10. package/dist/CallManager/AbstractCallStrategy.d.ts +47 -0
  11. package/dist/CallManager/MCUCallStrategy.d.ts +30 -0
  12. package/dist/CallManager/RemoteStreamsManager.d.ts +8 -0
  13. package/dist/CallManager/causes.d.ts +13 -0
  14. package/dist/CallManager/eventNames.d.ts +45 -0
  15. package/dist/CallManager/hasCanceledCallError.d.ts +2 -0
  16. package/dist/CallManager/index.d.ts +7 -0
  17. package/dist/CallManager/types.d.ts +59 -0
  18. package/dist/ConnectionManager/@ConnectionManager.d.ts +48 -0
  19. package/dist/ConnectionManager/ConfigurationManager.d.ts +60 -0
  20. package/dist/ConnectionManager/ConnectionFlow.d.ts +84 -0
  21. package/dist/ConnectionManager/ConnectionStateMachine.d.ts +61 -0
  22. package/dist/ConnectionManager/RegistrationManager.d.ts +17 -0
  23. package/dist/ConnectionManager/SipOperations.d.ts +32 -0
  24. package/dist/ConnectionManager/UAFactory.d.ts +50 -0
  25. package/dist/ConnectionManager/eventNames.d.ts +16 -0
  26. package/dist/ConnectionManager/getExtraHeadersRemoteAddress.d.ts +2 -0
  27. package/dist/ConnectionManager/index.d.ts +3 -0
  28. package/dist/IncomingCallManager/@IncomingCallManager.d.ts +37 -0
  29. package/dist/IncomingCallManager/eventNames.d.ts +13 -0
  30. package/dist/IncomingCallManager/index.d.ts +2 -0
  31. package/dist/PresentationManager/@PresentationManager.d.ts +47 -0
  32. package/dist/PresentationManager/constants.d.ts +1 -0
  33. package/dist/PresentationManager/eventNames.d.ts +11 -0
  34. package/dist/PresentationManager/index.d.ts +2 -0
  35. package/dist/PresentationManager/types.d.ts +2 -0
  36. package/dist/SipConnector/@SipConnector.d.ts +96 -0
  37. package/dist/SipConnector/eventNames.d.ts +4 -0
  38. package/dist/SipConnector/index.d.ts +2 -0
  39. package/dist/{src/SipConnectorFacade → SipConnectorFacade}/SipConnectorFacade.d.ts +19 -17
  40. package/dist/{src/__fixtures__ → __fixtures__}/BaseSession.mock.d.ts +9 -9
  41. package/dist/{src/__fixtures__ → __fixtures__}/RTCPeerConnectionMock.d.ts +7 -1
  42. package/dist/{src/__fixtures__ → __fixtures__}/RTCRtpSenderMock.d.ts +1 -0
  43. package/dist/{src/__fixtures__ → __fixtures__}/RTCSessionMock.d.ts +14 -9
  44. package/dist/{src/__fixtures__ → __fixtures__}/UA.mock.d.ts +15 -17
  45. package/dist/{src → __fixtures__}/eventNames.d.ts +1 -1
  46. package/dist/{src/__fixtures__ → __fixtures__}/index.d.ts +4 -4
  47. package/dist/{src/__fixtures__ → __fixtures__}/jssip.mock.d.ts +4 -4
  48. package/dist/doMock.cjs +1 -1
  49. package/dist/{src/doMock.d.ts → doMock.d.ts} +2 -1
  50. package/dist/doMock.js +444 -344
  51. package/dist/index.cjs +1 -1
  52. package/dist/index.d.ts +14 -0
  53. package/dist/index.js +870 -703
  54. package/dist/setParametersToSender/index.d.ts +3 -0
  55. package/dist/{src/setParametersToSender → setParametersToSender}/resolveHasNeedToUpdateItemEncoding.d.ts +1 -1
  56. package/dist/{src/videoSendingBalancer → setParametersToSender}/setEncodingsToSender.d.ts +1 -5
  57. package/dist/setParametersToSender/setMaxBitrateToSender.d.ts +2 -0
  58. package/dist/{src/setParametersToSender → setParametersToSender}/setParametersToSender.d.ts +1 -4
  59. package/dist/setParametersToSender/types.d.ts +5 -0
  60. package/dist/{src/tools → tools}/__fixtures__/connectToServer.d.ts +2 -2
  61. package/dist/{src/tools → tools}/__fixtures__/processRequest.d.ts +1 -1
  62. package/dist/{src/tools → tools}/error/getLinkError.d.ts +1 -1
  63. package/dist/{src/tools → tools}/error/getTypeFromError.d.ts +1 -1
  64. package/dist/{src/tools → tools}/error/getValuesFromError.d.ts +1 -1
  65. package/dist/{src/tools → tools}/error/index.d.ts +1 -1
  66. package/dist/{src/tools → tools}/index.d.ts +2 -2
  67. package/dist/{src/tools → tools}/prepareMediaStream.d.ts +1 -1
  68. package/dist/{src/tools → tools}/setVideoTrackContentHints.d.ts +1 -1
  69. package/dist/{src/tools/syncMediaState/index.d.ts → tools/syncMediaState/createSyncMediaState.d.ts} +1 -1
  70. package/dist/tools/syncMediaState/index.d.ts +1 -0
  71. package/dist/{src/tools → tools}/syncMediaState/resolveOnStartMainCam.d.ts +1 -1
  72. package/dist/{src/tools → tools}/syncMediaState/resolveOnStartMic.d.ts +1 -1
  73. package/dist/{src/tools → tools}/syncMediaState/resolveOnStopMainCam.d.ts +1 -1
  74. package/dist/{src/tools → tools}/syncMediaState/resolveOnStopMic.d.ts +1 -1
  75. package/dist/types.d.ts +23 -0
  76. package/dist/utils/utils.d.ts +4 -0
  77. package/dist/videoSendingBalancer/CodecProvider.d.ts +7 -0
  78. package/dist/videoSendingBalancer/ParametersSetterWithQueue.d.ts +12 -0
  79. package/dist/videoSendingBalancer/SenderBalancer.d.ts +52 -0
  80. package/dist/videoSendingBalancer/SenderFinder.d.ts +7 -0
  81. package/dist/videoSendingBalancer/TaskQueue.d.ts +20 -0
  82. package/dist/videoSendingBalancer/VideoSendingBalancer.d.ts +44 -0
  83. package/dist/videoSendingBalancer/VideoSendingEventHandler.d.ts +25 -0
  84. package/dist/videoSendingBalancer/calcBitrate/calcMaxBitrateByWidth.d.ts +4 -0
  85. package/dist/videoSendingBalancer/calcBitrate/calcMaxBitrateByWidthAndCodec.d.ts +4 -0
  86. package/dist/videoSendingBalancer/calcBitrate/index.d.ts +1 -0
  87. package/dist/videoSendingBalancer/calcResolution/calcScaleResolutionDownBy.d.ts +6 -0
  88. package/dist/videoSendingBalancer/calcResolution/index.d.ts +1 -0
  89. package/dist/videoSendingBalancer/index.d.ts +3 -0
  90. package/dist/videoSendingBalancer/types.d.ts +36 -0
  91. package/package.json +36 -43
  92. package/dist/SipConnector-BHvTGgmw.js +0 -1352
  93. package/dist/SipConnector-ChW25Tx9.cjs +0 -1
  94. package/dist/src/SipConnector.d.ts +0 -235
  95. package/dist/src/causes.d.ts +0 -23
  96. package/dist/src/getExtraHeadersRemoteAddress.d.ts +0 -2
  97. package/dist/src/headers.d.ts +0 -37
  98. package/dist/src/index.d.ts +0 -11
  99. package/dist/src/setParametersToSender/index.d.ts +0 -1
  100. package/dist/src/types.d.ts +0 -69
  101. package/dist/src/videoSendingBalancer/balance.d.ts +0 -10
  102. package/dist/src/videoSendingBalancer/getMaxBitrateByWidth.d.ts +0 -3
  103. package/dist/src/videoSendingBalancer/getMaxBitrateByWidthAndCodec.d.ts +0 -3
  104. package/dist/src/videoSendingBalancer/index.d.ts +0 -13
  105. package/dist/src/videoSendingBalancer/processSender.d.ts +0 -10
  106. package/dist/src/videoSendingBalancer/scaleBitrate.d.ts +0 -2
  107. /package/dist/{src/SipConnectorFacade → SipConnectorFacade}/index.d.ts +0 -0
  108. /package/dist/{src/__fixtures__ → __fixtures__}/Registrator.mock.d.ts +0 -0
  109. /package/dist/{src/__fixtures__ → __fixtures__}/Request.mock.d.ts +0 -0
  110. /package/dist/{src/__fixtures__ → __fixtures__}/WebSocketInterface.mock.d.ts +0 -0
  111. /package/dist/{src/__fixtures__ → __fixtures__}/accountNotify.d.ts +0 -0
  112. /package/dist/{src/__fixtures__ → __fixtures__}/channels.d.ts +0 -0
  113. /package/dist/{src/__fixtures__ → __fixtures__}/channelsNotify.d.ts +0 -0
  114. /package/dist/{src/__fixtures__ → __fixtures__}/conferenceParticipantTokenIssuedNotify.d.ts +0 -0
  115. /package/dist/{src → __fixtures__}/constants.d.ts +0 -0
  116. /package/dist/{src/__fixtures__ → __fixtures__}/delayPromise.d.ts +0 -0
  117. /package/dist/{src/__fixtures__ → __fixtures__}/enterRoom.d.ts +0 -0
  118. /package/dist/{src/__fixtures__ → __fixtures__}/mediaState.d.ts +0 -0
  119. /package/dist/{src/__fixtures__ → __fixtures__}/participantMoveRequests.d.ts +0 -0
  120. /package/dist/{src/__fixtures__ → __fixtures__}/participantNotify.d.ts +0 -0
  121. /package/dist/{src/__fixtures__ → __fixtures__}/remoteCallerData.d.ts +0 -0
  122. /package/dist/{src/__fixtures__ → __fixtures__}/utils.d.ts +0 -0
  123. /package/dist/{src/__fixtures__ → __fixtures__}/webcastNotify.d.ts +0 -0
  124. /package/dist/{src/logger.d.ts → logger.d.ts} +0 -0
  125. /package/dist/{src/setParametersToSender → setParametersToSender}/configureDegradationPreference.d.ts +0 -0
  126. /package/dist/{src/setParametersToSender → setParametersToSender}/configureEmptyEncodings.d.ts +0 -0
  127. /package/dist/{src/setParametersToSender → setParametersToSender}/configureEncodings.d.ts +0 -0
  128. /package/dist/{src/setParametersToSender → setParametersToSender}/configureMaxBitrate.d.ts +0 -0
  129. /package/dist/{src/setParametersToSender → setParametersToSender}/configureScaleResolutionDownBy.d.ts +0 -0
  130. /package/dist/{src/setParametersToSender → setParametersToSender}/hasChangedRTCRtpSendParameters.d.ts +0 -0
  131. /package/dist/{src/tools → tools}/__fixtures__/call.d.ts +0 -0
  132. /package/dist/{src/tools → tools}/__fixtures__/hasValidUri.d.ts +0 -0
  133. /package/dist/{src/tools → tools}/__fixtures__/permissions.d.ts +0 -0
  134. /package/dist/{src/tools → tools}/__tests-utils__/parseObject.d.ts +0 -0
  135. /package/dist/{src/tools → tools}/__tests-utils__/resolveParseArray.d.ts +0 -0
  136. /package/dist/{src/tools → tools}/error/stringifyMessage.d.ts +0 -0
  137. /package/dist/{src/tools → tools}/generateSimulcastEncodings.d.ts +0 -0
  138. /package/dist/{src/tools → tools}/getExtraHeaders.d.ts +0 -0
  139. /package/dist/{src/tools → tools}/getUserAgent.d.ts +0 -0
  140. /package/dist/{src/tools → tools}/hasPurgatory.d.ts +0 -0
  141. /package/dist/{src/tools → tools}/resolveUpdateTransceiver.d.ts +0 -0
  142. /package/dist/{src/videoSendingBalancer → tools}/scaleResolutionAndBitrate.d.ts +0 -0
  143. /package/dist/{src/tools/sendDTMFAccumulated.d.ts → tools/sendDtmfFAccumulated.d.ts} +0 -0
  144. /package/dist/{src/utils → utils}/errors.d.ts +0 -0
  145. /package/dist/{src/utils → utils}/findSenderByStream.d.ts +0 -0
  146. /package/dist/{src/utils → utils}/findVideoSender.d.ts +0 -0
  147. /package/dist/{src/utils → utils}/findVideoTrack.d.ts +0 -0
  148. /package/dist/{src/utils → utils}/getCodecFromSender.d.ts +0 -0
  149. /package/dist/{src/videoSendingBalancer → utils}/hasIncludesString.d.ts +0 -0
  150. /package/dist/{src/utils → utils}/replaceForbiddenSymbolsWithUnderscore.d.ts +0 -0
  151. /package/dist/{src/videoSendingBalancer → videoSendingBalancer/calcBitrate}/hasAv1Codec.d.ts +0 -0
  152. /package/dist/{src/videoSendingBalancer → videoSendingBalancer/calcBitrate}/scaleBitrateByCodec.d.ts +0 -0
@@ -0,0 +1,3 @@
1
+ export { default as setEncodingsToSender } from './setEncodingsToSender';
2
+ export { default as setParametersToSender } from './setParametersToSender';
3
+ export type { TOnSetParameters, TResult } from './types';
@@ -1,2 +1,2 @@
1
- declare const resolveHasNeedToUpdateItemEncoding: (defaultValue?: number) => (itemEncodingTarget: typeof defaultValue, itemEncodingCurrent?: number) => boolean;
1
+ declare const resolveHasNeedToUpdateItemEncoding: (defaultValue?: number) => (itemEncodingTarget?: number, itemEncodingCurrent?: number) => boolean;
2
2
  export default resolveHasNeedToUpdateItemEncoding;
@@ -1,8 +1,4 @@
1
- export type TOnSetParameters = (parameters: RTCRtpSendParameters) => void;
2
- export type TResult = {
3
- parameters: RTCRtpSendParameters;
4
- isChanged: boolean;
5
- };
1
+ import { TOnSetParameters, TResult } from './types';
6
2
  declare const setEncodingsToSender: (sender: RTCRtpSender, encodingsTarget: {
7
3
  scaleResolutionDownBy?: number;
8
4
  maxBitrate?: number;
@@ -0,0 +1,2 @@
1
+ declare const setMaxBitrateToSender: (senders: RTCRtpSender[], mediaStream: MediaStream, maxBitrate: number) => Promise<import('./types').TResult | undefined>;
2
+ export default setMaxBitrateToSender;
@@ -1,7 +1,4 @@
1
1
  import { TRtpSendParameters } from '../types';
2
- type TResult = {
3
- parameters: RTCRtpSendParameters;
4
- isChanged: boolean;
5
- };
2
+ import { TResult } from './types';
6
3
  declare const setParametersToSender: (sender: RTCRtpSender, parametersTarget: TRtpSendParameters) => Promise<TResult>;
7
4
  export default setParametersToSender;
@@ -0,0 +1,5 @@
1
+ export type TOnSetParameters = (parameters: RTCRtpSendParameters) => void;
2
+ export type TResult = {
3
+ parameters: RTCRtpSendParameters;
4
+ isChanged: boolean;
5
+ };
@@ -95,7 +95,7 @@ export declare const uaConfigurationWithAuthorization: {
95
95
  session_timers: boolean;
96
96
  sockets: import('../../__fixtures__/WebSocketInterface.mock').default[];
97
97
  user_agent: string;
98
- sdp_semantics: string;
98
+ sdpSemantics: string;
99
99
  register_expires: number;
100
100
  connection_recovery_max_interval: number;
101
101
  connection_recovery_min_interval: number;
@@ -108,7 +108,7 @@ export declare const uaConfigurationWithAuthorizationPasswordChanged: {
108
108
  session_timers: boolean;
109
109
  sockets: import('../../__fixtures__/WebSocketInterface.mock').default[];
110
110
  user_agent: string;
111
- sdp_semantics: string;
111
+ sdpSemantics: string;
112
112
  register_expires: number;
113
113
  connection_recovery_max_interval: number;
114
114
  connection_recovery_min_interval: number;
@@ -1,4 +1,4 @@
1
- import { default as SipConnector } from '../../SipConnector';
1
+ import { SipConnector } from '../../SipConnector';
2
2
  declare const resolveInitUaPromised: (sipConnector: SipConnector) => (state: {
3
3
  remoteAddress: string | undefined;
4
4
  sipServerUrl: string;
@@ -1,3 +1,3 @@
1
- import { TCustomError } from '../../types';
1
+ import { TCustomError } from '../../CallManager';
2
2
  declare const getLinkError: (error: TCustomError) => string | undefined;
3
3
  export default getLinkError;
@@ -1,4 +1,4 @@
1
- import { TCustomError } from '../../types';
1
+ import { TCustomError } from '../../CallManager';
2
2
  export declare enum EErrorTypes {
3
3
  CONNECT_SERVER_FAILED = "CONNECT_SERVER_FAILED",
4
4
  WRONG_USER_OR_PASSWORD = "WRONG_USER_OR_PASSWORD",
@@ -1,4 +1,4 @@
1
- import { TCustomError } from '../../types';
1
+ import { TCustomError } from '../../CallManager';
2
2
  export type TValues = {
3
3
  code: string;
4
4
  cause: string;
@@ -1,3 +1,3 @@
1
1
  export { default as getLinkError } from './getLinkError';
2
- export { default as getTypeFromError, EErrorTypes } from './getTypeFromError';
2
+ export { EErrorTypes, default as getTypeFromError } from './getTypeFromError';
3
3
  export { default as getValuesFromError } from './getValuesFromError';
@@ -2,5 +2,5 @@ export * as error from './error';
2
2
  export { default as getExtraHeaders } from './getExtraHeaders';
3
3
  export { default as getUserAgent } from './getUserAgent';
4
4
  export { default as hasPurgatory, PURGATORY_CONFERENCE_NUMBER } from './hasPurgatory';
5
- export { default as sendDtmfAccumulated } from './sendDTMFAccumulated';
6
- export { default as createSyncMediaState } from './syncMediaState';
5
+ export { default as sendDtmfAccumulated } from './sendDtmfFAccumulated';
6
+ export { createSyncMediaState } from './syncMediaState';
@@ -1,4 +1,4 @@
1
- import { TContentHint } from '../types';
1
+ import { TContentHint } from '../PresentationManager';
2
2
  declare const prepareMediaStream: (mediaStream?: MediaStream, { directionVideo, directionAudio, contentHint, }?: {
3
3
  directionVideo?: RTCRtpTransceiverDirection;
4
4
  directionAudio?: RTCRtpTransceiverDirection;
@@ -1,3 +1,3 @@
1
- import { TContentHint } from '../types';
1
+ import { TContentHint } from '../PresentationManager';
2
2
  declare const setVideoTrackContentHints: (stream: MediaStream, contentHint: TContentHint) => void;
3
3
  export default setVideoTrackContentHints;
@@ -1,4 +1,4 @@
1
- import { default as SipConnector } from '../../SipConnector';
1
+ import { SipConnector } from '../../SipConnector';
2
2
  type THandlers = {
3
3
  onStartMainCamForced: () => void;
4
4
  onStartMainCamNotForced: () => void;
@@ -0,0 +1 @@
1
+ export { default as createSyncMediaState } from './createSyncMediaState';
@@ -1,4 +1,4 @@
1
- import { default as SipConnector } from '../../SipConnector';
1
+ import { SipConnector } from '../../SipConnector';
2
2
  declare const resolveOnStartMainCam: (sipConnector: SipConnector) => (handler: ({ isSyncForced }: {
3
3
  isSyncForced: boolean;
4
4
  }) => void) => (() => void);
@@ -1,4 +1,4 @@
1
- import { default as SipConnector } from '../../SipConnector';
1
+ import { SipConnector } from '../../SipConnector';
2
2
  declare const resolveOnStartMic: (sipConnector: SipConnector) => (handler: ({ isSyncForced }: {
3
3
  isSyncForced: boolean;
4
4
  }) => void) => (() => void);
@@ -1,4 +1,4 @@
1
- import { default as SipConnector } from '../../SipConnector';
1
+ import { SipConnector } from '../../SipConnector';
2
2
  declare const resolveOnStopMainCam: (sipConnector: SipConnector) => (handler: ({ isSyncForced }: {
3
3
  isSyncForced: boolean;
4
4
  }) => void) => (() => void);
@@ -1,4 +1,4 @@
1
- import { default as SipConnector } from '../../SipConnector';
1
+ import { SipConnector } from '../../SipConnector';
2
2
  declare const resolveOnStopMic: (sipConnector: SipConnector) => (handler: ({ isSyncForced }: {
3
3
  isSyncForced: boolean;
4
4
  }) => void) => (() => void);
@@ -0,0 +1,23 @@
1
+ import { UA, WebSocketInterface } from '@krivega/jssip';
2
+ export type TJsSIP = {
3
+ UA: typeof UA;
4
+ WebSocketInterface: typeof WebSocketInterface;
5
+ };
6
+ export type TRtpSendParameters = Partial<Omit<RTCRtpSendParameters, 'transactionId'>>;
7
+ export type TSize = {
8
+ width: number;
9
+ height: number;
10
+ };
11
+ export type TSimulcastEncoding = TSize & {
12
+ rid?: string;
13
+ scalabilityMode?: string;
14
+ };
15
+ export declare enum EMimeTypesVideoCodecs {
16
+ VP8 = "video/VP8",
17
+ VP9 = "video/VP9",
18
+ H264 = "video/H264",
19
+ AV1 = "video/AV1",
20
+ rtx = "video/rtx",
21
+ red = "video/red",
22
+ flexfec03 = "video/flexfec-03"
23
+ }
@@ -0,0 +1,4 @@
1
+ export declare function resolveSipUrl(serverUrl: string): (string: string) => string;
2
+ export declare const parseDisplayName: (displayName: string) => string;
3
+ export declare const generateUserId: () => number;
4
+ export declare const hasVideoTracks: (remoteTracks: MediaStreamTrack[]) => boolean;
@@ -0,0 +1,7 @@
1
+ import { ICodecProvider } from './types';
2
+ /**
3
+ * Реализация провайдера кодеков
4
+ */
5
+ export declare class CodecProvider implements ICodecProvider {
6
+ getCodecFromSender(sender: RTCRtpSender): Promise<string>;
7
+ }
@@ -0,0 +1,12 @@
1
+ import { TOnSetParameters, TResult } from '../setParametersToSender';
2
+ import { IEncodingParameters, IParametersSetter } from './types';
3
+ /**
4
+ * Обёртка для ParametersSetter с использованием TaskQueue
5
+ */
6
+ export declare class ParametersSetterWithQueue implements IParametersSetter {
7
+ private readonly taskQueue;
8
+ private readonly onSetParameters?;
9
+ constructor(onSetParameters?: TOnSetParameters);
10
+ setEncodingsToSender(sender: RTCRtpSender, parameters: IEncodingParameters): Promise<TResult>;
11
+ stop(): void;
12
+ }
@@ -0,0 +1,52 @@
1
+ import { TResult } from '../setParametersToSender';
2
+ import { ICodecProvider, IMainCamHeaders, IParametersSetter, ISenderFinder } from './types';
3
+ /**
4
+ * Бизнес-логика балансировки отправителей
5
+ * Отвечает за определение стратегии и применение параметров к отправителю
6
+ */
7
+ export declare class SenderBalancer {
8
+ private readonly ignoreForCodec?;
9
+ private readonly senderFinder;
10
+ private readonly codecProvider;
11
+ private readonly parametersSetter;
12
+ private readonly resultNoChanged;
13
+ constructor({ senderFinder, codecProvider, parametersSetter, }: {
14
+ senderFinder: ISenderFinder;
15
+ codecProvider: ICodecProvider;
16
+ parametersSetter: IParametersSetter;
17
+ }, options: {
18
+ ignoreForCodec?: string;
19
+ });
20
+ /**
21
+ * Выполняет балансировку на основе заголовков от сервера
22
+ * @param connection - RTCPeerConnection для получения отправителей
23
+ * @param headers - Заголовки от сервера с командами управления
24
+ * @returns Promise с результатом балансировки
25
+ */
26
+ balance(connection: RTCPeerConnection, headers?: IMainCamHeaders): Promise<TResult>;
27
+ /**
28
+ * Обрабатывает отправитель в зависимости от команды управления
29
+ * @param context - Контекст балансировки
30
+ * @returns Promise с результатом обработки
31
+ */
32
+ private processSender;
33
+ /**
34
+ * Понижает разрешение отправителя (пауза камеры)
35
+ * @param context - Контекст балансировки
36
+ * @returns Promise с результатом
37
+ */
38
+ private downgradeResolutionSender;
39
+ /**
40
+ * Устанавливает битрейт на основе разрешения трека
41
+ * @param context - Контекст балансировки
42
+ * @returns Promise с результатом
43
+ */
44
+ private setBitrateByTrackResolution;
45
+ /**
46
+ * Устанавливает разрешение отправителя на основе заголовка
47
+ * @param resolutionMainCam - Разрешение главной камеры
48
+ * @param context - Контекст балансировки
49
+ * @returns Promise с результатом
50
+ */
51
+ private setResolutionSender;
52
+ }
@@ -0,0 +1,7 @@
1
+ import { ISenderFinder } from './types';
2
+ /**
3
+ * Реализация поиска видео отправителя
4
+ */
5
+ export declare class SenderFinder implements ISenderFinder {
6
+ findVideoSender(senders: RTCRtpSender[]): RTCRtpSender | undefined;
7
+ }
@@ -0,0 +1,20 @@
1
+ import { ITaskQueue } from './types';
2
+ /**
3
+ * Очередь задач с правильной обработкой ошибок
4
+ * Обеспечивает последовательное выполнение задач и логирование ошибок
5
+ */
6
+ export declare class TaskQueue<T> implements ITaskQueue<T> {
7
+ private readonly stackPromises;
8
+ /**
9
+ * Добавляет задачу в очередь и возвращает Promise с результатом
10
+ * @param task - Функция для выполнения
11
+ * @returns Promise с результатом выполнения задачи
12
+ */
13
+ add(task: () => Promise<T>): Promise<T>;
14
+ stop(): void;
15
+ /**
16
+ * Выполняет задачи из очереди с обработкой ошибок
17
+ * @returns Promise с результатом выполнения
18
+ */
19
+ private run;
20
+ }
@@ -0,0 +1,44 @@
1
+ import { TResult } from '../setParametersToSender';
2
+ import { SipConnector } from '../SipConnector';
3
+ import { IBalancerOptions } from './types';
4
+ /**
5
+ * Контроллер/фасад для балансировки видеопотоков
6
+ * Координирует работу обработчика событий, балансировщика и очереди задач
7
+ */
8
+ declare class VideoSendingBalancer {
9
+ private readonly eventHandler;
10
+ private readonly senderBalancer;
11
+ private readonly parametersSetterWithQueue;
12
+ private serverHeaders?;
13
+ constructor(sipConnector: SipConnector, { ignoreForCodec, onSetParameters }?: IBalancerOptions);
14
+ /**
15
+ * Подписывается на события управления главной камерой
16
+ */
17
+ subscribe(): void;
18
+ /**
19
+ * Отписывается от событий и сбрасывает состояние
20
+ */
21
+ unsubscribe(): void;
22
+ /**
23
+ * Сбрасывает состояние балансировщика
24
+ */
25
+ reset(): void;
26
+ /**
27
+ * Перебалансирует текущее состояние
28
+ * @returns Promise с результатом балансировки
29
+ */
30
+ reBalance(): Promise<TResult>;
31
+ /**
32
+ * Выполняет балансировку на основе текущего состояния
33
+ * @returns Promise с результатом балансировки
34
+ */
35
+ private balanceByTrack;
36
+ /**
37
+ * Обработчик событий управления главной камерой
38
+ * @param headers - Заголовки от сервера
39
+ */
40
+ private readonly handleMainCamControl;
41
+ }
42
+ declare const resolveVideoSendingBalancer: (sipConnector: SipConnector, options?: IBalancerOptions) => VideoSendingBalancer;
43
+ export default VideoSendingBalancer;
44
+ export { resolveVideoSendingBalancer };
@@ -0,0 +1,25 @@
1
+ import { SipConnector } from '../SipConnector';
2
+ import { IEventHandler, IMainCamHeaders } from './types';
3
+ /**
4
+ * Обработчик событий управления главной камерой
5
+ * Отвечает за подписку и отписку от событий SipConnector
6
+ */
7
+ export declare class VideoSendingEventHandler implements IEventHandler {
8
+ private readonly sipConnector;
9
+ private currentHandler?;
10
+ constructor(sipConnector: SipConnector);
11
+ /**
12
+ * Подписывается на события управления главной камерой
13
+ * @param handler - Обработчик события
14
+ */
15
+ subscribe(handler: (headers: IMainCamHeaders) => void): void;
16
+ /**
17
+ * Отписывается от событий управления главной камерой
18
+ */
19
+ unsubscribe(): void;
20
+ /**
21
+ * Получает соединение из SipConnector
22
+ * @returns RTCPeerConnection или undefined
23
+ */
24
+ getConnection(): RTCPeerConnection | undefined;
25
+ }
@@ -0,0 +1,4 @@
1
+ export declare const MINIMUM_BITRATE: number;
2
+ export declare const MAXIMUM_BITRATE: number;
3
+ declare const calcMaxBitrateByWidth: (maxWidth: number) => number;
4
+ export default calcMaxBitrateByWidth;
@@ -0,0 +1,4 @@
1
+ export declare const getMinimumBitrate: (codec?: string) => number;
2
+ export declare const getMaximumBitrate: (codec?: string) => number;
3
+ declare const calcMaxBitrateByWidthAndCodec: (maxWidth: number, codec?: string) => number;
4
+ export default calcMaxBitrateByWidthAndCodec;
@@ -0,0 +1 @@
1
+ export { default as calcMaxBitrateByWidthAndCodec, getMaximumBitrate, getMinimumBitrate, } from './calcMaxBitrateByWidthAndCodec';
@@ -0,0 +1,6 @@
1
+ import { TSize } from '../../types';
2
+ declare const calcScaleResolutionDownBy: ({ videoTrack, targetSize, }: {
3
+ videoTrack: MediaStreamVideoTrack;
4
+ targetSize: TSize;
5
+ }) => number;
6
+ export default calcScaleResolutionDownBy;
@@ -0,0 +1 @@
1
+ export { default as calcScaleResolutionDownBy } from './calcScaleResolutionDownBy';
@@ -0,0 +1,3 @@
1
+ export { calcMaxBitrateByWidthAndCodec } from './calcBitrate';
2
+ export { calcScaleResolutionDownBy } from './calcResolution';
3
+ export { resolveVideoSendingBalancer, default as VideoSendingBalancer, } from './VideoSendingBalancer';
@@ -0,0 +1,36 @@
1
+ import { EEventsMainCAM } from '../ApiManager';
2
+ import { TOnSetParameters, TResult } from '../setParametersToSender';
3
+ export interface IBalancerOptions {
4
+ ignoreForCodec?: string;
5
+ onSetParameters?: TOnSetParameters;
6
+ }
7
+ export interface IMainCamHeaders {
8
+ mainCam?: EEventsMainCAM;
9
+ resolutionMainCam?: string;
10
+ }
11
+ export interface IBalancingContext {
12
+ sender: RTCRtpSender;
13
+ videoTrack: MediaStreamVideoTrack;
14
+ codec?: string;
15
+ }
16
+ export interface ISenderFinder {
17
+ findVideoSender: (senders: RTCRtpSender[]) => RTCRtpSender | undefined;
18
+ }
19
+ export interface ICodecProvider {
20
+ getCodecFromSender: (sender: RTCRtpSender) => Promise<string>;
21
+ }
22
+ export interface IEncodingParameters {
23
+ scaleResolutionDownBy: number;
24
+ maxBitrate: number;
25
+ }
26
+ export interface IParametersSetter {
27
+ setEncodingsToSender: (sender: RTCRtpSender, parameters: IEncodingParameters, onSetParameters?: TOnSetParameters) => Promise<TResult>;
28
+ }
29
+ export interface IEventHandler {
30
+ subscribe: (handler: (headers: IMainCamHeaders) => void) => void;
31
+ unsubscribe: () => void;
32
+ getConnection: () => RTCPeerConnection | undefined;
33
+ }
34
+ export interface ITaskQueue<T> {
35
+ add: (task: () => Promise<T>) => Promise<T>;
36
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sip-connector",
3
- "version": "14.1.2-7",
3
+ "version": "15.1.0",
4
4
  "description": "Module for connect to Vinteo server",
5
5
  "keywords": [
6
6
  "webrtc",
@@ -22,24 +22,16 @@
22
22
  "type": "module",
23
23
  "exports": {
24
24
  ".": {
25
+ "types": "./dist/index.d.ts",
26
+ "import": "./dist/index.js",
25
27
  "require": "./dist/index.cjs",
26
- "import": "./dist/index.js"
28
+ "default": "./dist/index.js"
27
29
  },
28
30
  "./doMock": {
31
+ "types": "./dist/doMock.d.ts",
32
+ "import": "./dist/doMock.js",
29
33
  "require": "./dist/doMock.cjs",
30
- "import": "./dist/doMock.js"
31
- }
32
- },
33
- "main": "./dist/index.cjs",
34
- "types": "dist/index.d.ts",
35
- "typesVersions": {
36
- "*": {
37
- "dist/index.d.ts": [
38
- "dist/index.d.ts"
39
- ],
40
- "*": [
41
- "dist/*"
42
- ]
34
+ "default": "./dist/doMock.js"
43
35
  }
44
36
  },
45
37
  "files": [
@@ -53,60 +45,61 @@
53
45
  "prepare": "husky",
54
46
  "prepublishOnly": "yarn build",
55
47
  "preview": "vite preview",
56
- "release": "standard-version && npm run release:publish",
57
- "release:major": "standard-version --release-as major && npm run release:publish",
58
- "release:pre": "standard-version --prerelease && npm run release:publish:prerelease",
59
- "release:publish": "git push --follow-tags origin master && npm publish --access=public",
60
- "release:publish:prerelease": "git push --follow-tags origin test-fix && npm publish --tag prerelease",
48
+ "release": "standard-version && npm run release:publish && npm publish --access=public",
49
+ "release:major": "standard-version --release-as major && npm run release:publish && npm publish --access=public",
50
+ "release:pre": "standard-version --prerelease && npm run release:publish && npm publish --tag prerelease",
51
+ "release:alpha": "standard-version --prerelease alpha && npm run release:publish && npm publish --tag alpha",
52
+ "release:publish": "git push --follow-tags",
61
53
  "test": "jest",
62
54
  "test:ci": "cross-env CI=true jest",
63
- "test:coverage": "yarn test:ci --coverage --reporters=default --reporters=jest-junit",
55
+ "test:coverage": "yarn test:ci --no-cache --coverage",
64
56
  "test:watch": "jest --watch"
65
57
  },
66
58
  "dependencies": {
67
59
  "@krivega/cancelable-promise": "^1.1.4",
68
60
  "@krivega/jssip": "^5.1.2",
69
61
  "debug": "^4.4.1",
70
- "events-constructor": "^1.3.0",
71
- "repeated-calls": "^2.3.3",
62
+ "events-constructor": "^2.0.0",
63
+ "repeated-calls": "^2.3.4",
72
64
  "sequent-promises": "^2.0.1",
73
65
  "stack-promises": "^2.0.3",
74
66
  "ts-debounce": "^4.0.0",
75
- "webrtc-mock": "^1.1.7"
67
+ "webrtc-mock": "^1.1.7",
68
+ "xstate": "^5.20.2"
76
69
  },
77
70
  "devDependencies": {
78
71
  "@babel/preset-typescript": "^7.27.1",
79
72
  "@commitlint/cli": "^19.8.1",
80
73
  "@commitlint/config-conventional": "^19.8.1",
81
- "@eslint/compat": "^1.3.1",
82
- "@nabla/vite-plugin-eslint": "^2.0.5",
83
- "@stylistic/eslint-plugin": "^5.1.0",
74
+ "@eslint/compat": "^1.3.2",
75
+ "@nabla/vite-plugin-eslint": "^2.0.6",
76
+ "@stylistic/eslint-plugin": "^5.2.3",
84
77
  "@types/debug": "^4.1.12",
85
78
  "@types/dom-mediacapture-transform": "^0.1.11",
86
79
  "@types/jest": "^30.0.0",
87
- "@typescript-eslint/eslint-plugin": "^8.36.0",
88
- "@typescript-eslint/parser": "^8.36.0",
89
- "cross-env": "^7.0.3",
90
- "eslint": "^9.31.0",
80
+ "@typescript-eslint/eslint-plugin": "^8.39.1",
81
+ "@typescript-eslint/parser": "^8.39.1",
82
+ "cross-env": "^10.0.0",
83
+ "eslint": "^9.33.0",
91
84
  "eslint-import-resolver-typescript": "^4.4.4",
92
85
  "eslint-plugin-flowtype": "^8.0.3",
93
86
  "eslint-plugin-import": "^2.32.0",
94
87
  "eslint-plugin-jest": "^29.0.1",
95
- "eslint-plugin-prettier": "^5.5.1",
96
- "eslint-plugin-unicorn": "^59.0.1",
88
+ "eslint-plugin-prettier": "^5.5.4",
89
+ "eslint-plugin-unicorn": "^60.0.0",
97
90
  "husky": "^9.1.7",
98
- "jest": "^30.0.4",
99
- "jest-environment-jsdom": "^30.0.4",
91
+ "jest": "^30.0.5",
92
+ "jest-environment-jsdom": "^30.0.5",
100
93
  "jest-extended": "^6.0.0",
101
94
  "jest-junit": "^16.0.0",
102
- "lint-staged": "^16.1.2",
95
+ "lint-staged": "^16.1.5",
103
96
  "prettier": "^3.6.2",
104
97
  "standard-version": "^9.5.0",
105
- "ts-jest": "^29.4.0",
98
+ "ts-jest": "^29.4.1",
106
99
  "ts-node": "^10.9.2",
107
100
  "tsc-files": "^1.1.4",
108
- "typescript": "^5.8.3",
109
- "vite": "^7.0.4",
101
+ "typescript": "^5.9.2",
102
+ "vite": "^7.1.2",
110
103
  "vite-plugin-dts": "^4.5.4",
111
104
  "vite-tsconfig-paths": "^5.1.4"
112
105
  },
@@ -114,13 +107,13 @@
114
107
  "@krivega/cancelable-promise": "^1.1.4",
115
108
  "@krivega/jssip": "^5.1.2",
116
109
  "debug": "^4.4.1",
117
- "events-constructor": "^1.3.0",
110
+ "events-constructor": "^2.0.0",
118
111
  "repeated-calls": "^2.3.3",
119
112
  "sequent-promises": "^2.0.1",
120
113
  "stack-promises": "^2.0.3",
121
114
  "ts-debounce": "^4.0.0",
122
- "webrtc-mock": "^1.1.7"
115
+ "webrtc-mock": "^1.1.7",
116
+ "xstate": "^5.20.2"
123
117
  },
124
- "packageManager": "yarn@1.22.22",
125
- "main:src": "src/index.ts"
118
+ "packageManager": "yarn@1.22.22"
126
119
  }